aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/engine/device/base.c')
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/device/base.c73
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
2397static const struct nvkm_device_chip
2398nv140_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
2390static int 2437static int
2391nvkm_device_event_ctor(struct nvkm_object *object, void *data, u32 size, 2438nvkm_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);