1ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot/*
2ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot * Copyright (c) 2014, NVIDIA CORPORATION. All rights reserved.
3ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot *
4ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot * Permission is hereby granted, free of charge, to any person obtaining a
5ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot * copy of this software and associated documentation files (the "Software"),
6ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot * to deal in the Software without restriction, including without limitation
7ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot * and/or sell copies of the Software, and to permit persons to whom the
9ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot * Software is furnished to do so, subject to the following conditions:
10ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot *
11ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot * The above copyright notice and this permission notice shall be included in
12ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot * all copies or substantial portions of the Software.
13ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot *
14ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
17ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot * DEALINGS IN THE SOFTWARE.
21ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot */
22ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot
23ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot#include <subdev/bar.h>
24ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot
25ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot#include "priv.h"
26ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot
27ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbotint
28ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbotgk20a_bar_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
29ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot	       struct nouveau_oclass *oclass, void *data, u32 size,
30ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot	       struct nouveau_object **pobject)
31ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot{
32ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot	struct nouveau_bar *bar;
33ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot	int ret;
34ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot
35ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot	ret = nvc0_bar_ctor(parent, engine, oclass, data, size, pobject);
36ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot	if (ret)
37ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot		return ret;
38ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot
39ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot	bar = (struct nouveau_bar *)*pobject;
40ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot	bar->iomap_uncached = true;
41ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot
42ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot	return 0;
43ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot}
44ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot
45ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbotstruct nouveau_oclass
46ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbotgk20a_bar_oclass = {
47ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot	.handle = NV_SUBDEV(BAR, 0xea),
48ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot	.ofuncs = &(struct nouveau_ofuncs) {
49ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot		.ctor = gk20a_bar_ctor,
50ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot		.dtor = nvc0_bar_dtor,
51ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot		.init = nvc0_bar_init,
52ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot		.fini = _nouveau_bar_fini,
53ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot	},
54ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbot};
55