Skip to content
  • Brian Norris's avatar
    mtd: nand: force NAND_CMD_READID onto 8-bit bus · 27ce9e42
    Brian Norris authored
    
    
    As per following Sections in ONFI Spec, NAND_CMD_READID should use only
    lower 8-bit for transfering command, address and data even on x16 NAND device.
    
    *Section: Target Initialization"
    "The Read ID and Read Parameter Page commands only use the lower 8-bits of the
     data bus. The host shall not issue commands that use a word data width on x16
     devices until the host determines the device supports a 16-bit data bus width
     in the parameter page."
    
    *Section: Bus Width Requirements*
    "When the host supports a 16-bit bus width, only data is transferred at the
     16-bit width. All address and command line transfers shall use only the lower
     8-bits of the data bus. During command transfers, the host may place any value
     on the upper 8-bits of the data bus. During address transfers, the host shall
     set the upper 8-bits of the data bus to 00h."
    
    Thus porting  following commit from linux-kernel to ensure that column address
    is not altered to align to x16 bus when issuing NAND_CMD_READID command.
    
        commit 3dad2344e92c6e1aeae42df1c4824f307c51bcc7
        mtd: nand: force NAND_CMD_READID onto 8-bit bus
        Author: Brian Norris <computersforpeace@gmail.com> (preserving authorship)
    
        The NAND command helpers tend to automatically shift the column address
        for x16 bus devices, since most commands expect a word address, not a
        byte address. The Read ID command, however, expects an 8-bit address
        (i.e., 0x00, 0x20, or 0x40 should not be translated to 0x00, 0x10, or
        0x20).
    
        This fixes the column address for a few drivers which imitate the
        nand_base defaults.
    
    Signed-off-by: default avatarPekon Gupta <pekon@ti.com>
    27ce9e42