Loading drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c +7 −4 Original line number Diff line number Diff line Loading @@ -180,27 +180,30 @@ init_nvreg(struct nvbios_init *init, u32 reg) static u32 init_rd32(struct nvbios_init *init, u32 reg) { struct nvkm_device *device = init->bios->subdev.device; reg = init_nvreg(init, reg); if (reg != ~0 && init_exec(init)) return nv_rd32(init->subdev, reg); return nvkm_rd32(device, reg); return 0x00000000; } static void init_wr32(struct nvbios_init *init, u32 reg, u32 val) { struct nvkm_device *device = init->bios->subdev.device; reg = init_nvreg(init, reg); if (reg != ~0 && init_exec(init)) nv_wr32(init->subdev, reg, val); nvkm_wr32(device, reg, val); } static u32 init_mask(struct nvbios_init *init, u32 reg, u32 mask, u32 val) { struct nvkm_device *device = init->bios->subdev.device; reg = init_nvreg(init, reg); if (reg != ~0 && init_exec(init)) { u32 tmp = nv_rd32(init->subdev, reg); nv_wr32(init->subdev, reg, (tmp & ~mask) | val); u32 tmp = nvkm_rd32(device, reg); nvkm_wr32(device, reg, (tmp & ~mask) | val); return tmp; } return 0x00000000; Loading drivers/gpu/drm/nouveau/nvkm/subdev/bios/pll.c +4 −3 Original line number Diff line number Diff line Loading @@ -221,6 +221,7 @@ pll_map_type(struct nvkm_bios *bios, u8 type, u32 *reg, u8 *ver, u8 *len) int nvbios_pll_parse(struct nvkm_bios *bios, u32 type, struct nvbios_pll *info) { struct nvkm_device *device = bios->subdev.device; u8 ver, len; u32 reg = type; u16 data; Loading Loading @@ -360,9 +361,9 @@ nvbios_pll_parse(struct nvkm_bios *bios, u32 type, struct nvbios_pll *info) } if (!info->refclk) { info->refclk = nv_device(bios)->crystal; info->refclk = device->crystal; if (bios->version.chip == 0x51) { u32 sel_clk = nv_rd32(bios, 0x680524); 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) Loading Loading @@ -392,7 +393,7 @@ nvbios_pll_parse(struct nvkm_bios *bios, u32 type, struct nvbios_pll *info) info->vco1.max_n = 0xff; info->vco1.min_m = 0x1; if (nv_device(bios)->crystal == 13500) { if (device->crystal == 13500) { /* nv05 does this, nv11 doesn't, nv10 unknown */ if (bios->version.chip < 0x11) info->vco1.min_m = 0x7; Loading drivers/gpu/drm/nouveau/nvkm/subdev/bios/ramcfg.c +1 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ static u8 nvbios_ramcfg_strap(struct nvkm_subdev *subdev) { return (nv_rd32(subdev, 0x101000) & 0x0000003c) >> 2; return (nvkm_rd32(subdev->device, 0x101000) & 0x0000003c) >> 2; } u8 Loading drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowramin.c +14 −11 Original line number Diff line number Diff line Loading @@ -30,10 +30,11 @@ struct priv { static u32 pramin_read(void *data, u32 offset, u32 length, struct nvkm_bios *bios) { struct nvkm_device *device = bios->subdev.device; u32 i; if (offset + length <= 0x00100000) { for (i = offset; i < offset + length; i += 4) *(u32 *)&bios->data[i] = nv_rd32(bios, 0x700000 + i); *(u32 *)&bios->data[i] = nvkm_rd32(device, 0x700000 + i); return length; } return 0; Loading @@ -44,7 +45,8 @@ pramin_fini(void *data) { struct priv *priv = data; if (priv) { nv_wr32(priv->bios, 0x001700, priv->bar0); struct nvkm_device *device = priv->bios->subdev.device; nvkm_wr32(device, 0x001700, priv->bar0); kfree(priv); } } Loading @@ -52,19 +54,20 @@ pramin_fini(void *data) static void * pramin_init(struct nvkm_bios *bios, const char *name) { struct nvkm_device *device = bios->subdev.device; struct priv *priv = NULL; u64 addr = 0; /* PRAMIN always potentially available prior to nv50 */ if (nv_device(bios)->card_type < NV_50) if (device->card_type < NV_50) return NULL; /* we can't get the bios image pointer without PDISP */ if (nv_device(bios)->card_type >= GM100) addr = nv_rd32(bios, 0x021c04); if (device->card_type >= GM100) addr = nvkm_rd32(device, 0x021c04); else if (nv_device(bios)->card_type >= NV_C0) addr = nv_rd32(bios, 0x022500); if (device->card_type >= NV_C0) addr = nvkm_rd32(device, 0x022500); if (addr & 0x00000001) { nv_debug(bios, "... display disabled\n"); return ERR_PTR(-ENODEV); Loading @@ -74,7 +77,7 @@ pramin_init(struct nvkm_bios *bios, const char *name) * important as we don't want to be touching vram on an * uninitialised board */ addr = nv_rd32(bios, 0x619f04); addr = nvkm_rd32(device, 0x619f04); if (!(addr & 0x00000008)) { nv_debug(bios, "... not enabled\n"); return ERR_PTR(-ENODEV); Loading @@ -87,7 +90,7 @@ pramin_init(struct nvkm_bios *bios, const char *name) /* some alternate method inherited from xf86-video-nv... */ addr = (addr & 0xffffff00) << 8; if (!addr) { addr = (u64)nv_rd32(bios, 0x001700) << 16; addr = (u64)nvkm_rd32(device, 0x001700) << 16; addr += 0xf0000; } Loading @@ -98,8 +101,8 @@ pramin_init(struct nvkm_bios *bios, const char *name) } priv->bios = bios; priv->bar0 = nv_rd32(bios, 0x001700); nv_wr32(bios, 0x001700, addr >> 16); priv->bar0 = nvkm_rd32(device, 0x001700); nvkm_wr32(device, 0x001700, addr >> 16); return priv; } Loading drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowrom.c +12 −11 Original line number Diff line number Diff line Loading @@ -25,10 +25,11 @@ static u32 prom_read(void *data, u32 offset, u32 length, struct nvkm_bios *bios) { struct nvkm_device *device = data; u32 i; if (offset + length <= 0x00100000) { for (i = offset; i < offset + length; i += 4) *(u32 *)&bios->data[i] = nv_rd32(bios, 0x300000 + i); *(u32 *)&bios->data[i] = nvkm_rd32(device, 0x300000 + i); return length; } return 0; Loading @@ -37,25 +38,25 @@ prom_read(void *data, u32 offset, u32 length, struct nvkm_bios *bios) static void prom_fini(void *data) { struct nvkm_bios *bios = data; if (nv_device(bios)->card_type < NV_50) nv_mask(bios, 0x001850, 0x00000001, 0x00000001); struct nvkm_device *device = data; if (device->card_type < NV_50) nvkm_mask(device, 0x001850, 0x00000001, 0x00000001); else nv_mask(bios, 0x088050, 0x00000001, 0x00000001); nvkm_mask(device, 0x088050, 0x00000001, 0x00000001); } static void * prom_init(struct nvkm_bios *bios, const char *name) { if (nv_device(bios)->card_type < NV_50) { if (nv_device(bios)->card_type == NV_40 && nv_device(bios)->chipset >= 0x4c) struct nvkm_device *device = bios->subdev.device; if (device->card_type < NV_50) { if (device->card_type == NV_40 && device->chipset >= 0x4c) return ERR_PTR(-ENODEV); nv_mask(bios, 0x001850, 0x00000001, 0x00000000); nvkm_mask(device, 0x001850, 0x00000001, 0x00000000); } else { nv_mask(bios, 0x088050, 0x00000001, 0x00000000); nvkm_mask(device, 0x088050, 0x00000001, 0x00000000); } return bios; return device; } const struct nvbios_source Loading Loading
drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c +7 −4 Original line number Diff line number Diff line Loading @@ -180,27 +180,30 @@ init_nvreg(struct nvbios_init *init, u32 reg) static u32 init_rd32(struct nvbios_init *init, u32 reg) { struct nvkm_device *device = init->bios->subdev.device; reg = init_nvreg(init, reg); if (reg != ~0 && init_exec(init)) return nv_rd32(init->subdev, reg); return nvkm_rd32(device, reg); return 0x00000000; } static void init_wr32(struct nvbios_init *init, u32 reg, u32 val) { struct nvkm_device *device = init->bios->subdev.device; reg = init_nvreg(init, reg); if (reg != ~0 && init_exec(init)) nv_wr32(init->subdev, reg, val); nvkm_wr32(device, reg, val); } static u32 init_mask(struct nvbios_init *init, u32 reg, u32 mask, u32 val) { struct nvkm_device *device = init->bios->subdev.device; reg = init_nvreg(init, reg); if (reg != ~0 && init_exec(init)) { u32 tmp = nv_rd32(init->subdev, reg); nv_wr32(init->subdev, reg, (tmp & ~mask) | val); u32 tmp = nvkm_rd32(device, reg); nvkm_wr32(device, reg, (tmp & ~mask) | val); return tmp; } return 0x00000000; Loading
drivers/gpu/drm/nouveau/nvkm/subdev/bios/pll.c +4 −3 Original line number Diff line number Diff line Loading @@ -221,6 +221,7 @@ pll_map_type(struct nvkm_bios *bios, u8 type, u32 *reg, u8 *ver, u8 *len) int nvbios_pll_parse(struct nvkm_bios *bios, u32 type, struct nvbios_pll *info) { struct nvkm_device *device = bios->subdev.device; u8 ver, len; u32 reg = type; u16 data; Loading Loading @@ -360,9 +361,9 @@ nvbios_pll_parse(struct nvkm_bios *bios, u32 type, struct nvbios_pll *info) } if (!info->refclk) { info->refclk = nv_device(bios)->crystal; info->refclk = device->crystal; if (bios->version.chip == 0x51) { u32 sel_clk = nv_rd32(bios, 0x680524); 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) Loading Loading @@ -392,7 +393,7 @@ nvbios_pll_parse(struct nvkm_bios *bios, u32 type, struct nvbios_pll *info) info->vco1.max_n = 0xff; info->vco1.min_m = 0x1; if (nv_device(bios)->crystal == 13500) { if (device->crystal == 13500) { /* nv05 does this, nv11 doesn't, nv10 unknown */ if (bios->version.chip < 0x11) info->vco1.min_m = 0x7; Loading
drivers/gpu/drm/nouveau/nvkm/subdev/bios/ramcfg.c +1 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ static u8 nvbios_ramcfg_strap(struct nvkm_subdev *subdev) { return (nv_rd32(subdev, 0x101000) & 0x0000003c) >> 2; return (nvkm_rd32(subdev->device, 0x101000) & 0x0000003c) >> 2; } u8 Loading
drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowramin.c +14 −11 Original line number Diff line number Diff line Loading @@ -30,10 +30,11 @@ struct priv { static u32 pramin_read(void *data, u32 offset, u32 length, struct nvkm_bios *bios) { struct nvkm_device *device = bios->subdev.device; u32 i; if (offset + length <= 0x00100000) { for (i = offset; i < offset + length; i += 4) *(u32 *)&bios->data[i] = nv_rd32(bios, 0x700000 + i); *(u32 *)&bios->data[i] = nvkm_rd32(device, 0x700000 + i); return length; } return 0; Loading @@ -44,7 +45,8 @@ pramin_fini(void *data) { struct priv *priv = data; if (priv) { nv_wr32(priv->bios, 0x001700, priv->bar0); struct nvkm_device *device = priv->bios->subdev.device; nvkm_wr32(device, 0x001700, priv->bar0); kfree(priv); } } Loading @@ -52,19 +54,20 @@ pramin_fini(void *data) static void * pramin_init(struct nvkm_bios *bios, const char *name) { struct nvkm_device *device = bios->subdev.device; struct priv *priv = NULL; u64 addr = 0; /* PRAMIN always potentially available prior to nv50 */ if (nv_device(bios)->card_type < NV_50) if (device->card_type < NV_50) return NULL; /* we can't get the bios image pointer without PDISP */ if (nv_device(bios)->card_type >= GM100) addr = nv_rd32(bios, 0x021c04); if (device->card_type >= GM100) addr = nvkm_rd32(device, 0x021c04); else if (nv_device(bios)->card_type >= NV_C0) addr = nv_rd32(bios, 0x022500); if (device->card_type >= NV_C0) addr = nvkm_rd32(device, 0x022500); if (addr & 0x00000001) { nv_debug(bios, "... display disabled\n"); return ERR_PTR(-ENODEV); Loading @@ -74,7 +77,7 @@ pramin_init(struct nvkm_bios *bios, const char *name) * important as we don't want to be touching vram on an * uninitialised board */ addr = nv_rd32(bios, 0x619f04); addr = nvkm_rd32(device, 0x619f04); if (!(addr & 0x00000008)) { nv_debug(bios, "... not enabled\n"); return ERR_PTR(-ENODEV); Loading @@ -87,7 +90,7 @@ pramin_init(struct nvkm_bios *bios, const char *name) /* some alternate method inherited from xf86-video-nv... */ addr = (addr & 0xffffff00) << 8; if (!addr) { addr = (u64)nv_rd32(bios, 0x001700) << 16; addr = (u64)nvkm_rd32(device, 0x001700) << 16; addr += 0xf0000; } Loading @@ -98,8 +101,8 @@ pramin_init(struct nvkm_bios *bios, const char *name) } priv->bios = bios; priv->bar0 = nv_rd32(bios, 0x001700); nv_wr32(bios, 0x001700, addr >> 16); priv->bar0 = nvkm_rd32(device, 0x001700); nvkm_wr32(device, 0x001700, addr >> 16); return priv; } Loading
drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowrom.c +12 −11 Original line number Diff line number Diff line Loading @@ -25,10 +25,11 @@ static u32 prom_read(void *data, u32 offset, u32 length, struct nvkm_bios *bios) { struct nvkm_device *device = data; u32 i; if (offset + length <= 0x00100000) { for (i = offset; i < offset + length; i += 4) *(u32 *)&bios->data[i] = nv_rd32(bios, 0x300000 + i); *(u32 *)&bios->data[i] = nvkm_rd32(device, 0x300000 + i); return length; } return 0; Loading @@ -37,25 +38,25 @@ prom_read(void *data, u32 offset, u32 length, struct nvkm_bios *bios) static void prom_fini(void *data) { struct nvkm_bios *bios = data; if (nv_device(bios)->card_type < NV_50) nv_mask(bios, 0x001850, 0x00000001, 0x00000001); struct nvkm_device *device = data; if (device->card_type < NV_50) nvkm_mask(device, 0x001850, 0x00000001, 0x00000001); else nv_mask(bios, 0x088050, 0x00000001, 0x00000001); nvkm_mask(device, 0x088050, 0x00000001, 0x00000001); } static void * prom_init(struct nvkm_bios *bios, const char *name) { if (nv_device(bios)->card_type < NV_50) { if (nv_device(bios)->card_type == NV_40 && nv_device(bios)->chipset >= 0x4c) struct nvkm_device *device = bios->subdev.device; if (device->card_type < NV_50) { if (device->card_type == NV_40 && device->chipset >= 0x4c) return ERR_PTR(-ENODEV); nv_mask(bios, 0x001850, 0x00000001, 0x00000000); nvkm_mask(device, 0x001850, 0x00000001, 0x00000000); } else { nv_mask(bios, 0x088050, 0x00000001, 0x00000000); nvkm_mask(device, 0x088050, 0x00000001, 0x00000000); } return bios; return device; } const struct nvbios_source Loading