Files
u-boot/include
Tim Harvey 8746aa0f5d mmc: use an enumerated type to represent PARTITION_CONFIG fields
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:

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 which is also the value used to specify the
hardware partition of 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.

This represents no code changes.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
2024-09-05 12:12:51 -06:00
..
2024-01-03 09:22:47 -05:00
2022-10-30 20:07:16 +01:00
2023-08-25 13:54:33 -04:00
2023-08-08 10:22:03 -04:00
2023-12-21 08:54:37 -05:00
2024-02-13 15:38:49 -05:00
2024-01-29 22:35:02 -05:00
2022-11-02 08:42:03 +01:00
2024-04-21 09:07:00 +02:00
2023-02-06 13:04:52 -05:00
2024-05-03 12:22:58 -06:00
2023-05-02 14:23:34 -04:00
2022-10-18 09:32:53 +08:00
2023-01-20 12:27:06 -05:00
2023-11-07 14:50:51 -05:00
2024-01-13 18:17:47 +01:00
2023-12-21 08:54:37 -05:00
2023-10-31 09:08:51 +01:00
2023-04-27 13:51:06 -04:00
2023-12-21 11:59:49 -05:00
2023-08-19 04:12:53 +02:00
2023-12-13 11:35:13 -05:00
2022-10-30 20:07:17 +01:00
2023-12-21 08:54:37 -05:00
2023-10-11 15:43:55 -04:00
2023-12-21 08:54:37 -05:00
2023-11-18 10:08:09 +02:00
2024-03-26 19:58:26 -04:00
2024-03-26 19:58:26 -04:00
2023-01-16 18:01:10 +08:00
2023-12-21 08:54:37 -05:00
2024-03-27 09:23:30 +01:00
2023-11-16 13:49:14 -05:00
2023-10-09 15:24:31 -04:00
2023-02-10 07:41:40 -05:00
2023-10-27 13:14:47 +03:00
2022-12-07 16:04:17 -05:00
2022-12-22 10:31:49 -05:00
2023-11-14 20:04:00 -07:00