Skip to content
  • Richard Zhu's avatar
    ENGR00285671 mmc: setup emmc boot partition configure methods · 000480ac
    Richard Zhu authored
    
    
    - Configure boot partition
    Expose the interfaces that used to enable the configurations
    of the boot mode of the eMMC cards.
    usage how-to and examples:
    Enable the boot partition 1 boot enabled.
    "echo 8 > /sys/devices/soc0/soc.1/2100000.aips-bus/
    219c000.usdhc/mmc_host/mmc2/mmc2\:0001/boot_config"
    
    In order to make sure that the re-read the ext-csd of card
    can be completed successfully, add the method to wait for
    the finish of the busy state.
    
    - setup boot_info message output
    Output bit means of important esd_csd register
    
    Read esd_csd info each time when cat boot_info
    becasue user may change config affect esd_csd
    value.
    
    - Boot partition access howto:
    About the details, please refer to the guidance of
    Documentation/mmc/mmc-dev-parts.txt
    
    To enable write access to /dev/mmcblkXbootY, disable the forced
    read-only access with:
    echo 0 > /sys/block/mmcblkXbootY/force_ro
    
    To re-enable read-only access:
    echo 1 > /sys/block/mmcblkXbootY/force_ro
    
    NOTE:
    - The definitions of the EXT_CSD_PART_CONFIG and EXT_CSD_BOOT_BUS_WIDTH
    +------------------------------------------------------------+
    | Bit7 | Bit6     | Bit5 Bit4 Bit3        | Bit2 Bit1 Bit0   |
    |------|----------|-----------------------|------------------|
    | X    | BOOT_ACK | BOOT_PARTITION_ENABLE | PARTITION_ACCESS |
    +------------------------------------------------------------+
    Bit7: Reserved
    Bit6: always set to vaule '1' when boot_part is enabled
    Bit[5:3]:
    0x0 : Device not boot enabled (default)
    0x1 : Boot partition 1 enabled for boot
    0x2 : Boot partition 2 enabled for boot
    0x7 : User area enabled for boot
    Bit[2:0]:
    0x0 : No access to boot partition (default)
    0x1 : R/W boot partition 1
    0x2 : R/W boot partition 2
    
    +--------------------------------------------------------------------+
    | Bit7 Bit6 Bit5 | Bit4 Bit3 | Bit2                 | Bit1 Bit0      |
    |----------------|----------------------------------|----------------|
    | X              | BOOT_MODE | RESET_BOOT_BUS_WIDTH | BOOT_BUS_WIDTH |
    +--------------------------------------------------------------------+
    Bit [4:3] : BOOT_MODE (non-volatile)
    0x0 : Use single data rate + backward compatible timings in boot
    operation (default)
    0x1 : Use single data rate + high speed timings in boot operation mode
    0x2 : Use dual data rate in boot operation
    0x3 : Reserved
    Bit [2]: RESET_BOOT_BUS_WIDTH (non-volatile)
    0x0 : Reset bus width to x1, single data rate and backward compatible
    timings after boot operation (default)
    0x1 : Retain boot bus width and boot mode after boot operation
    Bit[1:0] : BOOT_BUS_WIDTH (non-volatile)
    0x0 : x1 (sdr) or x4 (ddr) bus width in boot operation mode (default)
    0x1 : x4 (sdr/ddr) bus width in boot operation mode
    0x2 : x8 (sdr/ddr) bus width in boot operation mode
    0x3 : Reserved
    
    - example of the boot_info:
    boot_info:0x07;
      ALT_BOOT_MODE:1 - Supports alternate boot method
      DDR_BOOT_MODE:1 - Supports alternate dual data rate during boot
      HS_BOOTMODE:1 - Supports high speed timing during boot
    boot_size:2048KB
      boot_partition:0x48;
      BOOT_ACK:1 - Boot acknowledge sent during boot operation
      BOOT_PARTITION-ENABLE: 1 - Boot partition 1 enabled
      PARTITION_ACCESS:0 - No access to boot partition
    boot_bus:0x00
      BOOT_MODE:0 - Use single data rate + backward compatible timings
      in boot operation
      RESET_BOOT_BUS_WIDTH:0 - Reset bus width to x1, single data rate
      and backwardcompatible timings after boot operation
      BOOT_BUS_WIDTH:0 - x1 (sdr) or x4 (ddr) bus width in boot
      operation mode
    
    Signed-off-by: default avatarRichard Zhu <r65037@freescale.com>
    000480ac