Hi Leo,

On Tue, Jan 31, 2023 at 07:07:02AM +0000, Leo Liang wrote:
> Hi Peter,
> On Thu, Jan 19, 2023 at 03:05:38PM +0800, Yu Chien Peter Lin wrote:
> > This patch improves the cache enabling operation in harts_early_init(),
> > also moves the CSR definition to include/asm/arch-andes/csr.h and drops
> > unnecessary i/d-cache disable functions from cleanup_before_linux().
> > 
> > Signed-off-by: Yu Chien Peter Lin <peter...@andestech.com>
> > ---
> >  arch/riscv/cpu/ax25/cpu.c               | 46 +++++++------------------
> >  arch/riscv/include/asm/arch-andes/csr.h | 29 ++++++++++++++++
> >  2 files changed, 42 insertions(+), 33 deletions(-)
> >  create mode 100644 arch/riscv/include/asm/arch-andes/csr.h
> > 
> > diff --git a/arch/riscv/cpu/ax25/cpu.c b/arch/riscv/cpu/ax25/cpu.c
> > index c4c2de2ef0..d335b8d0a8 100644
> > --- a/arch/riscv/cpu/ax25/cpu.c
> > +++ b/arch/riscv/cpu/ax25/cpu.c
> > @@ -1,6 +1,6 @@
> >  void harts_early_init(void)
> >  {
> > +   /* Enable I/D-cache in SPL */
> >     if (CONFIG_IS_ENABLED(RISCV_MMODE)) {
> > -           unsigned long long mcache_ctl_val = csr_read(CSR_MCACHE_CTL);
> > +           unsigned long mcache_ctl_val = csr_read(CSR_MCACHE_CTL);
> > +
> > +           mcache_ctl_val |= MCACHE_CTL_DC_COHEN;
> > +           mcache_ctl_val |= MCACHE_CTL_IC_EN;
> > +           mcache_ctl_val |= MCACHE_CTL_DC_EN;
> 
> These three could be combined into one statement.
> With your consent, I could modify this when applying to u-boot-riscv/master.

Thanks, I also want to improve the comment, I'll update this along with
the next patch.

Best regards,
Peter Lin

> Reviewed-by: Leo Yu-Chi Liang <ycli...@andestech.com>
> 
> >  
> > -           if (!(mcache_ctl_val & V5_MCACHE_CTL_DC_COHEN_EN))
> > -                   mcache_ctl_val |= V5_MCACHE_CTL_DC_COHEN_EN;
> > -           if (!(mcache_ctl_val & V5_MCACHE_CTL_IC_EN))
> > -                   mcache_ctl_val |= V5_MCACHE_CTL_IC_EN;
> > -           if (!(mcache_ctl_val & V5_MCACHE_CTL_DC_EN))
> > -                   mcache_ctl_val |= V5_MCACHE_CTL_DC_EN;
> >             csr_write(CSR_MCACHE_CTL, mcache_ctl_val);
> >  
> >             /*
> > -            * Check DC_COHEN_EN, if cannot write to mcache_ctl,
> > -            * we assume this bitmap not support L2 CM
> > +            * Check mcache_ctl.DC_COHEN, we assume this platform does
> > +            * not support CM if the bit is hard-wired to 0.
> >              */
> > -           mcache_ctl_val = csr_read(CSR_MCACHE_CTL);
> > -           if ((mcache_ctl_val & V5_MCACHE_CTL_DC_COHEN_EN)) {
> > -           /* Wait for DC_COHSTA bit be set */
> > -                   while (!(mcache_ctl_val & V5_MCACHE_CTL_DC_COHSTA_EN))
> > -                           mcache_ctl_val = csr_read(CSR_MCACHE_CTL);
> > +           if (csr_read(CSR_MCACHE_CTL) & MCACHE_CTL_DC_COHEN) {
> > +                   /* Wait for DC_COHSTA bit to be set */
> > +                   while (!(csr_read(CSR_MCACHE_CTL)& 
> > MCACHE_CTL_DC_COHSTA));
> >             }
> >     }
> >  }
> 
> Best regards,
> Leo

Reply via email to