drm/nouveau/clock: fix missing pll type/addr when matching default entry
This issue is a regression from 70790f4f81
,
and causes us to miss a special-case for C51 (NV4E) chipsets and return
the wrong reference frequency for the VPLLs.
Should fix fdo#56202
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
2c25b73995
commit
5e5a195ecc
1 changed files with 4 additions and 6 deletions
|
@ -157,11 +157,10 @@ pll_map_reg(struct nouveau_bios *bios, u32 reg, u32 *type, u8 *ver, u8 *len)
|
||||||
while (map->reg) {
|
while (map->reg) {
|
||||||
if (map->reg == reg && *ver >= 0x20) {
|
if (map->reg == reg && *ver >= 0x20) {
|
||||||
u16 addr = (data += hdr);
|
u16 addr = (data += hdr);
|
||||||
|
*type = map->type;
|
||||||
while (cnt--) {
|
while (cnt--) {
|
||||||
if (nv_ro32(bios, data) == map->reg) {
|
if (nv_ro32(bios, data) == map->reg)
|
||||||
*type = map->type;
|
|
||||||
return data;
|
return data;
|
||||||
}
|
|
||||||
data += *len;
|
data += *len;
|
||||||
}
|
}
|
||||||
return addr;
|
return addr;
|
||||||
|
@ -200,11 +199,10 @@ pll_map_type(struct nouveau_bios *bios, u8 type, u32 *reg, u8 *ver, u8 *len)
|
||||||
while (map->reg) {
|
while (map->reg) {
|
||||||
if (map->type == type && *ver >= 0x20) {
|
if (map->type == type && *ver >= 0x20) {
|
||||||
u16 addr = (data += hdr);
|
u16 addr = (data += hdr);
|
||||||
|
*reg = map->reg;
|
||||||
while (cnt--) {
|
while (cnt--) {
|
||||||
if (nv_ro32(bios, data) == map->reg) {
|
if (nv_ro32(bios, data) == map->reg)
|
||||||
*reg = map->reg;
|
|
||||||
return data;
|
return data;
|
||||||
}
|
|
||||||
data += *len;
|
data += *len;
|
||||||
}
|
}
|
||||||
return addr;
|
return addr;
|
||||||
|
|
Loading…
Add table
Reference in a new issue