Re: [PATCH v5 2/2] mtd: rawnand: Add NAND controller support on Intel LGM SoC

From: Boris Brezillon
Date: Thu May 07 2020 - 02:48:38 EST


On Thu, 7 May 2020 14:38:52 +0800
"Ramuthevar, Vadivel MuruganX"
<vadivel.muruganx.ramuthevar@xxxxxxxxxxxxxxx> wrote:

> Hi Boris,
>
> Thank you very much for the review comments and your time...
>
> On 7/5/2020 2:27 pm, Boris Brezillon wrote:
> > On Thu, 7 May 2020 14:13:42 +0800
> > "Ramuthevar, Vadivel MuruganX"
> > <vadivel.muruganx.ramuthevar@xxxxxxxxxxxxxxx> wrote:
> >
> >> Hi Boris,
> >>
> >> Thank you very much for the review comments and your time...
> >>
> >> On 7/5/2020 1:28 pm, Boris Brezillon wrote:
> >>> On Thu, 7 May 2020 08:15:37 +0800
> >>> "Ramuthevar,Vadivel MuruganX"
> >>> <vadivel.muruganx.ramuthevar@xxxxxxxxxxxxxxx> wrote:
> >>>
> >>>> + reg = readl(ebu_host->ebu + EBU_ADDR_SEL(ebu_host->cs_num));
> >>>> + writel(reg | EBU_ADDR_MASK(5) | EBU_ADDR_SEL_REGEN,
> >>>> + ebu_host->ebu + EBU_ADDR_SEL(ebu_host->cs_num));
> >>>
> >>> Seriously, did you really think I would not notice what you're doing
> >>> here?
> >> Yes , I know that you have very good understanding about this.
> >> You're reading the previous value which either contains a default
> >>> mapping or has the mapping set by the bootloader, and write it back to
> >>> the register along with a new mask and the REGEN bit set (which
> >>> BTW is wrong since you don't mask out other fields before updating
> >>> them).
> >> There is no other field get overwritten
> >> This confirms that this Core -> FPI address translation exists
> >>> and has to be set properly, so please stop lying about that.
> >>
> >> Sorry, there is no SW translation, as I have mentioned that it's
> >> optional only, for safer side , reading and writing the default values.
> >
> > Then write EBU_ADDR_SEL_REGEN and we'll if see that works. I suspect it
> > won't.
>
> You mean, without reading just writing EBU_ADDR_SEL_REGEN bit alone in
> EBU_ADDR_SELx , as you said it won't work because it overwrites 0x174
> with 0x0 values so BASE is lost.

Which confirms that this mapping has to be defined.

> either we can leave it or read & write with ORed | EBU_ADDR_SEL_REGEN

None of this is acceptable IMO. You have to build the value based on the
address translation described in the DT. Why are you so reluctant to
this approach?

>
> Please correct me if anything is wrong, Thanks!
> >
> >> The memory region to enabled that's my concern so written the same
> >> register values.
> >
> > I don't buy that, sorry.
> >
> >>
> >> This will not be impact other fields, so please see below for reference
> >>
> >> The EBU Address Select Registers EBU_ADDR_SEL_0 to EBU_ADDSEL3 establish
> >> and control memory regions for external accesses.
> >>
> >> Reset Value: 17400001H
> >
> > See, as suspected the reset value is exactly what you expect.
>
> Yes , that's the reason said being optional.

Then it's not optional. It just works because you use the default
value.