* [U-Boot] [PATCH v2 1/8] SPL: Add CONFIG_SUPPORT_EMMC_BOOT support to CONFIG_SPL_FRAMEWORK
@ 2014-01-30 21:31 Tom Rini
2014-01-30 21:31 ` [U-Boot] [PATCH v2 2/8] omap5_uevm: Add CONFIG_SUPPORT_EMMC_BOOT, document usage Tom Rini
` (6 more replies)
0 siblings, 7 replies; 23+ messages in thread
From: Tom Rini @ 2014-01-30 21:31 UTC (permalink / raw)
To: u-boot
We use the switch CONFIG_SUPPORT_EMMC_BOOT today to enable some
additional features of the eMMC boot partitions. Add support for being
told that we have booted from one of these partitions to the spl
framework and implement this on TI OMAP/related.
Cc: Pantelis Antoniou <panto@antoniou-consulting.com>
Signed-off-by: Tom Rini <trini@ti.com>
---
arch/arm/cpu/armv7/omap-common/boot-common.c | 8 +++++++-
common/spl/spl_mmc.c | 24 ++++++++++++++++++++++++
include/spl.h | 1 +
3 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/arch/arm/cpu/armv7/omap-common/boot-common.c b/arch/arm/cpu/armv7/omap-common/boot-common.c
index 69fff32..ec0f936 100644
--- a/arch/arm/cpu/armv7/omap-common/boot-common.c
+++ b/arch/arm/cpu/armv7/omap-common/boot-common.c
@@ -66,7 +66,13 @@ u32 spl_boot_device(void)
u32 spl_boot_mode(void)
{
- return gd->arch.omap_boot_params.omap_bootmode;
+ u32 val = gd->arch.omap_boot_params.omap_bootmode;
+
+#ifdef CONFIG_SUPPORT_EMMC_BOOT
+ if (val == 0)
+ val = MMCSD_MODE_EMMCBOOT;
+#endif
+ return val;
}
void spl_board_init(void)
diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
index 13fbff0..fa6f891 100644
--- a/common/spl/spl_mmc.c
+++ b/common/spl/spl_mmc.c
@@ -111,6 +111,30 @@ void spl_mmc_load_image(void)
CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION,
CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME);
#endif
+#ifdef CONFIG_SUPPORT_EMMC_BOOT
+ } else if (boot_mode == MMCSD_MODE_EMMCBOOT) {
+ /*
+ * We need to check what the partition is configured to.
+ * 1 and 2 match up to boot0 / boot1 and 7 is user data
+ * which is the first physical partition (0).
+ */
+ int part = (mmc->part_config >> 3) & PART_ACCESS_MASK;
+
+ if (part == 7)
+ part = 0;
+
+ if (mmc_switch_part(0, part)) {
+#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
+ puts("MMC partition switch failed\n");
+#endif
+ hang();
+ }
+#ifdef CONFIG_SPL_OS_BOOT
+ if (spl_start_uboot() || mmc_load_image_raw_os(mmc))
+#endif
+ err = mmc_load_image_raw(mmc,
+ CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR);
+#endif
} else {
#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
puts("spl: wrong MMC boot mode\n");
diff --git a/include/spl.h b/include/spl.h
index 5e24856..dad00c0 100644
--- a/include/spl.h
+++ b/include/spl.h
@@ -16,6 +16,7 @@
#define MMCSD_MODE_UNDEFINED 0
#define MMCSD_MODE_RAW 1
#define MMCSD_MODE_FAT 2
+#define MMCSD_MODE_EMMCBOOT 3
struct spl_image_info {
const char *name;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 2/8] omap5_uevm: Add CONFIG_SUPPORT_EMMC_BOOT, document usage
2014-01-30 21:31 [U-Boot] [PATCH v2 1/8] SPL: Add CONFIG_SUPPORT_EMMC_BOOT support to CONFIG_SPL_FRAMEWORK Tom Rini
@ 2014-01-30 21:31 ` Tom Rini
2014-01-30 21:31 ` [U-Boot] [PATCH v2 3/8] dra7xx_evm: " Tom Rini
` (5 subsequent siblings)
6 siblings, 0 replies; 23+ messages in thread
From: Tom Rini @ 2014-01-30 21:31 UTC (permalink / raw)
To: u-boot
Add a README to the board which lists the commands required to enable
booting from the eMMC boot partitions found on the board.
Signed-off-by: Tom Rini <trini@ti.com>
---
board/ti/omap5_uevm/README | 25 +++++++++++++++++++++++++
include/configs/omap5_uevm.h | 1 +
2 files changed, 26 insertions(+)
create mode 100644 board/ti/omap5_uevm/README
diff --git a/board/ti/omap5_uevm/README b/board/ti/omap5_uevm/README
new file mode 100644
index 0000000..970e2ec
--- /dev/null
+++ b/board/ti/omap5_uevm/README
@@ -0,0 +1,25 @@
+Summary
+=======
+
+This document covers various features of the 'omap5_uevm' build and some
+related uses.
+
+eMMC boot partition use
+=======================
+
+It is possible, depending on SYSBOOT configuration to boot from the eMMC
+boot partitions using (name depending on documentation referenced)
+Alternative Boot operation mode or Boot Sequence Option 1/2. In this
+example we load MLO and u-boot.img from the build into DDR and then use
+'mmc bootbus' to set the required rate (see TRM) and 'mmc partconfig' to
+set boot0 as the boot device.
+U-Boot # setenv autoload no
+U-Boot # usb start
+U-Boot # dhcp
+U-Boot # mmc dev 1 1
+U-Boot # tftp ${loadaddr} omap5uevm/MLO
+U-Boot # mmc write ${loadaddr} 0 100
+U-Boot # tftp ${loadaddr} omap5uevm/u-boot.img
+U-Boot # mmc write ${loadaddr} 300 400
+U-Boot # mmc bootbus 1 2 0 2
+U-Boot # mmc partconf 1 1 1 0
diff --git a/include/configs/omap5_uevm.h b/include/configs/omap5_uevm.h
index 76c5106..3df502e 100644
--- a/include/configs/omap5_uevm.h
+++ b/include/configs/omap5_uevm.h
@@ -37,6 +37,7 @@
#define CONFIG_PARTITION_UUIDS
#define CONFIG_CMD_PART
#define CONFIG_HSMMC2_8BIT
+#define CONFIG_SUPPORT_EMMC_BOOT
/* Required support for the TCA642X GPIO we have on the uEVM */
#define CONFIG_TCA642X
--
1.7.9.5
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 3/8] dra7xx_evm: Add CONFIG_SUPPORT_EMMC_BOOT, document usage
2014-01-30 21:31 [U-Boot] [PATCH v2 1/8] SPL: Add CONFIG_SUPPORT_EMMC_BOOT support to CONFIG_SPL_FRAMEWORK Tom Rini
2014-01-30 21:31 ` [U-Boot] [PATCH v2 2/8] omap5_uevm: Add CONFIG_SUPPORT_EMMC_BOOT, document usage Tom Rini
@ 2014-01-30 21:31 ` Tom Rini
2014-01-30 21:31 ` [U-Boot] [PATCH v2 4/8] cmd_mmc.c: Change 'bootpart' code to match normal coding style Tom Rini
` (4 subsequent siblings)
6 siblings, 0 replies; 23+ messages in thread
From: Tom Rini @ 2014-01-30 21:31 UTC (permalink / raw)
To: u-boot
Add a README to the board which lists the commands required to enable
booting from the eMMC boot partitions found on the board.
Cc: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Tom Rini <trini@ti.com>
---
board/ti/dra7xx/README | 25 +++++++++++++++++++++++++
include/configs/dra7xx_evm.h | 2 ++
2 files changed, 27 insertions(+)
create mode 100644 board/ti/dra7xx/README
diff --git a/board/ti/dra7xx/README b/board/ti/dra7xx/README
new file mode 100644
index 0000000..2fdaeac
--- /dev/null
+++ b/board/ti/dra7xx/README
@@ -0,0 +1,25 @@
+Summary
+=======
+
+This document covers various features of the 'dra7xx_evm' build and some
+related uses.
+
+eMMC boot partition use
+=======================
+
+It is possible, depending on SYSBOOT configuration to boot from the eMMC
+boot partitions using (name depending on documentation referenced)
+Alternative Boot operation mode or Boot Sequence Option 1/2. In this
+example we load MLO and u-boot.img from the build into DDR and then use
+'mmc bootbus' to set the required rate (see TRM) and 'mmc partconfig' to
+set boot0 as the boot device.
+U-Boot # setenv autoload no
+U-Boot # usb start
+U-Boot # dhcp
+U-Boot # mmc dev 1 1
+U-Boot # tftp ${loadaddr} dra7xx/MLO
+U-Boot # mmc write ${loadaddr} 0 100
+U-Boot # tftp ${loadaddr} dra7xx/u-boot.img
+U-Boot # mmc write ${loadaddr} 300 400
+U-Boot # mmc bootbus 1 2 0 2
+U-Boot # mmc partconf 1 1 1 0
diff --git a/include/configs/dra7xx_evm.h b/include/configs/dra7xx_evm.h
index f210ed8..3c53f0a 100644
--- a/include/configs/dra7xx_evm.h
+++ b/include/configs/dra7xx_evm.h
@@ -73,6 +73,8 @@
#define CONFIG_SPL_SPI_CS 0
#define CONFIG_SYS_SPI_U_BOOT_OFFS 0x20000
+#define CONFIG_SUPPORT_EMMC_BOOT
+
/* USB xHCI HOST */
#define CONFIG_CMD_USB
#define CONFIG_USB_HOST
--
1.7.9.5
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 4/8] cmd_mmc.c: Change 'bootpart' code to match normal coding style
2014-01-30 21:31 [U-Boot] [PATCH v2 1/8] SPL: Add CONFIG_SUPPORT_EMMC_BOOT support to CONFIG_SPL_FRAMEWORK Tom Rini
2014-01-30 21:31 ` [U-Boot] [PATCH v2 2/8] omap5_uevm: Add CONFIG_SUPPORT_EMMC_BOOT, document usage Tom Rini
2014-01-30 21:31 ` [U-Boot] [PATCH v2 3/8] dra7xx_evm: " Tom Rini
@ 2014-01-30 21:31 ` Tom Rini
2014-02-04 0:54 ` Jaehoon Chung
2014-01-30 21:31 ` [U-Boot] [PATCH v2 5/8] cmd_mmc.c: Rename 'bootpart' to 'bootpart-resize' Tom Rini
` (3 subsequent siblings)
6 siblings, 1 reply; 23+ messages in thread
From: Tom Rini @ 2014-01-30 21:31 UTC (permalink / raw)
To: u-boot
Signed-off-by: Tom Rini <trini@ti.com>
---
common/cmd_mmc.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c
index da5fef9..e118252 100644
--- a/common/cmd_mmc.c
+++ b/common/cmd_mmc.c
@@ -314,11 +314,18 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
} else if (strcmp(argv[1], "bootpart") == 0) {
int dev;
- dev = simple_strtoul(argv[2], NULL, 10);
+ struct *mmc;
+ u32 bootsize, rpmbsize;
- u32 bootsize = simple_strtoul(argv[3], NULL, 10);
- u32 rpmbsize = simple_strtoul(argv[4], NULL, 10);
- struct mmc *mmc = find_mmc_device(dev);
+ if (argc == 5) {
+ dev = simple_strtoul(argv[2], NULL, 10);
+ bootsize = simple_strtoul(argv[3], NULL, 10);
+ rpmbsize = simple_strtoul(argv[4], NULL, 10);
+ } else {
+ return CMD_RET_USAGE;
+ }
+
+ mmc = find_mmc_device(dev);
if (!mmc) {
printf("no mmc device at slot %x\n", dev);
return 1;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 5/8] cmd_mmc.c: Rename 'bootpart' to 'bootpart-resize'
2014-01-30 21:31 [U-Boot] [PATCH v2 1/8] SPL: Add CONFIG_SUPPORT_EMMC_BOOT support to CONFIG_SPL_FRAMEWORK Tom Rini
` (2 preceding siblings ...)
2014-01-30 21:31 ` [U-Boot] [PATCH v2 4/8] cmd_mmc.c: Change 'bootpart' code to match normal coding style Tom Rini
@ 2014-01-30 21:31 ` Tom Rini
2014-02-04 0:55 ` Jaehoon Chung
2014-01-30 21:31 ` [U-Boot] [PATCH v2 6/8] cmd_mmc.c: Add 'partconf' command to mmc Tom Rini
` (2 subsequent siblings)
6 siblings, 1 reply; 23+ messages in thread
From: Tom Rini @ 2014-01-30 21:31 UTC (permalink / raw)
To: u-boot
Rename 'bootpart' to 'bootpart-resize' to better reflect what this
command is for.
Signed-off-by: Tom Rini <trini@ti.com>
---
common/cmd_mmc.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c
index e118252..a322063 100644
--- a/common/cmd_mmc.c
+++ b/common/cmd_mmc.c
@@ -312,9 +312,9 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
/* acknowledge to be sent during boot operation */
return boot_part_access(mmc, 1, part_num, access);
- } else if (strcmp(argv[1], "bootpart") == 0) {
+ } else if (strcmp(argv[1], "bootpart-resize") == 0) {
int dev;
- struct *mmc;
+ struct mmc *mmc;
u32 bootsize, rpmbsize;
if (argc == 5) {
@@ -449,8 +449,8 @@ U_BOOT_CMD(
" - Enable boot_part for booting and enable R/W access of boot_part\n"
"mmc close <dev> <boot_partition>\n"
" - Enable boot_part for booting and disable access to boot_part\n"
- "mmc bootpart <device num> <boot part size MB> <RPMB part size MB>\n"
- " - change sizes of boot and RPMB partitions of specified device\n"
+ "mmc bootpart-resize <dev> <boot part size MB> <RPMB part size MB>\n"
+ " - Change sizes of boot and RPMB partitions of specified device\n"
#endif
"mmc setdsr - set DSR register value\n"
);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 6/8] cmd_mmc.c: Add 'partconf' command to mmc
2014-01-30 21:31 [U-Boot] [PATCH v2 1/8] SPL: Add CONFIG_SUPPORT_EMMC_BOOT support to CONFIG_SPL_FRAMEWORK Tom Rini
` (3 preceding siblings ...)
2014-01-30 21:31 ` [U-Boot] [PATCH v2 5/8] cmd_mmc.c: Rename 'bootpart' to 'bootpart-resize' Tom Rini
@ 2014-01-30 21:31 ` Tom Rini
2014-02-04 0:58 ` Jaehoon Chung
2014-01-30 21:31 ` [U-Boot] [PATCH v2 7/8] cmd_mmc.c: Add bootbus mmc sub-command Tom Rini
2014-01-30 21:32 ` [U-Boot] [PATCH v2 8/8] cmd_mmc.c: Drop open/close mmc sub-commands Tom Rini
6 siblings, 1 reply; 23+ messages in thread
From: Tom Rini @ 2014-01-30 21:31 UTC (permalink / raw)
To: u-boot
Add a partconf sub-command to the mmc command to allow for setting
the boot_ack, boot_partition and partition_access fields of
PARTITION_CONFIG (formerly BOOT_CONFIG, EXT_CSD[179]). Part of this
requires changing the check for 'part' from an strncmp to a strcmp, like
the rest of the sub-commands.
Cc: Andy Fleming <afleming@gmail.com>
Cc: Pantelis Antoniou <panto@antoniou-consulting.com>
Signed-off-by: Tom Rini <trini@ti.com>
---
common/cmd_mmc.c | 30 +++++++++++++++++++++++++++++-
drivers/mmc/mmc.c | 21 +++++++++++++++++++++
include/mmc.h | 2 ++
3 files changed, 52 insertions(+), 1 deletion(-)
diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c
index a322063..5842e85 100644
--- a/common/cmd_mmc.c
+++ b/common/cmd_mmc.c
@@ -195,7 +195,7 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
return 1;
else
return 0;
- } else if (strncmp(argv[1], "part", 4) == 0) {
+ } else if (strcmp(argv[1], "part") == 0) {
block_dev_desc_t *mmc_dev;
struct mmc *mmc;
@@ -311,7 +311,33 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
/* acknowledge to be sent during boot operation */
return boot_part_access(mmc, 1, part_num, access);
+ } else if (strcmp(argv[1], "partconf") == 0) {
+ int dev;
+ struct mmc *mmc;
+ u8 ack, part_num, access;
+
+ if (argc == 6) {
+ dev = simple_strtoul(argv[2], NULL, 10);
+ ack = simple_strtoul(argv[3], NULL, 10);
+ part_num = simple_strtoul(argv[4], NULL, 10);
+ access = simple_strtoul(argv[5], NULL, 10);
+ } else {
+ return CMD_RET_USAGE;
+ }
+
+ mmc = find_mmc_device(dev);
+ if (!mmc) {
+ printf("no mmc device at slot %x\n", dev);
+ return 1;
+ }
+ if (IS_SD(mmc)) {
+ puts("PARTITION_CONFIG only exists on eMMC\n");
+ return 1;
+ }
+
+ /* acknowledge to be sent during boot operation */
+ return mmc_set_part_conf(mmc, ack, part_num, access);
} else if (strcmp(argv[1], "bootpart-resize") == 0) {
int dev;
struct mmc *mmc;
@@ -451,6 +477,8 @@ U_BOOT_CMD(
" - Enable boot_part for booting and disable access to boot_part\n"
"mmc bootpart-resize <dev> <boot part size MB> <RPMB part size MB>\n"
" - Change sizes of boot and RPMB partitions of specified device\n"
+ "mmc partconf dev boot_ack boot_partition partition_access\n"
+ " - Change the bits of the PARTITION_CONFIG field of the specified device\n"
#endif
"mmc setdsr - set DSR register value\n"
);
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index c6a1c23..1591fce 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -1505,4 +1505,25 @@ int mmc_boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access)
}
return 0;
}
+
+/*
+ * Modify EXT_CSD[179] which is PARTITION_CONFIG (formerly BOOT_CONFIG)
+ * based on the passed in values for BOOT_ACK, BOOT_PARTITION_ENABLE and
+ * PARTITION_ACCESS.
+ *
+ * Returns 0 on success.
+ */
+int mmc_set_part_conf(struct mmc *mmc, u8 ack, u8 part_num, u8 access)
+{
+ int err;
+
+ err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_PART_CONF,
+ EXT_CSD_BOOT_ACK(ack) |
+ EXT_CSD_BOOT_PART_NUM(part_num) |
+ EXT_CSD_PARTITION_ACCESS(access));
+
+ if (err)
+ return err;
+ return 0;
+}
#endif
diff --git a/include/mmc.h b/include/mmc.h
index e1060b9..7e026da 100644
--- a/include/mmc.h
+++ b/include/mmc.h
@@ -312,6 +312,8 @@ int mmc_boot_partition_size_change(struct mmc *mmc, unsigned long bootsize,
unsigned long rpmbsize);
/* Function to send commands to open/close the specified boot partition */
int mmc_boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access);
+/* Function to modify the PARTITION_CONFIG field of EXT_CSD */
+int mmc_set_part_conf(struct mmc *mmc, u8 ack, u8 part_num, u8 access);
/**
* Start device initialization and return immediately; it does not block on
--
1.7.9.5
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 7/8] cmd_mmc.c: Add bootbus mmc sub-command
2014-01-30 21:31 [U-Boot] [PATCH v2 1/8] SPL: Add CONFIG_SUPPORT_EMMC_BOOT support to CONFIG_SPL_FRAMEWORK Tom Rini
` (4 preceding siblings ...)
2014-01-30 21:31 ` [U-Boot] [PATCH v2 6/8] cmd_mmc.c: Add 'partconf' command to mmc Tom Rini
@ 2014-01-30 21:31 ` Tom Rini
2014-02-04 0:59 ` Jaehoon Chung
2014-04-18 9:25 ` Michael Trimarchi
2014-01-30 21:32 ` [U-Boot] [PATCH v2 8/8] cmd_mmc.c: Drop open/close mmc sub-commands Tom Rini
6 siblings, 2 replies; 23+ messages in thread
From: Tom Rini @ 2014-01-30 21:31 UTC (permalink / raw)
To: u-boot
Add a bootbus sub-command to the mmc command to allow for setting
the boot_bus_width, reset_boot_bus_width and boot_mode fields of
BOOT_BUS_WIDTH (EXT_CSD[177]).
Signed-off-by: Tom Rini <trini@ti.com>
---
common/cmd_mmc.c | 29 +++++++++++++++++++++++++++++
drivers/mmc/mmc.c | 21 +++++++++++++++++++++
include/mmc.h | 5 +++++
3 files changed, 55 insertions(+)
diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c
index 5842e85..a028149 100644
--- a/common/cmd_mmc.c
+++ b/common/cmd_mmc.c
@@ -338,6 +338,33 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
/* acknowledge to be sent during boot operation */
return mmc_set_part_conf(mmc, ack, part_num, access);
+ } else if (strcmp(argv[1], "bootbus") == 0) {
+ int dev;
+ struct mmc *mmc;
+ u8 width, reset, mode;
+
+ if (argc == 6) {
+ dev = simple_strtoul(argv[2], NULL, 10);
+ width = simple_strtoul(argv[3], NULL, 10);
+ reset = simple_strtoul(argv[4], NULL, 10);
+ mode = simple_strtoul(argv[5], NULL, 10);
+ } else {
+ return CMD_RET_USAGE;
+ }
+
+ mmc = find_mmc_device(dev);
+ if (!mmc) {
+ printf("no mmc device at slot %x\n", dev);
+ return 1;
+ }
+
+ if (IS_SD(mmc)) {
+ puts("BOOT_BUS_WIDTH only exists on eMMC\n");
+ return 1;
+ }
+
+ /* acknowledge to be sent during boot operation */
+ return mmc_set_boot_bus_width(mmc, width, reset, mode);
} else if (strcmp(argv[1], "bootpart-resize") == 0) {
int dev;
struct mmc *mmc;
@@ -475,6 +502,8 @@ U_BOOT_CMD(
" - Enable boot_part for booting and enable R/W access of boot_part\n"
"mmc close <dev> <boot_partition>\n"
" - Enable boot_part for booting and disable access to boot_part\n"
+ "mmc bootbus dev boot_bus_width reset_boot_bus_width boot_mode\n"
+ " - Set the BOOT_BUS_WIDTH field of the specified device\n"
"mmc bootpart-resize <dev> <boot part size MB> <RPMB part size MB>\n"
" - Change sizes of boot and RPMB partitions of specified device\n"
"mmc partconf dev boot_ack boot_partition partition_access\n"
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 1591fce..fc1c1dc 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -1507,6 +1507,27 @@ int mmc_boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access)
}
/*
+ * Modify EXT_CSD[177] which is BOOT_BUS_WIDTH
+ * based on the passed in values for BOOT_BUS_WIDTH, RESET_BOOT_BUS_WIDTH
+ * and BOOT_MODE.
+ *
+ * Returns 0 on success.
+ */
+int mmc_set_boot_bus_width(struct mmc *mmc, u8 width, u8 reset, u8 mode)
+{
+ int err;
+
+ err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_BOOT_BUS_WIDTH,
+ EXT_CSD_BOOT_BUS_WIDTH_MODE(mode) |
+ EXT_CSD_BOOT_BUS_WIDTH_RESET(reset) |
+ EXT_CSD_BOOT_BUS_WIDTH_WIDTH(width));
+
+ if (err)
+ return err;
+ return 0;
+}
+
+/*
* Modify EXT_CSD[179] which is PARTITION_CONFIG (formerly BOOT_CONFIG)
* based on the passed in values for BOOT_ACK, BOOT_PARTITION_ENABLE and
* PARTITION_ACCESS.
diff --git a/include/mmc.h b/include/mmc.h
index 7e026da..3594286 100644
--- a/include/mmc.h
+++ b/include/mmc.h
@@ -187,6 +187,9 @@
#define EXT_CSD_BOOT_PART_NUM(x) (x << 3)
#define EXT_CSD_PARTITION_ACCESS(x) (x << 0)
+#define EXT_CSD_BOOT_BUS_WIDTH_MODE(x) (x << 3)
+#define EXT_CSD_BOOT_BUS_WIDTH_RESET(x) (x << 2)
+#define EXT_CSD_BOOT_BUS_WIDTH_WIDTH(x) (x)
#define R1_ILLEGAL_COMMAND (1 << 22)
#define R1_APP_CMD (1 << 5)
@@ -314,6 +317,8 @@ int mmc_boot_partition_size_change(struct mmc *mmc, unsigned long bootsize,
int mmc_boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access);
/* Function to modify the PARTITION_CONFIG field of EXT_CSD */
int mmc_set_part_conf(struct mmc *mmc, u8 ack, u8 part_num, u8 access);
+/* Function to modify the BOOT_BUS_WIDTH field of EXT_CSD */
+int mmc_set_boot_bus_width(struct mmc *mmc, u8 width, u8 reset, u8 mode);
/**
* Start device initialization and return immediately; it does not block on
--
1.7.9.5
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 8/8] cmd_mmc.c: Drop open/close mmc sub-commands
2014-01-30 21:31 [U-Boot] [PATCH v2 1/8] SPL: Add CONFIG_SUPPORT_EMMC_BOOT support to CONFIG_SPL_FRAMEWORK Tom Rini
` (5 preceding siblings ...)
2014-01-30 21:31 ` [U-Boot] [PATCH v2 7/8] cmd_mmc.c: Add bootbus mmc sub-command Tom Rini
@ 2014-01-30 21:32 ` Tom Rini
2014-02-04 0:51 ` Jaehoon Chung
` (2 more replies)
6 siblings, 3 replies; 23+ messages in thread
From: Tom Rini @ 2014-01-30 21:32 UTC (permalink / raw)
To: u-boot
The open and close mmc sub-commands implement a hard-coded set of values
specific to the SMDK5250 platform. Remove these commands as what they
did can be done instead with a series of mmc dev / bootpart / bootbus
commands instead now.
Cc: Amar <amarendra.xt@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
Cc: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Tom Rini <trini@ti.com>
---
common/cmd_mmc.c | 72 -----------------------------------------------------
drivers/mmc/mmc.c | 65 -----------------------------------------------
include/mmc.h | 2 --
3 files changed, 139 deletions(-)
diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c
index a028149..2d51927 100644
--- a/common/cmd_mmc.c
+++ b/common/cmd_mmc.c
@@ -131,36 +131,6 @@ U_BOOT_CMD(
"- display info of the current MMC device"
);
-#ifdef CONFIG_SUPPORT_EMMC_BOOT
-static int boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access)
-{
- int err;
- err = mmc_boot_part_access(mmc, ack, part_num, access);
-
- if ((err == 0) && (access != 0)) {
- printf("\t\t\t!!!Notice!!!\n");
-
- printf("!You must close EMMC boot Partition");
- printf("after all images are written\n");
-
- printf("!EMMC boot partition has continuity");
- printf("at image writing time.\n");
-
- printf("!So, do not close the boot partition");
- printf("before all images are written.\n");
- return 0;
- } else if ((err == 0) && (access == 0))
- return 0;
- else if ((err != 0) && (access != 0)) {
- printf("EMMC boot partition-%d OPEN Failed.\n", part_num);
- return 1;
- } else {
- printf("EMMC boot partition-%d CLOSE Failed.\n", part_num);
- return 1;
- }
-}
-#endif
-
static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
enum mmc_state state;
@@ -273,44 +243,6 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
return 0;
#ifdef CONFIG_SUPPORT_EMMC_BOOT
- } else if ((strcmp(argv[1], "open") == 0) ||
- (strcmp(argv[1], "close") == 0)) {
- int dev;
- struct mmc *mmc;
- u8 part_num, access = 0;
-
- if (argc == 4) {
- dev = simple_strtoul(argv[2], NULL, 10);
- part_num = simple_strtoul(argv[3], NULL, 10);
- } else {
- return CMD_RET_USAGE;
- }
-
- mmc = find_mmc_device(dev);
- if (!mmc) {
- printf("no mmc device at slot %x\n", dev);
- return 1;
- }
-
- if (IS_SD(mmc)) {
- printf("SD device cannot be opened/closed\n");
- return 1;
- }
-
- if ((part_num <= 0) || (part_num > MMC_NUM_BOOT_PARTITION)) {
- printf("Invalid boot partition number:\n");
- printf("Boot partition number cannot be <= 0\n");
- printf("EMMC44 supports only 2 boot partitions\n");
- return 1;
- }
-
- if (strcmp(argv[1], "open") == 0)
- access = part_num; /* enable R/W access to boot part*/
- else
- access = 0; /* No access to boot partition */
-
- /* acknowledge to be sent during boot operation */
- return boot_part_access(mmc, 1, part_num, access);
} else if (strcmp(argv[1], "partconf") == 0) {
int dev;
struct mmc *mmc;
@@ -498,10 +430,6 @@ U_BOOT_CMD(
"mmc dev [dev] [part] - show or set current mmc device [partition]\n"
"mmc list - lists available devices\n"
#ifdef CONFIG_SUPPORT_EMMC_BOOT
- "mmc open <dev> <boot_partition>\n"
- " - Enable boot_part for booting and enable R/W access of boot_part\n"
- "mmc close <dev> <boot_partition>\n"
- " - Enable boot_part for booting and disable access to boot_part\n"
"mmc bootbus dev boot_bus_width reset_boot_bus_width boot_mode\n"
" - Set the BOOT_BUS_WIDTH field of the specified device\n"
"mmc bootpart-resize <dev> <boot part size MB> <RPMB part size MB>\n"
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index fc1c1dc..3a57ab8 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -1442,71 +1442,6 @@ int mmc_boot_partition_size_change(struct mmc *mmc, unsigned long bootsize,
}
/*
- * This function shall form and send the commands to open / close the
- * boot partition specified by user.
- *
- * Input Parameters:
- * ack: 0x0 - No boot acknowledge sent (default)
- * 0x1 - Boot acknowledge sent during boot operation
- * part_num: User selects boot data that will be sent to master
- * 0x0 - Device not boot enabled (default)
- * 0x1 - Boot partition 1 enabled for boot
- * 0x2 - Boot partition 2 enabled for boot
- * access: User selects partitions to access
- * 0x0 : No access to boot partition (default)
- * 0x1 : R/W boot partition 1
- * 0x2 : R/W boot partition 2
- * 0x3 : R/W Replay Protected Memory Block (RPMB)
- *
- * Returns 0 on success.
- */
-int mmc_boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access)
-{
- int err;
- struct mmc_cmd cmd;
-
- /* Boot ack enable, boot partition enable , boot partition access */
- cmd.cmdidx = MMC_CMD_SWITCH;
- cmd.resp_type = MMC_RSP_R1b;
-
- cmd.cmdarg = (MMC_SWITCH_MODE_WRITE_BYTE << 24) |
- (EXT_CSD_PART_CONF << 16) |
- ((EXT_CSD_BOOT_ACK(ack) |
- EXT_CSD_BOOT_PART_NUM(part_num) |
- EXT_CSD_PARTITION_ACCESS(access)) << 8);
-
- err = mmc_send_cmd(mmc, &cmd, NULL);
- if (err) {
- if (access) {
- debug("mmc boot partition#%d open fail:Error1 = %d\n",
- part_num, err);
- } else {
- debug("mmc boot partition#%d close fail:Error = %d\n",
- part_num, err);
- }
- return err;
- }
-
- if (access) {
- /* 4bit transfer mode@booting time. */
- cmd.cmdidx = MMC_CMD_SWITCH;
- cmd.resp_type = MMC_RSP_R1b;
-
- cmd.cmdarg = (MMC_SWITCH_MODE_WRITE_BYTE << 24) |
- (EXT_CSD_BOOT_BUS_WIDTH << 16) |
- ((1 << 0) << 8);
-
- err = mmc_send_cmd(mmc, &cmd, NULL);
- if (err) {
- debug("mmc boot partition#%d open fail:Error2 = %d\n",
- part_num, err);
- return err;
- }
- }
- return 0;
-}
-
-/*
* Modify EXT_CSD[177] which is BOOT_BUS_WIDTH
* based on the passed in values for BOOT_BUS_WIDTH, RESET_BOOT_BUS_WIDTH
* and BOOT_MODE.
diff --git a/include/mmc.h b/include/mmc.h
index 3594286..e95a237 100644
--- a/include/mmc.h
+++ b/include/mmc.h
@@ -313,8 +313,6 @@ int mmc_set_dsr(struct mmc *mmc, u16 val);
/* Function to change the size of boot partition and rpmb partitions */
int mmc_boot_partition_size_change(struct mmc *mmc, unsigned long bootsize,
unsigned long rpmbsize);
-/* Function to send commands to open/close the specified boot partition */
-int mmc_boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access);
/* Function to modify the PARTITION_CONFIG field of EXT_CSD */
int mmc_set_part_conf(struct mmc *mmc, u8 ack, u8 part_num, u8 access);
/* Function to modify the BOOT_BUS_WIDTH field of EXT_CSD */
--
1.7.9.5
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 8/8] cmd_mmc.c: Drop open/close mmc sub-commands
2014-01-30 21:32 ` [U-Boot] [PATCH v2 8/8] cmd_mmc.c: Drop open/close mmc sub-commands Tom Rini
@ 2014-02-04 0:51 ` Jaehoon Chung
2014-02-04 14:08 ` Otavio Salvador
2014-02-17 8:40 ` Lukasz Majewski
2 siblings, 0 replies; 23+ messages in thread
From: Jaehoon Chung @ 2014-02-04 0:51 UTC (permalink / raw)
To: u-boot
Looks good to me.
Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
Best Regards,
Jaehoon Chung
On 01/31/2014 06:32 AM, Tom Rini wrote:
> The open and close mmc sub-commands implement a hard-coded set of values
> specific to the SMDK5250 platform. Remove these commands as what they
> did can be done instead with a series of mmc dev / bootpart / bootbus
> commands instead now.
>
> Cc: Amar <amarendra.xt@samsung.com>
> Cc: Minkyu Kang <mk7.kang@samsung.com>
> Cc: Jaehoon Chung <jh80.chung@samsung.com>
> Signed-off-by: Tom Rini <trini@ti.com>
> ---
> common/cmd_mmc.c | 72 -----------------------------------------------------
> drivers/mmc/mmc.c | 65 -----------------------------------------------
> include/mmc.h | 2 --
> 3 files changed, 139 deletions(-)
>
> diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c
> index a028149..2d51927 100644
> --- a/common/cmd_mmc.c
> +++ b/common/cmd_mmc.c
> @@ -131,36 +131,6 @@ U_BOOT_CMD(
> "- display info of the current MMC device"
> );
>
> -#ifdef CONFIG_SUPPORT_EMMC_BOOT
> -static int boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access)
> -{
> - int err;
> - err = mmc_boot_part_access(mmc, ack, part_num, access);
> -
> - if ((err == 0) && (access != 0)) {
> - printf("\t\t\t!!!Notice!!!\n");
> -
> - printf("!You must close EMMC boot Partition");
> - printf("after all images are written\n");
> -
> - printf("!EMMC boot partition has continuity");
> - printf("at image writing time.\n");
> -
> - printf("!So, do not close the boot partition");
> - printf("before all images are written.\n");
> - return 0;
> - } else if ((err == 0) && (access == 0))
> - return 0;
> - else if ((err != 0) && (access != 0)) {
> - printf("EMMC boot partition-%d OPEN Failed.\n", part_num);
> - return 1;
> - } else {
> - printf("EMMC boot partition-%d CLOSE Failed.\n", part_num);
> - return 1;
> - }
> -}
> -#endif
> -
> static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
> {
> enum mmc_state state;
> @@ -273,44 +243,6 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>
> return 0;
> #ifdef CONFIG_SUPPORT_EMMC_BOOT
> - } else if ((strcmp(argv[1], "open") == 0) ||
> - (strcmp(argv[1], "close") == 0)) {
> - int dev;
> - struct mmc *mmc;
> - u8 part_num, access = 0;
> -
> - if (argc == 4) {
> - dev = simple_strtoul(argv[2], NULL, 10);
> - part_num = simple_strtoul(argv[3], NULL, 10);
> - } else {
> - return CMD_RET_USAGE;
> - }
> -
> - mmc = find_mmc_device(dev);
> - if (!mmc) {
> - printf("no mmc device at slot %x\n", dev);
> - return 1;
> - }
> -
> - if (IS_SD(mmc)) {
> - printf("SD device cannot be opened/closed\n");
> - return 1;
> - }
> -
> - if ((part_num <= 0) || (part_num > MMC_NUM_BOOT_PARTITION)) {
> - printf("Invalid boot partition number:\n");
> - printf("Boot partition number cannot be <= 0\n");
> - printf("EMMC44 supports only 2 boot partitions\n");
> - return 1;
> - }
> -
> - if (strcmp(argv[1], "open") == 0)
> - access = part_num; /* enable R/W access to boot part*/
> - else
> - access = 0; /* No access to boot partition */
> -
> - /* acknowledge to be sent during boot operation */
> - return boot_part_access(mmc, 1, part_num, access);
> } else if (strcmp(argv[1], "partconf") == 0) {
> int dev;
> struct mmc *mmc;
> @@ -498,10 +430,6 @@ U_BOOT_CMD(
> "mmc dev [dev] [part] - show or set current mmc device [partition]\n"
> "mmc list - lists available devices\n"
> #ifdef CONFIG_SUPPORT_EMMC_BOOT
> - "mmc open <dev> <boot_partition>\n"
> - " - Enable boot_part for booting and enable R/W access of boot_part\n"
> - "mmc close <dev> <boot_partition>\n"
> - " - Enable boot_part for booting and disable access to boot_part\n"
> "mmc bootbus dev boot_bus_width reset_boot_bus_width boot_mode\n"
> " - Set the BOOT_BUS_WIDTH field of the specified device\n"
> "mmc bootpart-resize <dev> <boot part size MB> <RPMB part size MB>\n"
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> index fc1c1dc..3a57ab8 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -1442,71 +1442,6 @@ int mmc_boot_partition_size_change(struct mmc *mmc, unsigned long bootsize,
> }
>
> /*
> - * This function shall form and send the commands to open / close the
> - * boot partition specified by user.
> - *
> - * Input Parameters:
> - * ack: 0x0 - No boot acknowledge sent (default)
> - * 0x1 - Boot acknowledge sent during boot operation
> - * part_num: User selects boot data that will be sent to master
> - * 0x0 - Device not boot enabled (default)
> - * 0x1 - Boot partition 1 enabled for boot
> - * 0x2 - Boot partition 2 enabled for boot
> - * access: User selects partitions to access
> - * 0x0 : No access to boot partition (default)
> - * 0x1 : R/W boot partition 1
> - * 0x2 : R/W boot partition 2
> - * 0x3 : R/W Replay Protected Memory Block (RPMB)
> - *
> - * Returns 0 on success.
> - */
> -int mmc_boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access)
> -{
> - int err;
> - struct mmc_cmd cmd;
> -
> - /* Boot ack enable, boot partition enable , boot partition access */
> - cmd.cmdidx = MMC_CMD_SWITCH;
> - cmd.resp_type = MMC_RSP_R1b;
> -
> - cmd.cmdarg = (MMC_SWITCH_MODE_WRITE_BYTE << 24) |
> - (EXT_CSD_PART_CONF << 16) |
> - ((EXT_CSD_BOOT_ACK(ack) |
> - EXT_CSD_BOOT_PART_NUM(part_num) |
> - EXT_CSD_PARTITION_ACCESS(access)) << 8);
> -
> - err = mmc_send_cmd(mmc, &cmd, NULL);
> - if (err) {
> - if (access) {
> - debug("mmc boot partition#%d open fail:Error1 = %d\n",
> - part_num, err);
> - } else {
> - debug("mmc boot partition#%d close fail:Error = %d\n",
> - part_num, err);
> - }
> - return err;
> - }
> -
> - if (access) {
> - /* 4bit transfer mode at booting time. */
> - cmd.cmdidx = MMC_CMD_SWITCH;
> - cmd.resp_type = MMC_RSP_R1b;
> -
> - cmd.cmdarg = (MMC_SWITCH_MODE_WRITE_BYTE << 24) |
> - (EXT_CSD_BOOT_BUS_WIDTH << 16) |
> - ((1 << 0) << 8);
> -
> - err = mmc_send_cmd(mmc, &cmd, NULL);
> - if (err) {
> - debug("mmc boot partition#%d open fail:Error2 = %d\n",
> - part_num, err);
> - return err;
> - }
> - }
> - return 0;
> -}
> -
> -/*
> * Modify EXT_CSD[177] which is BOOT_BUS_WIDTH
> * based on the passed in values for BOOT_BUS_WIDTH, RESET_BOOT_BUS_WIDTH
> * and BOOT_MODE.
> diff --git a/include/mmc.h b/include/mmc.h
> index 3594286..e95a237 100644
> --- a/include/mmc.h
> +++ b/include/mmc.h
> @@ -313,8 +313,6 @@ int mmc_set_dsr(struct mmc *mmc, u16 val);
> /* Function to change the size of boot partition and rpmb partitions */
> int mmc_boot_partition_size_change(struct mmc *mmc, unsigned long bootsize,
> unsigned long rpmbsize);
> -/* Function to send commands to open/close the specified boot partition */
> -int mmc_boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access);
> /* Function to modify the PARTITION_CONFIG field of EXT_CSD */
> int mmc_set_part_conf(struct mmc *mmc, u8 ack, u8 part_num, u8 access);
> /* Function to modify the BOOT_BUS_WIDTH field of EXT_CSD */
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 4/8] cmd_mmc.c: Change 'bootpart' code to match normal coding style
2014-01-30 21:31 ` [U-Boot] [PATCH v2 4/8] cmd_mmc.c: Change 'bootpart' code to match normal coding style Tom Rini
@ 2014-02-04 0:54 ` Jaehoon Chung
0 siblings, 0 replies; 23+ messages in thread
From: Jaehoon Chung @ 2014-02-04 0:54 UTC (permalink / raw)
To: u-boot
Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
On 01/31/2014 06:31 AM, Tom Rini wrote:
> Signed-off-by: Tom Rini <trini@ti.com>
> ---
> common/cmd_mmc.c | 15 +++++++++++----
> 1 file changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c
> index da5fef9..e118252 100644
> --- a/common/cmd_mmc.c
> +++ b/common/cmd_mmc.c
> @@ -314,11 +314,18 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>
> } else if (strcmp(argv[1], "bootpart") == 0) {
> int dev;
> - dev = simple_strtoul(argv[2], NULL, 10);
> + struct *mmc;
> + u32 bootsize, rpmbsize;
>
> - u32 bootsize = simple_strtoul(argv[3], NULL, 10);
> - u32 rpmbsize = simple_strtoul(argv[4], NULL, 10);
> - struct mmc *mmc = find_mmc_device(dev);
> + if (argc == 5) {
> + dev = simple_strtoul(argv[2], NULL, 10);
> + bootsize = simple_strtoul(argv[3], NULL, 10);
> + rpmbsize = simple_strtoul(argv[4], NULL, 10);
> + } else {
> + return CMD_RET_USAGE;
> + }
> +
> + mmc = find_mmc_device(dev);
> if (!mmc) {
> printf("no mmc device at slot %x\n", dev);
> return 1;
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 5/8] cmd_mmc.c: Rename 'bootpart' to 'bootpart-resize'
2014-01-30 21:31 ` [U-Boot] [PATCH v2 5/8] cmd_mmc.c: Rename 'bootpart' to 'bootpart-resize' Tom Rini
@ 2014-02-04 0:55 ` Jaehoon Chung
0 siblings, 0 replies; 23+ messages in thread
From: Jaehoon Chung @ 2014-02-04 0:55 UTC (permalink / raw)
To: u-boot
Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
On 01/31/2014 06:31 AM, Tom Rini wrote:
> Rename 'bootpart' to 'bootpart-resize' to better reflect what this
> command is for.
>
> Signed-off-by: Tom Rini <trini@ti.com>
> ---
> common/cmd_mmc.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c
> index e118252..a322063 100644
> --- a/common/cmd_mmc.c
> +++ b/common/cmd_mmc.c
> @@ -312,9 +312,9 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
> /* acknowledge to be sent during boot operation */
> return boot_part_access(mmc, 1, part_num, access);
>
> - } else if (strcmp(argv[1], "bootpart") == 0) {
> + } else if (strcmp(argv[1], "bootpart-resize") == 0) {
> int dev;
> - struct *mmc;
> + struct mmc *mmc;
> u32 bootsize, rpmbsize;
>
> if (argc == 5) {
> @@ -449,8 +449,8 @@ U_BOOT_CMD(
> " - Enable boot_part for booting and enable R/W access of boot_part\n"
> "mmc close <dev> <boot_partition>\n"
> " - Enable boot_part for booting and disable access to boot_part\n"
> - "mmc bootpart <device num> <boot part size MB> <RPMB part size MB>\n"
> - " - change sizes of boot and RPMB partitions of specified device\n"
> + "mmc bootpart-resize <dev> <boot part size MB> <RPMB part size MB>\n"
> + " - Change sizes of boot and RPMB partitions of specified device\n"
> #endif
> "mmc setdsr - set DSR register value\n"
> );
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 6/8] cmd_mmc.c: Add 'partconf' command to mmc
2014-01-30 21:31 ` [U-Boot] [PATCH v2 6/8] cmd_mmc.c: Add 'partconf' command to mmc Tom Rini
@ 2014-02-04 0:58 ` Jaehoon Chung
2014-02-05 13:03 ` Tom Rini
0 siblings, 1 reply; 23+ messages in thread
From: Jaehoon Chung @ 2014-02-04 0:58 UTC (permalink / raw)
To: u-boot
On 01/31/2014 06:31 AM, Tom Rini wrote:
> Add a partconf sub-command to the mmc command to allow for setting
> the boot_ack, boot_partition and partition_access fields of
> PARTITION_CONFIG (formerly BOOT_CONFIG, EXT_CSD[179]). Part of this
> requires changing the check for 'part' from an strncmp to a strcmp, like
> the rest of the sub-commands.
>
> Cc: Andy Fleming <afleming@gmail.com>
> Cc: Pantelis Antoniou <panto@antoniou-consulting.com>
> Signed-off-by: Tom Rini <trini@ti.com>
> ---
> common/cmd_mmc.c | 30 +++++++++++++++++++++++++++++-
> drivers/mmc/mmc.c | 21 +++++++++++++++++++++
> include/mmc.h | 2 ++
> 3 files changed, 52 insertions(+), 1 deletion(-)
>
> diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c
> index a322063..5842e85 100644
> --- a/common/cmd_mmc.c
> +++ b/common/cmd_mmc.c
> @@ -195,7 +195,7 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
> return 1;
> else
> return 0;
> - } else if (strncmp(argv[1], "part", 4) == 0) {
> + } else if (strcmp(argv[1], "part") == 0) {
> block_dev_desc_t *mmc_dev;
> struct mmc *mmc;
>
> @@ -311,7 +311,33 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>
> /* acknowledge to be sent during boot operation */
> return boot_part_access(mmc, 1, part_num, access);
> + } else if (strcmp(argv[1], "partconf") == 0) {
> + int dev;
> + struct mmc *mmc;
> + u8 ack, part_num, access;
> +
> + if (argc == 6) {
> + dev = simple_strtoul(argv[2], NULL, 10);
> + ack = simple_strtoul(argv[3], NULL, 10);
> + part_num = simple_strtoul(argv[4], NULL, 10);
> + access = simple_strtoul(argv[5], NULL, 10);
> + } else {
> + return CMD_RET_USAGE;
> + }
> +
> + mmc = find_mmc_device(dev);
> + if (!mmc) {
> + printf("no mmc device at slot %x\n", dev);
> + return 1;
> + }
>
> + if (IS_SD(mmc)) {
> + puts("PARTITION_CONFIG only exists on eMMC\n");
> + return 1;
> + }
> +
> + /* acknowledge to be sent during boot operation */
> + return mmc_set_part_conf(mmc, ack, part_num, access);
> } else if (strcmp(argv[1], "bootpart-resize") == 0) {
> int dev;
> struct mmc *mmc;
> @@ -451,6 +477,8 @@ U_BOOT_CMD(
> " - Enable boot_part for booting and disable access to boot_part\n"
> "mmc bootpart-resize <dev> <boot part size MB> <RPMB part size MB>\n"
> " - Change sizes of boot and RPMB partitions of specified device\n"
> + "mmc partconf dev boot_ack boot_partition partition_access\n"
How about using bracket("< >") for more readable?
mmc partconf <dev> <boot_ack> <boot_partition> <partition_access>
Anyway, looks good to me.
Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
> + " - Change the bits of the PARTITION_CONFIG field of the specified device\n"
> #endif
> "mmc setdsr - set DSR register value\n"
> );
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> index c6a1c23..1591fce 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -1505,4 +1505,25 @@ int mmc_boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access)
> }
> return 0;
> }
> +
> +/*
> + * Modify EXT_CSD[179] which is PARTITION_CONFIG (formerly BOOT_CONFIG)
> + * based on the passed in values for BOOT_ACK, BOOT_PARTITION_ENABLE and
> + * PARTITION_ACCESS.
> + *
> + * Returns 0 on success.
> + */
> +int mmc_set_part_conf(struct mmc *mmc, u8 ack, u8 part_num, u8 access)
> +{
> + int err;
> +
> + err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_PART_CONF,
> + EXT_CSD_BOOT_ACK(ack) |
> + EXT_CSD_BOOT_PART_NUM(part_num) |
> + EXT_CSD_PARTITION_ACCESS(access));
> +
> + if (err)
> + return err;
> + return 0;
> +}
> #endif
> diff --git a/include/mmc.h b/include/mmc.h
> index e1060b9..7e026da 100644
> --- a/include/mmc.h
> +++ b/include/mmc.h
> @@ -312,6 +312,8 @@ int mmc_boot_partition_size_change(struct mmc *mmc, unsigned long bootsize,
> unsigned long rpmbsize);
> /* Function to send commands to open/close the specified boot partition */
> int mmc_boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access);
> +/* Function to modify the PARTITION_CONFIG field of EXT_CSD */
> +int mmc_set_part_conf(struct mmc *mmc, u8 ack, u8 part_num, u8 access);
>
> /**
> * Start device initialization and return immediately; it does not block on
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 7/8] cmd_mmc.c: Add bootbus mmc sub-command
2014-01-30 21:31 ` [U-Boot] [PATCH v2 7/8] cmd_mmc.c: Add bootbus mmc sub-command Tom Rini
@ 2014-02-04 0:59 ` Jaehoon Chung
2014-04-18 9:25 ` Michael Trimarchi
1 sibling, 0 replies; 23+ messages in thread
From: Jaehoon Chung @ 2014-02-04 0:59 UTC (permalink / raw)
To: u-boot
Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
On 01/31/2014 06:31 AM, Tom Rini wrote:
> Add a bootbus sub-command to the mmc command to allow for setting
> the boot_bus_width, reset_boot_bus_width and boot_mode fields of
> BOOT_BUS_WIDTH (EXT_CSD[177]).
>
> Signed-off-by: Tom Rini <trini@ti.com>
> ---
> common/cmd_mmc.c | 29 +++++++++++++++++++++++++++++
> drivers/mmc/mmc.c | 21 +++++++++++++++++++++
> include/mmc.h | 5 +++++
> 3 files changed, 55 insertions(+)
>
> diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c
> index 5842e85..a028149 100644
> --- a/common/cmd_mmc.c
> +++ b/common/cmd_mmc.c
> @@ -338,6 +338,33 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>
> /* acknowledge to be sent during boot operation */
> return mmc_set_part_conf(mmc, ack, part_num, access);
> + } else if (strcmp(argv[1], "bootbus") == 0) {
> + int dev;
> + struct mmc *mmc;
> + u8 width, reset, mode;
> +
> + if (argc == 6) {
> + dev = simple_strtoul(argv[2], NULL, 10);
> + width = simple_strtoul(argv[3], NULL, 10);
> + reset = simple_strtoul(argv[4], NULL, 10);
> + mode = simple_strtoul(argv[5], NULL, 10);
> + } else {
> + return CMD_RET_USAGE;
> + }
> +
> + mmc = find_mmc_device(dev);
> + if (!mmc) {
> + printf("no mmc device at slot %x\n", dev);
> + return 1;
> + }
> +
> + if (IS_SD(mmc)) {
> + puts("BOOT_BUS_WIDTH only exists on eMMC\n");
> + return 1;
> + }
> +
> + /* acknowledge to be sent during boot operation */
> + return mmc_set_boot_bus_width(mmc, width, reset, mode);
> } else if (strcmp(argv[1], "bootpart-resize") == 0) {
> int dev;
> struct mmc *mmc;
> @@ -475,6 +502,8 @@ U_BOOT_CMD(
> " - Enable boot_part for booting and enable R/W access of boot_part\n"
> "mmc close <dev> <boot_partition>\n"
> " - Enable boot_part for booting and disable access to boot_part\n"
> + "mmc bootbus dev boot_bus_width reset_boot_bus_width boot_mode\n"
> + " - Set the BOOT_BUS_WIDTH field of the specified device\n"
> "mmc bootpart-resize <dev> <boot part size MB> <RPMB part size MB>\n"
> " - Change sizes of boot and RPMB partitions of specified device\n"
> "mmc partconf dev boot_ack boot_partition partition_access\n"
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> index 1591fce..fc1c1dc 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -1507,6 +1507,27 @@ int mmc_boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access)
> }
>
> /*
> + * Modify EXT_CSD[177] which is BOOT_BUS_WIDTH
> + * based on the passed in values for BOOT_BUS_WIDTH, RESET_BOOT_BUS_WIDTH
> + * and BOOT_MODE.
> + *
> + * Returns 0 on success.
> + */
> +int mmc_set_boot_bus_width(struct mmc *mmc, u8 width, u8 reset, u8 mode)
> +{
> + int err;
> +
> + err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_BOOT_BUS_WIDTH,
> + EXT_CSD_BOOT_BUS_WIDTH_MODE(mode) |
> + EXT_CSD_BOOT_BUS_WIDTH_RESET(reset) |
> + EXT_CSD_BOOT_BUS_WIDTH_WIDTH(width));
> +
> + if (err)
> + return err;
> + return 0;
> +}
> +
> +/*
> * Modify EXT_CSD[179] which is PARTITION_CONFIG (formerly BOOT_CONFIG)
> * based on the passed in values for BOOT_ACK, BOOT_PARTITION_ENABLE and
> * PARTITION_ACCESS.
> diff --git a/include/mmc.h b/include/mmc.h
> index 7e026da..3594286 100644
> --- a/include/mmc.h
> +++ b/include/mmc.h
> @@ -187,6 +187,9 @@
> #define EXT_CSD_BOOT_PART_NUM(x) (x << 3)
> #define EXT_CSD_PARTITION_ACCESS(x) (x << 0)
>
> +#define EXT_CSD_BOOT_BUS_WIDTH_MODE(x) (x << 3)
> +#define EXT_CSD_BOOT_BUS_WIDTH_RESET(x) (x << 2)
> +#define EXT_CSD_BOOT_BUS_WIDTH_WIDTH(x) (x)
>
> #define R1_ILLEGAL_COMMAND (1 << 22)
> #define R1_APP_CMD (1 << 5)
> @@ -314,6 +317,8 @@ int mmc_boot_partition_size_change(struct mmc *mmc, unsigned long bootsize,
> int mmc_boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access);
> /* Function to modify the PARTITION_CONFIG field of EXT_CSD */
> int mmc_set_part_conf(struct mmc *mmc, u8 ack, u8 part_num, u8 access);
> +/* Function to modify the BOOT_BUS_WIDTH field of EXT_CSD */
> +int mmc_set_boot_bus_width(struct mmc *mmc, u8 width, u8 reset, u8 mode);
>
> /**
> * Start device initialization and return immediately; it does not block on
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 8/8] cmd_mmc.c: Drop open/close mmc sub-commands
2014-01-30 21:32 ` [U-Boot] [PATCH v2 8/8] cmd_mmc.c: Drop open/close mmc sub-commands Tom Rini
2014-02-04 0:51 ` Jaehoon Chung
@ 2014-02-04 14:08 ` Otavio Salvador
2014-02-04 14:11 ` Tom Rini
2014-02-04 14:15 ` Otavio Salvador
2014-02-17 8:40 ` Lukasz Majewski
2 siblings, 2 replies; 23+ messages in thread
From: Otavio Salvador @ 2014-02-04 14:08 UTC (permalink / raw)
To: u-boot
On Thu, Jan 30, 2014 at 7:32 PM, Tom Rini <trini@ti.com> wrote:
> The open and close mmc sub-commands implement a hard-coded set of values
> specific to the SMDK5250 platform. Remove these commands as what they
> did can be done instead with a series of mmc dev / bootpart / bootbus
> commands instead now.
Maybe it'd be good to document, in the commitlog the mmc commands equivalent.
--
Otavio Salvador O.S. Systems
http://www.ossystems.com.br http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750
^ permalink raw reply [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 8/8] cmd_mmc.c: Drop open/close mmc sub-commands
2014-02-04 14:08 ` Otavio Salvador
@ 2014-02-04 14:11 ` Tom Rini
2014-02-04 14:15 ` Otavio Salvador
1 sibling, 0 replies; 23+ messages in thread
From: Tom Rini @ 2014-02-04 14:11 UTC (permalink / raw)
To: u-boot
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 02/04/2014 09:08 AM, Otavio Salvador wrote:
> On Thu, Jan 30, 2014 at 7:32 PM, Tom Rini <trini@ti.com> wrote:
>> The open and close mmc sub-commands implement a hard-coded set of
>> values specific to the SMDK5250 platform. Remove these commands
>> as what they did can be done instead with a series of mmc dev /
>> bootpart / bootbus commands instead now.
>
> Maybe it'd be good to document, in the commitlog the mmc commands
> equivalent.
Can we get a board/samsung/smdk5250/README, ala the dra7xx / omap5
ones I added after? I think I know what the equivalent is for that
platform but cannot test.
- --
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
iQIcBAEBAgAGBQJS8PUKAAoJENk4IS6UOR1Wg1YP/2TAi01uHV6TkX3JRCcWX6hz
5dzhOi1iVStb6f8fhGfTTSBCVcLT5alVXM4J2z5Io1Lqtk6Sh18f/ISFllJ1/CwO
9qxszaRo5Sm2psdzauwirWIG5xhY20PiRnG+yaDCnSytnBFAqvN4aNbbrOPKke7S
GjWtbJcE9uyaWNQK8YRjbSaw+jH3lBJ94TL02l2mjGF7/hiQXGaxZVL/H/wI7Gx4
kLOBYOwi+vX2PxCI9Kd3DlST+DrBHS1Jd5cROFrSHr99TxgREdR14SEQ7993u1AZ
1QiVet+iIky6t0WO0CdjEg+gAYw2mtMO/3ZFRy8htEQsLzRoI6SAwgs0+pWLiqSj
5MBQ7+hE91kO8mittEg1f4kJMoP4A0Wb+yoNbfqg0cZuh446i3kwl7uqYfrKpW8y
Ei3jX88Y76kO+F7RmvBIUh6qs1bXaWFTOeynDol8oIY8XAWe5dHNlEOGqW8acvrv
YulHhIcQkkbkpSSHt/Dm6EkZbbIItX6C5wzM4PTtB+jjVO0swOOGjgbTk3X71XLY
EW77wgtH3SnUXzTj40m5tCWl4L4+40pY12RbA2aS2PdFzChDwYG20e1Yo92/dng2
wi+RWCbT1GjAFqjjivQ+3SZeZHD98ZG30iShvANXw8XzsBauyMHI0zdWBga/wHZg
F+QRbUsCCK/xF+opqVOi
=yn/K
-----END PGP SIGNATURE-----
^ permalink raw reply [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 8/8] cmd_mmc.c: Drop open/close mmc sub-commands
2014-02-04 14:08 ` Otavio Salvador
2014-02-04 14:11 ` Tom Rini
@ 2014-02-04 14:15 ` Otavio Salvador
2014-02-04 14:55 ` Tom Rini
1 sibling, 1 reply; 23+ messages in thread
From: Otavio Salvador @ 2014-02-04 14:15 UTC (permalink / raw)
To: u-boot
On Tue, Feb 4, 2014 at 12:08 PM, Otavio Salvador
<otavio@ossystems.com.br> wrote:
> On Thu, Jan 30, 2014 at 7:32 PM, Tom Rini <trini@ti.com> wrote:
>> The open and close mmc sub-commands implement a hard-coded set of values
>> specific to the SMDK5250 platform. Remove these commands as what they
>> did can be done instead with a series of mmc dev / bootpart / bootbus
>> commands instead now.
>
> Maybe it'd be good to document, in the commitlog the mmc commands equivalent.
By the way, mx6sabresd uses this.
--
Otavio Salvador O.S. Systems
http://www.ossystems.com.br http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750
^ permalink raw reply [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 8/8] cmd_mmc.c: Drop open/close mmc sub-commands
2014-02-04 14:15 ` Otavio Salvador
@ 2014-02-04 14:55 ` Tom Rini
0 siblings, 0 replies; 23+ messages in thread
From: Tom Rini @ 2014-02-04 14:55 UTC (permalink / raw)
To: u-boot
On Tue, Feb 04, 2014 at 12:15:44PM -0200, Otavio Salvador wrote:
> On Tue, Feb 4, 2014 at 12:08 PM, Otavio Salvador
> <otavio@ossystems.com.br> wrote:
> > On Thu, Jan 30, 2014 at 7:32 PM, Tom Rini <trini@ti.com> wrote:
> >> The open and close mmc sub-commands implement a hard-coded set of values
> >> specific to the SMDK5250 platform. Remove these commands as what they
> >> did can be done instead with a series of mmc dev / bootpart / bootbus
> >> commands instead now.
> >
> > Maybe it'd be good to document, in the commitlog the mmc commands equivalent.
>
> By the way, mx6sabresd uses this.
OK, so it should be:
mmc partconf DEV 1 BOOTn 0
mmc bootbus DEV 1 0 0
If that works, yes, I can update the commit message to say what previous
command did.
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140204/d38552f1/attachment.pgp>
^ permalink raw reply [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 6/8] cmd_mmc.c: Add 'partconf' command to mmc
2014-02-04 0:58 ` Jaehoon Chung
@ 2014-02-05 13:03 ` Tom Rini
2014-02-06 4:48 ` Jaehoon Chung
0 siblings, 1 reply; 23+ messages in thread
From: Tom Rini @ 2014-02-05 13:03 UTC (permalink / raw)
To: u-boot
On Tue, Feb 04, 2014 at 09:58:06AM +0900, Jaehoon Chung wrote:
> On 01/31/2014 06:31 AM, Tom Rini wrote:
> > Add a partconf sub-command to the mmc command to allow for setting
> > the boot_ack, boot_partition and partition_access fields of
> > PARTITION_CONFIG (formerly BOOT_CONFIG, EXT_CSD[179]). Part of this
> > requires changing the check for 'part' from an strncmp to a strcmp, like
> > the rest of the sub-commands.
[snip]
> > @@ -451,6 +477,8 @@ U_BOOT_CMD(
> > " - Enable boot_part for booting and disable access to boot_part\n"
> > "mmc bootpart-resize <dev> <boot part size MB> <RPMB part size MB>\n"
> > " - Change sizes of boot and RPMB partitions of specified device\n"
> > + "mmc partconf dev boot_ack boot_partition partition_access\n"
>
> How about using bracket("< >") for more readable?
> mmc partconf <dev> <boot_ack> <boot_partition> <partition_access>
Except for bootpart-resize the rest of the mmc commands (and most in
general) don't use "< >" around required parameters unless it's part of
some sub-choices (such as spl export <img=atags|fdt> ...).
> Anyway, looks good to me.
Thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140205/c34a4ef1/attachment.pgp>
^ permalink raw reply [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 6/8] cmd_mmc.c: Add 'partconf' command to mmc
2014-02-05 13:03 ` Tom Rini
@ 2014-02-06 4:48 ` Jaehoon Chung
0 siblings, 0 replies; 23+ messages in thread
From: Jaehoon Chung @ 2014-02-06 4:48 UTC (permalink / raw)
To: u-boot
Dear, Tom.
On 02/05/2014 10:03 PM, Tom Rini wrote:
> On Tue, Feb 04, 2014 at 09:58:06AM +0900, Jaehoon Chung wrote:
>> On 01/31/2014 06:31 AM, Tom Rini wrote:
>>> Add a partconf sub-command to the mmc command to allow for setting
>>> the boot_ack, boot_partition and partition_access fields of
>>> PARTITION_CONFIG (formerly BOOT_CONFIG, EXT_CSD[179]). Part of this
>>> requires changing the check for 'part' from an strncmp to a strcmp, like
>>> the rest of the sub-commands.
> [snip]
>>> @@ -451,6 +477,8 @@ U_BOOT_CMD(
>>> " - Enable boot_part for booting and disable access to boot_part\n"
>>> "mmc bootpart-resize <dev> <boot part size MB> <RPMB part size MB>\n"
>>> " - Change sizes of boot and RPMB partitions of specified device\n"
>>> + "mmc partconf dev boot_ack boot_partition partition_access\n"
>>
>> How about using bracket("< >") for more readable?
>> mmc partconf <dev> <boot_ack> <boot_partition> <partition_access>
>
> Except for bootpart-resize the rest of the mmc commands (and most in
> general) don't use "< >" around required parameters unless it's part of
> some sub-choices (such as spl export <img=atags|fdt> ...).
Thanks for explanation.
Best Regards,
Jaehoon Chung.
>
>> Anyway, looks good to me.
>
> Thanks!
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 8/8] cmd_mmc.c: Drop open/close mmc sub-commands
2014-01-30 21:32 ` [U-Boot] [PATCH v2 8/8] cmd_mmc.c: Drop open/close mmc sub-commands Tom Rini
2014-02-04 0:51 ` Jaehoon Chung
2014-02-04 14:08 ` Otavio Salvador
@ 2014-02-17 8:40 ` Lukasz Majewski
2014-02-17 9:30 ` Lukasz Majewski
2 siblings, 1 reply; 23+ messages in thread
From: Lukasz Majewski @ 2014-02-17 8:40 UTC (permalink / raw)
To: u-boot
Hi Tom,
> The open and close mmc sub-commands implement a hard-coded set of
> values specific to the SMDK5250 platform. Remove these commands as
> what they did can be done instead with a series of mmc dev /
> bootpart / bootbus commands instead now.
I'm going to add support for DFU to be able to flash the eMMC boot
partition.
As far as I noticed, those patches are ACKed by relevant party. Will
those be applied to u-boot-mmc branch soon or do you need to prepare v3?
--
Best regards,
Lukasz Majewski
Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
^ permalink raw reply [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 8/8] cmd_mmc.c: Drop open/close mmc sub-commands
2014-02-17 8:40 ` Lukasz Majewski
@ 2014-02-17 9:30 ` Lukasz Majewski
0 siblings, 0 replies; 23+ messages in thread
From: Lukasz Majewski @ 2014-02-17 9:30 UTC (permalink / raw)
To: u-boot
Hi,
> Hi Tom,
>
> > The open and close mmc sub-commands implement a hard-coded set of
> > values specific to the SMDK5250 platform. Remove these commands as
> > what they did can be done instead with a series of mmc dev /
> > bootpart / bootbus commands instead now.
>
> I'm going to add support for DFU to be able to flash the eMMC boot
> partition.
>
> As far as I noticed, those patches are ACKed by relevant party. Will
> those be applied to u-boot-mmc branch soon or do you need to prepare
> v3?
>
>
Sorry for fuzz. I've just noticed that those patches are already pulled
to u-boot-mmc branch and are waiting for upstream inclusion.
--
Best regards,
Lukasz Majewski
Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
^ permalink raw reply [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 7/8] cmd_mmc.c: Add bootbus mmc sub-command
2014-01-30 21:31 ` [U-Boot] [PATCH v2 7/8] cmd_mmc.c: Add bootbus mmc sub-command Tom Rini
2014-02-04 0:59 ` Jaehoon Chung
@ 2014-04-18 9:25 ` Michael Trimarchi
2014-04-22 15:41 ` Tom Rini
1 sibling, 1 reply; 23+ messages in thread
From: Michael Trimarchi @ 2014-04-18 9:25 UTC (permalink / raw)
To: u-boot
Hi Tom
On Thu, Jan 30, 2014 at 10:31 PM, Tom Rini <trini@ti.com> wrote:
> Add a bootbus sub-command to the mmc command to allow for setting
> the boot_bus_width, reset_boot_bus_width and boot_mode fields of
> BOOT_BUS_WIDTH (EXT_CSD[177]).
>
> Signed-off-by: Tom Rini <trini@ti.com>
> ---
Can I ask if does it work even for OMAP4 device?
So can I flash on boot0 and let omap4 bootrom to load from that?
Michael
> common/cmd_mmc.c | 29 +++++++++++++++++++++++++++++
> drivers/mmc/mmc.c | 21 +++++++++++++++++++++
> include/mmc.h | 5 +++++
> 3 files changed, 55 insertions(+)
>
> diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c
> index 5842e85..a028149 100644
> --- a/common/cmd_mmc.c
> +++ b/common/cmd_mmc.c
> @@ -338,6 +338,33 @@ static int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>
> /* acknowledge to be sent during boot operation */
> return mmc_set_part_conf(mmc, ack, part_num, access);
> + } else if (strcmp(argv[1], "bootbus") == 0) {
> + int dev;
> + struct mmc *mmc;
> + u8 width, reset, mode;
> +
> + if (argc == 6) {
> + dev = simple_strtoul(argv[2], NULL, 10);
> + width = simple_strtoul(argv[3], NULL, 10);
> + reset = simple_strtoul(argv[4], NULL, 10);
> + mode = simple_strtoul(argv[5], NULL, 10);
> + } else {
> + return CMD_RET_USAGE;
> + }
> +
> + mmc = find_mmc_device(dev);
> + if (!mmc) {
> + printf("no mmc device at slot %x\n", dev);
> + return 1;
> + }
> +
> + if (IS_SD(mmc)) {
> + puts("BOOT_BUS_WIDTH only exists on eMMC\n");
> + return 1;
> + }
> +
> + /* acknowledge to be sent during boot operation */
> + return mmc_set_boot_bus_width(mmc, width, reset, mode);
> } else if (strcmp(argv[1], "bootpart-resize") == 0) {
> int dev;
> struct mmc *mmc;
> @@ -475,6 +502,8 @@ U_BOOT_CMD(
> " - Enable boot_part for booting and enable R/W access of boot_part\n"
> "mmc close <dev> <boot_partition>\n"
> " - Enable boot_part for booting and disable access to boot_part\n"
> + "mmc bootbus dev boot_bus_width reset_boot_bus_width boot_mode\n"
> + " - Set the BOOT_BUS_WIDTH field of the specified device\n"
> "mmc bootpart-resize <dev> <boot part size MB> <RPMB part size MB>\n"
> " - Change sizes of boot and RPMB partitions of specified device\n"
> "mmc partconf dev boot_ack boot_partition partition_access\n"
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> index 1591fce..fc1c1dc 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -1507,6 +1507,27 @@ int mmc_boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access)
> }
>
> /*
> + * Modify EXT_CSD[177] which is BOOT_BUS_WIDTH
> + * based on the passed in values for BOOT_BUS_WIDTH, RESET_BOOT_BUS_WIDTH
> + * and BOOT_MODE.
> + *
> + * Returns 0 on success.
> + */
> +int mmc_set_boot_bus_width(struct mmc *mmc, u8 width, u8 reset, u8 mode)
> +{
> + int err;
> +
> + err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_BOOT_BUS_WIDTH,
> + EXT_CSD_BOOT_BUS_WIDTH_MODE(mode) |
> + EXT_CSD_BOOT_BUS_WIDTH_RESET(reset) |
> + EXT_CSD_BOOT_BUS_WIDTH_WIDTH(width));
> +
> + if (err)
> + return err;
> + return 0;
> +}
> +
> +/*
> * Modify EXT_CSD[179] which is PARTITION_CONFIG (formerly BOOT_CONFIG)
> * based on the passed in values for BOOT_ACK, BOOT_PARTITION_ENABLE and
> * PARTITION_ACCESS.
> diff --git a/include/mmc.h b/include/mmc.h
> index 7e026da..3594286 100644
> --- a/include/mmc.h
> +++ b/include/mmc.h
> @@ -187,6 +187,9 @@
> #define EXT_CSD_BOOT_PART_NUM(x) (x << 3)
> #define EXT_CSD_PARTITION_ACCESS(x) (x << 0)
>
> +#define EXT_CSD_BOOT_BUS_WIDTH_MODE(x) (x << 3)
> +#define EXT_CSD_BOOT_BUS_WIDTH_RESET(x) (x << 2)
> +#define EXT_CSD_BOOT_BUS_WIDTH_WIDTH(x) (x)
>
> #define R1_ILLEGAL_COMMAND (1 << 22)
> #define R1_APP_CMD (1 << 5)
> @@ -314,6 +317,8 @@ int mmc_boot_partition_size_change(struct mmc *mmc, unsigned long bootsize,
> int mmc_boot_part_access(struct mmc *mmc, u8 ack, u8 part_num, u8 access);
> /* Function to modify the PARTITION_CONFIG field of EXT_CSD */
> int mmc_set_part_conf(struct mmc *mmc, u8 ack, u8 part_num, u8 access);
> +/* Function to modify the BOOT_BUS_WIDTH field of EXT_CSD */
> +int mmc_set_boot_bus_width(struct mmc *mmc, u8 width, u8 reset, u8 mode);
>
> /**
> * Start device initialization and return immediately; it does not block on
> --
> 1.7.9.5
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
^ permalink raw reply [flat|nested] 23+ messages in thread
* [U-Boot] [PATCH v2 7/8] cmd_mmc.c: Add bootbus mmc sub-command
2014-04-18 9:25 ` Michael Trimarchi
@ 2014-04-22 15:41 ` Tom Rini
0 siblings, 0 replies; 23+ messages in thread
From: Tom Rini @ 2014-04-22 15:41 UTC (permalink / raw)
To: u-boot
On Fri, Apr 18, 2014 at 11:25:23AM +0200, Michael Trimarchi wrote:
> Hi Tom
>
> On Thu, Jan 30, 2014 at 10:31 PM, Tom Rini <trini@ti.com> wrote:
> > Add a bootbus sub-command to the mmc command to allow for setting
> > the boot_bus_width, reset_boot_bus_width and boot_mode fields of
> > BOOT_BUS_WIDTH (EXT_CSD[177]).
> >
> > Signed-off-by: Tom Rini <trini@ti.com>
> > ---
>
> Can I ask if does it work even for OMAP4 device?
> So can I flash on boot0 and let omap4 bootrom to load from that?
In theory, yes. I don't have hardware around in that exact setup, but
if the OMAP4 TRM talks about booting from the boot partition then yes,
this should let you set all the right bits.
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140422/c88f120f/attachment.pgp>
^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2014-04-22 15:41 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-30 21:31 [U-Boot] [PATCH v2 1/8] SPL: Add CONFIG_SUPPORT_EMMC_BOOT support to CONFIG_SPL_FRAMEWORK Tom Rini
2014-01-30 21:31 ` [U-Boot] [PATCH v2 2/8] omap5_uevm: Add CONFIG_SUPPORT_EMMC_BOOT, document usage Tom Rini
2014-01-30 21:31 ` [U-Boot] [PATCH v2 3/8] dra7xx_evm: " Tom Rini
2014-01-30 21:31 ` [U-Boot] [PATCH v2 4/8] cmd_mmc.c: Change 'bootpart' code to match normal coding style Tom Rini
2014-02-04 0:54 ` Jaehoon Chung
2014-01-30 21:31 ` [U-Boot] [PATCH v2 5/8] cmd_mmc.c: Rename 'bootpart' to 'bootpart-resize' Tom Rini
2014-02-04 0:55 ` Jaehoon Chung
2014-01-30 21:31 ` [U-Boot] [PATCH v2 6/8] cmd_mmc.c: Add 'partconf' command to mmc Tom Rini
2014-02-04 0:58 ` Jaehoon Chung
2014-02-05 13:03 ` Tom Rini
2014-02-06 4:48 ` Jaehoon Chung
2014-01-30 21:31 ` [U-Boot] [PATCH v2 7/8] cmd_mmc.c: Add bootbus mmc sub-command Tom Rini
2014-02-04 0:59 ` Jaehoon Chung
2014-04-18 9:25 ` Michael Trimarchi
2014-04-22 15:41 ` Tom Rini
2014-01-30 21:32 ` [U-Boot] [PATCH v2 8/8] cmd_mmc.c: Drop open/close mmc sub-commands Tom Rini
2014-02-04 0:51 ` Jaehoon Chung
2014-02-04 14:08 ` Otavio Salvador
2014-02-04 14:11 ` Tom Rini
2014-02-04 14:15 ` Otavio Salvador
2014-02-04 14:55 ` Tom Rini
2014-02-17 8:40 ` Lukasz Majewski
2014-02-17 9:30 ` Lukasz Majewski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox