2929int
3030gp102_fb_vpr_scrub (struct nvkm_fb * fb )
3131{
32- struct nvkm_subdev * subdev = & fb -> subdev ;
33- struct nvkm_falcon_fw fw = {};
34- int ret ;
35-
36- ret = nvkm_falcon_fw_ctor_hs (& gm200_flcn_fw , "mem-unlock" , subdev , NULL ,
37- "nvdec/scrubber" , 0 , & subdev -> device -> nvdec [0 ]-> falcon , & fw );
38- if (ret )
39- return ret ;
40-
41- ret = nvkm_falcon_fw_boot (& fw , subdev , true, NULL , NULL , 0 , 0x00000000 );
42- nvkm_falcon_fw_dtor (& fw );
43- return ret ;
32+ return nvkm_falcon_fw_boot (& fb -> vpr_scrubber , & fb -> subdev , true, NULL , NULL , 0 , 0x00000000 );
4433}
4534
4635bool
@@ -51,10 +40,21 @@ gp102_fb_vpr_scrub_required(struct nvkm_fb *fb)
5140 return (nvkm_rd32 (device , 0x100cd0 ) & 0x00000010 ) != 0 ;
5241}
5342
43+ int
44+ gp102_fb_oneinit (struct nvkm_fb * fb )
45+ {
46+ struct nvkm_subdev * subdev = & fb -> subdev ;
47+
48+ nvkm_falcon_fw_ctor_hs (& gm200_flcn_fw , "mem-unlock" , subdev , NULL , "nvdec/scrubber" ,
49+ 0 , & subdev -> device -> nvdec [0 ]-> falcon , & fb -> vpr_scrubber );
50+
51+ return gf100_fb_oneinit (fb );
52+ }
53+
5454static const struct nvkm_fb_func
5555gp102_fb = {
5656 .dtor = gf100_fb_dtor ,
57- .oneinit = gf100_fb_oneinit ,
57+ .oneinit = gp102_fb_oneinit ,
5858 .init = gm200_fb_init ,
5959 .init_remapper = gp100_fb_init_remapper ,
6060 .init_page = gm200_fb_init_page ,
@@ -64,23 +64,10 @@ gp102_fb = {
6464 .ram_new = gp100_ram_new ,
6565};
6666
67- int
68- gp102_fb_new_ (const struct nvkm_fb_func * func , struct nvkm_device * device ,
69- enum nvkm_subdev_type type , int inst , struct nvkm_fb * * pfb )
70- {
71- int ret = gf100_fb_new_ (func , device , type , inst , pfb );
72- if (ret )
73- return ret ;
74-
75- nvkm_firmware_load_blob (& (* pfb )-> subdev , "nvdec/scrubber" , "" , 0 ,
76- & (* pfb )-> vpr_scrubber );
77- return 0 ;
78- }
79-
8067int
8168gp102_fb_new (struct nvkm_device * device , enum nvkm_subdev_type type , int inst , struct nvkm_fb * * pfb )
8269{
83- return gp102_fb_new_ (& gp102_fb , device , type , inst , pfb );
70+ return gf100_fb_new_ (& gp102_fb , device , type , inst , pfb );
8471}
8572
8673MODULE_FIRMWARE ("nvidia/gp102/nvdec/scrubber.bin" );
0 commit comments