[U-Boot] [PATCH 0/6] arm: am57xx: Add Fastboot support to AM57XX EVM

Hi All,
This patch series add Fastboot support to TexasInstruments AM57XX EVM board and improves eMMC support. The most of code was borrowed from DRA7 EVM (since this board is very similar to DRA7 EVM).
Next commands were tested: - fastboot devices - fastboot getvar - fastboot oem format - fastboot flash
Sam Protsenko (6): arm: am57xx: Enable USB gadget in AM57XX arm: am57xx: Enable Fastboot arm: am57xx: Define Android partition table arm: am57xx: Set serial# variable arm: am57xx: Enable 8-bit eMMC access on AM57XX EVM arm: am57xx: Keep environment in eMMC
board/ti/am57xx/board.c | 1 + include/configs/am57xx_evm.h | 58 +++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 53 insertions(+), 6 deletions(-)

From: Sam Protsenko semen.protsenko@linaro.org
Enable dwc3, dwc3-omap and PHY for dwc3. Also enable USB gadget.
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org --- include/configs/am57xx_evm.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
diff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h index 6308cab..9191d61 100644 --- a/include/configs/am57xx_evm.h +++ b/include/configs/am57xx_evm.h @@ -77,6 +77,20 @@ #define CONFIG_OMAP_USB_PHY #define CONFIG_OMAP_USB3PHY1_HOST
+/* USB GADGET */ +#define CONFIG_USB_DWC3_PHY_OMAP +#define CONFIG_USB_DWC3_OMAP +#define CONFIG_USB_DWC3 +#define CONFIG_USB_DWC3_GADGET + +#define CONFIG_USB_GADGET +#define CONFIG_USB_GADGET_DOWNLOAD +#define CONFIG_USB_GADGET_VBUS_DRAW 2 +#define CONFIG_G_DNL_MANUFACTURER "Texas Instruments" +#define CONFIG_G_DNL_VENDOR_NUM 0x0451 +#define CONFIG_G_DNL_PRODUCT_NUM 0xd022 +#define CONFIG_USB_GADGET_DUALSPEED + /* SATA */ #define CONFIG_BOARD_LATE_INIT #define CONFIG_CMD_SCSI

On Tuesday 08 March 2016 05:12 PM, Semen Protsenko wrote:
From: Sam Protsenko semen.protsenko@linaro.org
Enable dwc3, dwc3-omap and PHY for dwc3. Also enable USB gadget.
Reviewed-by: Lokesh Vutla lokeshvutla@ti.com
Thanks and regards, Lokesh
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org
include/configs/am57xx_evm.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
diff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h index 6308cab..9191d61 100644 --- a/include/configs/am57xx_evm.h +++ b/include/configs/am57xx_evm.h @@ -77,6 +77,20 @@ #define CONFIG_OMAP_USB_PHY #define CONFIG_OMAP_USB3PHY1_HOST
+/* USB GADGET */ +#define CONFIG_USB_DWC3_PHY_OMAP +#define CONFIG_USB_DWC3_OMAP +#define CONFIG_USB_DWC3 +#define CONFIG_USB_DWC3_GADGET
+#define CONFIG_USB_GADGET +#define CONFIG_USB_GADGET_DOWNLOAD +#define CONFIG_USB_GADGET_VBUS_DRAW 2 +#define CONFIG_G_DNL_MANUFACTURER "Texas Instruments" +#define CONFIG_G_DNL_VENDOR_NUM 0x0451 +#define CONFIG_G_DNL_PRODUCT_NUM 0xd022 +#define CONFIG_USB_GADGET_DUALSPEED
/* SATA */ #define CONFIG_BOARD_LATE_INIT #define CONFIG_CMD_SCSI

From: Sam Protsenko semen.protsenko@linaro.org
Enable fastboot by default for AM57XX EVM.
This is based on following patch modified accordingly: http://git.omapzoom.org/?p=repo/u-boot.git;a=commit;h=b2e04f92b5d91c708b6fd6...
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org --- include/configs/am57xx_evm.h | 11 +++++++++++ 1 file changed, 11 insertions(+)
diff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h index 9191d61..9a740d4 100644 --- a/include/configs/am57xx_evm.h +++ b/include/configs/am57xx_evm.h @@ -36,11 +36,22 @@
#define CONFIG_SYS_OMAP_ABE_SYSCK
+#ifndef CONFIG_SPL_BUILD /* Define the default GPT table for eMMC */ #define PARTS_DEFAULT \ "uuid_disk=${uuid_gpt_disk};" \ "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}"
+/* Fastboot */ +#define CONFIG_USB_FUNCTION_FASTBOOT +#define CONFIG_CMD_FASTBOOT +#define CONFIG_ANDROID_BOOT_IMAGE +#define CONFIG_FASTBOOT_BUF_ADDR CONFIG_SYS_LOAD_ADDR +#define CONFIG_FASTBOOT_BUF_SIZE 0x2F000000 +#define CONFIG_FASTBOOT_FLASH +#define CONFIG_FASTBOOT_FLASH_MMC_DEV 1 +#endif + #include <configs/ti_omap5_common.h>
/* Enhance our eMMC support / experience. */

On Tuesday 08 March 2016 05:12 PM, Semen Protsenko wrote:
From: Sam Protsenko semen.protsenko@linaro.org
Enable fastboot by default for AM57XX EVM.
This is based on following patch modified accordingly: http://git.omapzoom.org/?p=repo/u-boot.git;a=commit;h=b2e04f92b5d91c708b6fd6...
Also mention that you are guarding for non SPL
Other than that: Reviewed-by: Lokesh Vutla lokeshvutla@ti.com
Thanks and regards, Lokesh
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org
include/configs/am57xx_evm.h | 11 +++++++++++ 1 file changed, 11 insertions(+)
diff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h index 9191d61..9a740d4 100644 --- a/include/configs/am57xx_evm.h +++ b/include/configs/am57xx_evm.h @@ -36,11 +36,22 @@
#define CONFIG_SYS_OMAP_ABE_SYSCK
+#ifndef CONFIG_SPL_BUILD /* Define the default GPT table for eMMC */ #define PARTS_DEFAULT \ "uuid_disk=${uuid_gpt_disk};" \ "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}"
+/* Fastboot */ +#define CONFIG_USB_FUNCTION_FASTBOOT +#define CONFIG_CMD_FASTBOOT +#define CONFIG_ANDROID_BOOT_IMAGE +#define CONFIG_FASTBOOT_BUF_ADDR CONFIG_SYS_LOAD_ADDR +#define CONFIG_FASTBOOT_BUF_SIZE 0x2F000000 +#define CONFIG_FASTBOOT_FLASH +#define CONFIG_FASTBOOT_FLASH_MMC_DEV 1 +#endif
#include <configs/ti_omap5_common.h>
/* Enhance our eMMC support / experience. */

On Tue, Mar 08, 2016 at 06:42:24PM +0700, Semen Protsenko wrote:
From: Sam Protsenko semen.protsenko@linaro.org
Enable fastboot by default for AM57XX EVM.
This is based on following patch modified accordingly: http://git.omapzoom.org/?p=repo/u-boot.git;a=commit;h=b2e04f92b5d91c708b6fd6...
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org
Since you're spending some time in here, can you please start converting some of the fastboot options over to Kconfig? Thanks!

From: Sam Protsenko semen.protsenko@linaro.org
"fastboot oem format" command reuses "gpt write" command, which in turn requires correct partitions defined in $partitions variable. This patch adds such definition of Android partitions for AM57XX EVM board.
By default $partitions variable contains Linux partition table. In order to prepare Android environment one can run next commands from U-Boot shell:
=> env set partitions $partitions_android => env save
After those operations one can go to fastboot mode and perform "fastboot oem format" to create Android partition table.
While at it, enable CONFIG_RANDOM_UUID to spare user from providing UUIDs for each partition manually.
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org --- include/configs/am57xx_evm.h | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h index 9a740d4..d075d61 100644 --- a/include/configs/am57xx_evm.h +++ b/include/configs/am57xx_evm.h @@ -39,8 +39,25 @@ #ifndef CONFIG_SPL_BUILD /* Define the default GPT table for eMMC */ #define PARTS_DEFAULT \ + /* Linux partitions */ \ "uuid_disk=${uuid_gpt_disk};" \ - "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}" + "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}\0" \ + /* Android partitions */ \ + "partitions_android=" \ + "uuid_disk=${uuid_gpt_disk};" \ + "name=xloader,start=128K,size=128K,uuid=${uuid_gpt_xloader};" \ + "name=bootloader,size=384K,uuid=${uuid_gpt_bootloader};" \ + "name=environment,size=128K,uuid=${uuid_gpt_environment};" \ + "name=misc,size=128K,uuid=${uuid_gpt_misc};" \ + "name=efs,start=1280K,size=16M,uuid=${uuid_gpt_efs};" \ + "name=crypto,size=16K,uuid=${uuid_gpt_crypto};" \ + "name=recovery,size=10M,uuid=${uuid_gpt_recovery};" \ + "name=boot,size=10M,uuid=${uuid_gpt_boot};" \ + "name=system,size=768M,uuid=${uuid_gpt_system};" \ + "name=cache,size=256M,uuid=${uuid_gpt_cache};" \ + "name=ipu1,size=1M,uuid=${uuid_gpt_ipu1};" \ + "name=ipu2,size=1M,uuid=${uuid_gpt_ipu2};" \ + "name=userdata,size=-,uuid=${uuid_gpt_userdata}"
/* Fastboot */ #define CONFIG_USB_FUNCTION_FASTBOOT @@ -57,6 +74,7 @@ /* Enhance our eMMC support / experience. */ #define CONFIG_CMD_GPT #define CONFIG_EFI_PARTITION +#define CONFIG_RANDOM_UUID
/* CPSW Ethernet */ #define CONFIG_CMD_DHCP

On Tue, Mar 08, 2016 at 06:42:25PM +0700, Semen Protsenko wrote:
From: Sam Protsenko semen.protsenko@linaro.org
"fastboot oem format" command reuses "gpt write" command, which in turn requires correct partitions defined in $partitions variable. This patch adds such definition of Android partitions for AM57XX EVM board.
By default $partitions variable contains Linux partition table. In order to prepare Android environment one can run next commands from U-Boot shell:
=> env set partitions $partitions_android => env save
After those operations one can go to fastboot mode and perform "fastboot oem format" to create Android partition table.
While at it, enable CONFIG_RANDOM_UUID to spare user from providing UUIDs for each partition manually.
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org
Reviewed-by: Tom Rini trini@konsulko.com

From: Sam Protsenko semen.protsenko@linaro.org
serial# variable is used to correctly display device ID in "fastboot devices".
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org --- board/ti/am57xx/board.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c index 042f9ab..751de39 100644 --- a/board/ti/am57xx/board.c +++ b/board/ti/am57xx/board.c @@ -270,6 +270,7 @@ int board_late_init(void) * This is the POWERHOLD-in-Low behavior. */ palmas_i2c_write_u8(TPS65903X_CHIP_P1, 0xA0, 0x1); + omap_die_id_serial(); return 0; }

On Tue, Mar 08, 2016 at 06:42:26PM +0700, Semen Protsenko wrote:
From: Sam Protsenko semen.protsenko@linaro.org
serial# variable is used to correctly display device ID in "fastboot devices".
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org
Reviewed-by: Tom Rini trini@konsulko.com

From: Sam Protsenko semen.protsenko@linaro.org
Use 8-bit access instead of 4-bit to speed up eMMC flashing speed.
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org --- include/configs/am57xx_evm.h | 1 + 1 file changed, 1 insertion(+)
diff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h index d075d61..1ab9498 100644 --- a/include/configs/am57xx_evm.h +++ b/include/configs/am57xx_evm.h @@ -75,6 +75,7 @@ #define CONFIG_CMD_GPT #define CONFIG_EFI_PARTITION #define CONFIG_RANDOM_UUID +#define CONFIG_HSMMC2_8BIT
/* CPSW Ethernet */ #define CONFIG_CMD_DHCP

On Tuesday 08 March 2016 05:12 PM, Semen Protsenko wrote:
From: Sam Protsenko semen.protsenko@linaro.org
Use 8-bit access instead of 4-bit to speed up eMMC flashing speed.
Reviewed-by: Lokesh Vutla lokeshvutla@ti.com
Thanks and regards, Lokesh
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org
include/configs/am57xx_evm.h | 1 + 1 file changed, 1 insertion(+)
diff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h index d075d61..1ab9498 100644 --- a/include/configs/am57xx_evm.h +++ b/include/configs/am57xx_evm.h @@ -75,6 +75,7 @@ #define CONFIG_CMD_GPT #define CONFIG_EFI_PARTITION #define CONFIG_RANDOM_UUID +#define CONFIG_HSMMC2_8BIT
/* CPSW Ethernet */ #define CONFIG_CMD_DHCP

On Tue, Mar 08, 2016 at 06:42:27PM +0700, Semen Protsenko wrote:
From: Sam Protsenko semen.protsenko@linaro.org
Use 8-bit access instead of 4-bit to speed up eMMC flashing speed.
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org
Reviewed-by: Tom Rini trini@konsulko.com

From: Sam Protsenko semen.protsenko@linaro.org
Use eMMC (instead of SD card) to store U-Boot environment.
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org --- include/configs/am57xx_evm.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h index 1ab9498..f467f46 100644 --- a/include/configs/am57xx_evm.h +++ b/include/configs/am57xx_evm.h @@ -22,11 +22,13 @@
#define CONFIG_NR_DRAM_BANKS 2
-#define CONFIG_ENV_SIZE (64 << 10) -#define CONFIG_ENV_IS_IN_FAT -#define FAT_ENV_INTERFACE "mmc" -#define FAT_ENV_DEVICE_AND_PART "0:1" -#define FAT_ENV_FILE "uboot.env" +/* MMC ENV related defines */ +#define CONFIG_ENV_IS_IN_MMC +#define CONFIG_SYS_MMC_ENV_DEV 1 /* SLOT2: eMMC(1) */ +#define CONFIG_ENV_SIZE (128 << 10) +#define CONFIG_ENV_OFFSET 0xE0000 +#define CONFIG_ENV_OFFSET_REDUND (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE) +#define CONFIG_SYS_REDUNDAND_ENVIRONMENT
#define CONSOLEDEV "ttyO2" #define CONFIG_SYS_NS16550_COM1 UART1_BASE /* Base EVM has UART0 */

On Tuesday 08 March 2016 05:12 PM, Semen Protsenko wrote:
From: Sam Protsenko semen.protsenko@linaro.org
Use eMMC (instead of SD card) to store U-Boot environment.
Any specific reason why you want this change?
Thanks and regards, Lokesh
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org
include/configs/am57xx_evm.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h index 1ab9498..f467f46 100644 --- a/include/configs/am57xx_evm.h +++ b/include/configs/am57xx_evm.h @@ -22,11 +22,13 @@
#define CONFIG_NR_DRAM_BANKS 2
-#define CONFIG_ENV_SIZE (64 << 10) -#define CONFIG_ENV_IS_IN_FAT -#define FAT_ENV_INTERFACE "mmc" -#define FAT_ENV_DEVICE_AND_PART "0:1" -#define FAT_ENV_FILE "uboot.env" +/* MMC ENV related defines */ +#define CONFIG_ENV_IS_IN_MMC +#define CONFIG_SYS_MMC_ENV_DEV 1 /* SLOT2: eMMC(1) */ +#define CONFIG_ENV_SIZE (128 << 10) +#define CONFIG_ENV_OFFSET 0xE0000 +#define CONFIG_ENV_OFFSET_REDUND (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE) +#define CONFIG_SYS_REDUNDAND_ENVIRONMENT
#define CONSOLEDEV "ttyO2" #define CONFIG_SYS_NS16550_COM1 UART1_BASE /* Base EVM has UART0 */

On Tue, Mar 8, 2016 at 6:42 PM, Lokesh Vutla a0131933@ti.com wrote:
Any specific reason why you want this change?
Yes, I'm thinking about use case when developer uses eMMC exclusively (no SD card). In that case the environment should be stored somewhere, and that should be eMMC. In other words, once eMMC support is fully available in U-Boot, we can think more about eMMC use-case, because developers usually prefer to work with eMMC. Also see how it's done in DRA7 config, for example. And in SD card use case we can still work with environment stored in eMMC. Seems like win-win to me.

On Wed, Mar 09, 2016 at 05:46:49PM +0700, Sam Protsenko wrote:
On Tue, Mar 8, 2016 at 6:42 PM, Lokesh Vutla a0131933@ti.com wrote:
Any specific reason why you want this change?
Yes, I'm thinking about use case when developer uses eMMC exclusively (no SD card). In that case the environment should be stored somewhere, and that should be eMMC. In other words, once eMMC support is fully available in U-Boot, we can think more about eMMC use-case, because developers usually prefer to work with eMMC. Also see how it's done in DRA7 config, for example. And in SD card use case we can still work with environment stored in eMMC. Seems like win-win to me.
Except the DRA7 boards don't also support a community board like am57xx does, the Beagle x15. That's a big SD heavy use-case.

On Tue, Mar 08, 2016 at 06:42:22PM +0700, Semen Protsenko wrote:
Hi All,
This patch series add Fastboot support to TexasInstruments AM57XX EVM board and improves eMMC support. The most of code was borrowed from DRA7 EVM (since this board is very similar to DRA7 EVM).
Next commands were tested:
- fastboot devices
- fastboot getvar
- fastboot oem format
- fastboot flash
Sam Protsenko (6): arm: am57xx: Enable USB gadget in AM57XX arm: am57xx: Enable Fastboot arm: am57xx: Define Android partition table arm: am57xx: Set serial# variable arm: am57xx: Enable 8-bit eMMC access on AM57XX EVM arm: am57xx: Keep environment in eMMC
board/ti/am57xx/board.c | 1 + include/configs/am57xx_evm.h | 58 +++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 53 insertions(+), 6 deletions(-)
I think this series shows that we really need someone to step up and spend time converting the environment options to Kconfig so that different applications of the same board can easily tweak things they need (ie save env on the eMMC that you're programming vs keep env as a FAT file on the SD card users are often using).

On Tue, Mar 8, 2016 at 10:06 PM, Tom Rini trini@konsulko.com wrote:
I think this series shows that we really need someone to step up and spend time converting the environment options to Kconfig so that different applications of the same board can easily tweak things they need (ie save env on the eMMC that you're programming vs keep env as a FAT file on the SD card users are often using).
Right now I have some stuff going on I'm more concerned about. I can look into moving options (at least ones that we are using for TI platforms) to Kconfig, once I finished with current task. It seems like a right thing to do. But I'd really like current patches to be merged as is for now.

On Wed, Mar 09, 2016 at 05:35:21PM +0700, Sam Protsenko wrote:
On Tue, Mar 8, 2016 at 10:06 PM, Tom Rini trini@konsulko.com wrote:
I think this series shows that we really need someone to step up and spend time converting the environment options to Kconfig so that different applications of the same board can easily tweak things they need (ie save env on the eMMC that you're programming vs keep env as a FAT file on the SD card users are often using).
Right now I have some stuff going on I'm more concerned about. I can look into moving options (at least ones that we are using for TI platforms) to Kconfig, once I finished with current task. It seems like a right thing to do. But I'd really like current patches to be merged as is for now.
No, we can't merge them as-is for now as moving the environment to eMMC by default breaks another of other use cases, so we need to move things to Kconfig here.
participants (4)
-
Lokesh Vutla
-
Sam Protsenko
-
Semen Protsenko
-
Tom Rini