diff options
| -rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c index 1f590f839f76..f4611e3f0971 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c | |||
| @@ -577,9 +577,6 @@ init_reserved(struct nvbios_init *init) | |||
| 577 | u8 length, i; | 577 | u8 length, i; |
| 578 | 578 | ||
| 579 | switch (opcode) { | 579 | switch (opcode) { |
| 580 | case 0x59: | ||
| 581 | length = 7; | ||
| 582 | break; | ||
| 583 | case 0xaa: | 580 | case 0xaa: |
| 584 | length = 4; | 581 | length = 4; |
| 585 | break; | 582 | break; |
| @@ -1288,6 +1285,25 @@ init_zm_reg_sequence(struct nvbios_init *init) | |||
| 1288 | } | 1285 | } |
| 1289 | 1286 | ||
| 1290 | /** | 1287 | /** |
| 1288 | * INIT_PLL_INDIRECT - opcode 0x59 | ||
| 1289 | * | ||
| 1290 | */ | ||
| 1291 | static void | ||
| 1292 | init_pll_indirect(struct nvbios_init *init) | ||
| 1293 | { | ||
| 1294 | struct nvkm_bios *bios = init->bios; | ||
| 1295 | u32 reg = nv_ro32(bios, init->offset + 1); | ||
| 1296 | u16 addr = nv_ro16(bios, init->offset + 5); | ||
| 1297 | u32 freq = (u32)nv_ro16(bios, addr) * 1000; | ||
| 1298 | |||
| 1299 | trace("PLL_INDIRECT\tR[0x%06x] =PLL= VBIOS[%04x] = %dkHz\n", | ||
| 1300 | reg, addr, freq); | ||
| 1301 | init->offset += 7; | ||
| 1302 | |||
| 1303 | init_prog_pll(init, reg, freq); | ||
| 1304 | } | ||
| 1305 | |||
| 1306 | /** | ||
| 1291 | * INIT_ZM_REG_INDIRECT - opcode 0x5a | 1307 | * INIT_ZM_REG_INDIRECT - opcode 0x5a |
| 1292 | * | 1308 | * |
| 1293 | */ | 1309 | */ |
| @@ -2167,7 +2183,7 @@ static struct nvbios_init_opcode { | |||
| 2167 | [0x56] = { init_condition_time }, | 2183 | [0x56] = { init_condition_time }, |
| 2168 | [0x57] = { init_ltime }, | 2184 | [0x57] = { init_ltime }, |
| 2169 | [0x58] = { init_zm_reg_sequence }, | 2185 | [0x58] = { init_zm_reg_sequence }, |
| 2170 | [0x59] = { init_reserved }, | 2186 | [0x59] = { init_pll_indirect }, |
| 2171 | [0x5a] = { init_zm_reg_indirect }, | 2187 | [0x5a] = { init_zm_reg_indirect }, |
| 2172 | [0x5b] = { init_sub_direct }, | 2188 | [0x5b] = { init_sub_direct }, |
| 2173 | [0x5c] = { init_jump }, | 2189 | [0x5c] = { init_jump }, |
