From ddfe346f4cd4bd108fb37fc065f3b06acd4cf5b4 Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Mon, 7 Jan 2019 22:57:56 -0500 Subject: [PATCH 01/45] Makefile: Correct logic for DM_SCSI + unconverted drivers check When checking for boards that are enabling a SATA driver that isn't converted to DM yet we need to be sure to not also trip over boards that do set CONFIG_DM_SCSI by itself, as that is not a bug. Reported-by: Andy Shevchenko Fixes: ea9d7c17fc4c ("dm: MIGRATION: Add migration plan for CONFIG_SATA") Signed-off-by: Tom Rini --- Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index eeb299fc38..dff72a5f57 100644 --- a/Makefile +++ b/Makefile @@ -938,7 +938,8 @@ ifneq ($(CONFIG_DM_USB)$(CONFIG_OF_CONTROL)$(CONFIG_BLK),yyy) @echo >&2 "====================================================" endif endif -ifeq ($(CONFIG_LIBATA)$(CONFIG_DM_SCSI)$(CONFIG_MVSATA_IDE),y) +ifeq ($(CONFIG_LIBATA)$(CONFIG_MVSATA_IDE),y) +ifneq ($(CONFIG_DM_SCSI),y) @echo >&2 "===================== WARNING ======================" @echo >&2 "This board does not use CONFIG_DM_SCSI. Please update" @echo >&2 "the storage controller to use CONFIG_DM_SCSI before the v2019.07 release." @@ -946,6 +947,7 @@ ifeq ($(CONFIG_LIBATA)$(CONFIG_DM_SCSI)$(CONFIG_MVSATA_IDE),y) @echo >&2 "See doc/driver-model/MIGRATION.txt for more info." @echo >&2 "====================================================" endif +endif ifeq ($(CONFIG_OF_EMBED),y) @echo >&2 "===================== WARNING ======================" @echo >&2 "CONFIG_OF_EMBED is enabled. This option should only" From 3b6989b526f06ee38afb31fab83c8a3f7f6201ea Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Mon, 17 Dec 2018 10:05:44 +0000 Subject: [PATCH 02/45] sunxi: drop default SPL_LIBDISK_SUPPORT enablement There is no code for using partition labels in the Allwinner SPL port. Even so the name is slightly misleading, CONFIG_SPL_LIBDISK_SUPPORT was meant to guard partition code for the SPL. Remove the "imply" line in the Kconfig to make this obvious and avoid unneeded code inclusions, helping to keep the H6 SPL code small. Signed-off-by: Andre Przywara Reviewed-by: Simon Glass --- arch/arm/Kconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 520ea8bed9..d6b1629a00 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -875,7 +875,6 @@ config ARCH_SUNXI imply PRE_CONSOLE_BUFFER imply SPL_GPIO_SUPPORT imply SPL_LIBCOMMON_SUPPORT - imply SPL_LIBDISK_SUPPORT imply SPL_LIBGENERIC_SUPPORT imply SPL_MMC_SUPPORT if MMC imply SPL_POWER_SUPPORT From eef05fd3ba68220156f33ffe6a9e68e42a6a5b53 Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Mon, 17 Dec 2018 10:05:45 +0000 Subject: [PATCH 03/45] mmc: bring back partition init for non-DM MMC drivers Commit d0851c893706 ("blk: Call part_init() in the post_probe() method") removed the call to part_init() in mmc.c, as this is done by the DM_MMC framework. However Allwinner is (still) relying on a non-DM MMC driver, so we are now missing the implicit partition init, leading to failing MMC accesses due to the missing partition information. Bring the call back just for non-DM MMC driver to fix this regression. Signed-off-by: Andre Przywara Reviewed-by: Simon Glass Tested-by: Soeren Moch --- drivers/mmc/mmc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index f5c821e308..d858127132 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -2449,6 +2449,10 @@ static int mmc_startup(struct mmc *mmc) bdesc->revision[0] = 0; #endif +#if !defined(CONFIG_DM_MMC) && (!defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBDISK_SUPPORT)) + part_init(bdesc); +#endif + return 0; } From d66ff4ba00a413281ff1e79f092ef2c6a34dca40 Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Thu, 27 Dec 2018 09:22:55 -0500 Subject: [PATCH 04/45] Add a github template telling people to not use pull requests there On our mirror account on github we have gotten a handful of pull requests. At this time github does not allow you to disable pull requests on a project. The generally suggested work-around is to add a pull request template that tells people to not use that workflow. Add one here that points to the wiki page on submitted patches. Signed-off-by: Tom Rini --- .github/pull_request_template.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .github/pull_request_template.md diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000000..23599b97c0 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,3 @@ +Please do not submit a Pull Request via github. Our project makes use of +mailing lists for patch submission and review. For more details please +see https://www.denx.de/wiki/U-Boot/Patches From 358fd21fe7b6e6481a9f5436f2d1a2e4dd754082 Mon Sep 17 00:00:00 2001 From: Enric Balletbo i Serra Date: Fri, 28 Dec 2018 11:55:47 +0100 Subject: [PATCH 05/45] igep003x: MAINTAINER: Remove myself as maintainer and add Javier MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I can't continue maintaining the board because I don't have access to the hardware anymore, so remove myself from the entry and add Javier who has volunteered to help and maintain the board. Signed-off-by: Enric Balletbo i Serra Signed-off-by: Javier Martínez Canillas --- board/isee/igep003x/MAINTAINERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/board/isee/igep003x/MAINTAINERS b/board/isee/igep003x/MAINTAINERS index a74938a7d2..ba92e64e2a 100644 --- a/board/isee/igep003x/MAINTAINERS +++ b/board/isee/igep003x/MAINTAINERS @@ -1,5 +1,5 @@ IGEP003X BOARD -M: Enric Balletbo i Serra +M: Javier Martínez Canillas S: Maintained F: board/isee/igep003x/ F: include/configs/am335x_igep003x.h From 1ce689d95085708cc9dc9a9eefa665fa276a4b6c Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Fri, 28 Dec 2018 14:03:07 -0700 Subject: [PATCH 06/45] dm: pci: MIGRATION: Add migration plan for PCI Add a migration plan for PCI which is an important subsystem in U-Boot. Signed-off-by: Simon Glass --- Makefile | 10 ++++++++++ doc/driver-model/MIGRATION.txt | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/Makefile b/Makefile index dff72a5f57..22d0731082 100644 --- a/Makefile +++ b/Makefile @@ -948,6 +948,16 @@ ifneq ($(CONFIG_DM_SCSI),y) @echo >&2 "====================================================" endif endif +ifeq ($(CONFIG_PCI),y) +ifneq ($(CONFIG_DM_PCI),y) + @echo >&2 "===================== WARNING ======================" + @echo >&2 "This board does not use CONFIG_DM_PCI Please update" + @echo >&2 "the board to use CONFIG_DM_PCI before the v2019.07 release." + @echo >&2 "Failure to update by the deadline may result in board removal." + @echo >&2 "See doc/driver-model/MIGRATION.txt for more info." + @echo >&2 "====================================================" +endif +endif ifeq ($(CONFIG_OF_EMBED),y) @echo >&2 "===================== WARNING ======================" @echo >&2 "CONFIG_OF_EMBED is enabled. This option should only" diff --git a/doc/driver-model/MIGRATION.txt b/doc/driver-model/MIGRATION.txt index 183d7f5293..c0c9483b13 100644 --- a/doc/driver-model/MIGRATION.txt +++ b/doc/driver-model/MIGRATION.txt @@ -86,3 +86,13 @@ Partially converted: Jagan Teki 12/24/2018 03/14/2018 + + +CONFIG_DM_PCI +------------- +Deadline: 2019.07 + +The PCI subsystem has supported driver model since mid 2015. Maintainers should +submit patches switching over to using CONFIG_DM_PCI and other base driver +model options in time for inclusion in the 2019.07 release. + From 3e87ffcffbdf1b0883e4c76d411ffa604ba69c57 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Fri, 28 Dec 2018 14:03:08 -0700 Subject: [PATCH 07/45] dm: video: lcd: MIGRATION: Add migration plan for video Add a migration plan for video which is an important subsystem in U-Boot. Signed-off-by: Simon Glass --- Makefile | 10 ++++++++++ doc/driver-model/MIGRATION.txt | 8 ++++++++ 2 files changed, 18 insertions(+) diff --git a/Makefile b/Makefile index 22d0731082..c4d0c3002e 100644 --- a/Makefile +++ b/Makefile @@ -958,6 +958,16 @@ ifneq ($(CONFIG_DM_PCI),y) @echo >&2 "====================================================" endif endif +ifneq ($(CONFIG_LCD)$(CONFIG_VIDEO),) +ifneq ($(CONFIG_DM_VIDEO),y) + @echo >&2 "===================== WARNING ======================" + @echo >&2 "This board does not use CONFIG_DM_VIDEO Please update" + @echo >&2 "the board to use CONFIG_DM_VIDEO before the v2019.07 release." + @echo >&2 "Failure to update by the deadline may result in board removal." + @echo >&2 "See doc/driver-model/MIGRATION.txt for more info." + @echo >&2 "====================================================" +endif +endif ifeq ($(CONFIG_OF_EMBED),y) @echo >&2 "===================== WARNING ======================" @echo >&2 "CONFIG_OF_EMBED is enabled. This option should only" diff --git a/doc/driver-model/MIGRATION.txt b/doc/driver-model/MIGRATION.txt index c0c9483b13..957529202b 100644 --- a/doc/driver-model/MIGRATION.txt +++ b/doc/driver-model/MIGRATION.txt @@ -96,3 +96,11 @@ The PCI subsystem has supported driver model since mid 2015. Maintainers should submit patches switching over to using CONFIG_DM_PCI and other base driver model options in time for inclusion in the 2019.07 release. + +CONFIG_DM_VIDEO +--------------- +Deadline: 2019.07 + +The video subsystem has supported driver model since early 2016. Maintainers +should submit patches switching over to using CONFIG_DM_VIDEO and other base +driver model options in time for inclusion in the 2019.07 release. From f3ccba3e4ee8a33869c54627331b032a334d18ac Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Sun, 30 Dec 2018 13:00:51 +0100 Subject: [PATCH 08/45] doc: README.commands: fix type %s/commmand/command/ Signed-off-by: Heinrich Schuchardt Reviewed-by: Simon Glass --- doc/README.commands | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/README.commands b/doc/README.commands index 0ccadae0b7..e03eb44187 100644 --- a/doc/README.commands +++ b/doc/README.commands @@ -67,7 +67,7 @@ This table has to be evaluated in the command function of the main command, e.g. Command function ---------------- -The commmand function pointer has to be of type +The command function pointer has to be of type int (*cmd)(struct cmd_tbl_s *cmdtp, int flag, int argc, const char *argv[]); cmdtp: Table entry describing the command (see above). From 9d47d1316da6585bbafe141e42bbdcdfd562bc71 Mon Sep 17 00:00:00 2001 From: Ye Li Date: Fri, 4 Jan 2019 09:24:14 +0000 Subject: [PATCH 09/45] arm: Round the dma_alloc_coherent memory size to cache line aligned When running usb dwc3 gadget driver, we meet random USB enumeration failure in fastboot. The root cause is a cache coherence issue. When it happens, the ctrl_req in gadget driver is allocated at 0xfe932f40, and the usb_composite_dev (cdev) is allocated at 0xfe932f60. So after we submit the setup request (cache flushed) to USB controller, any accessing to usb_composite_dev variable will cause the cache line refill, then when setup transfer is completed, reading the setup data in ctrl_req will gets old value from cache not from memory. The ctrl_req is allocated by API dma_alloc_coherent, but u-boot don't have cohernet memory. so it still needs cache maintain operations before/after HW accessing. Since the cache flush or invalidate bases on cache line, so when the allocated memory size is not cache line aligned, potentially it may meet such issue. This patch modifies the dma_alloc_coherent API to round the size to cache line aligned. Signed-off-by: Ye Li Reviewed-by: Peng Fan --- arch/arm/include/asm/dma-mapping.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h index 0883b7ea75..fc5b8f634d 100644 --- a/arch/arm/include/asm/dma-mapping.h +++ b/arch/arm/include/asm/dma-mapping.h @@ -13,7 +13,7 @@ static inline void *dma_alloc_coherent(size_t len, unsigned long *handle) { - *handle = (unsigned long)memalign(ARCH_DMA_MINALIGN, len); + *handle = (unsigned long)memalign(ARCH_DMA_MINALIGN, ROUND(len, ARCH_DMA_MINALIGN)); return (void *)*handle; } From 9a6a311d2bd12957f84f08a5214db698a35e918d Mon Sep 17 00:00:00 2001 From: Ye Li Date: Fri, 4 Jan 2019 09:34:24 +0000 Subject: [PATCH 10/45] env: sata: Add missed env location for SATA boot The env location label ENVL_ESATA is missed in location tables, so when we configure the ENV in SATA, u-boot fails to get correct env location and cause boot hang in board_f. Signed-off-by: Ye Li Reviewed-by: Peng Fan --- env/env.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/env/env.c b/env/env.c index afed0f3c95..003509d342 100644 --- a/env/env.c +++ b/env/env.c @@ -71,6 +71,9 @@ static enum env_location env_locations[] = { #ifdef CONFIG_ENV_IS_IN_REMOTE ENVL_REMOTE, #endif +#ifdef CONFIG_ENV_IS_IN_SATA + ENVL_ESATA, +#endif #ifdef CONFIG_ENV_IS_IN_SPI_FLASH ENVL_SPI_FLASH, #endif From 35e3d2e8a30321195e4f5cd8aafba6aefe818b3d Mon Sep 17 00:00:00 2001 From: Sam Protsenko Date: Fri, 4 Jan 2019 22:09:08 +0200 Subject: [PATCH 11/45] arm: ti: boot: Remove legacy Android partitions Remove unused Android partitions: - efs, crypto, cache: we don't use it anymore (images are not built in AOSP - ipu1, ipu2: IPU firmware is now a part of vendor image and doesn't reside as a separate partition While at it, rename "reserved" partition to "uboot-env", as it's actually stores U-Boot environment. Signed-off-by: Sam Protsenko Signed-off-by: Praneeth Bajjuri --- include/environment/ti/boot.h | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/include/environment/ti/boot.h b/include/environment/ti/boot.h index 86ff6d3ea7..05bdbbc23e 100644 --- a/include/environment/ti/boot.h +++ b/include/environment/ti/boot.h @@ -35,17 +35,12 @@ "uuid_disk=${uuid_gpt_disk};" \ "name=xloader,start=128K,size=256K,uuid=${uuid_gpt_xloader};" \ "name=bootloader,size=2048K,uuid=${uuid_gpt_bootloader};" \ - "name=reserved,start=2432K,size=256K,uuid=${uuid_gpt_reserved};" \ + "name=uboot-env,start=2432K,size=256K,uuid=${uuid_gpt_reserved};" \ "name=misc,size=128K,uuid=${uuid_gpt_misc};" \ - "name=efs,size=16M,uuid=${uuid_gpt_efs};" \ - "name=crypto,size=16K,uuid=${uuid_gpt_crypto};" \ "name=recovery,size=40M,uuid=${uuid_gpt_recovery};" \ "name=boot,size=10M,uuid=${uuid_gpt_boot};" \ "name=system,size=1024M,uuid=${uuid_gpt_system};" \ "name=vendor,size=256M,uuid=${uuid_gpt_vendor};" \ - "name=cache,size=256M,uuid=${uuid_gpt_cache};" \ - "name=ipu1,size=1M,uuid=${uuid_gpt_ipu1};" \ - "name=ipu2,size=1M,uuid=${uuid_gpt_ipu2};" \ VBMETA_PART \ "name=userdata,size=-,uuid=${uuid_gpt_userdata}" #endif /* PARTS_DEFAULT */ From 17be909a1b67e919de6fc20b23f35c66a4cdf4c6 Mon Sep 17 00:00:00 2001 From: Ye Li Date: Mon, 7 Jan 2019 09:22:35 +0000 Subject: [PATCH 12/45] env: sata: Fix saveenv issue Wrong env buffer was passed into sata write function, cause the saveenv not work. Signed-off-by: Ye Li --- env/sata.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/env/sata.c b/env/sata.c index 59aedf4d76..a2ff5c66f7 100644 --- a/env/sata.c +++ b/env/sata.c @@ -65,7 +65,7 @@ static int env_sata_save(void) return 1; printf("Writing to SATA(%d)...", env_sata); - if (write_env(sata, CONFIG_ENV_SIZE, CONFIG_ENV_OFFSET, &env_new)) { + if (write_env(sata, CONFIG_ENV_SIZE, CONFIG_ENV_OFFSET, (u_char *)env_new)) { puts("failed\n"); return 1; } From 39a8f0be2d3df589ba227310e66dca706e154920 Mon Sep 17 00:00:00 2001 From: Patrice Chotard Date: Fri, 4 Jan 2019 10:55:05 +0100 Subject: [PATCH 13/45] gpio: stm32f7: Fix gpio bank hole management In case "gpio-ranges" property is not present in device tree, use default value for gpio_count and gpio_range. This fixes an issue on stm32 F7 and H7 boards where "pinmux status -a" command didn't return any pin status due to the fact that both stm32 F7 and H7 board DT doesn't use the gpio-ranges property. Fixes: dbf928dd2634a6("gpio: stm32f7: Add gpio bank holes management") Signed-off-by: Patrice Chotard --- drivers/gpio/stm32f7_gpio.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpio/stm32f7_gpio.c b/drivers/gpio/stm32f7_gpio.c index f160b4e689..dbaa80cf8c 100644 --- a/drivers/gpio/stm32f7_gpio.c +++ b/drivers/gpio/stm32f7_gpio.c @@ -171,6 +171,11 @@ static int gpio_stm32_probe(struct udevice *dev) ret = dev_read_phandle_with_args(dev, "gpio-ranges", NULL, 3, i, &args); + if (ret == -ENOENT) { + uc_priv->gpio_count = STM32_GPIOS_PER_BANK; + priv->gpio_range = GENMASK(STM32_GPIOS_PER_BANK - 1, 0); + } + while (ret != -ENOENT) { priv->gpio_range |= GENMASK(args.args[2] + args.args[0] - 1, args.args[0]); From 4fb224638d608ba3bdc9200360663b4109038580 Mon Sep 17 00:00:00 2001 From: Patrice Chotard Date: Fri, 4 Jan 2019 10:55:06 +0100 Subject: [PATCH 14/45] gpio: stm32f7: Fix SPL code size In order to keep SPL code size below the 32Kb limit, put under CONFIG_SPL_BUILD flag all unused code in SPL. This is needed for stm32f7xx board which are using SPL. Signed-off-by: Patrice Chotard --- drivers/gpio/stm32f7_gpio.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/gpio/stm32f7_gpio.c b/drivers/gpio/stm32f7_gpio.c index dbaa80cf8c..5c9f2fe64d 100644 --- a/drivers/gpio/stm32f7_gpio.c +++ b/drivers/gpio/stm32f7_gpio.c @@ -19,6 +19,7 @@ #define MODE_BITS_MASK 3 #define BSRR_BIT(gpio_pin, value) BIT(gpio_pin + (value ? 0 : 16)) +#ifndef CONFIG_SPL_BUILD /* * convert gpio offset to gpio index taking into account gpio holes * into gpio bank @@ -145,23 +146,27 @@ static const struct dm_gpio_ops gpio_stm32_ops = { .set_value = stm32_gpio_set_value, .get_function = stm32_gpio_get_function, }; +#endif static int gpio_stm32_probe(struct udevice *dev) { - struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev); struct stm32_gpio_priv *priv = dev_get_priv(dev); - struct ofnode_phandle_args args; struct clk clk; fdt_addr_t addr; - const char *name; int ret; - int i; addr = dev_read_addr(dev); if (addr == FDT_ADDR_T_NONE) return -EINVAL; priv->regs = (struct stm32_gpio_regs *)addr; + +#ifndef CONFIG_SPL_BUILD + struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev); + struct ofnode_phandle_args args; + const char *name; + int i; + name = dev_read_string(dev, "st,bank-name"); if (!name) return -EINVAL; @@ -189,7 +194,7 @@ static int gpio_stm32_probe(struct udevice *dev) dev_dbg(dev, "addr = 0x%p bank_name = %s gpio_count = %d gpio_range = 0x%x\n", (u32 *)priv->regs, uc_priv->bank_name, uc_priv->gpio_count, priv->gpio_range); - +#endif ret = clk_get_by_index(dev, 0, &clk); if (ret < 0) return ret; @@ -215,7 +220,9 @@ U_BOOT_DRIVER(gpio_stm32) = { .id = UCLASS_GPIO, .of_match = stm32_gpio_ids, .probe = gpio_stm32_probe, +#ifndef CONFIG_SPL_BUILD .ops = &gpio_stm32_ops, +#endif .flags = DM_UC_FLAG_SEQ_ALIAS, .priv_auto_alloc_size = sizeof(struct stm32_gpio_priv), }; From 8c6cc71b40357dad4e3f21e9f1bd84db76a3d994 Mon Sep 17 00:00:00 2001 From: Ye Li Date: Mon, 7 Jan 2019 02:45:46 +0000 Subject: [PATCH 15/45] usb: xhci-mem: Fix scratchpad array issue After updating the value of dev_context_ptrs[0], we should flush this from cache to memory. Otherwise the xhci controller won't use it. Signed-off-by: Ye Li Reviewed-by: Marek Vasut --- drivers/usb/host/xhci-mem.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index 04ab540695..84c2c3344a 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -369,6 +369,9 @@ static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl) ctrl->dcbaa->dev_context_ptrs[0] = cpu_to_le64((uintptr_t)scratchpad->sp_array); + xhci_flush_cache((uintptr_t)&ctrl->dcbaa->dev_context_ptrs[0], + sizeof(ctrl->dcbaa->dev_context_ptrs[0])); + page_size = xhci_readl(&hcor->or_pagesize) & 0xffff; for (i = 0; i < 16; i++) { if ((0x1 & page_size) != 0) From a1f2779f5188280b1f131138c649354ec67ad12e Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Thu, 6 Dec 2018 14:55:03 +0100 Subject: [PATCH 16/45] board: toradex: colibri_vf: unset NFS and LOADS/B Safe some space by not selecting CMD_NFS and CMD_LOADS/B. Signed-off-by: Stefan Agner Reviewed-by: Lukasz Majewski --- configs/colibri_vf_defconfig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/configs/colibri_vf_defconfig b/configs/colibri_vf_defconfig index fb0578868d..4192501257 100644 --- a/configs/colibri_vf_defconfig +++ b/configs/colibri_vf_defconfig @@ -23,11 +23,14 @@ CONFIG_CMD_MEMTEST=y CONFIG_CMD_DFU=y CONFIG_CMD_FUSE=y CONFIG_CMD_GPIO=y +# CONFIG_CMD_LOADB is not set +# CONFIG_CMD_LOADS is not set CONFIG_CMD_MMC=y CONFIG_CMD_USB=y CONFIG_CMD_USB_MASS_STORAGE=y # CONFIG_CMD_SETEXPR is not set CONFIG_CMD_DHCP=y +# CONFIG_CMD_NFS is not set CONFIG_CMD_MII=y CONFIG_CMD_PING=y CONFIG_CMD_BMP=y From a95d444055134fd8f0e1f2bd4c11222170fe6dc5 Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Fri, 14 Dec 2018 15:26:00 +0100 Subject: [PATCH 17/45] ARM: vf610: ddrmc: program Dummy DDRBYTE1/2 The Vybrid reference manual VFXXXRM Rev. 0 10/2016 states in chapter 5.2.6.1 DUMMY PADS (DDR/QuadSPI) that those pads need to be programed for correct operation of DDR. Assume the default DDR pin configuration which seems to work well on a Colibri VF50. Signed-off-by: Stefan Agner --- arch/arm/include/asm/arch-vf610/iomux-vf610.h | 2 ++ arch/arm/mach-imx/ddrmc-vf610.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/arch/arm/include/asm/arch-vf610/iomux-vf610.h b/arch/arm/include/asm/arch-vf610/iomux-vf610.h index c0eeaa7e7d..01bc2998b8 100644 --- a/arch/arm/include/asm/arch-vf610/iomux-vf610.h +++ b/arch/arm/include/asm/arch-vf610/iomux-vf610.h @@ -244,6 +244,8 @@ enum { VF610_PAD_DDR_WE__DDR_WE_B = IOMUX_PAD(0x02d0, 0x02d0, 0, __NA_, 0, VF610_DDR_PAD_CTRL), VF610_PAD_DDR_ODT1__DDR_ODT_0 = IOMUX_PAD(0x02d4, 0x02d4, 0, __NA_, 0, VF610_DDR_PAD_CTRL), VF610_PAD_DDR_ODT0__DDR_ODT_1 = IOMUX_PAD(0x02d8, 0x02d8, 0, __NA_, 0, VF610_DDR_PAD_CTRL), + VF610_PAD_DDR_DDRBYTE1__DDR_DDRBYTE1 = IOMUX_PAD(0x02dc, 0x02dc, 0, __NA_, 0, VF610_DDR_PAD_CTRL), + VF610_PAD_DDR_DDRBYTE2__DDR_DDRBYTE2 = IOMUX_PAD(0x02e0, 0x02e0, 0, __NA_, 0, VF610_DDR_PAD_CTRL), }; #endif /* __IOMUX_VF610_H__ */ diff --git a/arch/arm/mach-imx/ddrmc-vf610.c b/arch/arm/mach-imx/ddrmc-vf610.c index 3d7da1c25e..7cc8f5d2c0 100644 --- a/arch/arm/mach-imx/ddrmc-vf610.c +++ b/arch/arm/mach-imx/ddrmc-vf610.c @@ -61,6 +61,8 @@ void ddrmc_setup_iomux(const iomux_v3_cfg_t *pads, int pads_count) VF610_PAD_DDR_WE__DDR_WE_B, VF610_PAD_DDR_ODT1__DDR_ODT_0, VF610_PAD_DDR_ODT0__DDR_ODT_1, + VF610_PAD_DDR_DDRBYTE1__DDR_DDRBYTE1, + VF610_PAD_DDR_DDRBYTE2__DDR_DDRBYTE2, VF610_PAD_DDR_RESETB, }; From fb41ce0db0284e0455b062c92f8d07ad5487851c Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Tue, 4 Dec 2018 11:10:18 +0100 Subject: [PATCH 18/45] toradex: colibri_vf: fix memory initialization Commit 3f353ceccbbb ("vf610: refactor DDRMC code") changed on-die termination (ODT) values from 120 Ohm to 60 Ohm and enabled a static read/write leveling which has not been tested with this board. This commit reverts both changes and makes sure that memory gets initialized as it has been done before the mentioned commit. Fixes: 3f353ceccbbb ("vf610: refactor DDRMC code") Signed-off-by: Stefan Agner Acked-by: Max Krummenacher --- board/toradex/colibri_vf/colibri_vf.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/board/toradex/colibri_vf/colibri_vf.c b/board/toradex/colibri_vf/colibri_vf.c index 4db1757469..19cf748c5d 100644 --- a/board/toradex/colibri_vf/colibri_vf.c +++ b/board/toradex/colibri_vf/colibri_vf.c @@ -42,14 +42,6 @@ DECLARE_GLOBAL_DATA_PTR; #define USB_CDET_GPIO 102 static struct ddrmc_cr_setting colibri_vf_cr_settings[] = { - /* levelling */ - { DDRMC_CR97_WRLVL_EN, 97 }, - { DDRMC_CR98_WRLVL_DL_0(0), 98 }, - { DDRMC_CR99_WRLVL_DL_1(0), 99 }, - { DDRMC_CR102_RDLVL_REG_EN | DDRMC_CR102_RDLVL_GT_REGEN, 102 }, - { DDRMC_CR105_RDLVL_DL_0(0), 105 }, - { DDRMC_CR106_RDLVL_GTDL_0(4), 106 }, - { DDRMC_CR110_RDLVL_DL_1(0) | DDRMC_CR110_RDLVL_GTDL_1(4), 110 }, /* AXI */ { DDRMC_CR117_AXI0_W_PRI(0) | DDRMC_CR117_AXI0_R_PRI(0), 117 }, { DDRMC_CR118_AXI1_W_PRI(1) | DDRMC_CR118_AXI1_R_PRI(1), 118 }, @@ -88,7 +80,7 @@ static struct ddrmc_cr_setting colibri_vf_cr_settings[] = { DDRMC_CR154_PAD_ZQ_MODE(1) | DDRMC_CR154_DDR_SEL_PAD_CONTR(3) | DDRMC_CR154_PAD_ZQ_HW_FOR(1), 154 }, - { DDRMC_CR155_PAD_ODT_BYTE1(1) | DDRMC_CR155_PAD_ODT_BYTE0(1), 155 }, + { DDRMC_CR155_PAD_ODT_BYTE1(2) | DDRMC_CR155_PAD_ODT_BYTE0(2), 155 }, { DDRMC_CR158_TWR(6), 158 }, { DDRMC_CR161_ODT_EN(1) | DDRMC_CR161_TODTH_RD(2) | DDRMC_CR161_TODTH_WR(2), 161 }, From b77e368fa27631f13c06acdb0020fb64b59d4411 Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Tue, 4 Dec 2018 11:10:19 +0100 Subject: [PATCH 19/45] ARM: vf610: ddrmc: fix CR138 preprocessor define According to the data sheet bits 10-8 are PHYDRAM_CK_EN. Fix mask to allow setting PHYDRAM_CK_EN correctly. Signed-off-by: Stefan Agner Acked-by: Marcel Ziswiler Reviewed-by: Lukasz Majewski --- arch/arm/include/asm/arch-vf610/imx-regs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/include/asm/arch-vf610/imx-regs.h b/arch/arm/include/asm/arch-vf610/imx-regs.h index 08ba8e94f8..b7374bfb8f 100644 --- a/arch/arm/include/asm/arch-vf610/imx-regs.h +++ b/arch/arm/include/asm/arch-vf610/imx-regs.h @@ -239,7 +239,7 @@ #define DDRMC_CR132_RDLAT_ADJ(v) ((v) & 0x3f) #define DDRMC_CR137_PHYCTL_DL(v) (((v) & 0xf) << 16) #define DDRMC_CR138_PHY_WRLV_MXDL(v) (((v) & 0xffff) << 16) -#define DDRMC_CR138_PHYDRAM_CK_EN(v) (((v) & 0x8) << 8) +#define DDRMC_CR138_PHYDRAM_CK_EN(v) (((v) & 0x7) << 8) #define DDRMC_CR139_PHY_WRLV_RESPLAT(v) (((v) & 0xff) << 24) #define DDRMC_CR139_PHY_WRLV_LOAD(v) (((v) & 0xff) << 16) #define DDRMC_CR139_PHY_WRLV_DLL(v) (((v) & 0xff) << 8) From 52c2c97e7c5b3ba326bae53a7940e27878efd405 Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Tue, 4 Dec 2018 11:10:20 +0100 Subject: [PATCH 20/45] ARM: vf610: ddrmc: fix initialization completion detection The CR80 register has multiple interrupt bits, the code is supposed to check bit 8 but instead uses a logical and. In most cases this probably did not affect real operations since at that stage typically none of the other bits are set. Signed-off-by: Stefan Agner Acked-by: Marcel Ziswiler --- arch/arm/include/asm/arch-vf610/imx-regs.h | 3 ++- arch/arm/mach-imx/ddrmc-vf610.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/arm/include/asm/arch-vf610/imx-regs.h b/arch/arm/include/asm/arch-vf610/imx-regs.h index b7374bfb8f..f71fbf4e73 100644 --- a/arch/arm/include/asm/arch-vf610/imx-regs.h +++ b/arch/arm/include/asm/arch-vf610/imx-regs.h @@ -200,7 +200,8 @@ #define DDRMC_CR78_Q_FULLNESS(v) (((v) & 0x7) << 24) #define DDRMC_CR78_BUR_ON_FLY_BIT(v) ((v) & 0xf) #define DDRMC_CR79_CTLUPD_AREF(v) (((v) & 0x1) << 24) -#define DDRMC_CR82_INT_MASK 0x10000000 +#define DDRMC_CR80_MC_INIT_COMPLETE (1 << 8) +#define DDRMC_CR82_INT_MASK (1 << 28) #define DDRMC_CR87_ODT_WR_MAPCS0(v) ((v) << 24) #define DDRMC_CR87_ODT_RD_MAPCS0(v) ((v) << 16) #define DDRMC_CR88_TODTL_CMD(v) (((v) & 0x1f) << 16) diff --git a/arch/arm/mach-imx/ddrmc-vf610.c b/arch/arm/mach-imx/ddrmc-vf610.c index 7cc8f5d2c0..9739738a08 100644 --- a/arch/arm/mach-imx/ddrmc-vf610.c +++ b/arch/arm/mach-imx/ddrmc-vf610.c @@ -233,6 +233,7 @@ void ddrmc_ctrl_init_ddr3(struct ddr3_jedec_timings const *timings, /* all inits done, start the DDR controller */ writel(DDRMC_CR00_DRAM_CLASS_DDR3 | DDRMC_CR00_START, &ddrmr->cr[0]); - while (!(readl(&ddrmr->cr[80]) && 0x100)) + while (!(readl(&ddrmr->cr[80]) & DDRMC_CR80_MC_INIT_COMPLETE)) udelay(10); + writel(DDRMC_CR80_MC_INIT_COMPLETE, &ddrmr->cr[81]); } From 81653478ebcce72de0daac725f5756872133cfbc Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Tue, 4 Dec 2018 11:10:21 +0100 Subject: [PATCH 21/45] ARM: vf610: ddrmc: do not write CR79 by default The current value CTLUPD_AREF(0) is the reset value of the register, so there is no need to write a value. If needed, the register can be written using board specific CR settings. Signed-off-by: Stefan Agner Acked-by: Marcel Ziswiler Reviewed-by: Lukasz Majewski --- arch/arm/mach-imx/ddrmc-vf610.c | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/arm/mach-imx/ddrmc-vf610.c b/arch/arm/mach-imx/ddrmc-vf610.c index 9739738a08..fa948f7812 100644 --- a/arch/arm/mach-imx/ddrmc-vf610.c +++ b/arch/arm/mach-imx/ddrmc-vf610.c @@ -190,7 +190,6 @@ void ddrmc_ctrl_init_ddr3(struct ddr3_jedec_timings const *timings, DDRMC_CR77_SWAP_EN, &ddrmr->cr[77]); writel(DDRMC_CR78_Q_FULLNESS(timings->q_fullness) | DDRMC_CR78_BUR_ON_FLY_BIT(12), &ddrmr->cr[78]); - writel(DDRMC_CR79_CTLUPD_AREF(0), &ddrmr->cr[79]); writel(DDRMC_CR82_INT_MASK, &ddrmr->cr[82]); From bf413781cfbbc3df5e154b1c00e231bc2d600550 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 7 Dec 2018 02:36:38 +0100 Subject: [PATCH 22/45] arm: mx5: Enable WDT and bootcounter on M53Menlo Enable watchdog and bootcounter support on the M53Menlo board. Signed-off-by: Marek Vasut Cc: Stefano Babic --- configs/m53menlo_defconfig | 8 ++++++++ include/configs/m53menlo.h | 3 +++ 2 files changed, 11 insertions(+) diff --git a/configs/m53menlo_defconfig b/configs/m53menlo_defconfig index dd7aed324f..5555e05030 100644 --- a/configs/m53menlo_defconfig +++ b/configs/m53menlo_defconfig @@ -20,6 +20,7 @@ CONFIG_SYS_CONSOLE_IS_IN_ENV=y CONFIG_VERSION_VARIABLE=y CONFIG_SPL_BOARD_INIT=y CONFIG_SPL_NAND_SUPPORT=y +CONFIG_SPL_WATCHDOG_SUPPORT=y CONFIG_HUSH_PARSER=y CONFIG_CMD_ASKENV=y CONFIG_CMD_GREPENV=y @@ -33,6 +34,7 @@ CONFIG_CMD_DHCP=y CONFIG_CMD_MII=y CONFIG_CMD_PING=y CONFIG_CMD_BMP=y +CONFIG_CMD_BOOTCOUNT=y CONFIG_CMD_DATE=y CONFIG_CMD_BTRFS=y CONFIG_CMD_EXT4=y @@ -44,6 +46,11 @@ CONFIG_MTDIDS_DEFAULT="nand0=mxc_nand" CONFIG_MTDPARTS_DEFAULT="mtdparts=mxc_nand:1m(u-boot),512k(env1),512k(env2),-(ubi)" CONFIG_CMD_UBI=y CONFIG_ENV_IS_IN_NAND=y +CONFIG_BOOTCOUNT_LIMIT=y +CONFIG_BOOTCOUNT_BOOTLIMIT=3 +CONFIG_SYS_BOOTCOUNT_SINGLEWORD=y +CONFIG_SYS_BOOTCOUNT_ADDR=0x53FA401C +CONFIG_SYS_BOOTCOUNT_MAGIC=0x0B01C041 CONFIG_FSL_ESDHC=y CONFIG_NAND=y CONFIG_NAND_MXC=y @@ -58,5 +65,6 @@ CONFIG_USB_ETHER_MCS7830=y CONFIG_USB_ETHER_SMSC95XX=y CONFIG_VIDEO=y # CONFIG_VIDEO_SW_CURSOR is not set +CONFIG_IMX_WATCHDOG=y CONFIG_FAT_WRITE=y CONFIG_OF_LIBFDT=y diff --git a/include/configs/m53menlo.h b/include/configs/m53menlo.h index 3fca28da6b..0e03bb31a7 100644 --- a/include/configs/m53menlo.h +++ b/include/configs/m53menlo.h @@ -157,6 +157,9 @@ /* IIM Fuses */ #define CONFIG_FSL_IIM +/* Watchdog */ +#define CONFIG_WATCHDOG_TIMEOUT_MSECS 8000 + /* * Boot Linux */ From e3bc7c668f424848c18acb664ef8b077b553697b Mon Sep 17 00:00:00 2001 From: Chris Spencer Date: Thu, 20 Dec 2018 09:25:24 +0000 Subject: [PATCH 23/45] imx: Add Makefile dependency for mkimage_fit_atf.sh The mkimage_fit_atf.sh SPL FIT generator script requires u-boot-nodtb.bin, but this was not enforced by the Makefile. This could cause the generator script to be executed before u-boot-nodtb.bin has been created. Signed-off-by: Chris Spencer Cc: NXP i.MX U-Boot Team --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index eeb299fc38..47589e47ac 100644 --- a/Makefile +++ b/Makefile @@ -1133,6 +1133,9 @@ U_BOOT_ITS = $(subst ",,$(CONFIG_SPL_FIT_SOURCE)) else ifneq ($(CONFIG_SPL_FIT_GENERATOR),"") U_BOOT_ITS := u-boot.its +ifeq ($(CONFIG_SPL_FIT_GENERATOR),"arch/arm/mach-imx/mkimage_fit_atf.sh") +U_BOOT_ITS_DEPS += u-boot-nodtb.bin +endif ifeq ($(CONFIG_SPL_FIT_GENERATOR),"arch/arm/mach-rockchip/make_fit_atf.py") U_BOOT_ITS_DEPS += u-boot endif From b82c7c32efcba76164c966733002c7c8528b005d Mon Sep 17 00:00:00 2001 From: Soeren Moch Date: Sat, 5 Jan 2019 09:31:17 +0100 Subject: [PATCH 24/45] board: tbs2910: Add u-boot.imx size limit check Check the size of the generated u-boot.imx file. Report an error if it would be too big and overwrite the u-boot environment. Signed-off-by: Soeren Moch --- include/configs/tbs2910.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/configs/tbs2910.h b/include/configs/tbs2910.h index a60223c623..2d4b9c9bfe 100644 --- a/include/configs/tbs2910.h +++ b/include/configs/tbs2910.h @@ -122,6 +122,8 @@ #define CONFIG_ENV_OFFSET (384 * 1024) #define CONFIG_ENV_OVERWRITE +#define CONFIG_BOARD_SIZE_LIMIT 392192 /* (CONFIG_ENV_OFFSET - 1024) */ + #define CONFIG_EXTRA_ENV_SETTINGS \ "bootargs_mmc1=console=ttymxc0,115200 di0_primary console=tty1\0" \ "bootargs_mmc2=video=mxcfb0:dev=hdmi,1920x1080M@60 " \ From 72bc93e1ef20cf0da31155ad164817799fe5f01b Mon Sep 17 00:00:00 2001 From: Soeren Moch Date: Sat, 5 Jan 2019 09:31:18 +0100 Subject: [PATCH 25/45] board: tbs2910: Remove FIT support in defconfig to reduce u-boot size The current defconfig build generates a u-boot.imx file that is too large for the available space on a eMMC/SD card. Installing this file overwrites the u-boot environment. So disable the unused FIT support to reduce the size of the u-boot binary. Signed-off-by: Soeren Moch --- configs/tbs2910_defconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/configs/tbs2910_defconfig b/configs/tbs2910_defconfig index 55cd9bd998..fc15dcf013 100644 --- a/configs/tbs2910_defconfig +++ b/configs/tbs2910_defconfig @@ -5,7 +5,6 @@ CONFIG_SYS_TEXT_BASE=0x17800000 CONFIG_TARGET_TBS2910=y CONFIG_CMD_HDMIDETECT=y CONFIG_NR_DRAM_BANKS=1 -CONFIG_FIT=y CONFIG_BOOTDELAY=3 CONFIG_PRE_CONSOLE_BUFFER=y CONFIG_PRE_CON_BUF_ADDR=0x7c000000 From d17b0bedbfcd24dea36eb66852e6f8b2d334f729 Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Sat, 15 Dec 2018 12:07:02 +0000 Subject: [PATCH 26/45] MAINTAINERS: update NXP i.MX mail list address Update NXP i.MX mail list address Signed-off-by: Peng Fan Reviewed-by: Bin Meng --- MAINTAINERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index ae825014bd..f86fdf9c33 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -123,7 +123,7 @@ F: drivers/spi/bcmstb_spi.c ARM FREESCALE IMX M: Stefano Babic M: Fabio Estevam -R: NXP Linux Team +R: NXP i.MX U-Boot Team S: Maintained T: git git://git.denx.de/u-boot-imx.git F: arch/arm/cpu/arm1136/mx*/ From 224f745247045262f9c4ca9e379be1002204e4ea Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Sat, 15 Dec 2018 12:19:46 +0000 Subject: [PATCH 27/45] clk: imx8: fix build warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When build clk driver in spl, met the warning: " drivers/clk/imx/clk-imx8.c:21:25: warning: ‘imx8_clk_names’ defined but not used [-Wunused-variable] static struct imx8_clks imx8_clk_names[] = { ^~~~~~~~~~~~~~ " Fix with wrapping the array with CONFIG_CMD_CLK. Signed-off-by: Peng Fan --- drivers/clk/imx/clk-imx8.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/clk/imx/clk-imx8.c b/drivers/clk/imx/clk-imx8.c index fcb8090d35..d03fcc2fdd 100644 --- a/drivers/clk/imx/clk-imx8.c +++ b/drivers/clk/imx/clk-imx8.c @@ -18,6 +18,7 @@ struct imx8_clks { const char *name; }; +#if CONFIG_IS_ENABLED(CMD_CLK) static struct imx8_clks imx8_clk_names[] = { { IMX8QXP_A35_DIV, "A35_DIV" }, { IMX8QXP_I2C0_CLK, "I2C0" }, @@ -39,6 +40,7 @@ static struct imx8_clks imx8_clk_names[] = { { IMX8QXP_ENET1_REF_DIV, "ENET1_REF" }, { IMX8QXP_ENET1_PTP_CLK, "ENET1_PTP" }, }; +#endif static ulong imx8_clk_get_rate(struct clk *clk) { From ecab65e4cdec0ee408ca1ac9d0b06d2793fdae91 Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Sat, 15 Dec 2018 12:19:49 +0000 Subject: [PATCH 28/45] misc: imx: scu: avoid write null pointer When boot_dev is true, fill boot device. However the original logic is when boot_dev is false, fill boot device, this will trigger data abort. Also fix sc_misc_get_control when using pointer val. Signed-off-by: Peng Fan --- drivers/misc/imx8/scu_api.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/misc/imx8/scu_api.c b/drivers/misc/imx8/scu_api.c index 65080d7544..d9c4d5d784 100644 --- a/drivers/misc/imx8/scu_api.c +++ b/drivers/misc/imx8/scu_api.c @@ -169,7 +169,7 @@ int sc_misc_get_control(sc_ipc_t ipc, sc_rsrc_t resource, sc_ctrl_t ctrl, printf("%s: ctrl:%d resource:%d: res:%d\n", __func__, ctrl, resource, RPC_R8(&msg)); - if (!val) + if (val) *val = RPC_U32(&msg, 0U); return ret; @@ -194,7 +194,7 @@ void sc_misc_get_boot_dev(sc_ipc_t ipc, sc_rsrc_t *boot_dev) if (ret) printf("%s: res:%d\n", __func__, RPC_R8(&msg)); - if (!boot_dev) + if (boot_dev) *boot_dev = RPC_U16(&msg, 0U); } From 026381fc5a06cdc3e41a6bae83486be6cbaae0a9 Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Sat, 15 Dec 2018 12:19:52 +0000 Subject: [PATCH 29/45] misc: imx8: scu: use platdata instead of priv data priv data has not been allocated when doing bind, so it is wrong to use dev_get_priv in bind call back. Let's switch to use platdata in the driver to fix the issue. Signed-off-by: Peng Fan Reviewed-by: Simon Glass --- drivers/misc/imx8/scu.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/drivers/misc/imx8/scu.c b/drivers/misc/imx8/scu.c index b824ac79e6..15101b3e5f 100644 --- a/drivers/misc/imx8/scu.c +++ b/drivers/misc/imx8/scu.c @@ -158,7 +158,7 @@ static int sc_ipc_write(struct mu_type *base, void *data) static int imx8_scu_call(struct udevice *dev, int no_resp, void *tx_msg, int tx_size, void *rx_msg, int rx_size) { - struct imx8_scu *priv = dev_get_priv(dev); + struct imx8_scu *plat = dev_get_platdata(dev); sc_err_t result; int ret; @@ -166,11 +166,11 @@ static int imx8_scu_call(struct udevice *dev, int no_resp, void *tx_msg, if (rx_msg && tx_msg != rx_msg) printf("tx_msg %p, rx_msg %p\n", tx_msg, rx_msg); - ret = sc_ipc_write(priv->base, tx_msg); + ret = sc_ipc_write(plat->base, tx_msg); if (ret) return ret; if (!no_resp) { - ret = sc_ipc_read(priv->base, rx_msg); + ret = sc_ipc_read(plat->base, rx_msg); if (ret) return ret; } @@ -182,24 +182,24 @@ static int imx8_scu_call(struct udevice *dev, int no_resp, void *tx_msg, static int imx8_scu_probe(struct udevice *dev) { - struct imx8_scu *priv = dev_get_priv(dev); + struct imx8_scu *plat = dev_get_platdata(dev); fdt_addr_t addr; - debug("%s(dev=%p) (priv=%p)\n", __func__, dev, priv); + debug("%s(dev=%p) (plat=%p)\n", __func__, dev, plat); addr = devfdt_get_addr(dev); if (addr == FDT_ADDR_T_NONE) return -EINVAL; - priv->base = (struct mu_type *)addr; + plat->base = (struct mu_type *)addr; /* U-Boot not enable interrupts, so need to enable RX interrupts */ - mu_hal_init(priv->base); + mu_hal_init(plat->base); gd->arch.scu_dev = dev; - device_probe(priv->clk); - device_probe(priv->pinclk); + device_probe(plat->clk); + device_probe(plat->pinclk); return 0; } @@ -211,7 +211,7 @@ static int imx8_scu_remove(struct udevice *dev) static int imx8_scu_bind(struct udevice *dev) { - struct imx8_scu *priv = dev_get_priv(dev); + struct imx8_scu *plat = dev_get_platdata(dev); int ret; struct udevice *child; int node; @@ -227,7 +227,7 @@ static int imx8_scu_bind(struct udevice *dev) if (ret) return ret; - priv->clk = child; + plat->clk = child; node = fdt_node_offset_by_compatible(gd->fdt_blob, -1, "fsl,imx8qxp-iomuxc"); @@ -238,7 +238,7 @@ static int imx8_scu_bind(struct udevice *dev) if (ret) return ret; - priv->pinclk = child; + plat->pinclk = child; return 0; } @@ -261,6 +261,6 @@ U_BOOT_DRIVER(imx8_scu) = { .bind = imx8_scu_bind, .remove = imx8_scu_remove, .ops = &imx8_scu_ops, - .priv_auto_alloc_size = sizeof(struct imx8_scu), + .platdata_auto_alloc_size = sizeof(struct imx8_scu), .flags = DM_FLAG_PRE_RELOC, }; From da72574b217d9a7c91371209ba47c2b69502c313 Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Sat, 15 Dec 2018 12:19:55 +0000 Subject: [PATCH 30/45] imx8: cpu: correct info The CPU banner printed is as following: CPU: CPU: Freescale i.MX8QXP RevB A35 at 147228 MHz 1. Drop the CPU: 2. Change vendor from Freescale to NXP Signed-off-by: Peng Fan --- arch/arm/mach-imx/imx8/cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/mach-imx/imx8/cpu.c b/arch/arm/mach-imx/imx8/cpu.c index f093f34ca5..7599afe720 100644 --- a/arch/arm/mach-imx/imx8/cpu.c +++ b/arch/arm/mach-imx/imx8/cpu.c @@ -573,7 +573,7 @@ int cpu_imx_get_desc(struct udevice *dev, char *buf, int size) if (size < 100) return -ENOSPC; - snprintf(buf, size, "CPU: Freescale i.MX8%s Rev%s %s at %u MHz\n", + snprintf(buf, size, "NXP i.MX8%s Rev%s %s at %u MHz\n", plat->type, plat->rev, plat->name, plat->freq_mhz); return 0; From f7e475db4011d18b4ae974154eb022c3af6a4d16 Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Sat, 15 Dec 2018 12:19:58 +0000 Subject: [PATCH 31/45] tools: imx8image: set dcd_skip to true To B0[+] chips, dcd_skip needs to be true. For A0 chip, it needs to be false, however A0 chip is no longer being supported anymore. Considering we are moving code from imx-mkimage to uboot mkimage, to make sure we not introduce some surprise, we still keep dcd_skip code there. Signed-off-by: Peng Fan --- tools/imx8image.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/imx8image.c b/tools/imx8image.c index 6e8ac464e7..0d856b9d94 100644 --- a/tools/imx8image.c +++ b/tools/imx8image.c @@ -968,7 +968,7 @@ int imx8image_copy_image(int outfd, struct image_tool_params *mparams) fprintf(stdout, "CONTAINER SW VERSION:\t0x%04x\n", sw_version); build_container(soc, sector_size, emmc_fastboot, - img_sp, false, fuse_version, sw_version, outfd); + img_sp, true, fuse_version, sw_version, outfd); return 0; } From d4a0c098925d4594355506a12ae0dbbe6eed00f2 Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Fri, 28 Dec 2018 16:43:01 -0200 Subject: [PATCH 32/45] imx8m: clock: Fix oscillator values OSC_27M_CLK should return 27MHz and OSC_32K_CLK should return 32768Hz to reflect the reality. This also keeps the values in sync with the Linux clock tree. Signed-off-by: Fabio Estevam --- arch/arm/mach-imx/imx8m/clock.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-imx/imx8m/clock.c b/arch/arm/mach-imx/imx8m/clock.c index 3766d988ba..289b9417aa 100644 --- a/arch/arm/mach-imx/imx8m/clock.c +++ b/arch/arm/mach-imx/imx8m/clock.c @@ -250,9 +250,9 @@ static u32 get_root_src_clk(enum clk_root_src root_src) case OSC_25M_CLK: return 25000000; case OSC_27M_CLK: - return 25000000; + return 27000000; case OSC_32K_CLK: - return 32000; + return 32768; case ARM_PLL_CLK: return decode_frac_pll(root_src); case SYSTEM_PLL1_800M_CLK: From e8f37f4203983f75cadd857c9c7e6d6477bf3e54 Mon Sep 17 00:00:00 2001 From: Jagan Teki Date: Wed, 9 Jan 2019 16:58:39 +0530 Subject: [PATCH 33/45] mmc: sunxi: Fix mmc clocks for DM_MMC Existing clock configure code has been followed based on the legacy MMC dt node definitions and it cannot work with recent dts(i) sync from Linux. So, add clock configure code for Allwinner platforms which support DM_MMC and eventually this will drop once CLK support is in Mainline. Fixes: 3c92cca3cda0 ("ARM: dts: sun4i: Update A10 dts(i) files from Linux-v4.18-rc3") Signed-off-by: Jagan Teki Tested-by: Priit Laes # Gemei G9 A10 Tablet Tested-by: Marek Kraus # A10-OLinuXino-Lime --- drivers/mmc/sunxi_mmc.c | 50 ++++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/drivers/mmc/sunxi_mmc.c b/drivers/mmc/sunxi_mmc.c index 9bf040cb40..302332bf97 100644 --- a/drivers/mmc/sunxi_mmc.c +++ b/drivers/mmc/sunxi_mmc.c @@ -19,6 +19,13 @@ #include #include +#ifdef CONFIG_DM_MMC +struct sunxi_mmc_variant { + u16 gate_offset; + u16 mclk_offset; +}; +#endif + struct sunxi_mmc_plat { struct mmc_config cfg; struct mmc mmc; @@ -32,6 +39,9 @@ struct sunxi_mmc_priv { int cd_inverted; /* Inverted Card Detect */ struct sunxi_mmc *reg; struct mmc_config cfg; +#ifdef CONFIG_DM_MMC + const struct sunxi_mmc_variant *variant; +#endif }; #if !CONFIG_IS_ENABLED(DM_MMC) @@ -599,7 +609,7 @@ static int sunxi_mmc_probe(struct udevice *dev) struct sunxi_mmc_priv *priv = dev_get_priv(dev); struct mmc_config *cfg = &plat->cfg; struct ofnode_phandle_args args; - u32 *gate_reg; + u32 *gate_reg, *ccu_reg; int bus_width, ret; cfg->name = dev->name; @@ -618,21 +628,21 @@ static int sunxi_mmc_probe(struct udevice *dev) cfg->f_max = 52000000; priv->reg = (void *)dev_read_addr(dev); + priv->variant = + (const struct sunxi_mmc_variant *)dev_get_driver_data(dev); /* We don't have a sunxi clock driver so find the clock address here */ ret = dev_read_phandle_with_args(dev, "clocks", "#clock-cells", 0, 1, &args); if (ret) return ret; - priv->mclkreg = (u32 *)ofnode_get_addr(args.node); + ccu_reg = (u32 *)ofnode_get_addr(args.node); - ret = dev_read_phandle_with_args(dev, "clocks", "#clock-cells", 0, - 0, &args); - if (ret) - return ret; - gate_reg = (u32 *)ofnode_get_addr(args.node); - setbits_le32(gate_reg, 1 << args.args[0]); - priv->mmc_no = args.args[0] - 8; + priv->mmc_no = ((uintptr_t)priv->reg - SUNXI_MMC0_BASE) / 0x1000; + priv->mclkreg = (void *)ccu_reg + + (priv->variant->mclk_offset + (priv->mmc_no * 4)); + gate_reg = (void *)ccu_reg + priv->variant->gate_offset; + setbits_le32(gate_reg, BIT(AHB_GATE_OFFSET_MMC(priv->mmc_no))); ret = mmc_set_mod_clk(priv, 24000000); if (ret) @@ -665,11 +675,25 @@ static int sunxi_mmc_bind(struct udevice *dev) return mmc_bind(dev, &plat->mmc, &plat->cfg); } +static const struct sunxi_mmc_variant sun4i_a10_variant = { + .gate_offset = 0x60, + .mclk_offset = 0x88, +}; + static const struct udevice_id sunxi_mmc_ids[] = { - { .compatible = "allwinner,sun4i-a10-mmc" }, - { .compatible = "allwinner,sun5i-a13-mmc" }, - { .compatible = "allwinner,sun7i-a20-mmc" }, - { } + { + .compatible = "allwinner,sun4i-a10-mmc", + .data = (ulong)&sun4i_a10_variant, + }, + { + .compatible = "allwinner,sun5i-a13-mmc", + .data = (ulong)&sun4i_a10_variant, + }, + { + .compatible = "allwinner,sun7i-a20-mmc", + .data = (ulong)&sun4i_a10_variant, + }, + { /* sentinel */ } }; U_BOOT_DRIVER(sunxi_mmc_drv) = { From 801f1fa44275e274e33bdfc7fb76535cc6118d61 Mon Sep 17 00:00:00 2001 From: Jean-Jacques Hiblot Date: Sat, 15 Dec 2018 17:43:27 +0100 Subject: [PATCH 34/45] dm: usb: udc: Use SEQ_ALIAS to index the USB gadget ports dfu, fastbot and other usb gadget commands take the USB port index as a parameter. Currently this index is assigned in the order of the driver bindings. Changing this behavior using the SEQ_ALIAS feature. This option assign to the device a SEQ number based on its alias (if it exists) To use it we must set the DM_UC_FLAG_SEQ_ALIAS flag and follow the existing naming convention: use "usb" for the name of the gadget UCLASS_DRIVER (same as for the UCLASS_USB). If no alias is provided, then the index falls back to the order in which the bindings took place. Signed-off-by: Jean-Jacques Hiblot Reported-by: Sam Protsenko Reviewed-by: Sam Protsenko Tested-by: Sam Protsenko --- drivers/usb/gadget/udc/udc-uclass.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/usb/gadget/udc/udc-uclass.c b/drivers/usb/gadget/udc/udc-uclass.c index 062051857a..e9f8f5f246 100644 --- a/drivers/usb/gadget/udc/udc-uclass.c +++ b/drivers/usb/gadget/udc/udc-uclass.c @@ -20,7 +20,7 @@ int usb_gadget_initialize(int index) return -EINVAL; if (dev_array[index]) return 0; - ret = uclass_get_device(UCLASS_USB_GADGET_GENERIC, index, &dev); + ret = uclass_get_device_by_seq(UCLASS_USB_GADGET_GENERIC, index, &dev); if (!dev || ret) { pr_err("No USB device found\n"); return -ENODEV; @@ -54,5 +54,6 @@ int usb_gadget_handle_interrupts(int index) UCLASS_DRIVER(usb_gadget_generic) = { .id = UCLASS_USB_GADGET_GENERIC, - .name = "usb_gadget_generic", + .name = "usb", + .flags = DM_UC_FLAG_SEQ_ALIAS, }; From b975a52e0240ba9e9cfc6fff8f167bc6556f52e9 Mon Sep 17 00:00:00 2001 From: Jean-Jacques Hiblot Date: Sat, 15 Dec 2018 17:43:28 +0100 Subject: [PATCH 35/45] ARM: dts: define USB aliases for all omap5 platforms This allows us to properly map the USB controller indexes Tested on dra76 evm, am572 evm Signed-off-by: Jean-Jacques Hiblot --- arch/arm/dts/omap5-u-boot.dtsi | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/arm/dts/omap5-u-boot.dtsi b/arch/arm/dts/omap5-u-boot.dtsi index 1eb50cd438..54a7285e6e 100644 --- a/arch/arm/dts/omap5-u-boot.dtsi +++ b/arch/arm/dts/omap5-u-boot.dtsi @@ -12,6 +12,11 @@ tick-timer = &timer2; }; + aliases { + usb0 = &usb1; + usb1 = &usb2; + }; + ocp { u-boot,dm-spl; From f811e9763f4b6f6f5e3fe9c2fa30d2b6c62d289e Mon Sep 17 00:00:00 2001 From: Jean-Jacques Hiblot Date: Thu, 10 Jan 2019 15:44:13 +0100 Subject: [PATCH 36/45] Kconfig: rename CONFIG_SPL_USB_GADGET_SUPPORT as CONFIG_SPL_USB_GADGET The SPL option for USB gadget should be named after the option for u-boot (CONFIG_USB_GADGET) Signed-off-by: Jean-Jacques Hiblot --- arch/arm/mach-imx/mx6/Kconfig | 2 +- arch/arm/mach-imx/spl.c | 2 +- common/spl/Kconfig | 4 ++-- configs/am335x_boneblack_vboot_defconfig | 2 +- configs/am335x_evm_usbspl_defconfig | 2 +- configs/am43xx_evm_defconfig | 2 +- configs/am43xx_hs_evm_defconfig | 2 +- configs/apalis_imx6_defconfig | 2 +- configs/colibri_imx6_defconfig | 2 +- configs/display5_factory_defconfig | 2 +- configs/imx6q_logic_defconfig | 2 +- configs/mx6memcal_defconfig | 2 +- configs/mx6sabresd_defconfig | 2 +- configs/pico-hobbit-imx6ul_defconfig | 2 +- configs/pico-hobbit-imx7d_defconfig | 2 +- configs/pico-imx6ul_defconfig | 2 +- configs/pico-imx7d_defconfig | 2 +- configs/pico-pi-imx6ul_defconfig | 2 +- configs/pico-pi-imx7d_defconfig | 2 +- drivers/Makefile | 6 +++--- drivers/usb/gadget/Makefile | 2 +- scripts/Makefile.spl | 2 +- 22 files changed, 25 insertions(+), 25 deletions(-) diff --git a/arch/arm/mach-imx/mx6/Kconfig b/arch/arm/mach-imx/mx6/Kconfig index e7cce46e03..3d56346ccb 100644 --- a/arch/arm/mach-imx/mx6/Kconfig +++ b/arch/arm/mach-imx/mx6/Kconfig @@ -263,7 +263,7 @@ config TARGET_MX6DL_MAMOJ select SPL_PINCTRL if SPL select SPL_SEPARATE_BSS if SPL select SPL_SERIAL_SUPPORT if SPL - select SPL_USB_GADGET_SUPPORT if SPL + select SPL_USB_GADGET if SPL select SPL_USB_HOST_SUPPORT if SPL select SPL_USB_SDP_SUPPORT if SPL select SPL_WATCHDOG_SUPPORT if SPL diff --git a/arch/arm/mach-imx/spl.c b/arch/arm/mach-imx/spl.c index 58a92278df..397d6d4a91 100644 --- a/arch/arm/mach-imx/spl.c +++ b/arch/arm/mach-imx/spl.c @@ -154,7 +154,7 @@ u32 spl_boot_device(void) } #endif /* CONFIG_MX7 || CONFIG_IMX8M */ -#ifdef CONFIG_SPL_USB_GADGET_SUPPORT +#ifdef CONFIG_SPL_USB_GADGET int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name) { put_unaligned(CONFIG_USB_GADGET_PRODUCT_NUM + 0xfff, &dev->idProduct); diff --git a/common/spl/Kconfig b/common/spl/Kconfig index 35472f4a92..37ecbc6b1c 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -776,13 +776,13 @@ config SPL_USB_SUPPORT config options. This enables loading from USB using a configured device. -config SPL_USB_GADGET_SUPPORT +config SPL_USB_GADGET bool "Suppport USB Gadget drivers" help Enable USB Gadget API which allows to enable USB device functions in SPL. -if SPL_USB_GADGET_SUPPORT +if SPL_USB_GADGET config SPL_USB_ETHER bool "Support USB Ethernet drivers" diff --git a/configs/am335x_boneblack_vboot_defconfig b/configs/am335x_boneblack_vboot_defconfig index c62e8322fb..f455b01e1e 100644 --- a/configs/am335x_boneblack_vboot_defconfig +++ b/configs/am335x_boneblack_vboot_defconfig @@ -16,7 +16,7 @@ CONFIG_SPL_MUSB_NEW_SUPPORT=y CONFIG_SPL_NET_SUPPORT=y CONFIG_SPL_NET_VCI_STRING="AM33xx U-Boot SPL" CONFIG_SPL_OS_BOOT=y -CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_GADGET=y CONFIG_SPL_USB_ETHER=y CONFIG_AUTOBOOT_KEYED=y CONFIG_AUTOBOOT_PROMPT="Press SPACE to abort autoboot in %d seconds\n" diff --git a/configs/am335x_evm_usbspl_defconfig b/configs/am335x_evm_usbspl_defconfig index 1c315025d1..bda1785e7e 100644 --- a/configs/am335x_evm_usbspl_defconfig +++ b/configs/am335x_evm_usbspl_defconfig @@ -16,7 +16,7 @@ CONFIG_SPL_MUSB_NEW_SUPPORT=y CONFIG_SPL_NET_SUPPORT=y CONFIG_SPL_NET_VCI_STRING="AM335x U-Boot SPL" CONFIG_SPL_OS_BOOT=y -CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_GADGET=y CONFIG_SPL_USB_ETHER=y # CONFIG_SPL_YMODEM_SUPPORT is not set CONFIG_CMD_SPL=y diff --git a/configs/am43xx_evm_defconfig b/configs/am43xx_evm_defconfig index 481aa4fad9..e3464145eb 100644 --- a/configs/am43xx_evm_defconfig +++ b/configs/am43xx_evm_defconfig @@ -16,7 +16,7 @@ CONFIG_SPL_MTD_SUPPORT=y CONFIG_SPL_NET_SUPPORT=y CONFIG_SPL_NET_VCI_STRING="AM43xx U-Boot SPL" CONFIG_SPL_OS_BOOT=y -CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_GADGET=y CONFIG_SPL_USB_ETHER=y CONFIG_CMD_SPL=y CONFIG_CMD_SPL_NAND_OFS=0x00100000 diff --git a/configs/am43xx_hs_evm_defconfig b/configs/am43xx_hs_evm_defconfig index 5d98e0edee..99e4ccb592 100644 --- a/configs/am43xx_hs_evm_defconfig +++ b/configs/am43xx_hs_evm_defconfig @@ -25,7 +25,7 @@ CONFIG_SPL_NET_SUPPORT=y CONFIG_SPL_NET_VCI_STRING="AM43xx U-Boot SPL" CONFIG_SPL_USB_HOST_SUPPORT=y CONFIG_SPL_USB_SUPPORT=y -CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_GADGET=y CONFIG_SPL_USB_ETHER=y # CONFIG_CMD_FLASH is not set CONFIG_CMD_NAND=y diff --git a/configs/apalis_imx6_defconfig b/configs/apalis_imx6_defconfig index 133fc1a4db..e02d9bc7de 100644 --- a/configs/apalis_imx6_defconfig +++ b/configs/apalis_imx6_defconfig @@ -23,7 +23,7 @@ CONFIG_BOARD_EARLY_INIT_F=y CONFIG_SPL_DMA_SUPPORT=y CONFIG_SPL_I2C_SUPPORT=y CONFIG_SPL_USB_HOST_SUPPORT=y -CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_GADGET=y CONFIG_SPL_USB_SDP_SUPPORT=y CONFIG_HUSH_PARSER=y CONFIG_SYS_PROMPT="Apalis iMX6 # " diff --git a/configs/colibri_imx6_defconfig b/configs/colibri_imx6_defconfig index d86c0872b4..68f0746657 100644 --- a/configs/colibri_imx6_defconfig +++ b/configs/colibri_imx6_defconfig @@ -23,7 +23,7 @@ CONFIG_BOARD_EARLY_INIT_F=y CONFIG_SPL_DMA_SUPPORT=y CONFIG_SPL_I2C_SUPPORT=y CONFIG_SPL_USB_HOST_SUPPORT=y -CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_GADGET=y CONFIG_SPL_USB_SDP_SUPPORT=y CONFIG_HUSH_PARSER=y CONFIG_SYS_PROMPT="Colibri iMX6 # " diff --git a/configs/display5_factory_defconfig b/configs/display5_factory_defconfig index 6ef85e246c..4c73a3a246 100644 --- a/configs/display5_factory_defconfig +++ b/configs/display5_factory_defconfig @@ -25,7 +25,7 @@ CONFIG_SPL_I2C_SUPPORT=y CONFIG_SPL_OS_BOOT=y CONFIG_SPL_SPI_LOAD=y CONFIG_SPL_USB_HOST_SUPPORT=y -CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_GADGET=y CONFIG_SPL_USB_SDP_SUPPORT=y CONFIG_SPL_WATCHDOG_SUPPORT=y CONFIG_HUSH_PARSER=y diff --git a/configs/imx6q_logic_defconfig b/configs/imx6q_logic_defconfig index 036069a437..46312a0ece 100644 --- a/configs/imx6q_logic_defconfig +++ b/configs/imx6q_logic_defconfig @@ -24,7 +24,7 @@ CONFIG_SPL_I2C_SUPPORT=y CONFIG_SPL_NAND_SUPPORT=y CONFIG_SPL_OS_BOOT=y CONFIG_SPL_USB_HOST_SUPPORT=y -CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_GADGET=y CONFIG_SPL_USB_SDP_SUPPORT=y CONFIG_SPL_WATCHDOG_SUPPORT=y CONFIG_SYS_PROMPT="i.MX6 Logic # " diff --git a/configs/mx6memcal_defconfig b/configs/mx6memcal_defconfig index 7356debc57..e9e1fc2635 100644 --- a/configs/mx6memcal_defconfig +++ b/configs/mx6memcal_defconfig @@ -11,7 +11,7 @@ CONFIG_NR_DRAM_BANKS=1 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,SPL,MX6QDL" CONFIG_SUPPORT_RAW_INITRD=y CONFIG_SPL_USB_HOST_SUPPORT=y -CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_GADGET=y CONFIG_SPL_USB_ETHER=y CONFIG_SPL_USB_SDP_SUPPORT=y CONFIG_SPL_WATCHDOG_SUPPORT=y diff --git a/configs/mx6sabresd_defconfig b/configs/mx6sabresd_defconfig index e0202ef57d..1857c189e3 100644 --- a/configs/mx6sabresd_defconfig +++ b/configs/mx6sabresd_defconfig @@ -19,7 +19,7 @@ CONFIG_SPL_EXT_SUPPORT=y CONFIG_SPL_I2C_SUPPORT=y CONFIG_SPL_OS_BOOT=y CONFIG_SPL_USB_HOST_SUPPORT=y -CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_GADGET=y CONFIG_SPL_USB_SDP_SUPPORT=y CONFIG_SPL_WATCHDOG_SUPPORT=y CONFIG_HUSH_PARSER=y diff --git a/configs/pico-hobbit-imx6ul_defconfig b/configs/pico-hobbit-imx6ul_defconfig index e5713d7924..299eb37c12 100644 --- a/configs/pico-hobbit-imx6ul_defconfig +++ b/configs/pico-hobbit-imx6ul_defconfig @@ -18,7 +18,7 @@ CONFIG_DEFAULT_FDT_FILE="imx6ul-pico-hobbit.dtb" CONFIG_BOARD_EARLY_INIT_F=y CONFIG_SPL_I2C_SUPPORT=y CONFIG_SPL_USB_HOST_SUPPORT=y -CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_GADGET=y CONFIG_SPL_USB_SDP_SUPPORT=y CONFIG_CMD_BOOTMENU=y CONFIG_CMD_MEMTEST=y diff --git a/configs/pico-hobbit-imx7d_defconfig b/configs/pico-hobbit-imx7d_defconfig index 0afc897ed9..4fe7beeaec 100644 --- a/configs/pico-hobbit-imx7d_defconfig +++ b/configs/pico-hobbit-imx7d_defconfig @@ -18,7 +18,7 @@ CONFIG_BOOTCOMMAND="run findfdt; run finduuid; run distro_bootcmd" CONFIG_DEFAULT_FDT_FILE="imx7d-pico-hobbit.dtb" CONFIG_SPL_I2C_SUPPORT=y CONFIG_SPL_USB_HOST_SUPPORT=y -CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_GADGET=y CONFIG_SPL_USB_SDP_SUPPORT=y # CONFIG_CMD_BOOTD is not set CONFIG_CMD_BOOTMENU=y diff --git a/configs/pico-imx6ul_defconfig b/configs/pico-imx6ul_defconfig index 907ccee77b..0f6cf9353a 100644 --- a/configs/pico-imx6ul_defconfig +++ b/configs/pico-imx6ul_defconfig @@ -18,7 +18,7 @@ CONFIG_DEFAULT_FDT_FILE="ask" CONFIG_BOARD_EARLY_INIT_F=y CONFIG_SPL_I2C_SUPPORT=y CONFIG_SPL_USB_HOST_SUPPORT=y -CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_GADGET=y CONFIG_SPL_USB_SDP_SUPPORT=y CONFIG_CMD_BOOTMENU=y CONFIG_CMD_SPL=y diff --git a/configs/pico-imx7d_defconfig b/configs/pico-imx7d_defconfig index 19adeb35e1..542fcd4289 100644 --- a/configs/pico-imx7d_defconfig +++ b/configs/pico-imx7d_defconfig @@ -18,7 +18,7 @@ CONFIG_BOOTCOMMAND="run findfdt; run finduuid; run distro_bootcmd" CONFIG_DEFAULT_FDT_FILE="ask" CONFIG_SPL_I2C_SUPPORT=y CONFIG_SPL_USB_HOST_SUPPORT=y -CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_GADGET=y CONFIG_SPL_USB_SDP_SUPPORT=y # CONFIG_CMD_BOOTD is not set CONFIG_CMD_BOOTMENU=y diff --git a/configs/pico-pi-imx6ul_defconfig b/configs/pico-pi-imx6ul_defconfig index 3adccbb3ea..9049a49ee0 100644 --- a/configs/pico-pi-imx6ul_defconfig +++ b/configs/pico-pi-imx6ul_defconfig @@ -18,7 +18,7 @@ CONFIG_DEFAULT_FDT_FILE="imx6ul-pico-pi.dtb" CONFIG_BOARD_EARLY_INIT_F=y CONFIG_SPL_I2C_SUPPORT=y CONFIG_SPL_USB_HOST_SUPPORT=y -CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_GADGET=y CONFIG_SPL_USB_SDP_SUPPORT=y CONFIG_CMD_BOOTMENU=y CONFIG_CMD_MEMTEST=y diff --git a/configs/pico-pi-imx7d_defconfig b/configs/pico-pi-imx7d_defconfig index 1558739e30..a2d857eeb8 100644 --- a/configs/pico-pi-imx7d_defconfig +++ b/configs/pico-pi-imx7d_defconfig @@ -18,7 +18,7 @@ CONFIG_BOOTCOMMAND="run findfdt; run finduuid; run distro_bootcmd" CONFIG_DEFAULT_FDT_FILE="imx7d-pico-pi.dtb" CONFIG_SPL_I2C_SUPPORT=y CONFIG_SPL_USB_HOST_SUPPORT=y -CONFIG_SPL_USB_GADGET_SUPPORT=y +CONFIG_SPL_USB_GADGET=y CONFIG_SPL_USB_SDP_SUPPORT=y # CONFIG_CMD_BOOTD is not set CONFIG_CMD_BOOTMENU=y diff --git a/drivers/Makefile b/drivers/Makefile index 8c53e05d2f..4105864e2b 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -47,9 +47,9 @@ obj-$(CONFIG_SPL_ETH_SUPPORT) += net/ obj-$(CONFIG_SPL_ETH_SUPPORT) += net/phy/ obj-$(CONFIG_SPL_USB_ETHER) += net/phy/ obj-$(CONFIG_SPL_MUSB_NEW_SUPPORT) += usb/musb-new/ -obj-$(CONFIG_SPL_USB_GADGET_SUPPORT) += usb/gadget/ -obj-$(CONFIG_SPL_USB_GADGET_SUPPORT) += usb/common/ -obj-$(CONFIG_SPL_USB_GADGET_SUPPORT) += usb/gadget/udc/ +obj-$(CONFIG_SPL_USB_GADGET) += usb/gadget/ +obj-$(CONFIG_SPL_USB_GADGET) += usb/common/ +obj-$(CONFIG_SPL_USB_GADGET) += usb/gadget/udc/ obj-$(CONFIG_SPL_DFU_SUPPORT) += dfu/ obj-$(CONFIG_SPL_WATCHDOG_SUPPORT) += watchdog/ obj-$(CONFIG_SPL_USB_HOST_SUPPORT) += usb/host/ diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile index b74c1fdce9..01e2b3abf2 100644 --- a/drivers/usb/gadget/Makefile +++ b/drivers/usb/gadget/Makefile @@ -7,7 +7,7 @@ obj-$(CONFIG_USB_GADGET) += epautoconf.o config.o usbstring.o obj-$(CONFIG_USB_ETHER) += epautoconf.o config.o usbstring.o ifdef CONFIG_SPL_BUILD -obj-$(CONFIG_SPL_USB_GADGET_SUPPORT) += g_dnl.o +obj-$(CONFIG_SPL_USB_GADGET) += g_dnl.o obj-$(CONFIG_SPL_DFU_SUPPORT) += f_dfu.o obj-$(CONFIG_SPL_USB_SDP_SUPPORT) += f_sdp.o endif diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 2ef19bf005..29626e0025 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -87,7 +87,7 @@ endif endif libs-y += drivers/ -libs-$(CONFIG_SPL_USB_GADGET_SUPPORT) += drivers/usb/dwc3/ +libs-$(CONFIG_SPL_USB_GADGET) += drivers/usb/dwc3/ libs-y += dts/ libs-y += fs/ libs-$(CONFIG_SPL_POST_MEM_SUPPORT) += post/drivers/ From db17a92d28bd57dfa550e2d91c594e10dd487c6b Mon Sep 17 00:00:00 2001 From: Jean-Jacques Hiblot Date: Thu, 10 Jan 2019 15:44:14 +0100 Subject: [PATCH 37/45] usb: Make compiling gadget support optional There is no need to compile and include this code if it is not used. CONFIG_USB_GADGET can be used for the purpose. Signed-off-by: Jean-Jacques Hiblot --- Makefile | 4 ++-- configs/cm_t3517_defconfig | 1 + configs/cm_t35_defconfig | 1 + configs/duovero_defconfig | 1 + configs/igep0032_defconfig | 1 + configs/igep00x0_defconfig | 1 + configs/omap3_zoom1_defconfig | 1 + configs/omap4_panda_defconfig | 1 + configs/omap4_sdp4430_defconfig | 1 + configs/spear300_usbtty_defconfig | 2 ++ configs/spear300_usbtty_nand_defconfig | 2 ++ configs/spear310_usbtty_defconfig | 2 ++ configs/spear310_usbtty_nand_defconfig | 2 ++ configs/spear310_usbtty_pnor_defconfig | 2 ++ configs/spear320_usbtty_defconfig | 2 ++ configs/spear320_usbtty_nand_defconfig | 2 ++ configs/spear320_usbtty_pnor_defconfig | 2 ++ configs/spear600_usbtty_defconfig | 2 ++ configs/spear600_usbtty_nand_defconfig | 2 ++ 19 files changed, 30 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index eeb299fc38..158355f011 100644 --- a/Makefile +++ b/Makefile @@ -712,8 +712,8 @@ libs-y += drivers/usb/dwc3/ libs-y += drivers/usb/common/ libs-y += drivers/usb/emul/ libs-y += drivers/usb/eth/ -libs-y += drivers/usb/gadget/ -libs-y += drivers/usb/gadget/udc/ +libs-$(CONFIG_USB_GADGET) += drivers/usb/gadget/ +libs-$(CONFIG_USB_GADGET) += drivers/usb/gadget/udc/ libs-y += drivers/usb/host/ libs-y += drivers/usb/musb/ libs-y += drivers/usb/musb-new/ diff --git a/configs/cm_t3517_defconfig b/configs/cm_t3517_defconfig index 0901fea638..c204a29081 100644 --- a/configs/cm_t3517_defconfig +++ b/configs/cm_t3517_defconfig @@ -54,6 +54,7 @@ CONFIG_USB=y CONFIG_USB_MUSB_HOST=y CONFIG_USB_MUSB_AM35X=y CONFIG_USB_STORAGE=y +CONFIG_USB_GADGET=y CONFIG_VIDEO_OMAP3=y CONFIG_LCD=y CONFIG_OF_LIBFDT=y diff --git a/configs/cm_t35_defconfig b/configs/cm_t35_defconfig index f1fe2d058d..a27c502489 100644 --- a/configs/cm_t35_defconfig +++ b/configs/cm_t35_defconfig @@ -56,6 +56,7 @@ CONFIG_USB_MUSB_UDC=y CONFIG_USB_OMAP3=y CONFIG_TWL4030_USB=y CONFIG_USB_STORAGE=y +CONFIG_USB_GADGET=y CONFIG_VIDEO_OMAP3=y CONFIG_LCD=y CONFIG_OF_LIBFDT=y diff --git a/configs/duovero_defconfig b/configs/duovero_defconfig index 8ea626d013..782a9dc291 100644 --- a/configs/duovero_defconfig +++ b/configs/duovero_defconfig @@ -36,5 +36,6 @@ CONFIG_USB=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_MUSB_UDC=y CONFIG_USB_OMAP3=y +CONFIG_USB_GADGET=y CONFIG_FAT_WRITE=y CONFIG_OF_LIBFDT=y diff --git a/configs/igep0032_defconfig b/configs/igep0032_defconfig index 383648789c..20d2cf5820 100644 --- a/configs/igep0032_defconfig +++ b/configs/igep0032_defconfig @@ -45,6 +45,7 @@ CONFIG_USB=y CONFIG_USB_MUSB_UDC=y CONFIG_USB_OMAP3=y CONFIG_TWL4030_USB=y +CONFIG_USB_GADGET=y CONFIG_FAT_WRITE=y CONFIG_UBIFS_SILENCE_MSG=y CONFIG_BCH=y diff --git a/configs/igep00x0_defconfig b/configs/igep00x0_defconfig index f2989e34e1..330350c32a 100644 --- a/configs/igep00x0_defconfig +++ b/configs/igep00x0_defconfig @@ -46,6 +46,7 @@ CONFIG_USB=y CONFIG_USB_MUSB_UDC=y CONFIG_USB_OMAP3=y CONFIG_TWL4030_USB=y +CONFIG_USB_GADGET=y CONFIG_FAT_WRITE=y CONFIG_UBIFS_SILENCE_MSG=y CONFIG_BCH=y diff --git a/configs/omap3_zoom1_defconfig b/configs/omap3_zoom1_defconfig index 325c0020ca..489e6a8ee0 100644 --- a/configs/omap3_zoom1_defconfig +++ b/configs/omap3_zoom1_defconfig @@ -35,5 +35,6 @@ CONFIG_USB=y CONFIG_USB_MUSB_UDC=y CONFIG_USB_OMAP3=y CONFIG_TWL4030_USB=y +CONFIG_USB_GADGET=y CONFIG_FAT_WRITE=y CONFIG_OF_LIBFDT=y diff --git a/configs/omap4_panda_defconfig b/configs/omap4_panda_defconfig index b66659f123..7ee9eea06a 100644 --- a/configs/omap4_panda_defconfig +++ b/configs/omap4_panda_defconfig @@ -36,6 +36,7 @@ CONFIG_USB=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_MUSB_UDC=y CONFIG_USB_OMAP3=y +CONFIG_USB_GADGET=y CONFIG_USB_HOST_ETHER=y CONFIG_USB_ETHER_SMSC95XX=y CONFIG_OF_LIBFDT=y diff --git a/configs/omap4_sdp4430_defconfig b/configs/omap4_sdp4430_defconfig index 6b2ea202e5..0e01c8edcb 100644 --- a/configs/omap4_sdp4430_defconfig +++ b/configs/omap4_sdp4430_defconfig @@ -33,6 +33,7 @@ CONFIG_OMAP3_SPI=y CONFIG_USB=y CONFIG_USB_MUSB_UDC=y CONFIG_USB_OMAP3=y +CONFIG_USB_GADGET=y CONFIG_FAT_WRITE=y # CONFIG_REGEX is not set CONFIG_OF_LIBFDT=y diff --git a/configs/spear300_usbtty_defconfig b/configs/spear300_usbtty_defconfig index bc0c3ec091..cb115fecb7 100644 --- a/configs/spear300_usbtty_defconfig +++ b/configs/spear300_usbtty_defconfig @@ -27,3 +27,5 @@ CONFIG_PHY_GIGE=y CONFIG_ETH_DESIGNWARE=y CONFIG_MII=y CONFIG_CONS_INDEX=0 +CONFIG_USB=y +CONFIG_USB_GADGET=y diff --git a/configs/spear300_usbtty_nand_defconfig b/configs/spear300_usbtty_nand_defconfig index 9b90cd8638..4064ba36e9 100644 --- a/configs/spear300_usbtty_nand_defconfig +++ b/configs/spear300_usbtty_nand_defconfig @@ -28,3 +28,5 @@ CONFIG_PHY_GIGE=y CONFIG_ETH_DESIGNWARE=y CONFIG_MII=y CONFIG_CONS_INDEX=0 +CONFIG_USB=y +CONFIG_USB_GADGET=y diff --git a/configs/spear310_usbtty_defconfig b/configs/spear310_usbtty_defconfig index 7786e66998..9373df83f7 100644 --- a/configs/spear310_usbtty_defconfig +++ b/configs/spear310_usbtty_defconfig @@ -27,3 +27,5 @@ CONFIG_PHY_GIGE=y CONFIG_ETH_DESIGNWARE=y CONFIG_MII=y CONFIG_CONS_INDEX=0 +CONFIG_USB=y +CONFIG_USB_GADGET=y diff --git a/configs/spear310_usbtty_nand_defconfig b/configs/spear310_usbtty_nand_defconfig index 1d41522b2a..a4f09a2735 100644 --- a/configs/spear310_usbtty_nand_defconfig +++ b/configs/spear310_usbtty_nand_defconfig @@ -28,3 +28,5 @@ CONFIG_PHY_GIGE=y CONFIG_ETH_DESIGNWARE=y CONFIG_MII=y CONFIG_CONS_INDEX=0 +CONFIG_USB=y +CONFIG_USB_GADGET=y diff --git a/configs/spear310_usbtty_pnor_defconfig b/configs/spear310_usbtty_pnor_defconfig index b5214b5d82..8263454de6 100644 --- a/configs/spear310_usbtty_pnor_defconfig +++ b/configs/spear310_usbtty_pnor_defconfig @@ -30,3 +30,5 @@ CONFIG_PHY_GIGE=y CONFIG_ETH_DESIGNWARE=y CONFIG_MII=y CONFIG_CONS_INDEX=0 +CONFIG_USB=y +CONFIG_USB_GADGET=y diff --git a/configs/spear320_usbtty_defconfig b/configs/spear320_usbtty_defconfig index 3c10f3261e..80acff0cce 100644 --- a/configs/spear320_usbtty_defconfig +++ b/configs/spear320_usbtty_defconfig @@ -27,3 +27,5 @@ CONFIG_PHY_GIGE=y CONFIG_ETH_DESIGNWARE=y CONFIG_MII=y CONFIG_CONS_INDEX=0 +CONFIG_USB=y +CONFIG_USB_GADGET=y diff --git a/configs/spear320_usbtty_nand_defconfig b/configs/spear320_usbtty_nand_defconfig index 8fb84bcc60..00534b1c24 100644 --- a/configs/spear320_usbtty_nand_defconfig +++ b/configs/spear320_usbtty_nand_defconfig @@ -28,3 +28,5 @@ CONFIG_PHY_GIGE=y CONFIG_ETH_DESIGNWARE=y CONFIG_MII=y CONFIG_CONS_INDEX=0 +CONFIG_USB=y +CONFIG_USB_GADGET=y diff --git a/configs/spear320_usbtty_pnor_defconfig b/configs/spear320_usbtty_pnor_defconfig index 2cf39b450c..916321c60c 100644 --- a/configs/spear320_usbtty_pnor_defconfig +++ b/configs/spear320_usbtty_pnor_defconfig @@ -30,3 +30,5 @@ CONFIG_PHY_GIGE=y CONFIG_ETH_DESIGNWARE=y CONFIG_MII=y CONFIG_CONS_INDEX=0 +CONFIG_USB=y +CONFIG_USB_GADGET=y diff --git a/configs/spear600_usbtty_defconfig b/configs/spear600_usbtty_defconfig index 5c7b0a8ab4..d0bdc7587d 100644 --- a/configs/spear600_usbtty_defconfig +++ b/configs/spear600_usbtty_defconfig @@ -27,3 +27,5 @@ CONFIG_PHY_GIGE=y CONFIG_ETH_DESIGNWARE=y CONFIG_MII=y CONFIG_CONS_INDEX=0 +CONFIG_USB=y +CONFIG_USB_GADGET=y diff --git a/configs/spear600_usbtty_nand_defconfig b/configs/spear600_usbtty_nand_defconfig index 078e934bba..ccbfec9298 100644 --- a/configs/spear600_usbtty_nand_defconfig +++ b/configs/spear600_usbtty_nand_defconfig @@ -28,3 +28,5 @@ CONFIG_PHY_GIGE=y CONFIG_ETH_DESIGNWARE=y CONFIG_MII=y CONFIG_CONS_INDEX=0 +CONFIG_USB=y +CONFIG_USB_GADGET=y From b3c518a88278619b1e109de114c450237d03e032 Mon Sep 17 00:00:00 2001 From: Jean-Jacques Hiblot Date: Fri, 21 Dec 2018 09:50:21 +0100 Subject: [PATCH 38/45] dm: usb: gadget: Fix boot breakage on sunxi platforms Fixes commit 013116243950 ("dm: usb: create a new UCLASS ID for USB gadget devices") The UCLASS_DRIVER for id UCLASS_USB_GADGET_GENERIC needs to be declared even for platforms that do not enable DM_USB_GADGET. Otherwise the driver for their usb peripheral controller fails to bind. Reported-by: Priit Laes Reported-by: Jagan Teki Signed-off-by: Jean-Jacques Hiblot Tested-by: Priit Laes Acked-by: Jagan Teki --- drivers/usb/gadget/udc/Makefile | 3 ++- drivers/usb/gadget/udc/udc-uclass.c | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/usb/gadget/udc/Makefile b/drivers/usb/gadget/udc/Makefile index 38ac2dd475..95dbf0c82e 100644 --- a/drivers/usb/gadget/udc/Makefile +++ b/drivers/usb/gadget/udc/Makefile @@ -6,4 +6,5 @@ ifndef CONFIG_$(SPL_)DM_USB_GADGET obj-$(CONFIG_USB_DWC3_GADGET) += udc-core.o endif -obj-$(CONFIG_$(SPL_)DM_USB_GADGET) += udc-uclass.o udc-core.o +obj-$(CONFIG_$(SPL_)DM_USB_GADGET) += udc-core.o +obj-$(CONFIG_$(SPL_)DM) += udc-uclass.o diff --git a/drivers/usb/gadget/udc/udc-uclass.c b/drivers/usb/gadget/udc/udc-uclass.c index e9f8f5f246..8d7864797a 100644 --- a/drivers/usb/gadget/udc/udc-uclass.c +++ b/drivers/usb/gadget/udc/udc-uclass.c @@ -9,6 +9,7 @@ #include #include +#if CONFIG_IS_ENABLED(DM_USB_GADGET) #define MAX_UDC_DEVICES 4 static struct udevice *dev_array[MAX_UDC_DEVICES]; int usb_gadget_initialize(int index) @@ -51,6 +52,7 @@ int usb_gadget_handle_interrupts(int index) return -EINVAL; return dm_usb_gadget_handle_interrupts(dev_array[index]); } +#endif UCLASS_DRIVER(usb_gadget_generic) = { .id = UCLASS_USB_GADGET_GENERIC, From 70cae47014c270515b2e60b81094b219eb693add Mon Sep 17 00:00:00 2001 From: Tien Fong Chee Date: Sun, 30 Dec 2018 16:13:45 +0800 Subject: [PATCH 39/45] ARM: dts: socfpga: Add missing SDMMC reset The SDMMC reset is missing from DT, so the reset manager cannot unreset the SDMMC. Add the missing DT reset entry. Signed-off-by: Tien Fong Chee --- arch/arm/dts/socfpga_arria10.dtsi | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/dts/socfpga_arria10.dtsi b/arch/arm/dts/socfpga_arria10.dtsi index 2c5249c1eb..c11a5c0cc1 100644 --- a/arch/arm/dts/socfpga_arria10.dtsi +++ b/arch/arm/dts/socfpga_arria10.dtsi @@ -660,6 +660,7 @@ fifo-depth = <0x400>; clocks = <&l4_mp_clk>, <&sdmmc_clk>; clock-names = "biu", "ciu"; + resets = <&rst SDMMC_RESET>; status = "disabled"; }; From b6a6238f0455db4ad9f447a4424cb5f56e47cd60 Mon Sep 17 00:00:00 2001 From: Lukasz Majewski Date: Wed, 9 Jan 2019 23:05:02 +0100 Subject: [PATCH 40/45] Revert "dm: pinctrl: Prevent (re-)configuring pins when already done before relocation" This reverts commit a7f4b4b344396590845e6552c82829ef68ef9f89. As reported by Alex Kiernan the above optimization introduces a regression in the below use case where: 1. Device has defined 'u-boot,dm-spl' property (@ eMMC DTS node) 2. The device downloads its MLO/SPL via UART (not eMMC - the eMMC pinmux pins are NOT probed/configured in MLO/SPL). 3. The loaded via UART MLO/SPL wants to load Linux from eMMC. In this case the DM core and pinctrl uclass checks 'u-boot,dm-spl' and don't configure pins (as it thinks that those were initialized in MLO/SPL). As we are very close to release - please revert this commit. Reported-by: Alex Kiernan Signed-off-by: Lukasz Majewski Reviewed-by: Simon Glass --- drivers/pinctrl/pinctrl-uclass.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/pinctrl/pinctrl-uclass.c b/drivers/pinctrl/pinctrl-uclass.c index c8b38d78f6..0e3260afd1 100644 --- a/drivers/pinctrl/pinctrl-uclass.c +++ b/drivers/pinctrl/pinctrl-uclass.c @@ -139,9 +139,9 @@ static int pinconfig_post_bind(struct udevice *dev) int ret; dev_for_each_subnode(node, dev) { - if (pre_reloc_only ^ ofnode_pre_reloc(node)) + if (pre_reloc_only && + !ofnode_pre_reloc(node)) continue; - /* * If this node has "compatible" property, this is not * a pin configuration node, but a normal device. skip. From d3035b856027cb9621a252aafc6316b3724d6294 Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Fri, 11 Jan 2019 09:54:44 -0500 Subject: [PATCH 41/45] Revert "fs: fat: assign rootdir sector when accessing root directory" This particular commit is causing a regression on stih410-b2260 and other platforms when reading from FAT16. Noting that I had rebased the original fix from Thomas onto then-current master, there is also question from Akashi-san if the change is still needed after other FAT fixes that have gone in. This reverts commit a68b0e11ea774492713a65d9fd5bb525fcaefff3. Reported-by: Patrice Chotard Cc: AKASHI Takahiro Cc: Thomas RIENOESSL Signed-off-by: Tom Rini --- fs/fat/fat.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/fs/fat/fat.c b/fs/fat/fat.c index ac8913e719..179bf4f3d8 100644 --- a/fs/fat/fat.c +++ b/fs/fat/fat.c @@ -736,10 +736,7 @@ static void *next_cluster(fat_itr *itr) if (itr->last_cluster) return NULL; - if (itr->fsdata->fatsize != 32 && itr->is_root) - sect = mydata->rootdir_sect; - else - sect = clust_to_sect(itr->fsdata, itr->next_clust); + sect = clust_to_sect(itr->fsdata, itr->next_clust); debug("FAT read(sect=%d), clust_size=%d, DIRENTSPERBLOCK=%zd\n", sect, itr->fsdata->clust_size, DIRENTSPERBLOCK); From cdee91a04489b78fd8122ce2099fea503f4efbf8 Mon Sep 17 00:00:00 2001 From: Alex Elder Date: Tue, 18 Dec 2018 11:08:18 +0800 Subject: [PATCH 42/45] poplar: save environment at a different offset Change CONFIG_ENV_OFFSET for Poplar to be 1MB further into the eMMC than before. This puts it immediately prior to the space we are reserving offset 0x200000-0x400000 for UEFI to save its persistent data. Define CONFIG_ENV_SIZE as a product of env_mmc_nblks and the sector size, like CONFIG_ENV_OFFSET is. Signed-off-by: Alex Elder Signed-off-by: Shawn Guo --- include/configs/poplar.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/configs/poplar.h b/include/configs/poplar.h index 0a126002d7..6b93b76ab9 100644 --- a/include/configs/poplar.h +++ b/include/configs/poplar.h @@ -44,7 +44,7 @@ #define CONFIG_EXTRA_ENV_SETTINGS \ "loader_mmc_blknum=0x0\0" \ "loader_mmc_nblks=0x780\0" \ - "env_mmc_blknum=0x780\0" \ + "env_mmc_blknum=0xf80\0" \ "env_mmc_nblks=0x80\0" \ "kernel_addr_r=0x30000000\0" \ "pxefile_addr_r=0x32000000\0" \ @@ -57,8 +57,8 @@ /* Command line configuration */ #define CONFIG_SYS_MMC_ENV_DEV 0 -#define CONFIG_ENV_OFFSET (0x780 * 512) /* env_mmc_blknum */ -#define CONFIG_ENV_SIZE 0x10000 /* env_mmc_nblks bytes */ +#define CONFIG_ENV_OFFSET (0xf80 * 512) /* env_mmc_blknum bytes */ +#define CONFIG_ENV_SIZE (0x80 * 512) /* env_mmc_nblks bytes */ /* Monitor Command Prompt */ #define CONFIG_SYS_CBSIZE 512 From 789ee25de60f28cf4b40b394e4063e6857c861cd Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Sat, 29 Dec 2018 10:02:24 -0200 Subject: [PATCH 43/45] imx8mq_evk_defconfig: Move file system options to Kconfig Chris Spencer reports that when enabling ext4 read support without also enabling write support the following error is seen: fs/fs.c:198:12: error: 'ext4_write_file' undeclared here (not in a function); did you mean 'ext4_read_file'? .write = ext4_write_file, ^~~~~~~~~~~~~~~ Fix this problem by moving these options to Kconfig. Reported-by: Chris Spencer Acked-by: Peng Fan Signed-off-by: Fabio Estevam --- configs/imx8mq_evk_defconfig | 5 +++++ include/configs/imx8mq_evk.h | 6 ------ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/configs/imx8mq_evk_defconfig b/configs/imx8mq_evk_defconfig index 4588f5bddc..f82ef3881f 100644 --- a/configs/imx8mq_evk_defconfig +++ b/configs/imx8mq_evk_defconfig @@ -12,6 +12,11 @@ CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/imx8m/imximage.cfg" CONFIG_SPL_BOARD_INIT=y CONFIG_HUSH_PARSER=y +CONFIG_DOS_PARTITION=y +CONFIG_CMD_EXT2=y +CONFIG_CMD_EXT4=y +CONFIG_CMD_EXT4_WRITE=y +CONFIG_CMD_FAT=y CONFIG_CMD_GPIO=y CONFIG_CMD_I2C=y CONFIG_CMD_CACHE=y diff --git a/include/configs/imx8mq_evk.h b/include/configs/imx8mq_evk.h index 35f81152f2..f0430224cb 100644 --- a/include/configs/imx8mq_evk.h +++ b/include/configs/imx8mq_evk.h @@ -226,12 +226,6 @@ #define CONFIG_SYS_FSL_USDHC_NUM 2 #define CONFIG_SYS_FSL_ESDHC_ADDR 0 -#define CONFIG_DOS_PARTITION -#define CONFIG_CMD_EXT2 -#define CONFIG_CMD_EXT4 -#define CONFIG_CMD_EXT4_WRITE -#define CONFIG_CMD_FAT - #define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */ #define CONFIG_SYS_MMC_IMG_LOAD_PART 1 From 29c2edb42bf3641943a48781ae101c513ede7a88 Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Mon, 19 Nov 2018 10:31:53 -0200 Subject: [PATCH 44/45] mmc: fsl_esdhc: Avoid infinite loop in esdhc_send_cmd_common() The following hang is observed on a Hummingboard 2 MicroSOM i2eX iMX6D - rev 1.3 with no eMMC populated on board: U-Boot SPL 2018.11+gf6206f8587 (Nov 16 2018 - 00:56:34 +0000) Trying to boot from MMC1 U-Boot 2018.11+gf6206f8587 (Nov 16 2018 - 00:56:34 +0000) CPU: Freescale i.MX6D rev1.5 996 MHz (running at 792 MHz) CPU: Extended Commercial temperature grade (-20C to 105C) at 33C Reset cause: POR Board: MX6 HummingBoard2 DRAM: 1 GiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 Loading Environment from MMC... *** Warning - bad CRC, using default environment No panel detected: default to HDMI Display: HDMI (1024x768) In: serial Out: serial Err: serial ---> hangs which is caused by the following infinite loop inside esdhc_send_cmd_common() while (!(esdhc_read32(®s->irqstat) & flags)) ; Instead of looping forever, provide an exit path so that a timeout error can be propagated in the case irqstat does not report any interrupts, which may happen when no eMMC is populated on board. Reported-by: Ricardo Salveti Signed-off-by: Fabio Estevam Tested-by: Peter Robinson Tested-by: Ricardo Salveti --- drivers/mmc/fsl_esdhc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c index 74007e2ad4..99e5882866 100644 --- a/drivers/mmc/fsl_esdhc.c +++ b/drivers/mmc/fsl_esdhc.c @@ -396,6 +396,7 @@ static int esdhc_send_cmd_common(struct fsl_esdhc_priv *priv, struct mmc *mmc, uint irqstat; u32 flags = IRQSTAT_CC | IRQSTAT_CTOE; struct fsl_esdhc *regs = priv->esdhc_regs; + unsigned long start; #ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC111 if (cmd->cmdidx == MMC_CMD_STOP_TRANSMISSION) @@ -453,8 +454,13 @@ static int esdhc_send_cmd_common(struct fsl_esdhc_priv *priv, struct mmc *mmc, flags = IRQSTAT_BRR; /* Wait for the command to complete */ - while (!(esdhc_read32(®s->irqstat) & flags)) - ; + start = get_timer(0); + while (!(esdhc_read32(®s->irqstat) & flags)) { + if (get_timer(start) > 1000) { + err = -ETIMEDOUT; + goto out; + } + } irqstat = esdhc_read32(®s->irqstat); From d3689267f92c5956e09cc7d1baa4700141662bff Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Mon, 14 Jan 2019 17:02:36 -0500 Subject: [PATCH 45/45] Prepare v2019.01 Signed-off-by: Tom Rini --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index aa1d72466c..6aa08964ff 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ VERSION = 2019 PATCHLEVEL = 01 SUBLEVEL = -EXTRAVERSION = -rc3 +EXTRAVERSION = NAME = # *DOCUMENTATION*