Loading drivers/gpu/drm/nouveau/include/nvkm/subdev/vga.h +13 −13 Original line number Diff line number Diff line Loading @@ -3,26 +3,26 @@ #include <core/subdev.h> /* access to various legacy io ports */ u8 nv_rdport(void *obj, int head, u16 port); void nv_wrport(void *obj, int head, u16 port, u8 value); u8 nvkm_rdport(struct nvkm_device *, int head, u16 port); void nvkm_wrport(struct nvkm_device *, int head, u16 port, u8 value); /* VGA Sequencer */ u8 nv_rdvgas(void *obj, int head, u8 index); void nv_wrvgas(void *obj, int head, u8 index, u8 value); u8 nvkm_rdvgas(struct nvkm_device *, int head, u8 index); void nvkm_wrvgas(struct nvkm_device *, int head, u8 index, u8 value); /* VGA Graphics */ u8 nv_rdvgag(void *obj, int head, u8 index); void nv_wrvgag(void *obj, int head, u8 index, u8 value); u8 nvkm_rdvgag(struct nvkm_device *, int head, u8 index); void nvkm_wrvgag(struct nvkm_device *, int head, u8 index, u8 value); /* VGA CRTC */ u8 nv_rdvgac(void *obj, int head, u8 index); void nv_wrvgac(void *obj, int head, u8 index, u8 value); u8 nvkm_rdvgac(struct nvkm_device *, int head, u8 index); void nvkm_wrvgac(struct nvkm_device *, int head, u8 index, u8 value); /* VGA indexed port access dispatcher */ u8 nv_rdvgai(void *obj, int head, u16 port, u8 index); void nv_wrvgai(void *obj, int head, u16 port, u8 index, u8 value); u8 nvkm_rdvgai(struct nvkm_device *, int head, u16 port, u8 index); void nvkm_wrvgai(struct nvkm_device *, int head, u16 port, u8 index, u8 value); bool nv_lockvgac(void *obj, bool lock); u8 nv_rdvgaowner(void *obj); void nv_wrvgaowner(void *obj, u8); bool nvkm_lockvgac(struct nvkm_device *, bool lock); u8 nvkm_rdvgaowner(struct nvkm_device *); void nvkm_wrvgaowner(struct nvkm_device *, u8); #endif drivers/gpu/drm/nouveau/nvkm/engine/disp/vga.c +49 −56 Original line number Diff line number Diff line Loading @@ -24,10 +24,8 @@ #include <subdev/vga.h> u8 nv_rdport(void *obj, int head, u16 port) nvkm_rdport(struct nvkm_device *device, int head, u16 port) { struct nvkm_device *device = nv_device(obj); if (device->card_type >= NV_50) return nvkm_rd08(device, 0x601000 + port); Loading @@ -48,10 +46,8 @@ nv_rdport(void *obj, int head, u16 port) } void nv_wrport(void *obj, int head, u16 port, u8 data) nvkm_wrport(struct nvkm_device *device, int head, u16 port, u8 data) { struct nvkm_device *device = nv_device(obj); if (device->card_type >= NV_50) nvkm_wr08(device, 0x601000 + port, data); else Loading @@ -70,78 +66,76 @@ nv_wrport(void *obj, int head, u16 port, u8 data) } u8 nv_rdvgas(void *obj, int head, u8 index) nvkm_rdvgas(struct nvkm_device *device, int head, u8 index) { nv_wrport(obj, head, 0x03c4, index); return nv_rdport(obj, head, 0x03c5); nvkm_wrport(device, head, 0x03c4, index); return nvkm_rdport(device, head, 0x03c5); } void nv_wrvgas(void *obj, int head, u8 index, u8 value) nvkm_wrvgas(struct nvkm_device *device, int head, u8 index, u8 value) { nv_wrport(obj, head, 0x03c4, index); nv_wrport(obj, head, 0x03c5, value); nvkm_wrport(device, head, 0x03c4, index); nvkm_wrport(device, head, 0x03c5, value); } u8 nv_rdvgag(void *obj, int head, u8 index) nvkm_rdvgag(struct nvkm_device *device, int head, u8 index) { nv_wrport(obj, head, 0x03ce, index); return nv_rdport(obj, head, 0x03cf); nvkm_wrport(device, head, 0x03ce, index); return nvkm_rdport(device, head, 0x03cf); } void nv_wrvgag(void *obj, int head, u8 index, u8 value) nvkm_wrvgag(struct nvkm_device *device, int head, u8 index, u8 value) { nv_wrport(obj, head, 0x03ce, index); nv_wrport(obj, head, 0x03cf, value); nvkm_wrport(device, head, 0x03ce, index); nvkm_wrport(device, head, 0x03cf, value); } u8 nv_rdvgac(void *obj, int head, u8 index) nvkm_rdvgac(struct nvkm_device *device, int head, u8 index) { nv_wrport(obj, head, 0x03d4, index); return nv_rdport(obj, head, 0x03d5); nvkm_wrport(device, head, 0x03d4, index); return nvkm_rdport(device, head, 0x03d5); } void nv_wrvgac(void *obj, int head, u8 index, u8 value) nvkm_wrvgac(struct nvkm_device *device, int head, u8 index, u8 value) { nv_wrport(obj, head, 0x03d4, index); nv_wrport(obj, head, 0x03d5, value); nvkm_wrport(device, head, 0x03d4, index); nvkm_wrport(device, head, 0x03d5, value); } u8 nv_rdvgai(void *obj, int head, u16 port, u8 index) nvkm_rdvgai(struct nvkm_device *device, int head, u16 port, u8 index) { if (port == 0x03c4) return nv_rdvgas(obj, head, index); if (port == 0x03ce) return nv_rdvgag(obj, head, index); if (port == 0x03d4) return nv_rdvgac(obj, head, index); if (port == 0x03c4) return nvkm_rdvgas(device, head, index); if (port == 0x03ce) return nvkm_rdvgag(device, head, index); if (port == 0x03d4) return nvkm_rdvgac(device, head, index); return 0x00; } void nv_wrvgai(void *obj, int head, u16 port, u8 index, u8 value) nvkm_wrvgai(struct nvkm_device *device, int head, u16 port, u8 index, u8 value) { if (port == 0x03c4) nv_wrvgas(obj, head, index, value); else if (port == 0x03ce) nv_wrvgag(obj, head, index, value); else if (port == 0x03d4) nv_wrvgac(obj, head, index, value); if (port == 0x03c4) nvkm_wrvgas(device, head, index, value); else if (port == 0x03ce) nvkm_wrvgag(device, head, index, value); else if (port == 0x03d4) nvkm_wrvgac(device, head, index, value); } bool nv_lockvgac(void *obj, bool lock) nvkm_lockvgac(struct nvkm_device *device, bool lock) { struct nvkm_device *device = nv_device(obj); bool locked = !nv_rdvgac(obj, 0, 0x1f); bool locked = !nvkm_rdvgac(device, 0, 0x1f); u8 data = lock ? 0x99 : 0x57; if (device->card_type < NV_50) nv_wrvgac(obj, 0, 0x1f, data); nvkm_wrvgac(device, 0, 0x1f, data); else nv_wrvgac(obj, 0, 0x3f, data); nvkm_wrvgac(device, 0, 0x3f, data); if (device->chipset == 0x11) { if (!(nvkm_rd32(device, 0x001084) & 0x10000000)) nv_wrvgac(obj, 1, 0x1f, data); nvkm_wrvgac(device, 1, 0x1f, data); } return locked; } Loading @@ -165,17 +159,16 @@ nv_lockvgac(void *obj, bool lock) * other values are treated as literal values to set */ u8 nv_rdvgaowner(void *obj) nvkm_rdvgaowner(struct nvkm_device *device) { struct nvkm_device *device = nv_device(obj); if (device->card_type < NV_50) { if (nv_device(obj)->chipset == 0x11) { if (device->chipset == 0x11) { u32 tied = nvkm_rd32(device, 0x001084) & 0x10000000; if (tied == 0) { u8 slA = nv_rdvgac(obj, 0, 0x28) & 0x80; u8 tvA = nv_rdvgac(obj, 0, 0x33) & 0x01; u8 slB = nv_rdvgac(obj, 1, 0x28) & 0x80; u8 tvB = nv_rdvgac(obj, 1, 0x33) & 0x01; u8 slA = nvkm_rdvgac(device, 0, 0x28) & 0x80; u8 tvA = nvkm_rdvgac(device, 0, 0x33) & 0x01; u8 slB = nvkm_rdvgac(device, 1, 0x28) & 0x80; u8 tvB = nvkm_rdvgac(device, 1, 0x33) & 0x01; if (slA && !tvA) return 0x00; if (slB && !tvB) return 0x03; if (slA) return 0x00; Loading @@ -185,28 +178,28 @@ nv_rdvgaowner(void *obj) return 0x04; } return nv_rdvgac(obj, 0, 0x44); return nvkm_rdvgac(device, 0, 0x44); } return 0x00; } void nv_wrvgaowner(void *obj, u8 select) nvkm_wrvgaowner(struct nvkm_device *device, u8 select) { if (nv_device(obj)->card_type < NV_50) { if (device->card_type < NV_50) { u8 owner = (select == 1) ? 3 : select; if (nv_device(obj)->chipset == 0x11) { if (device->chipset == 0x11) { /* workaround hw lockup bug */ nv_rdvgac(obj, 0, 0x1f); nv_rdvgac(obj, 1, 0x1f); nvkm_rdvgac(device, 0, 0x1f); nvkm_rdvgac(device, 1, 0x1f); } nv_wrvgac(obj, 0, 0x44, owner); nvkm_wrvgac(device, 0, 0x44, owner); if (nv_device(obj)->chipset == 0x11) { nv_wrvgac(obj, 0, 0x2e, owner); nv_wrvgac(obj, 0, 0x2e, owner); if (device->chipset == 0x11) { nvkm_wrvgac(device, 0, 0x2e, owner); nvkm_wrvgac(device, 0, 0x2e, owner); } } } drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c +8 −6 Original line number Diff line number Diff line Loading @@ -214,7 +214,7 @@ static u8 init_rdport(struct nvbios_init *init, u16 port) { if (init_exec(init)) return nv_rdport(init->subdev, init->crtc, port); return nvkm_rdport(init->subdev->device, init->crtc, port); return 0x00; } Loading @@ -222,7 +222,7 @@ static void init_wrport(struct nvbios_init *init, u16 port, u8 value) { if (init_exec(init)) nv_wrport(init->subdev, init->crtc, port, value); nvkm_wrport(init->subdev->device, init->crtc, port, value); } static u8 Loading @@ -231,7 +231,7 @@ init_rdvgai(struct nvbios_init *init, u16 port, u8 index) struct nvkm_subdev *subdev = init->subdev; if (init_exec(init)) { int head = init->crtc < 0 ? 0 : init->crtc; return nv_rdvgai(subdev, head, port, index); return nvkm_rdvgai(subdev->device, head, port, index); } return 0x00; } Loading @@ -239,19 +239,21 @@ init_rdvgai(struct nvbios_init *init, u16 port, u8 index) static void init_wrvgai(struct nvbios_init *init, u16 port, u8 index, u8 value) { struct nvkm_device *device = init->subdev->device; /* force head 0 for updates to cr44, it only exists on first head */ if (nv_device(init->subdev)->card_type < NV_50) { if (device->card_type < NV_50) { if (port == 0x03d4 && index == 0x44) init->crtc = 0; } if (init_exec(init)) { int head = init->crtc < 0 ? 0 : init->crtc; nv_wrvgai(init->subdev, head, port, index, value); nvkm_wrvgai(device, head, port, index, value); } /* select head 1 if cr44 write selected it */ if (nv_device(init->subdev)->card_type < NV_50) { if (device->card_type < NV_50) { if (port == 0x03d4 && index == 0x44 && value == 3) init->crtc = 1; } Loading drivers/gpu/drm/nouveau/nvkm/subdev/bios/pll.c +1 −1 Original line number Diff line number Diff line Loading @@ -367,7 +367,7 @@ nvbios_pll_parse(struct nvkm_bios *bios, u32 type, struct nvbios_pll *info) u32 sel_clk = nvkm_rd32(device, 0x680524); if ((info->reg == 0x680508 && sel_clk & 0x20) || (info->reg == 0x680520 && sel_clk & 0x80)) { if (nv_rdvgac(bios, 0, 0x27) < 0xa3) if (nvkm_rdvgac(device, 0, 0x27) < 0xa3) info->refclk = 200000; else info->refclk = 25000; Loading drivers/gpu/drm/nouveau/nvkm/subdev/devinit/base.c +2 −2 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ _nvkm_devinit_fini(struct nvkm_object *object, bool suspend) init->post = true; /* unlock the extended vga crtc regs */ nv_lockvgac(init, false); nvkm_lockvgac(init->subdev.device, false); return nvkm_subdev_fini(&init->subdev, suspend); } Loading Loading @@ -67,7 +67,7 @@ _nvkm_devinit_dtor(struct nvkm_object *object) struct nvkm_devinit *init = (void *)object; /* lock crtc regs */ nv_lockvgac(init, true); nvkm_lockvgac(init->subdev.device, true); nvkm_subdev_destroy(&init->subdev); } Loading Loading
drivers/gpu/drm/nouveau/include/nvkm/subdev/vga.h +13 −13 Original line number Diff line number Diff line Loading @@ -3,26 +3,26 @@ #include <core/subdev.h> /* access to various legacy io ports */ u8 nv_rdport(void *obj, int head, u16 port); void nv_wrport(void *obj, int head, u16 port, u8 value); u8 nvkm_rdport(struct nvkm_device *, int head, u16 port); void nvkm_wrport(struct nvkm_device *, int head, u16 port, u8 value); /* VGA Sequencer */ u8 nv_rdvgas(void *obj, int head, u8 index); void nv_wrvgas(void *obj, int head, u8 index, u8 value); u8 nvkm_rdvgas(struct nvkm_device *, int head, u8 index); void nvkm_wrvgas(struct nvkm_device *, int head, u8 index, u8 value); /* VGA Graphics */ u8 nv_rdvgag(void *obj, int head, u8 index); void nv_wrvgag(void *obj, int head, u8 index, u8 value); u8 nvkm_rdvgag(struct nvkm_device *, int head, u8 index); void nvkm_wrvgag(struct nvkm_device *, int head, u8 index, u8 value); /* VGA CRTC */ u8 nv_rdvgac(void *obj, int head, u8 index); void nv_wrvgac(void *obj, int head, u8 index, u8 value); u8 nvkm_rdvgac(struct nvkm_device *, int head, u8 index); void nvkm_wrvgac(struct nvkm_device *, int head, u8 index, u8 value); /* VGA indexed port access dispatcher */ u8 nv_rdvgai(void *obj, int head, u16 port, u8 index); void nv_wrvgai(void *obj, int head, u16 port, u8 index, u8 value); u8 nvkm_rdvgai(struct nvkm_device *, int head, u16 port, u8 index); void nvkm_wrvgai(struct nvkm_device *, int head, u16 port, u8 index, u8 value); bool nv_lockvgac(void *obj, bool lock); u8 nv_rdvgaowner(void *obj); void nv_wrvgaowner(void *obj, u8); bool nvkm_lockvgac(struct nvkm_device *, bool lock); u8 nvkm_rdvgaowner(struct nvkm_device *); void nvkm_wrvgaowner(struct nvkm_device *, u8); #endif
drivers/gpu/drm/nouveau/nvkm/engine/disp/vga.c +49 −56 Original line number Diff line number Diff line Loading @@ -24,10 +24,8 @@ #include <subdev/vga.h> u8 nv_rdport(void *obj, int head, u16 port) nvkm_rdport(struct nvkm_device *device, int head, u16 port) { struct nvkm_device *device = nv_device(obj); if (device->card_type >= NV_50) return nvkm_rd08(device, 0x601000 + port); Loading @@ -48,10 +46,8 @@ nv_rdport(void *obj, int head, u16 port) } void nv_wrport(void *obj, int head, u16 port, u8 data) nvkm_wrport(struct nvkm_device *device, int head, u16 port, u8 data) { struct nvkm_device *device = nv_device(obj); if (device->card_type >= NV_50) nvkm_wr08(device, 0x601000 + port, data); else Loading @@ -70,78 +66,76 @@ nv_wrport(void *obj, int head, u16 port, u8 data) } u8 nv_rdvgas(void *obj, int head, u8 index) nvkm_rdvgas(struct nvkm_device *device, int head, u8 index) { nv_wrport(obj, head, 0x03c4, index); return nv_rdport(obj, head, 0x03c5); nvkm_wrport(device, head, 0x03c4, index); return nvkm_rdport(device, head, 0x03c5); } void nv_wrvgas(void *obj, int head, u8 index, u8 value) nvkm_wrvgas(struct nvkm_device *device, int head, u8 index, u8 value) { nv_wrport(obj, head, 0x03c4, index); nv_wrport(obj, head, 0x03c5, value); nvkm_wrport(device, head, 0x03c4, index); nvkm_wrport(device, head, 0x03c5, value); } u8 nv_rdvgag(void *obj, int head, u8 index) nvkm_rdvgag(struct nvkm_device *device, int head, u8 index) { nv_wrport(obj, head, 0x03ce, index); return nv_rdport(obj, head, 0x03cf); nvkm_wrport(device, head, 0x03ce, index); return nvkm_rdport(device, head, 0x03cf); } void nv_wrvgag(void *obj, int head, u8 index, u8 value) nvkm_wrvgag(struct nvkm_device *device, int head, u8 index, u8 value) { nv_wrport(obj, head, 0x03ce, index); nv_wrport(obj, head, 0x03cf, value); nvkm_wrport(device, head, 0x03ce, index); nvkm_wrport(device, head, 0x03cf, value); } u8 nv_rdvgac(void *obj, int head, u8 index) nvkm_rdvgac(struct nvkm_device *device, int head, u8 index) { nv_wrport(obj, head, 0x03d4, index); return nv_rdport(obj, head, 0x03d5); nvkm_wrport(device, head, 0x03d4, index); return nvkm_rdport(device, head, 0x03d5); } void nv_wrvgac(void *obj, int head, u8 index, u8 value) nvkm_wrvgac(struct nvkm_device *device, int head, u8 index, u8 value) { nv_wrport(obj, head, 0x03d4, index); nv_wrport(obj, head, 0x03d5, value); nvkm_wrport(device, head, 0x03d4, index); nvkm_wrport(device, head, 0x03d5, value); } u8 nv_rdvgai(void *obj, int head, u16 port, u8 index) nvkm_rdvgai(struct nvkm_device *device, int head, u16 port, u8 index) { if (port == 0x03c4) return nv_rdvgas(obj, head, index); if (port == 0x03ce) return nv_rdvgag(obj, head, index); if (port == 0x03d4) return nv_rdvgac(obj, head, index); if (port == 0x03c4) return nvkm_rdvgas(device, head, index); if (port == 0x03ce) return nvkm_rdvgag(device, head, index); if (port == 0x03d4) return nvkm_rdvgac(device, head, index); return 0x00; } void nv_wrvgai(void *obj, int head, u16 port, u8 index, u8 value) nvkm_wrvgai(struct nvkm_device *device, int head, u16 port, u8 index, u8 value) { if (port == 0x03c4) nv_wrvgas(obj, head, index, value); else if (port == 0x03ce) nv_wrvgag(obj, head, index, value); else if (port == 0x03d4) nv_wrvgac(obj, head, index, value); if (port == 0x03c4) nvkm_wrvgas(device, head, index, value); else if (port == 0x03ce) nvkm_wrvgag(device, head, index, value); else if (port == 0x03d4) nvkm_wrvgac(device, head, index, value); } bool nv_lockvgac(void *obj, bool lock) nvkm_lockvgac(struct nvkm_device *device, bool lock) { struct nvkm_device *device = nv_device(obj); bool locked = !nv_rdvgac(obj, 0, 0x1f); bool locked = !nvkm_rdvgac(device, 0, 0x1f); u8 data = lock ? 0x99 : 0x57; if (device->card_type < NV_50) nv_wrvgac(obj, 0, 0x1f, data); nvkm_wrvgac(device, 0, 0x1f, data); else nv_wrvgac(obj, 0, 0x3f, data); nvkm_wrvgac(device, 0, 0x3f, data); if (device->chipset == 0x11) { if (!(nvkm_rd32(device, 0x001084) & 0x10000000)) nv_wrvgac(obj, 1, 0x1f, data); nvkm_wrvgac(device, 1, 0x1f, data); } return locked; } Loading @@ -165,17 +159,16 @@ nv_lockvgac(void *obj, bool lock) * other values are treated as literal values to set */ u8 nv_rdvgaowner(void *obj) nvkm_rdvgaowner(struct nvkm_device *device) { struct nvkm_device *device = nv_device(obj); if (device->card_type < NV_50) { if (nv_device(obj)->chipset == 0x11) { if (device->chipset == 0x11) { u32 tied = nvkm_rd32(device, 0x001084) & 0x10000000; if (tied == 0) { u8 slA = nv_rdvgac(obj, 0, 0x28) & 0x80; u8 tvA = nv_rdvgac(obj, 0, 0x33) & 0x01; u8 slB = nv_rdvgac(obj, 1, 0x28) & 0x80; u8 tvB = nv_rdvgac(obj, 1, 0x33) & 0x01; u8 slA = nvkm_rdvgac(device, 0, 0x28) & 0x80; u8 tvA = nvkm_rdvgac(device, 0, 0x33) & 0x01; u8 slB = nvkm_rdvgac(device, 1, 0x28) & 0x80; u8 tvB = nvkm_rdvgac(device, 1, 0x33) & 0x01; if (slA && !tvA) return 0x00; if (slB && !tvB) return 0x03; if (slA) return 0x00; Loading @@ -185,28 +178,28 @@ nv_rdvgaowner(void *obj) return 0x04; } return nv_rdvgac(obj, 0, 0x44); return nvkm_rdvgac(device, 0, 0x44); } return 0x00; } void nv_wrvgaowner(void *obj, u8 select) nvkm_wrvgaowner(struct nvkm_device *device, u8 select) { if (nv_device(obj)->card_type < NV_50) { if (device->card_type < NV_50) { u8 owner = (select == 1) ? 3 : select; if (nv_device(obj)->chipset == 0x11) { if (device->chipset == 0x11) { /* workaround hw lockup bug */ nv_rdvgac(obj, 0, 0x1f); nv_rdvgac(obj, 1, 0x1f); nvkm_rdvgac(device, 0, 0x1f); nvkm_rdvgac(device, 1, 0x1f); } nv_wrvgac(obj, 0, 0x44, owner); nvkm_wrvgac(device, 0, 0x44, owner); if (nv_device(obj)->chipset == 0x11) { nv_wrvgac(obj, 0, 0x2e, owner); nv_wrvgac(obj, 0, 0x2e, owner); if (device->chipset == 0x11) { nvkm_wrvgac(device, 0, 0x2e, owner); nvkm_wrvgac(device, 0, 0x2e, owner); } } }
drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c +8 −6 Original line number Diff line number Diff line Loading @@ -214,7 +214,7 @@ static u8 init_rdport(struct nvbios_init *init, u16 port) { if (init_exec(init)) return nv_rdport(init->subdev, init->crtc, port); return nvkm_rdport(init->subdev->device, init->crtc, port); return 0x00; } Loading @@ -222,7 +222,7 @@ static void init_wrport(struct nvbios_init *init, u16 port, u8 value) { if (init_exec(init)) nv_wrport(init->subdev, init->crtc, port, value); nvkm_wrport(init->subdev->device, init->crtc, port, value); } static u8 Loading @@ -231,7 +231,7 @@ init_rdvgai(struct nvbios_init *init, u16 port, u8 index) struct nvkm_subdev *subdev = init->subdev; if (init_exec(init)) { int head = init->crtc < 0 ? 0 : init->crtc; return nv_rdvgai(subdev, head, port, index); return nvkm_rdvgai(subdev->device, head, port, index); } return 0x00; } Loading @@ -239,19 +239,21 @@ init_rdvgai(struct nvbios_init *init, u16 port, u8 index) static void init_wrvgai(struct nvbios_init *init, u16 port, u8 index, u8 value) { struct nvkm_device *device = init->subdev->device; /* force head 0 for updates to cr44, it only exists on first head */ if (nv_device(init->subdev)->card_type < NV_50) { if (device->card_type < NV_50) { if (port == 0x03d4 && index == 0x44) init->crtc = 0; } if (init_exec(init)) { int head = init->crtc < 0 ? 0 : init->crtc; nv_wrvgai(init->subdev, head, port, index, value); nvkm_wrvgai(device, head, port, index, value); } /* select head 1 if cr44 write selected it */ if (nv_device(init->subdev)->card_type < NV_50) { if (device->card_type < NV_50) { if (port == 0x03d4 && index == 0x44 && value == 3) init->crtc = 1; } Loading
drivers/gpu/drm/nouveau/nvkm/subdev/bios/pll.c +1 −1 Original line number Diff line number Diff line Loading @@ -367,7 +367,7 @@ nvbios_pll_parse(struct nvkm_bios *bios, u32 type, struct nvbios_pll *info) u32 sel_clk = nvkm_rd32(device, 0x680524); if ((info->reg == 0x680508 && sel_clk & 0x20) || (info->reg == 0x680520 && sel_clk & 0x80)) { if (nv_rdvgac(bios, 0, 0x27) < 0xa3) if (nvkm_rdvgac(device, 0, 0x27) < 0xa3) info->refclk = 200000; else info->refclk = 25000; Loading
drivers/gpu/drm/nouveau/nvkm/subdev/devinit/base.c +2 −2 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ _nvkm_devinit_fini(struct nvkm_object *object, bool suspend) init->post = true; /* unlock the extended vga crtc regs */ nv_lockvgac(init, false); nvkm_lockvgac(init->subdev.device, false); return nvkm_subdev_fini(&init->subdev, suspend); } Loading Loading @@ -67,7 +67,7 @@ _nvkm_devinit_dtor(struct nvkm_object *object) struct nvkm_devinit *init = (void *)object; /* lock crtc regs */ nv_lockvgac(init, true); nvkm_lockvgac(init->subdev.device, true); nvkm_subdev_destroy(&init->subdev); } Loading