lkml.org 
[lkml]   [2021]   [Feb]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [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

    \
     
     \ /
      Last update: 2021-02-24 17:39    [W:5.650 / U:0.628 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site