Messages in this thread | | | Date | Wed, 24 Feb 2021 22:00:05 +0530 | From | mdalam@codeauro ... | Subject | Re: [PATCH] mtd: rawnand: qcom: update last code word register |
| |
On 2021-02-24 12:18, Miquel Raynal wrote: > Hello, > > mdalam@codeaurora.org wrote on Wed, 24 Feb 2021 10:09:48 +0530: > >> On 2021-02-24 01:13, mdalam@codeaurora.org wrote: >> > On 2021-02-23 22:04, Miquel Raynal wrote: >> >> Hello, >> >> >> Md Sadre Alam <mdalam@codeaurora.org> wrote on Tue, 23 Feb 2021 >> >> 01:34:27 +0530: >> >> >>> From QPIC version 2.0 onwards new register got added to read last >> >> >> a new >> >> >>> codeword. This change will add the READ_LOCATION_LAST_CW_n register. >> >> >> Add support for this READ_LOCATION_LAST_CW_n register. >> >> >>> >>> For first three code word READ_LOCATION_n register will be >> >>> use.For last code word READ_LOCATION_LAST_CW_n register will be >> >>> use. >> >> >> " >> >> In the case of QPIC v2, codewords 0, 1 and 2 will be accessed through >> >> READ_LOCATION_n, while codeword 3 will be accessed through >> >> READ_LOCATION_LAST_CW_n. >> >> " >> >> >> When I read my own sentence, I feel that there is something wrong. >> >> If there are only 4 codewords, I guess a QPIC v2 is able to use >> >> READ_LOCATION_3 or READ_LOCATION_LAST_CW_0 interchangeably. Isn't it? >> >> >> I guess the point of having these "last_cw_n" registers is to support >> >> up to 8 codewords, am I wrong? If this the case, the current patch >> >> completely fails doing that I don't get the point of such change. >> > >> > This register is only use to read last code word. >> > >> > I have address all the comments from all the previous sub sequent >> > patches and pushed >> > all patches in only one series. >> > >> > Please check. >> >> The registers READ_LOCATION & READ_LOCATION_LAST are not associated >> with number of code words. >> These two registers are used to access the location inside a code >> word. > > Ok. Can you please explain what is a location then? Or point me to a > datasheet that explains it.
The location is the position inside a code word.
> > Bottom line question: why having READ_LOCATION_0, _1,... an > READ_LOCATION_LAST_0, _1, etc?
READ_LOCATION_0, _1,... are used to extract multiple chunks from a code word.
e.g If we wanted to extract first 100 bytes from a code word then (0...99) READ_LOCATION_0 will be configured. if we wanted to extract next 100 bytes (100...199) then READ_LOCATION_1 will be configured.
same way for last code word READ_LOCATION_LAST_0, _1, will be used.
Below is the mapping example for a 2K page size.
<---------------------2048------------------------------------------------><------64---------->2111 _______________________________________________________________________________________________ | | | | | | | | | | | | | | | | |__________________________________________________________________________|___|_______________| 2048-bytes factory BBM
One code word:
1-byte BBM 7-bytes ECC ______________________________________ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |____________|__|____________|___|____| <-----------512 bytes-------> 4-bytes spare data
<-------------------------------------2048-------------------------------------------------->2047<------64---------->2111 ____________________________________________________________________________________________________________________ | | | | | | | | | | | | | | | | | | | | |_____________________________________________________________________________________________|___|_____________|____| | | | | | |<-----mapping | | | | ____________________________________________________________________________________________________|___|______ | | | | | | | | | | | | | | | | | | | | | | | | | |______________________|___________________________|_______________________________|____________________________| <-------CW1-----------><----------CW2-------------><-----------CW3----------------><----------CW4---------------> / \ / \ / \ / \ / \ / \ / \ / \ _________________________________________________________________ \___ | | | | | | | | | | | | |<--read_location_0--> <---read_location_1--> <--read_location_n-->| | |_____________________________________________________________________|
So in QPIC V2 onwards to access last code word same way we have to use read_location_last_0,1,2..3 etc.
> >> So whether we are having 4 code words >> or 8 code words it doesn't matter. If we wanted access the location >> within normal code word we have to >> use READ_LOCATION register and if we wanted to access location in >> last code word then we have to use >> READ_LOCATION_LAST. >> > >> >> >>> Signed-off-by: Md Sadre Alam <mdalam@codeaurora.org> > > Thanks, > Miquèl
| |