diff --git a/drivers/gpu/drm/nouveau/core/subdev/bios/init.c b/drivers/gpu/drm/nouveau/core/subdev/bios/init.c index df1b1b4..73465cc 100644 --- a/drivers/gpu/drm/nouveau/core/subdev/bios/init.c +++ b/drivers/gpu/drm/nouveau/core/subdev/bios/init.c @@ -199,7 +199,10 @@ init_rdvgai(struct nvbios_init *init, u16 port, u8 index) struct nouveau_subdev *subdev = init->subdev; if (init_exec(init)) { int head = init->crtc < 0 ? 0 : init->crtc; - return nv_rdvgai(subdev, head, port, index); + if (nv_device(subdev)->card_type >= NV_50) + return nv_rd08(subdev, 0x619400 + index); + else + return nv_rdvgai(subdev, head, port, index); } return 0x00; } @@ -215,7 +218,10 @@ init_wrvgai(struct nvbios_init *init, u16 port, u8 index, u8 value) if (init_exec(init)) { int head = init->crtc < 0 ? 0 : init->crtc; - nv_wrvgai(init->subdev, head, port, index, value); + if (nv_device(init->subdev)->card_type >= NV_50) + nv_wr08(init->subdev, 0x619400 + index, value); + else + nv_wrvgai(init->subdev, head, port, index, value); } /* select head 1 if cr44 write selected it */