[U-Boot] [PATCH v3 0/2] arm, at91: add DFU support for the corvus board

add DFU support for the corvus board. While at it, do some minor board updates for this board, posted in the first patch of this series.
Changes in v3: - add cover letter and post this patch in a patchserie with the DFU support - add a cover letter and post this patch with the board updates patch in a patchserie
Changes in v2: - rebase to 0d339cf9a969f0c249713d3697e735184f1bd955 - use SZ_xM defines as Lukasz Majewski suggested - rebase to 0d339cf9a969f0c249713d3697e735184f1bd955 - fix changes introduced through commit: 01acd6abbdd5: usb: USB download gadget and functions config options coherent naming
Heiko Schocher (2): at91: corvus: board updates corvus, dfu: add dfu support
board/siemens/corvus/board.c | 23 ++++++++++++++++++++++- include/configs/corvus.h | 44 +++++++++++++++++++++++++++++++++++--------- 2 files changed, 57 insertions(+), 10 deletions(-)

- rename at91_spl_board_init into spl_board_init - use SZ_1X defines for sizes
Signed-off-by: Heiko Schocher hs@denx.de ---
Changes in v3: - add cover letter and post this patch in a patchserie with the DFU support
Changes in v2: - rebase to 0d339cf9a969f0c249713d3697e735184f1bd955 - use SZ_xM defines as Lukasz Majewski suggested
board/siemens/corvus/board.c | 2 +- include/configs/corvus.h | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/board/siemens/corvus/board.c b/board/siemens/corvus/board.c index f3f6dae..40764ce 100644 --- a/board/siemens/corvus/board.c +++ b/board/siemens/corvus/board.c @@ -73,7 +73,7 @@ static void corvus_nand_hw_init(void) #include <spl.h> #include <nand.h>
-void at91_spl_board_init(void) +void spl_board_init(void) { /* * For on the sam9m10g45ek board, the chip wm9711 stay in the test diff --git a/include/configs/corvus.h b/include/configs/corvus.h index 2d2f3c1..9f15baf 100644 --- a/include/configs/corvus.h +++ b/include/configs/corvus.h @@ -15,6 +15,7 @@ #define __CONFIG_H
#include <asm/hardware.h> +#include <linux/sizes.h>
#define CONFIG_SYS_GENERIC_BOARD /* @@ -81,7 +82,7 @@ #define CONFIG_SYS_SDRAM_SIZE 0x08000000
#define CONFIG_SYS_INIT_SP_ADDR \ - (CONFIG_SYS_SDRAM_BASE + 4 * 1024 - GENERATED_GBL_DATA_SIZE) + (CONFIG_SYS_SDRAM_BASE + SZ_4K - GENERATED_GBL_DATA_SIZE)
/* No NOR flash */ #define CONFIG_SYS_NO_FLASH @@ -113,13 +114,13 @@ #define CONFIG_DOS_PARTITION #define CONFIG_USB_STORAGE
-#define CONFIG_SYS_LOAD_ADDR 0x72000000 /* load address */ +#define CONFIG_SYS_LOAD_ADDR ATMEL_BASE_CS6 /* load address */
/* bootstrap + u-boot + env in nandflash */ #define CONFIG_ENV_IS_IN_NAND #define CONFIG_ENV_OFFSET 0x100000 #define CONFIG_ENV_OFFSET_REDUND 0x180000 -#define CONFIG_ENV_SIZE 0x20000 +#define CONFIG_ENV_SIZE SZ_128K
#define CONFIG_BOOTCOMMAND \ "nand read 0x70000000 0x200000 0x300000;" \ @@ -146,15 +147,16 @@ * Size of malloc() pool */ #define CONFIG_SYS_MALLOC_LEN ROUND(3 * CONFIG_ENV_SIZE + \ - 128*1024, 0x1000) + SZ_4M, 0x1000) + /* Defines for SPL */ #define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x300000 -#define CONFIG_SPL_MAX_SIZE (12 * 1024) -#define CONFIG_SPL_STACK (16 * 1024) +#define CONFIG_SPL_MAX_SIZE (12 * SZ_1K) +#define CONFIG_SPL_STACK (SZ_16K)
#define CONFIG_SPL_BSS_START_ADDR CONFIG_SPL_MAX_SIZE -#define CONFIG_SPL_BSS_MAX_SIZE (2 * 1024) +#define CONFIG_SPL_BSS_MAX_SIZE (SZ_2K)
#define CONFIG_SPL_LIBCOMMON_SUPPORT #define CONFIG_SPL_LIBGENERIC_SUPPORT @@ -174,8 +176,8 @@ #define CONFIG_SYS_NAND_U_BOOT_DST CONFIG_SYS_TEXT_BASE #define CONFIG_SYS_NAND_5_ADDR_CYCLE
-#define CONFIG_SYS_NAND_PAGE_SIZE 2048 -#define CONFIG_SYS_NAND_BLOCK_SIZE (128*1024) +#define CONFIG_SYS_NAND_PAGE_SIZE SZ_2K +#define CONFIG_SYS_NAND_BLOCK_SIZE (SZ_128K) #define CONFIG_SYS_NAND_PAGE_COUNT (CONFIG_SYS_NAND_BLOCK_SIZE / \ CONFIG_SYS_NAND_PAGE_SIZE) #define CONFIG_SYS_NAND_BAD_BLOCK_POS NAND_LARGE_BADBLOCK_POS

Dear Heiko Schocher,
Heiko Schocher hs@denx.de writes:
- rename at91_spl_board_init into spl_board_init
- use SZ_1X defines for sizes
Signed-off-by: Heiko Schocher hs@denx.de
Changes in v3:
- add cover letter and post this patch in a patchserie
with the DFU support
Changes in v2:
- rebase to 0d339cf9a969f0c249713d3697e735184f1bd955
- use SZ_xM defines as Lukasz Majewski suggested
board/siemens/corvus/board.c | 2 +- include/configs/corvus.h | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-)
applied to u-boot-atmel/master, thanks!
Best regards, Andreas Bießmann

add support for DFU on the corvus board.
Signed-off-by: Heiko Schocher hs@denx.de ---
Changes in v3: - add a cover letter and post this patch with the board updates patch in a patchserie
Changes in v2: - rebase to 0d339cf9a969f0c249713d3697e735184f1bd955 - fix changes introduced through commit: 01acd6abbdd5: usb: USB download gadget and functions config options coherent naming
board/siemens/corvus/board.c | 21 +++++++++++++++++++++ include/configs/corvus.h | 26 +++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-)
diff --git a/board/siemens/corvus/board.c b/board/siemens/corvus/board.c index 40764ce..7d15317 100644 --- a/board/siemens/corvus/board.c +++ b/board/siemens/corvus/board.c @@ -29,6 +29,10 @@ #include <netdev.h> #include <spi.h>
+#ifdef CONFIG_USB_GADGET_ATMEL_USBA +#include <asm/arch/atmel_usba_udc.h> +#endif + DECLARE_GLOBAL_DATA_PTR;
static void corvus_nand_hw_init(void) @@ -210,6 +214,19 @@ int board_early_init_f(void) return 0; }
+#ifdef CONFIG_USB_GADGET_ATMEL_USBA +/* from ./arch/arm/mach-at91/armv7/sama5d3_devices.c */ +void at91_udp_hw_init(void) +{ + struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; + + /* Enable UPLL clock */ + writel(AT91_PMC_UPLLEN | AT91_PMC_BIASEN, &pmc->uckr); + /* Enable UDPHS clock */ + at91_periph_clk_enable(ATMEL_ID_UDPHS); +} +#endif + int board_init(void) { /* address of boot parameters */ @@ -230,6 +247,10 @@ int board_init(void) #ifdef CONFIG_CMD_USB taurus_usb_hw_init(); #endif +#ifdef CONFIG_USB_GADGET_ATMEL_USBA + at91_udp_hw_init(); + usba_udc_probe(&pdata); +#endif return 0; }
diff --git a/include/configs/corvus.h b/include/configs/corvus.h index 9f15baf..c8122f3 100644 --- a/include/configs/corvus.h +++ b/include/configs/corvus.h @@ -114,7 +114,31 @@ #define CONFIG_DOS_PARTITION #define CONFIG_USB_STORAGE
-#define CONFIG_SYS_LOAD_ADDR ATMEL_BASE_CS6 /* load address */ +/* USB DFU support */ +#define CONFIG_CMD_MTDPARTS +#define CONFIG_MTD_DEVICE +#define CONFIG_MTD_PARTITIONS + +#define CONFIG_USB_GADGET +#define CONFIG_USB_GADGET_DUALSPEED +#define CONFIG_USB_GADGET_ATMEL_USBA + +/* DFU class support */ +#define CONFIG_CMD_DFU +#define CONFIG_USB_FUNCTION_DFU +#define CONFIG_DFU_NAND +#define CONFIG_USB_GADGET_DOWNLOAD +#define CONFIG_USB_GADGET_VBUS_DRAW 2 +#define CONFIG_SYS_DFU_DATA_BUF_SIZE (SZ_1M) +#define DFU_MANIFEST_POLL_TIMEOUT 25000 + +/* USB DFU IDs */ +#define CONFIG_G_DNL_VENDOR_NUM 0x0908 +#define CONFIG_G_DNL_PRODUCT_NUM 0x02d2 +#define CONFIG_G_DNL_MANUFACTURER "Siemens AG" + +#define CONFIG_SYS_CACHELINE_SIZE SZ_8K +#define CONFIG_SYS_LOAD_ADDR ATMEL_BASE_CS6
/* bootstrap + u-boot + env in nandflash */ #define CONFIG_ENV_IS_IN_NAND

Dear Heiko Schocher,
Heiko Schocher hs@denx.de writes:
add support for DFU on the corvus board.
Signed-off-by: Heiko Schocher hs@denx.de
Changes in v3:
- add a cover letter and post this patch with the board
updates patch in a patchserie
Changes in v2:
- rebase to 0d339cf9a969f0c249713d3697e735184f1bd955
- fix changes introduced through commit:
01acd6abbdd5: usb: USB download gadget and functions config options coherent naming
board/siemens/corvus/board.c | 21 +++++++++++++++++++++ include/configs/corvus.h | 26 +++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-)
applied to u-boot-atmel/master, thanks!
Best regards, Andreas Bießmann
participants (2)
-
Andreas Bießmann
-
Heiko Schocher