diff options
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/engine/device/base.c')
| -rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | 73 |
1 files changed, 65 insertions, 8 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c index 05cd674326a6..e294013426ce 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | |||
| @@ -2161,6 +2161,7 @@ nv130_chipset = { | |||
| 2161 | .bios = nvkm_bios_new, | 2161 | .bios = nvkm_bios_new, |
| 2162 | .bus = gf100_bus_new, | 2162 | .bus = gf100_bus_new, |
| 2163 | .devinit = gm200_devinit_new, | 2163 | .devinit = gm200_devinit_new, |
| 2164 | .fault = gp100_fault_new, | ||
| 2164 | .fb = gp100_fb_new, | 2165 | .fb = gp100_fb_new, |
| 2165 | .fuse = gm107_fuse_new, | 2166 | .fuse = gm107_fuse_new, |
| 2166 | .gpio = gk104_gpio_new, | 2167 | .gpio = gk104_gpio_new, |
| @@ -2196,13 +2197,14 @@ nv132_chipset = { | |||
| 2196 | .bios = nvkm_bios_new, | 2197 | .bios = nvkm_bios_new, |
| 2197 | .bus = gf100_bus_new, | 2198 | .bus = gf100_bus_new, |
| 2198 | .devinit = gm200_devinit_new, | 2199 | .devinit = gm200_devinit_new, |
| 2200 | .fault = gp100_fault_new, | ||
| 2199 | .fb = gp102_fb_new, | 2201 | .fb = gp102_fb_new, |
| 2200 | .fuse = gm107_fuse_new, | 2202 | .fuse = gm107_fuse_new, |
| 2201 | .gpio = gk104_gpio_new, | 2203 | .gpio = gk104_gpio_new, |
| 2202 | .i2c = gm200_i2c_new, | 2204 | .i2c = gm200_i2c_new, |
| 2203 | .ibus = gm200_ibus_new, | 2205 | .ibus = gm200_ibus_new, |
| 2204 | .imem = nv50_instmem_new, | 2206 | .imem = nv50_instmem_new, |
| 2205 | .ltc = gp100_ltc_new, | 2207 | .ltc = gp102_ltc_new, |
| 2206 | .mc = gp100_mc_new, | 2208 | .mc = gp100_mc_new, |
| 2207 | .mmu = gp100_mmu_new, | 2209 | .mmu = gp100_mmu_new, |
| 2208 | .therm = gp100_therm_new, | 2210 | .therm = gp100_therm_new, |
| @@ -2231,13 +2233,14 @@ nv134_chipset = { | |||
| 2231 | .bios = nvkm_bios_new, | 2233 | .bios = nvkm_bios_new, |
| 2232 | .bus = gf100_bus_new, | 2234 | .bus = gf100_bus_new, |
| 2233 | .devinit = gm200_devinit_new, | 2235 | .devinit = gm200_devinit_new, |
| 2236 | .fault = gp100_fault_new, | ||
| 2234 | .fb = gp102_fb_new, | 2237 | .fb = gp102_fb_new, |
| 2235 | .fuse = gm107_fuse_new, | 2238 | .fuse = gm107_fuse_new, |
| 2236 | .gpio = gk104_gpio_new, | 2239 | .gpio = gk104_gpio_new, |
| 2237 | .i2c = gm200_i2c_new, | 2240 | .i2c = gm200_i2c_new, |
| 2238 | .ibus = gm200_ibus_new, | 2241 | .ibus = gm200_ibus_new, |
| 2239 | .imem = nv50_instmem_new, | 2242 | .imem = nv50_instmem_new, |
| 2240 | .ltc = gp100_ltc_new, | 2243 | .ltc = gp102_ltc_new, |
| 2241 | .mc = gp100_mc_new, | 2244 | .mc = gp100_mc_new, |
| 2242 | .mmu = gp100_mmu_new, | 2245 | .mmu = gp100_mmu_new, |
| 2243 | .therm = gp100_therm_new, | 2246 | .therm = gp100_therm_new, |
| @@ -2253,7 +2256,7 @@ nv134_chipset = { | |||
| 2253 | .disp = gp102_disp_new, | 2256 | .disp = gp102_disp_new, |
| 2254 | .dma = gf119_dma_new, | 2257 | .dma = gf119_dma_new, |
| 2255 | .fifo = gp100_fifo_new, | 2258 | .fifo = gp100_fifo_new, |
| 2256 | .gr = gp102_gr_new, | 2259 | .gr = gp104_gr_new, |
| 2257 | .nvdec = gp102_nvdec_new, | 2260 | .nvdec = gp102_nvdec_new, |
| 2258 | .sec2 = gp102_sec2_new, | 2261 | .sec2 = gp102_sec2_new, |
| 2259 | .sw = gf100_sw_new, | 2262 | .sw = gf100_sw_new, |
| @@ -2266,13 +2269,14 @@ nv136_chipset = { | |||
| 2266 | .bios = nvkm_bios_new, | 2269 | .bios = nvkm_bios_new, |
| 2267 | .bus = gf100_bus_new, | 2270 | .bus = gf100_bus_new, |
| 2268 | .devinit = gm200_devinit_new, | 2271 | .devinit = gm200_devinit_new, |
| 2272 | .fault = gp100_fault_new, | ||
| 2269 | .fb = gp102_fb_new, | 2273 | .fb = gp102_fb_new, |
| 2270 | .fuse = gm107_fuse_new, | 2274 | .fuse = gm107_fuse_new, |
| 2271 | .gpio = gk104_gpio_new, | 2275 | .gpio = gk104_gpio_new, |
| 2272 | .i2c = gm200_i2c_new, | 2276 | .i2c = gm200_i2c_new, |
| 2273 | .ibus = gm200_ibus_new, | 2277 | .ibus = gm200_ibus_new, |
| 2274 | .imem = nv50_instmem_new, | 2278 | .imem = nv50_instmem_new, |
| 2275 | .ltc = gp100_ltc_new, | 2279 | .ltc = gp102_ltc_new, |
| 2276 | .mc = gp100_mc_new, | 2280 | .mc = gp100_mc_new, |
| 2277 | .mmu = gp100_mmu_new, | 2281 | .mmu = gp100_mmu_new, |
| 2278 | .therm = gp100_therm_new, | 2282 | .therm = gp100_therm_new, |
| @@ -2288,7 +2292,7 @@ nv136_chipset = { | |||
| 2288 | .disp = gp102_disp_new, | 2292 | .disp = gp102_disp_new, |
| 2289 | .dma = gf119_dma_new, | 2293 | .dma = gf119_dma_new, |
| 2290 | .fifo = gp100_fifo_new, | 2294 | .fifo = gp100_fifo_new, |
| 2291 | .gr = gp102_gr_new, | 2295 | .gr = gp104_gr_new, |
| 2292 | .nvdec = gp102_nvdec_new, | 2296 | .nvdec = gp102_nvdec_new, |
| 2293 | .sec2 = gp102_sec2_new, | 2297 | .sec2 = gp102_sec2_new, |
| 2294 | .sw = gf100_sw_new, | 2298 | .sw = gf100_sw_new, |
| @@ -2301,13 +2305,14 @@ nv137_chipset = { | |||
| 2301 | .bios = nvkm_bios_new, | 2305 | .bios = nvkm_bios_new, |
| 2302 | .bus = gf100_bus_new, | 2306 | .bus = gf100_bus_new, |
| 2303 | .devinit = gm200_devinit_new, | 2307 | .devinit = gm200_devinit_new, |
| 2308 | .fault = gp100_fault_new, | ||
| 2304 | .fb = gp102_fb_new, | 2309 | .fb = gp102_fb_new, |
| 2305 | .fuse = gm107_fuse_new, | 2310 | .fuse = gm107_fuse_new, |
| 2306 | .gpio = gk104_gpio_new, | 2311 | .gpio = gk104_gpio_new, |
| 2307 | .i2c = gm200_i2c_new, | 2312 | .i2c = gm200_i2c_new, |
| 2308 | .ibus = gm200_ibus_new, | 2313 | .ibus = gm200_ibus_new, |
| 2309 | .imem = nv50_instmem_new, | 2314 | .imem = nv50_instmem_new, |
| 2310 | .ltc = gp100_ltc_new, | 2315 | .ltc = gp102_ltc_new, |
| 2311 | .mc = gp100_mc_new, | 2316 | .mc = gp100_mc_new, |
| 2312 | .mmu = gp100_mmu_new, | 2317 | .mmu = gp100_mmu_new, |
| 2313 | .therm = gp100_therm_new, | 2318 | .therm = gp100_therm_new, |
| @@ -2336,13 +2341,14 @@ nv138_chipset = { | |||
| 2336 | .bios = nvkm_bios_new, | 2341 | .bios = nvkm_bios_new, |
| 2337 | .bus = gf100_bus_new, | 2342 | .bus = gf100_bus_new, |
| 2338 | .devinit = gm200_devinit_new, | 2343 | .devinit = gm200_devinit_new, |
| 2344 | .fault = gp100_fault_new, | ||
| 2339 | .fb = gp102_fb_new, | 2345 | .fb = gp102_fb_new, |
| 2340 | .fuse = gm107_fuse_new, | 2346 | .fuse = gm107_fuse_new, |
| 2341 | .gpio = gk104_gpio_new, | 2347 | .gpio = gk104_gpio_new, |
| 2342 | .i2c = gm200_i2c_new, | 2348 | .i2c = gm200_i2c_new, |
| 2343 | .ibus = gm200_ibus_new, | 2349 | .ibus = gm200_ibus_new, |
| 2344 | .imem = nv50_instmem_new, | 2350 | .imem = nv50_instmem_new, |
| 2345 | .ltc = gp100_ltc_new, | 2351 | .ltc = gp102_ltc_new, |
| 2346 | .mc = gp100_mc_new, | 2352 | .mc = gp100_mc_new, |
| 2347 | .mmu = gp100_mmu_new, | 2353 | .mmu = gp100_mmu_new, |
| 2348 | .therm = gp100_therm_new, | 2354 | .therm = gp100_therm_new, |
| @@ -2369,11 +2375,12 @@ nv13b_chipset = { | |||
| 2369 | .name = "GP10B", | 2375 | .name = "GP10B", |
| 2370 | .bar = gm20b_bar_new, | 2376 | .bar = gm20b_bar_new, |
| 2371 | .bus = gf100_bus_new, | 2377 | .bus = gf100_bus_new, |
| 2378 | .fault = gp100_fault_new, | ||
| 2372 | .fb = gp10b_fb_new, | 2379 | .fb = gp10b_fb_new, |
| 2373 | .fuse = gm107_fuse_new, | 2380 | .fuse = gm107_fuse_new, |
| 2374 | .ibus = gp10b_ibus_new, | 2381 | .ibus = gp10b_ibus_new, |
| 2375 | .imem = gk20a_instmem_new, | 2382 | .imem = gk20a_instmem_new, |
| 2376 | .ltc = gp100_ltc_new, | 2383 | .ltc = gp102_ltc_new, |
| 2377 | .mc = gp10b_mc_new, | 2384 | .mc = gp10b_mc_new, |
| 2378 | .mmu = gp10b_mmu_new, | 2385 | .mmu = gp10b_mmu_new, |
| 2379 | .secboot = gp10b_secboot_new, | 2386 | .secboot = gp10b_secboot_new, |
| @@ -2387,6 +2394,46 @@ nv13b_chipset = { | |||
| 2387 | .sw = gf100_sw_new, | 2394 | .sw = gf100_sw_new, |
| 2388 | }; | 2395 | }; |
| 2389 | 2396 | ||
| 2397 | static const struct nvkm_device_chip | ||
| 2398 | nv140_chipset = { | ||
| 2399 | .name = "GV100", | ||
| 2400 | .bar = gm107_bar_new, | ||
| 2401 | .bios = nvkm_bios_new, | ||
| 2402 | .bus = gf100_bus_new, | ||
| 2403 | .devinit = gv100_devinit_new, | ||
| 2404 | .fault = gv100_fault_new, | ||
| 2405 | .fb = gv100_fb_new, | ||
| 2406 | .fuse = gm107_fuse_new, | ||
| 2407 | .gpio = gk104_gpio_new, | ||
| 2408 | .i2c = gm200_i2c_new, | ||
| 2409 | .ibus = gm200_ibus_new, | ||
| 2410 | .imem = nv50_instmem_new, | ||
| 2411 | .ltc = gp102_ltc_new, | ||
| 2412 | .mc = gp100_mc_new, | ||
| 2413 | .mmu = gv100_mmu_new, | ||
| 2414 | .pci = gp100_pci_new, | ||
| 2415 | .pmu = gp102_pmu_new, | ||
| 2416 | .secboot = gp108_secboot_new, | ||
| 2417 | .therm = gp100_therm_new, | ||
| 2418 | .timer = gk20a_timer_new, | ||
| 2419 | .top = gk104_top_new, | ||
| 2420 | .disp = gv100_disp_new, | ||
| 2421 | .ce[0] = gv100_ce_new, | ||
| 2422 | .ce[1] = gv100_ce_new, | ||
| 2423 | .ce[2] = gv100_ce_new, | ||
| 2424 | .ce[3] = gv100_ce_new, | ||
| 2425 | .ce[4] = gv100_ce_new, | ||
| 2426 | .ce[5] = gv100_ce_new, | ||
| 2427 | .ce[6] = gv100_ce_new, | ||
| 2428 | .ce[7] = gv100_ce_new, | ||
| 2429 | .ce[8] = gv100_ce_new, | ||
| 2430 | .dma = gv100_dma_new, | ||
| 2431 | .fifo = gv100_fifo_new, | ||
| 2432 | .gr = gv100_gr_new, | ||
| 2433 | .nvdec = gp102_nvdec_new, | ||
| 2434 | .sec2 = gp102_sec2_new, | ||
| 2435 | }; | ||
| 2436 | |||
| 2390 | static int | 2437 | static int |
| 2391 | nvkm_device_event_ctor(struct nvkm_object *object, void *data, u32 size, | 2438 | nvkm_device_event_ctor(struct nvkm_object *object, void *data, u32 size, |
| 2392 | struct nvkm_notify *notify) | 2439 | struct nvkm_notify *notify) |
| @@ -2420,6 +2467,7 @@ nvkm_device_subdev(struct nvkm_device *device, int index) | |||
| 2420 | _(BUS , device->bus , &device->bus->subdev); | 2467 | _(BUS , device->bus , &device->bus->subdev); |
| 2421 | _(CLK , device->clk , &device->clk->subdev); | 2468 | _(CLK , device->clk , &device->clk->subdev); |
| 2422 | _(DEVINIT , device->devinit , &device->devinit->subdev); | 2469 | _(DEVINIT , device->devinit , &device->devinit->subdev); |
| 2470 | _(FAULT , device->fault , &device->fault->subdev); | ||
| 2423 | _(FB , device->fb , &device->fb->subdev); | 2471 | _(FB , device->fb , &device->fb->subdev); |
| 2424 | _(FUSE , device->fuse , &device->fuse->subdev); | 2472 | _(FUSE , device->fuse , &device->fuse->subdev); |
| 2425 | _(GPIO , device->gpio , &device->gpio->subdev); | 2473 | _(GPIO , device->gpio , &device->gpio->subdev); |
| @@ -2463,6 +2511,9 @@ nvkm_device_engine(struct nvkm_device *device, int index) | |||
| 2463 | _(CE3 , device->ce[3] , device->ce[3]); | 2511 | _(CE3 , device->ce[3] , device->ce[3]); |
| 2464 | _(CE4 , device->ce[4] , device->ce[4]); | 2512 | _(CE4 , device->ce[4] , device->ce[4]); |
| 2465 | _(CE5 , device->ce[5] , device->ce[5]); | 2513 | _(CE5 , device->ce[5] , device->ce[5]); |
| 2514 | _(CE6 , device->ce[6] , device->ce[6]); | ||
| 2515 | _(CE7 , device->ce[7] , device->ce[7]); | ||
| 2516 | _(CE8 , device->ce[8] , device->ce[8]); | ||
| 2466 | _(CIPHER , device->cipher , device->cipher); | 2517 | _(CIPHER , device->cipher , device->cipher); |
| 2467 | _(DISP , device->disp , &device->disp->engine); | 2518 | _(DISP , device->disp , &device->disp->engine); |
| 2468 | _(DMAOBJ , device->dma , &device->dma->engine); | 2519 | _(DMAOBJ , device->dma , &device->dma->engine); |
| @@ -2739,6 +2790,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func, | |||
| 2739 | case 0x110: | 2790 | case 0x110: |
| 2740 | case 0x120: device->card_type = GM100; break; | 2791 | case 0x120: device->card_type = GM100; break; |
| 2741 | case 0x130: device->card_type = GP100; break; | 2792 | case 0x130: device->card_type = GP100; break; |
| 2793 | case 0x140: device->card_type = GV100; break; | ||
| 2742 | default: | 2794 | default: |
| 2743 | break; | 2795 | break; |
| 2744 | } | 2796 | } |
| @@ -2830,6 +2882,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func, | |||
| 2830 | case 0x137: device->chip = &nv137_chipset; break; | 2882 | case 0x137: device->chip = &nv137_chipset; break; |
| 2831 | case 0x138: device->chip = &nv138_chipset; break; | 2883 | case 0x138: device->chip = &nv138_chipset; break; |
| 2832 | case 0x13b: device->chip = &nv13b_chipset; break; | 2884 | case 0x13b: device->chip = &nv13b_chipset; break; |
| 2885 | case 0x140: device->chip = &nv140_chipset; break; | ||
| 2833 | default: | 2886 | default: |
| 2834 | nvdev_error(device, "unknown chipset (%08x)\n", boot0); | 2887 | nvdev_error(device, "unknown chipset (%08x)\n", boot0); |
| 2835 | goto done; | 2888 | goto done; |
| @@ -2891,6 +2944,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func, | |||
| 2891 | _(NVKM_SUBDEV_BUS , bus); | 2944 | _(NVKM_SUBDEV_BUS , bus); |
| 2892 | _(NVKM_SUBDEV_CLK , clk); | 2945 | _(NVKM_SUBDEV_CLK , clk); |
| 2893 | _(NVKM_SUBDEV_DEVINIT , devinit); | 2946 | _(NVKM_SUBDEV_DEVINIT , devinit); |
| 2947 | _(NVKM_SUBDEV_FAULT , fault); | ||
| 2894 | _(NVKM_SUBDEV_FB , fb); | 2948 | _(NVKM_SUBDEV_FB , fb); |
| 2895 | _(NVKM_SUBDEV_FUSE , fuse); | 2949 | _(NVKM_SUBDEV_FUSE , fuse); |
| 2896 | _(NVKM_SUBDEV_GPIO , gpio); | 2950 | _(NVKM_SUBDEV_GPIO , gpio); |
| @@ -2916,6 +2970,9 @@ nvkm_device_ctor(const struct nvkm_device_func *func, | |||
| 2916 | _(NVKM_ENGINE_CE3 , ce[3]); | 2970 | _(NVKM_ENGINE_CE3 , ce[3]); |
| 2917 | _(NVKM_ENGINE_CE4 , ce[4]); | 2971 | _(NVKM_ENGINE_CE4 , ce[4]); |
| 2918 | _(NVKM_ENGINE_CE5 , ce[5]); | 2972 | _(NVKM_ENGINE_CE5 , ce[5]); |
| 2973 | _(NVKM_ENGINE_CE6 , ce[6]); | ||
| 2974 | _(NVKM_ENGINE_CE7 , ce[7]); | ||
| 2975 | _(NVKM_ENGINE_CE8 , ce[8]); | ||
| 2919 | _(NVKM_ENGINE_CIPHER , cipher); | 2976 | _(NVKM_ENGINE_CIPHER , cipher); |
| 2920 | _(NVKM_ENGINE_DISP , disp); | 2977 | _(NVKM_ENGINE_DISP , disp); |
| 2921 | _(NVKM_ENGINE_DMAOBJ , dma); | 2978 | _(NVKM_ENGINE_DMAOBJ , dma); |
