[RESEND PATCH v4 0/3] provide names for emmc hardware partitions

Dragan Simic dsimic at manjaro.org
Tue Jul 2 20:25:33 CEST 2024


Hello Tim,

On 2024-07-02 20:14, Tim Harvey wrote:
> On Fri, May 31, 2024 at 8:36 AM Tim Harvey <tharvey at gateworks.com> 
> wrote:
>> 
>> Modern eMMC v4+ devices have multiple hardware partitions per the 
>> JEDEC
>> specification described as:
>>  Boot Area Partition 1
>>  Boot Area Partition 2
>>  RPMB Partition
>>  General Purpose Partition 1
>>  General Purpose Partition 2
>>  General Purpose Partition 3
>>  General Purpose Partition 4
>>  User Data Area
>> 
>> These are referenced by fields in the PARTITION_CONFIG register
>> (Extended CSD Register 179) which is defined as:
>> bit 7: reserved
>> bit 6: BOOT_ACK
>>   0x0: No boot acknowledge sent (default
>>   0x1: Boot acknowledge sent during boot operation Bit
>> bit 5:3: BOOT_PARTITION_ENABLE
>>   0x0: Device not boot enabled (default)
>>   0x1: Boot Area partition 1 enabled for boot
>>   0x2: Boot Area partition 2 enabled for boot
>>   0x3-0x6: Reserved
>>   0x7: User area enabled for boot
>> bit 2:0 PARTITION_ACCESS
>>   0x0: No access to boot partition (default)
>>   0x1: Boot Area partition 1
>>   0x2: Boot Area partition 2
>>   0x3: Replay Protected Memory Block (RPMB)
>>   0x4: Access to General Purpose partition 1
>>   0x5: Access to General Purpose partition 2
>>   0x6: Access to General Purpose partition 3
>>   0x7: Access to General Purpose partition 4
>> 
>> Note that setting PARTITION_ACCESS to 0x0 results in selecting the 
>> User
>> Data Area partition.
>> 
>> You can see above that the two fields BOOT_PARTITION_ENABLE and
>> PARTITION_ACCESS do not use the same enumerated values.
>> 
>> U-Boot uses a set of macros to access fields of the PARTITION_CONFIG
>> register:
>> EXT_CSD_BOOT_ACK_ENABLE                 (1 << 6)
>> EXT_CSD_BOOT_PARTITION_ENABLE           (1 << 3)
>> EXT_CSD_PARTITION_ACCESS_ENABLE         (1 << 0)
>> EXT_CSD_PARTITION_ACCESS_DISABLE        (0 << 0)
>> 
>> EXT_CSD_BOOT_ACK(x)             (x << 6)
>> EXT_CSD_BOOT_PART_NUM(x)        (x << 3)
>> EXT_CSD_PARTITION_ACCESS(x)     (x << 0)
>> 
>> EXT_CSD_EXTRACT_BOOT_ACK(x) (((x) >> 6) & 0x1)
>> EXT_CSD_EXTRACT_BOOT_PART(x) (((x) >> 3) & 0x7)
>> EXT_CSD_EXTRACT_PARTITION_ACCESS(x) ((x) & 0x7)
>> 
>> There are various places in U-Boot where the BOOT_PARTITION_ENABLE 
>> field
>> is accessed via EXT_CSD_EXTRACT_PARTITION_ACCESS and converted to a
>> hardware partition consistent with the definition of the
>> PARTITION_ACCESS field used by the various mmc_switch incarnations.
>> 
>> To add some sanity to the distinction between BOOT_PARTITION_ENABLE
>> (used to specify the active device on power-cycle) and 
>> PARTITION_ACCESS
>> (used to switch between hardware partitions) create two enumerated 
>> types
>> and use them wherever struct mmc * part_config is used or the above
>> macros are used.
>> 
>> Additionally provide arrays of the field names and allow those to be
>> used in the 'mmc partconf' command and in board support files.
>> 
>> The first patch adds enumerated types and makes use of them which
>> represents no compiled code change.
>> 
>> The 2nd patch adds the array of names and uses them in the 'mmc
>> partconf' command.
>> 
>> The 3rd patch uses the array of hardware partition names in a board
>> support file to show what emmc hardware partition U-Boot is being 
>> loaded
>> from.
>> 
>> I'm sending this as a series this time around as previously it was
>> repsented as two different patches.
>> 
>> Tim Harvey (3):
>>   mmc: use an enumerated type to represent PARTITION_CONFIG fields
>>   mmc: allow use of hardware partition names for mmc partconf
>>   venice: show emmc boot hardware partition
>> 
>>  arch/arm/mach-imx/image-container.c | 10 ++++-----
>>  arch/arm/mach-sunxi/board.c         |  2 +-
>>  board/gateworks/venice/spl.c        | 20 ++++++++++++-----
>>  board/gateworks/venice/venice.c     | 22 +++++++++---------
>>  board/purism/librem5/librem5.c      |  4 ++--
>>  board/storopack/smegw01/smegw01.c   |  4 ++--
>>  cmd/mmc.c                           | 27 ++++++++++++++++++----
>>  cmd/mvebu/bubt.c                    |  4 ++--
>>  common/spl/spl_mmc.c                |  4 ++--
>>  drivers/mmc/mmc.c                   | 35 
>> +++++++++++++++++++++++++++++
>>  include/mmc.h                       | 26 +++++++++++++++++++++
>>  11 files changed, 123 insertions(+), 35 deletions(-)
> 
> Is there any feedback on this series? I got feedback from several
> people on my first attempt (cc'd) but nothing on this version.

Any chances, please, to provide links to each of the patch and series
versions on https://lore.kernel.org/u-boot/ , together with a brief
changelog and history?  I'm having troubles refreshing my memory on
what patches were actually pulled into what series.

My guess is that other people would also benefit from such a refresher.


More information about the U-Boot mailing list