Message ID | 20241005194603.23139-10-shentey@gmail.com |
---|---|
State | New |
Headers | show |
Series | E500 Cleanup | expand |
On Sat, 5 Oct 2024, Bernhard Beschow wrote: > Populate this read-only register with some arbitrary values which avoids > U-Boot's get_clocks() to hang(). > > Signed-off-by: Bernhard Beschow <shentey@gmail.com> I think the register fields are overkill, a value with a comment or some or'ed shift'ed values with a comment would be simpler but the result is the same so Reviewed-by: BALATON Zoltan <balaton@eik.bme.hu> Regards, BALATON Zoltan > --- > hw/ppc/mpc8544_guts.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/hw/ppc/mpc8544_guts.c b/hw/ppc/mpc8544_guts.c > index e3540b0281..c02b34ccde 100644 > --- a/hw/ppc/mpc8544_guts.c > +++ b/hw/ppc/mpc8544_guts.c > @@ -29,6 +29,12 @@ > #define MPC8544_GUTS_RSTCR_RESET 0x02 > > #define MPC8544_GUTS_ADDR_PORPLLSR 0x00 > +REG32(GUTS_PORPLLSR, 0x00) > + FIELD(GUTS_PORPLLSR, E500_1_RATIO, 24, 6) > + FIELD(GUTS_PORPLLSR, E500_0_RATIO, 16, 6) > + FIELD(GUTS_PORPLLSR, DDR_RATIO, 9, 5) > + FIELD(GUTS_PORPLLSR, PLAT_RATIO, 1, 5) > + > #define MPC8544_GUTS_ADDR_PORBMSR 0x04 > #define MPC8544_GUTS_ADDR_PORIMPSCR 0x08 > #define MPC8544_GUTS_ADDR_PORDEVSR 0x0C > @@ -75,6 +81,12 @@ static uint64_t mpc8544_guts_read(void *opaque, hwaddr addr, > > addr &= MPC8544_GUTS_MMIO_SIZE - 1; > switch (addr) { > + case MPC8544_GUTS_ADDR_PORPLLSR: > + value = FIELD_DP32(value, GUTS_PORPLLSR, E500_1_RATIO, 6); /* 3:1 */ > + value = FIELD_DP32(value, GUTS_PORPLLSR, E500_0_RATIO, 6); /* 3:1 */ > + value = FIELD_DP32(value, GUTS_PORPLLSR, DDR_RATIO, 12); /* 12:1 */ > + value = FIELD_DP32(value, GUTS_PORPLLSR, PLAT_RATIO, 6); /* 6:1 */ > + break; > case MPC8544_GUTS_ADDR_PVR: > value = env->spr[SPR_PVR]; > break; >
diff --git a/hw/ppc/mpc8544_guts.c b/hw/ppc/mpc8544_guts.c index e3540b0281..c02b34ccde 100644 --- a/hw/ppc/mpc8544_guts.c +++ b/hw/ppc/mpc8544_guts.c @@ -29,6 +29,12 @@ #define MPC8544_GUTS_RSTCR_RESET 0x02 #define MPC8544_GUTS_ADDR_PORPLLSR 0x00 +REG32(GUTS_PORPLLSR, 0x00) + FIELD(GUTS_PORPLLSR, E500_1_RATIO, 24, 6) + FIELD(GUTS_PORPLLSR, E500_0_RATIO, 16, 6) + FIELD(GUTS_PORPLLSR, DDR_RATIO, 9, 5) + FIELD(GUTS_PORPLLSR, PLAT_RATIO, 1, 5) + #define MPC8544_GUTS_ADDR_PORBMSR 0x04 #define MPC8544_GUTS_ADDR_PORIMPSCR 0x08 #define MPC8544_GUTS_ADDR_PORDEVSR 0x0C @@ -75,6 +81,12 @@ static uint64_t mpc8544_guts_read(void *opaque, hwaddr addr, addr &= MPC8544_GUTS_MMIO_SIZE - 1; switch (addr) { + case MPC8544_GUTS_ADDR_PORPLLSR: + value = FIELD_DP32(value, GUTS_PORPLLSR, E500_1_RATIO, 6); /* 3:1 */ + value = FIELD_DP32(value, GUTS_PORPLLSR, E500_0_RATIO, 6); /* 3:1 */ + value = FIELD_DP32(value, GUTS_PORPLLSR, DDR_RATIO, 12); /* 12:1 */ + value = FIELD_DP32(value, GUTS_PORPLLSR, PLAT_RATIO, 6); /* 6:1 */ + break; case MPC8544_GUTS_ADDR_PVR: value = env->spr[SPR_PVR]; break;
Populate this read-only register with some arbitrary values which avoids U-Boot's get_clocks() to hang(). Signed-off-by: Bernhard Beschow <shentey@gmail.com> --- hw/ppc/mpc8544_guts.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)