diff options
| author | Ben Skeggs <bskeggs@redhat.com> | 2015-08-20 00:54:23 -0400 |
|---|---|---|
| committer | Ben Skeggs <bskeggs@redhat.com> | 2015-08-27 22:40:48 -0400 |
| commit | 7e8820fed712c6de1933dcc91edbf08dcec74925 (patch) | |
| tree | ee45808ba397e5bfa42014be73178d47dfba0b34 | |
| parent | 2b700825e7a7702fb862edba1262c98040dc1bf6 (diff) | |
drm/nouveau/device: cleaner abstraction for device resource functions
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
18 files changed, 71 insertions, 62 deletions
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/core/device.h b/drivers/gpu/drm/nouveau/include/nvkm/core/device.h index b4974505af05..1fd0a07faadc 100644 --- a/drivers/gpu/drm/nouveau/include/nvkm/core/device.h +++ b/drivers/gpu/drm/nouveau/include/nvkm/core/device.h | |||
| @@ -148,6 +148,8 @@ struct nvkm_device_func { | |||
| 148 | int (*preinit)(struct nvkm_device *); | 148 | int (*preinit)(struct nvkm_device *); |
| 149 | int (*init)(struct nvkm_device *); | 149 | int (*init)(struct nvkm_device *); |
| 150 | void (*fini)(struct nvkm_device *, bool suspend); | 150 | void (*fini)(struct nvkm_device *, bool suspend); |
| 151 | resource_size_t (*resource_addr)(struct nvkm_device *, unsigned bar); | ||
| 152 | resource_size_t (*resource_size)(struct nvkm_device *, unsigned bar); | ||
| 151 | }; | 153 | }; |
| 152 | 154 | ||
| 153 | struct nvkm_device_quirk { | 155 | struct nvkm_device_quirk { |
| @@ -242,12 +244,6 @@ nv_device_base(struct nvkm_device *device) | |||
| 242 | &device->platformdev->dev; | 244 | &device->platformdev->dev; |
| 243 | } | 245 | } |
| 244 | 246 | ||
| 245 | resource_size_t | ||
| 246 | nv_device_resource_start(struct nvkm_device *device, unsigned int bar); | ||
| 247 | |||
| 248 | resource_size_t | ||
| 249 | nv_device_resource_len(struct nvkm_device *device, unsigned int bar); | ||
| 250 | |||
| 251 | struct platform_device; | 247 | struct platform_device; |
| 252 | 248 | ||
| 253 | enum nv_bus_type { | 249 | enum nv_bus_type { |
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c index bd33d547d574..6024edf8529e 100644 --- a/drivers/gpu/drm/nouveau/nouveau_bo.c +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c | |||
| @@ -1351,6 +1351,7 @@ nouveau_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_mem_reg *mem) | |||
| 1351 | { | 1351 | { |
| 1352 | struct ttm_mem_type_manager *man = &bdev->man[mem->mem_type]; | 1352 | struct ttm_mem_type_manager *man = &bdev->man[mem->mem_type]; |
| 1353 | struct nouveau_drm *drm = nouveau_bdev(bdev); | 1353 | struct nouveau_drm *drm = nouveau_bdev(bdev); |
| 1354 | struct nvkm_device *device = nvxx_device(&drm->device); | ||
| 1354 | struct nvkm_mem *node = mem->mm_node; | 1355 | struct nvkm_mem *node = mem->mm_node; |
| 1355 | int ret; | 1356 | int ret; |
| 1356 | 1357 | ||
| @@ -1379,7 +1380,7 @@ nouveau_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_mem_reg *mem) | |||
| 1379 | /* fallthrough, tiled memory */ | 1380 | /* fallthrough, tiled memory */ |
| 1380 | case TTM_PL_VRAM: | 1381 | case TTM_PL_VRAM: |
| 1381 | mem->bus.offset = mem->start << PAGE_SHIFT; | 1382 | mem->bus.offset = mem->start << PAGE_SHIFT; |
| 1382 | mem->bus.base = nv_device_resource_start(nvxx_device(&drm->device), 1); | 1383 | mem->bus.base = device->func->resource_addr(device, 1); |
| 1383 | mem->bus.is_iomem = true; | 1384 | mem->bus.is_iomem = true; |
| 1384 | if (drm->device.info.family >= NV_DEVICE_INFO_V0_TESLA) { | 1385 | if (drm->device.info.family >= NV_DEVICE_INFO_V0_TESLA) { |
| 1385 | struct nvkm_bar *bar = nvxx_bar(&drm->device); | 1386 | struct nvkm_bar *bar = nvxx_bar(&drm->device); |
| @@ -1419,8 +1420,8 @@ nouveau_ttm_fault_reserve_notify(struct ttm_buffer_object *bo) | |||
| 1419 | { | 1420 | { |
| 1420 | struct nouveau_drm *drm = nouveau_bdev(bo->bdev); | 1421 | struct nouveau_drm *drm = nouveau_bdev(bo->bdev); |
| 1421 | struct nouveau_bo *nvbo = nouveau_bo(bo); | 1422 | struct nouveau_bo *nvbo = nouveau_bo(bo); |
| 1422 | struct nvif_device *device = &drm->device; | 1423 | struct nvkm_device *device = nvxx_device(&drm->device); |
| 1423 | u32 mappable = nv_device_resource_len(nvxx_device(device), 1) >> PAGE_SHIFT; | 1424 | u32 mappable = device->func->resource_size(device, 1) >> PAGE_SHIFT; |
| 1424 | int i, ret; | 1425 | int i, ret; |
| 1425 | 1426 | ||
| 1426 | /* as long as the bo isn't in vram, and isn't tiled, we've got | 1427 | /* as long as the bo isn't in vram, and isn't tiled, we've got |
diff --git a/drivers/gpu/drm/nouveau/nouveau_chan.c b/drivers/gpu/drm/nouveau/nouveau_chan.c index 8c88c5e5bf0b..f59c4f5716cc 100644 --- a/drivers/gpu/drm/nouveau/nouveau_chan.c +++ b/drivers/gpu/drm/nouveau/nouveau_chan.c | |||
| @@ -150,7 +150,8 @@ nouveau_channel_prep(struct nouveau_drm *drm, struct nvif_device *device, | |||
| 150 | */ | 150 | */ |
| 151 | args.target = NV_DMA_V0_TARGET_PCI; | 151 | args.target = NV_DMA_V0_TARGET_PCI; |
| 152 | args.access = NV_DMA_V0_ACCESS_RDWR; | 152 | args.access = NV_DMA_V0_ACCESS_RDWR; |
| 153 | args.start = nv_device_resource_start(nvxx_device(device), 1); | 153 | args.start = nvxx_device(device)->func-> |
| 154 | resource_addr(nvxx_device(device), 1); | ||
| 154 | args.limit = args.start + device->info.ram_user - 1; | 155 | args.limit = args.start + device->info.ram_user - 1; |
| 155 | } else { | 156 | } else { |
| 156 | args.target = NV_DMA_V0_TARGET_VRAM; | 157 | args.target = NV_DMA_V0_TARGET_VRAM; |
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c index 5553caa16b9c..cc6c228e11c8 100644 --- a/drivers/gpu/drm/nouveau/nouveau_display.c +++ b/drivers/gpu/drm/nouveau/nouveau_display.c | |||
| @@ -445,6 +445,7 @@ int | |||
| 445 | nouveau_display_create(struct drm_device *dev) | 445 | nouveau_display_create(struct drm_device *dev) |
| 446 | { | 446 | { |
| 447 | struct nouveau_drm *drm = nouveau_drm(dev); | 447 | struct nouveau_drm *drm = nouveau_drm(dev); |
| 448 | struct nvkm_device *device = nvxx_device(&drm->device); | ||
| 448 | struct nouveau_display *disp; | 449 | struct nouveau_display *disp; |
| 449 | int ret; | 450 | int ret; |
| 450 | 451 | ||
| @@ -457,7 +458,7 @@ nouveau_display_create(struct drm_device *dev) | |||
| 457 | drm_mode_create_dvi_i_properties(dev); | 458 | drm_mode_create_dvi_i_properties(dev); |
| 458 | 459 | ||
| 459 | dev->mode_config.funcs = &nouveau_mode_config_funcs; | 460 | dev->mode_config.funcs = &nouveau_mode_config_funcs; |
| 460 | dev->mode_config.fb_base = nv_device_resource_start(nvxx_device(&drm->device), 1); | 461 | dev->mode_config.fb_base = device->func->resource_addr(device, 1); |
| 461 | 462 | ||
| 462 | dev->mode_config.min_width = 0; | 463 | dev->mode_config.min_width = 0; |
| 463 | dev->mode_config.min_height = 0; | 464 | dev->mode_config.min_height = 0; |
diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.c b/drivers/gpu/drm/nouveau/nouveau_ttm.c index d8999f71a798..1fd70d6900cf 100644 --- a/drivers/gpu/drm/nouveau/nouveau_ttm.c +++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c | |||
| @@ -335,6 +335,7 @@ nouveau_ttm_global_release(struct nouveau_drm *drm) | |||
| 335 | int | 335 | int |
| 336 | nouveau_ttm_init(struct nouveau_drm *drm) | 336 | nouveau_ttm_init(struct nouveau_drm *drm) |
| 337 | { | 337 | { |
| 338 | struct nvkm_device *device = nvxx_device(&drm->device); | ||
| 338 | struct drm_device *dev = drm->dev; | 339 | struct drm_device *dev = drm->dev; |
| 339 | u32 bits; | 340 | u32 bits; |
| 340 | int ret; | 341 | int ret; |
| @@ -381,8 +382,8 @@ nouveau_ttm_init(struct nouveau_drm *drm) | |||
| 381 | return ret; | 382 | return ret; |
| 382 | } | 383 | } |
| 383 | 384 | ||
| 384 | drm->ttm.mtrr = arch_phys_wc_add(nv_device_resource_start(nvxx_device(&drm->device), 1), | 385 | drm->ttm.mtrr = arch_phys_wc_add(device->func->resource_addr(device, 1), |
| 385 | nv_device_resource_len(nvxx_device(&drm->device), 1)); | 386 | device->func->resource_size(device, 1)); |
| 386 | 387 | ||
| 387 | /* GART init */ | 388 | /* GART init */ |
| 388 | if (drm->agp.stat != ENABLED) { | 389 | if (drm->agp.stat != ENABLED) { |
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c index 5fab8384d1f4..b8d46144e68a 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | |||
| @@ -2262,36 +2262,6 @@ fail: | |||
| 2262 | return ret; | 2262 | return ret; |
| 2263 | } | 2263 | } |
| 2264 | 2264 | ||
| 2265 | resource_size_t | ||
| 2266 | nv_device_resource_start(struct nvkm_device *device, unsigned int bar) | ||
| 2267 | { | ||
| 2268 | if (nv_device_is_pci(device)) { | ||
| 2269 | return pci_resource_start(device->pdev, bar); | ||
| 2270 | } else { | ||
| 2271 | struct resource *res; | ||
| 2272 | res = platform_get_resource(device->platformdev, | ||
| 2273 | IORESOURCE_MEM, bar); | ||
| 2274 | if (!res) | ||
| 2275 | return 0; | ||
| 2276 | return res->start; | ||
| 2277 | } | ||
| 2278 | } | ||
| 2279 | |||
| 2280 | resource_size_t | ||
| 2281 | nv_device_resource_len(struct nvkm_device *device, unsigned int bar) | ||
| 2282 | { | ||
| 2283 | if (nv_device_is_pci(device)) { | ||
| 2284 | return pci_resource_len(device->pdev, bar); | ||
| 2285 | } else { | ||
| 2286 | struct resource *res; | ||
| 2287 | res = platform_get_resource(device->platformdev, | ||
| 2288 | IORESOURCE_MEM, bar); | ||
| 2289 | if (!res) | ||
| 2290 | return 0; | ||
| 2291 | return resource_size(res); | ||
| 2292 | } | ||
| 2293 | } | ||
| 2294 | |||
| 2295 | void | 2265 | void |
| 2296 | nvkm_device_del(struct nvkm_device **pdevice) | 2266 | nvkm_device_del(struct nvkm_device **pdevice) |
| 2297 | { | 2267 | { |
| @@ -2363,8 +2333,8 @@ nvkm_device_ctor(const struct nvkm_device_func *func, | |||
| 2363 | if (ret) | 2333 | if (ret) |
| 2364 | goto done; | 2334 | goto done; |
| 2365 | 2335 | ||
| 2366 | mmio_base = nv_device_resource_start(device, 0); | 2336 | mmio_base = device->func->resource_addr(device, 0); |
| 2367 | mmio_size = nv_device_resource_len(device, 0); | 2337 | mmio_size = device->func->resource_size(device, 0); |
| 2368 | 2338 | ||
| 2369 | /* identify the chipset, and determine classes of subdev/engines */ | 2339 | /* identify the chipset, and determine classes of subdev/engines */ |
| 2370 | if (detect) { | 2340 | if (detect) { |
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/pci.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/pci.c index 1a1d1e584a7f..75612faaca2c 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/device/pci.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/pci.c | |||
| @@ -30,6 +30,20 @@ nvkm_device_pci(struct nvkm_device *device) | |||
| 30 | return container_of(device, struct nvkm_device_pci, device); | 30 | return container_of(device, struct nvkm_device_pci, device); |
| 31 | } | 31 | } |
| 32 | 32 | ||
| 33 | static resource_size_t | ||
| 34 | nvkm_device_pci_resource_addr(struct nvkm_device *device, unsigned bar) | ||
| 35 | { | ||
| 36 | struct nvkm_device_pci *pdev = nvkm_device_pci(device); | ||
| 37 | return pci_resource_start(pdev->pdev, bar); | ||
| 38 | } | ||
| 39 | |||
| 40 | static resource_size_t | ||
| 41 | nvkm_device_pci_resource_size(struct nvkm_device *device, unsigned bar) | ||
| 42 | { | ||
| 43 | struct nvkm_device_pci *pdev = nvkm_device_pci(device); | ||
| 44 | return pci_resource_len(pdev->pdev, bar); | ||
| 45 | } | ||
| 46 | |||
| 33 | static void | 47 | static void |
| 34 | nvkm_device_pci_fini(struct nvkm_device *device, bool suspend) | 48 | nvkm_device_pci_fini(struct nvkm_device *device, bool suspend) |
| 35 | { | 49 | { |
| @@ -68,6 +82,8 @@ nvkm_device_pci_func = { | |||
| 68 | .dtor = nvkm_device_pci_dtor, | 82 | .dtor = nvkm_device_pci_dtor, |
| 69 | .preinit = nvkm_device_pci_preinit, | 83 | .preinit = nvkm_device_pci_preinit, |
| 70 | .fini = nvkm_device_pci_fini, | 84 | .fini = nvkm_device_pci_fini, |
| 85 | .resource_addr = nvkm_device_pci_resource_addr, | ||
| 86 | .resource_size = nvkm_device_pci_resource_size, | ||
| 71 | }; | 87 | }; |
| 72 | 88 | ||
| 73 | int | 89 | int |
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c index 2587a17981b2..f4bc11c1671f 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c | |||
| @@ -26,9 +26,30 @@ | |||
| 26 | #include "priv.h" | 26 | #include "priv.h" |
| 27 | 27 | ||
| 28 | static struct nvkm_device_tegra * | 28 | static struct nvkm_device_tegra * |
| 29 | nvkm_device_tegra(struct nvkm_device *obj) | 29 | nvkm_device_tegra(struct nvkm_device *device) |
| 30 | { | 30 | { |
| 31 | return container_of(obj, struct nvkm_device_tegra, device); | 31 | return container_of(device, struct nvkm_device_tegra, device); |
| 32 | } | ||
| 33 | |||
| 34 | static struct resource * | ||
| 35 | nvkm_device_tegra_resource(struct nvkm_device *device, unsigned bar) | ||
| 36 | { | ||
| 37 | struct nvkm_device_tegra *tdev = nvkm_device_tegra(device); | ||
| 38 | return platform_get_resource(tdev->pdev, IORESOURCE_MEM, bar); | ||
| 39 | } | ||
| 40 | |||
| 41 | static resource_size_t | ||
| 42 | nvkm_device_tegra_resource_addr(struct nvkm_device *device, unsigned bar) | ||
| 43 | { | ||
| 44 | struct resource *res = nvkm_device_tegra_resource(device, bar); | ||
| 45 | return res ? res->start : 0; | ||
| 46 | } | ||
| 47 | |||
| 48 | static resource_size_t | ||
| 49 | nvkm_device_tegra_resource_size(struct nvkm_device *device, unsigned bar) | ||
| 50 | { | ||
| 51 | struct resource *res = nvkm_device_tegra_resource(device, bar); | ||
| 52 | return res ? resource_size(res) : 0; | ||
| 32 | } | 53 | } |
| 33 | 54 | ||
| 34 | static irqreturn_t | 55 | static irqreturn_t |
| @@ -79,6 +100,8 @@ nvkm_device_tegra_func = { | |||
| 79 | .tegra = nvkm_device_tegra, | 100 | .tegra = nvkm_device_tegra, |
| 80 | .init = nvkm_device_tegra_init, | 101 | .init = nvkm_device_tegra_init, |
| 81 | .fini = nvkm_device_tegra_fini, | 102 | .fini = nvkm_device_tegra_fini, |
| 103 | .resource_addr = nvkm_device_tegra_resource_addr, | ||
| 104 | .resource_size = nvkm_device_tegra_resource_size, | ||
| 82 | }; | 105 | }; |
| 83 | 106 | ||
| 84 | int | 107 | int |
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/user.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/user.c index a948960cc056..eddf9b1d3340 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/device/user.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/user.c | |||
| @@ -198,8 +198,8 @@ nvkm_udevice_map(struct nvkm_object *object, u64 *addr, u32 *size) | |||
| 198 | { | 198 | { |
| 199 | struct nvkm_udevice *udev = nvkm_udevice(object); | 199 | struct nvkm_udevice *udev = nvkm_udevice(object); |
| 200 | struct nvkm_device *device = udev->device; | 200 | struct nvkm_device *device = udev->device; |
| 201 | *addr = nv_device_resource_start(device, 0); | 201 | *addr = device->func->resource_addr(device, 0); |
| 202 | *size = nv_device_resource_len(device, 0); | 202 | *size = device->func->resource_size(device, 0); |
| 203 | return 0; | 203 | return 0; |
| 204 | } | 204 | } |
| 205 | 205 | ||
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.c index c9cbfbd2a1ae..01803c0679b6 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/channv50.c | |||
| @@ -195,7 +195,7 @@ nv50_disp_chan_map(struct nvkm_object *object, u64 *addr, u32 *size) | |||
| 195 | struct nv50_disp_chan *chan = nv50_disp_chan(object); | 195 | struct nv50_disp_chan *chan = nv50_disp_chan(object); |
| 196 | struct nv50_disp *disp = chan->root->disp; | 196 | struct nv50_disp *disp = chan->root->disp; |
| 197 | struct nvkm_device *device = disp->base.engine.subdev.device; | 197 | struct nvkm_device *device = disp->base.engine.subdev.device; |
| 198 | *addr = nv_device_resource_start(device, 0) + | 198 | *addr = device->func->resource_addr(device, 0) + |
| 199 | 0x640000 + (chan->chid * 0x1000); | 199 | 0x640000 + (chan->chid * 0x1000); |
| 200 | *size = 0x001000; | 200 | *size = 0x001000; |
| 201 | return 0; | 201 | return 0; |
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/chan.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/chan.c index 9921482fc162..dc6d4678f228 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/chan.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/chan.c | |||
| @@ -406,7 +406,7 @@ nvkm_fifo_chan_ctor(const struct nvkm_fifo_chan_func *func, | |||
| 406 | spin_unlock_irqrestore(&fifo->lock, flags); | 406 | spin_unlock_irqrestore(&fifo->lock, flags); |
| 407 | 407 | ||
| 408 | /* determine address of this channel's user registers */ | 408 | /* determine address of this channel's user registers */ |
| 409 | chan->addr = nv_device_resource_start(device, bar) + | 409 | chan->addr = device->func->resource_addr(device, bar) + |
| 410 | base + user * chan->chid; | 410 | base + user * chan->chid; |
| 411 | chan->size = user; | 411 | chan->size = user; |
| 412 | 412 | ||
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.c index 32ea28a71a41..5caef65d3c6e 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.c | |||
| @@ -296,7 +296,7 @@ nv20_gr_init(struct nvkm_gr *base) | |||
| 296 | nvkm_wr32(device, NV10_PGRAPH_SURFACE, tmp); | 296 | nvkm_wr32(device, NV10_PGRAPH_SURFACE, tmp); |
| 297 | 297 | ||
| 298 | /* begin RAM config */ | 298 | /* begin RAM config */ |
| 299 | vramsz = nv_device_resource_len(device, 1) - 1; | 299 | vramsz = device->func->resource_size(device, 1) - 1; |
| 300 | nvkm_wr32(device, 0x4009A4, nvkm_rd32(device, 0x100200)); | 300 | nvkm_wr32(device, 0x4009A4, nvkm_rd32(device, 0x100200)); |
| 301 | nvkm_wr32(device, 0x4009A8, nvkm_rd32(device, 0x100204)); | 301 | nvkm_wr32(device, 0x4009A8, nvkm_rd32(device, 0x100204)); |
| 302 | nvkm_wr32(device, NV10_PGRAPH_RDI_INDEX, 0x00EA0000); | 302 | nvkm_wr32(device, NV10_PGRAPH_RDI_INDEX, 0x00EA0000); |
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv40.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv40.c index 7987df18415b..ffa902ece872 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv40.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/nv40.c | |||
| @@ -385,7 +385,7 @@ nv40_gr_init(struct nvkm_gr *base) | |||
| 385 | } | 385 | } |
| 386 | 386 | ||
| 387 | /* begin RAM config */ | 387 | /* begin RAM config */ |
| 388 | vramsz = nv_device_resource_len(device, 1) - 1; | 388 | vramsz = device->func->resource_size(device, 1) - 1; |
| 389 | switch (device->chipset) { | 389 | switch (device->chipset) { |
| 390 | case 0x40: | 390 | case 0x40: |
| 391 | nvkm_wr32(device, 0x4009A4, nvkm_rd32(device, 0x100200)); | 391 | nvkm_wr32(device, 0x4009A4, nvkm_rd32(device, 0x100200)); |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.c index 2eb0a370a3a0..c794b2c2d21e 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.c | |||
| @@ -58,7 +58,7 @@ gf100_bar_ctor_vm(struct gf100_bar *bar, struct gf100_bar_vm *bar_vm, | |||
| 58 | if (ret) | 58 | if (ret) |
| 59 | return ret; | 59 | return ret; |
| 60 | 60 | ||
| 61 | bar_len = nv_device_resource_len(device, bar_nr); | 61 | bar_len = device->func->resource_size(device, bar_nr); |
| 62 | 62 | ||
| 63 | ret = nvkm_vm_new(device, 0, bar_len, 0, key, &vm); | 63 | ret = nvkm_vm_new(device, 0, bar_len, 0, key, &vm); |
| 64 | if (ret) | 64 | if (ret) |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.c index fac54f97217e..370dcd8ff7b5 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.c | |||
| @@ -82,7 +82,7 @@ nv50_bar_oneinit(struct nvkm_bar *base) | |||
| 82 | 82 | ||
| 83 | /* BAR3 */ | 83 | /* BAR3 */ |
| 84 | start = 0x0100000000ULL; | 84 | start = 0x0100000000ULL; |
| 85 | limit = start + nv_device_resource_len(device, 3); | 85 | limit = start + device->func->resource_size(device, 3); |
| 86 | 86 | ||
| 87 | ret = nvkm_vm_new(device, start, limit, start, &bar3_lock, &vm); | 87 | ret = nvkm_vm_new(device, start, limit, start, &bar3_lock, &vm); |
| 88 | if (ret) | 88 | if (ret) |
| @@ -115,7 +115,7 @@ nv50_bar_oneinit(struct nvkm_bar *base) | |||
| 115 | 115 | ||
| 116 | /* BAR1 */ | 116 | /* BAR1 */ |
| 117 | start = 0x0000000000ULL; | 117 | start = 0x0000000000ULL; |
| 118 | limit = start + nv_device_resource_len(device, 1); | 118 | limit = start + device->func->resource_size(device, 1); |
| 119 | 119 | ||
| 120 | ret = nvkm_vm_new(device, start, limit--, start, &bar1_lock, &vm); | 120 | ret = nvkm_vm_new(device, start, limit--, start, &bar1_lock, &vm); |
| 121 | if (ret) | 121 | if (ret) |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/fbmem.h b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/fbmem.h index 4e484c40b5c6..6c5bbff12eb4 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/fbmem.h +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/fbmem.h | |||
| @@ -47,8 +47,8 @@ | |||
| 47 | static inline struct io_mapping * | 47 | static inline struct io_mapping * |
| 48 | fbmem_init(struct nvkm_device *dev) | 48 | fbmem_init(struct nvkm_device *dev) |
| 49 | { | 49 | { |
| 50 | return io_mapping_create_wc(nv_device_resource_start(dev, 1), | 50 | return io_mapping_create_wc(dev->func->resource_addr(dev, 1), |
| 51 | nv_device_resource_len(dev, 1)); | 51 | dev->func->resource_size(dev, 1)); |
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | static inline void | 54 | static inline void |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv40.c b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv40.c index a170ff9b32e7..c0543875e490 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv40.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv40.c | |||
| @@ -243,13 +243,13 @@ nv40_instmem_new(struct nvkm_device *device, int index, | |||
| 243 | *pimem = &imem->base; | 243 | *pimem = &imem->base; |
| 244 | 244 | ||
| 245 | /* map bar */ | 245 | /* map bar */ |
| 246 | if (nv_device_resource_len(device, 2)) | 246 | if (device->func->resource_size(device, 2)) |
| 247 | bar = 2; | 247 | bar = 2; |
| 248 | else | 248 | else |
| 249 | bar = 3; | 249 | bar = 3; |
| 250 | 250 | ||
| 251 | imem->iomem = ioremap(nv_device_resource_start(device, bar), | 251 | imem->iomem = ioremap(device->func->resource_addr(device, bar), |
| 252 | nv_device_resource_len(device, bar)); | 252 | device->func->resource_size(device, bar)); |
| 253 | if (!imem->iomem) { | 253 | if (!imem->iomem) { |
| 254 | nvkm_error(&imem->base.subdev, "unable to map PRAMIN BAR\n"); | 254 | nvkm_error(&imem->base.subdev, "unable to map PRAMIN BAR\n"); |
| 255 | return -EFAULT; | 255 | return -EFAULT; |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c index ec5020e3fc42..6d512c062ae3 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c | |||
| @@ -81,7 +81,7 @@ nv50_instobj_boot(struct nvkm_memory *memory, struct nvkm_vm *vm) | |||
| 81 | 81 | ||
| 82 | ret = nvkm_vm_get(vm, size, 12, NV_MEM_ACCESS_RW, &iobj->bar); | 82 | ret = nvkm_vm_get(vm, size, 12, NV_MEM_ACCESS_RW, &iobj->bar); |
| 83 | if (ret == 0) { | 83 | if (ret == 0) { |
| 84 | map = ioremap(nv_device_resource_start(device, 3) + | 84 | map = ioremap(device->func->resource_addr(device, 3) + |
| 85 | (u32)iobj->bar.offset, size); | 85 | (u32)iobj->bar.offset, size); |
| 86 | if (map) { | 86 | if (map) { |
| 87 | nvkm_memory_map(memory, &iobj->bar, 0); | 87 | nvkm_memory_map(memory, &iobj->bar, 0); |
