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