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); |