Message ID | 20220315075753.8591-3-steven_lee@aspeedtech.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | hw: aspeed_scu: Add AST2600 hpll calculation function | expand |
On 3/15/22 08:57, Steven Lee wrote: > AST2600 clkin is always 25MHz, introduce clkin_25Mhz attribute > for aspeed_scu_get_clkin() to return the correct clkin for ast2600. > > Signed-off-by: Steven Lee <steven_lee@aspeedtech.com> Reviewed-by: Cédric Le Goater <clg@kaod.org> Thanks, C. > --- > hw/misc/aspeed_scu.c | 6 +++++- > include/hw/misc/aspeed_scu.h | 1 + > 2 files changed, 6 insertions(+), 1 deletion(-) > > diff --git a/hw/misc/aspeed_scu.c b/hw/misc/aspeed_scu.c > index d65f86df3d..150567f98a 100644 > --- a/hw/misc/aspeed_scu.c > +++ b/hw/misc/aspeed_scu.c > @@ -371,7 +371,8 @@ static const MemoryRegionOps aspeed_ast2500_scu_ops = { > > static uint32_t aspeed_scu_get_clkin(AspeedSCUState *s) > { > - if (s->hw_strap1 & SCU_HW_STRAP_CLK_25M_IN) { > + if (s->hw_strap1 & SCU_HW_STRAP_CLK_25M_IN || > + ASPEED_SCU_GET_CLASS(s)->clkin_25Mhz) { > return 25000000; > } else if (s->hw_strap1 & SCU_HW_STRAP_CLK_48M_IN) { > return 48000000; > @@ -562,6 +563,7 @@ static void aspeed_2400_scu_class_init(ObjectClass *klass, void *data) > asc->get_apb = aspeed_2400_scu_get_apb_freq; > asc->apb_divider = 2; > asc->nr_regs = ASPEED_SCU_NR_REGS; > + asc->clkin_25Mhz = false; > asc->ops = &aspeed_ast2400_scu_ops; > } > > @@ -583,6 +585,7 @@ static void aspeed_2500_scu_class_init(ObjectClass *klass, void *data) > asc->get_apb = aspeed_2400_scu_get_apb_freq; > asc->apb_divider = 4; > asc->nr_regs = ASPEED_SCU_NR_REGS; > + asc->clkin_25Mhz = false; > asc->ops = &aspeed_ast2500_scu_ops; > } > > @@ -756,6 +759,7 @@ static void aspeed_2600_scu_class_init(ObjectClass *klass, void *data) > asc->get_apb = aspeed_2600_scu_get_apb_freq; > asc->apb_divider = 4; > asc->nr_regs = ASPEED_AST2600_SCU_NR_REGS; > + asc->clkin_25Mhz = true; > asc->ops = &aspeed_ast2600_scu_ops; > } > > diff --git a/include/hw/misc/aspeed_scu.h b/include/hw/misc/aspeed_scu.h > index 6bf67589e8..fdc721846c 100644 > --- a/include/hw/misc/aspeed_scu.h > +++ b/include/hw/misc/aspeed_scu.h > @@ -59,6 +59,7 @@ struct AspeedSCUClass { > uint32_t (*get_apb)(AspeedSCUState *s); > uint32_t apb_divider; > uint32_t nr_regs; > + bool clkin_25Mhz; > const MemoryRegionOps *ops; > }; >
diff --git a/hw/misc/aspeed_scu.c b/hw/misc/aspeed_scu.c index d65f86df3d..150567f98a 100644 --- a/hw/misc/aspeed_scu.c +++ b/hw/misc/aspeed_scu.c @@ -371,7 +371,8 @@ static const MemoryRegionOps aspeed_ast2500_scu_ops = { static uint32_t aspeed_scu_get_clkin(AspeedSCUState *s) { - if (s->hw_strap1 & SCU_HW_STRAP_CLK_25M_IN) { + if (s->hw_strap1 & SCU_HW_STRAP_CLK_25M_IN || + ASPEED_SCU_GET_CLASS(s)->clkin_25Mhz) { return 25000000; } else if (s->hw_strap1 & SCU_HW_STRAP_CLK_48M_IN) { return 48000000; @@ -562,6 +563,7 @@ static void aspeed_2400_scu_class_init(ObjectClass *klass, void *data) asc->get_apb = aspeed_2400_scu_get_apb_freq; asc->apb_divider = 2; asc->nr_regs = ASPEED_SCU_NR_REGS; + asc->clkin_25Mhz = false; asc->ops = &aspeed_ast2400_scu_ops; } @@ -583,6 +585,7 @@ static void aspeed_2500_scu_class_init(ObjectClass *klass, void *data) asc->get_apb = aspeed_2400_scu_get_apb_freq; asc->apb_divider = 4; asc->nr_regs = ASPEED_SCU_NR_REGS; + asc->clkin_25Mhz = false; asc->ops = &aspeed_ast2500_scu_ops; } @@ -756,6 +759,7 @@ static void aspeed_2600_scu_class_init(ObjectClass *klass, void *data) asc->get_apb = aspeed_2600_scu_get_apb_freq; asc->apb_divider = 4; asc->nr_regs = ASPEED_AST2600_SCU_NR_REGS; + asc->clkin_25Mhz = true; asc->ops = &aspeed_ast2600_scu_ops; } diff --git a/include/hw/misc/aspeed_scu.h b/include/hw/misc/aspeed_scu.h index 6bf67589e8..fdc721846c 100644 --- a/include/hw/misc/aspeed_scu.h +++ b/include/hw/misc/aspeed_scu.h @@ -59,6 +59,7 @@ struct AspeedSCUClass { uint32_t (*get_apb)(AspeedSCUState *s); uint32_t apb_divider; uint32_t nr_regs; + bool clkin_25Mhz; const MemoryRegionOps *ops; };
AST2600 clkin is always 25MHz, introduce clkin_25Mhz attribute for aspeed_scu_get_clkin() to return the correct clkin for ast2600. Signed-off-by: Steven Lee <steven_lee@aspeedtech.com> --- hw/misc/aspeed_scu.c | 6 +++++- include/hw/misc/aspeed_scu.h | 1 + 2 files changed, 6 insertions(+), 1 deletion(-)