From eb1e8358f49ed6d78b5395857767296934decd3b Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Wed, 13 Mar 2019 00:25:19 -0700 Subject: usb: dwc3: Toggle GCTL.CORESOFTRESET as a first step Toggle GCTL.CORESOFTRESET before trying to access any of the block's registers. Without this additional step, first read of DWC3_GHWPARAMS* that follows results in assertion of GSTS.CSRTIMEOUT and IP block stuck in a non-functional state. Note that all above has only been observerd on i.MX8MQ (ZII Zest board) for USB1 controller. USB2 doesn't seem to be affected by this. Signed-off-by: Andrey Smirnov Signed-off-by: Sascha Hauer --- drivers/usb/dwc3/core.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'drivers') diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 2e7031a348..60fd6318db 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -663,6 +663,25 @@ static void dwc3_check_params(struct dwc3 *dwc) } } +static void dwc3_coresoft_reset(struct dwc3 *dwc) +{ + u32 reg; + + reg = dwc3_readl(dwc->regs, DWC3_GCTL); + reg |= DWC3_GCTL_CORESOFTRESET; + dwc3_writel(dwc->regs, DWC3_GCTL, reg); + + /* + * Similar reset sequence in U-Boot has a 100ms delay here. In + * practice reset sequence seem to work as expected even + * without a delay. + */ + + reg = dwc3_readl(dwc->regs, DWC3_GCTL); + reg &= ~DWC3_GCTL_CORESOFTRESET; + dwc3_writel(dwc->regs, DWC3_GCTL, reg); +} + static int dwc3_probe(struct device_d *dev) { struct dwc3 *dwc; @@ -695,6 +714,8 @@ static int dwc3_probe(struct device_d *dev) if (ret) return ret; + dwc3_coresoft_reset(dwc); + dwc3_cache_hwparams(dwc); ret = dwc3_core_init(dwc); -- cgit v1.2.3 From bb414a64b1181cdccf47090a40a4a7cadaa07bd9 Mon Sep 17 00:00:00 2001 From: Alexander Shiyan Date: Fri, 15 Mar 2019 10:22:28 +0300 Subject: drivers: video: Fix parsing oftree timings This patch fixes the parsing of the display timings options if the range is specified (min/typ/max). Also fixed the double release of memory in case of failure. barebox 2018.12.0-00341-g23b28d33a-dirty #6 Fri Mar 15 09:20:25 MSK 2019 Board: Mega-Milas Informer i.MX6 detected i.MX6 Quad revision 1.2 i.MX reset reason POR (SRSR: 0x00000001) mdio_bus: miibus0: probed eth0: got preset MAC address: 50:2d:f4:07:71:0b nand: NAND device: Manufacturer ID: 0xec, Chip ID: 0xd3 (Samsung NAND 1GiB 3,3V 8-bit), 1024MiB, page size: 2048, OOB size: 64 Bad block table found at page 524224, version 0x01 Bad block table found at page 524160, version 0x01 m25p80 flash@00: n25q128a13 (16384 Kbytes) imx-usb 2184000.usb@2184000: USB EHCI 1.00 imx-usb 2184200.usb@2184200: USB EHCI 1.00 imx-esdhc 2198000.usdhc@2198000: registered as mmc2 imx-ipuv3 2400000.ipu@2400000: IPUv3H probed ERROR: /ldb/lvds-channel@0/display-timings/PH320240T: illegal timing specification in clock-frequency ERROR: /ldb/lvds-channel@0/display-timings/PH320240T: error reading timing properties ERROR: /ldb/lvds-channel@0: error in timing 1 ERROR: unable to handle NULL pointer dereference at address 0x00000013 pc : [<4fe05742>] lr : [<4fe05849>] sp : 4ffefa80 ip : ffffffff fp : 2fefe84c r10: 2ff656e8 r9 : 0000002c r8 : 2ff19630 r7 : 00000000 r6 : 0000004c r5 : 2ff65960 r4 : 00000007 r3 : 00000013 r2 : 00000000 r1 : 4fe87584 r0 : 2fefb460 Flags: nzcv IRQs off FIQs off Mode SVC_32 [<4fe05742>] (remove_free_block+0xe/0x3e) from [<4fe05849>] (block_locate_free+0x7f/0x88) [<4fe05849>] (block_locate_free+0x7f/0x88) from [<4fe0599b>] (tlsf_malloc+0x17/0x32) [<4fe0599b>] (tlsf_malloc+0x17/0x32) from [<4fe0559b>] (malloc+0x13/0x24) [<4fe0559b>] (malloc+0x13/0x24) from [<4fe3a1f3>] (strdup+0x11/0x22) [<4fe3a1f3>] (strdup+0x11/0x22) from [<4fe006f3>] (pr_puts+0x33/0x84) [<4fe006f3>] (pr_puts+0x33/0x84) from [<4fe00803>] (dev_printf+0x6f/0x8c) [<4fe00803>] (dev_printf+0x6f/0x8c) from [<00000000>] (0x0) [<4fe54715>] (unwind_backtrace+0x1/0x60) from [<4fe00de1>] (panic+0x1d/0x34) [<4fe00de1>] (panic+0x1d/0x34) from [<4fe5285d>] (do_exception+0xd/0x10) [<4fe5285d>] (do_exception+0xd/0x10) from [<4fe528bd>] (do_data_abort+0x21/0x2c) [<4fe528bd>] (do_data_abort+0x21/0x2c) from [<4fe524d4>] (do_abort_6+0x48/0x54) ### ERROR ### Please RESET the board ### Signed-off-by: Alexander Shiyan Signed-off-by: Sascha Hauer --- drivers/video/of_display_timing.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'drivers') diff --git a/drivers/video/of_display_timing.c b/drivers/video/of_display_timing.c index 20f9354a18..17d8823c46 100644 --- a/drivers/video/of_display_timing.c +++ b/drivers/video/of_display_timing.c @@ -14,7 +14,8 @@ void display_timings_release(struct display_timings *disp) { - free(disp->modes); + if (disp->modes) + free(disp->modes); free(disp); } EXPORT_SYMBOL_GPL(display_timings_release); @@ -43,7 +44,7 @@ static int parse_timing_property(const struct device_node *np, const char *name, } cells = length / sizeof(u32); - if (cells == 1) { + if ((cells == 1) || (cells == 3)) { ret = of_property_read_u32(np, name, res); } else { pr_err("%s: illegal timing specification in %s\n", @@ -129,7 +130,7 @@ struct display_timings *of_get_display_timings(struct device_node *np) if (!entry) { pr_err("%s: no timing specifications given\n", np->full_name); - goto entryfail; + goto fail; } pr_debug("%s: using %s as default timing\n", @@ -141,7 +142,7 @@ struct display_timings *of_get_display_timings(struct device_node *np) if (disp->num_modes == 0) { /* should never happen, as entry was already found above */ pr_err("%s: no timings specified\n", np->full_name); - goto entryfail; + goto fail; } disp->modes = xzalloc(sizeof(struct fb_videomode) * disp->num_modes); @@ -163,7 +164,7 @@ struct display_timings *of_get_display_timings(struct device_node *np) */ pr_err("%s: error in timing %d\n", np->full_name, disp->num_modes + 1); - goto timingfail; + goto fail; } mode->name = xstrdup(entry->name); @@ -180,10 +181,8 @@ struct display_timings *of_get_display_timings(struct device_node *np) return disp; -timingfail: +fail: display_timings_release(disp); -entryfail: - free(disp); return NULL; } -- cgit v1.2.3 From 43e02c57cfa871b43f3fcb8258c9a3e7207f968d Mon Sep 17 00:00:00 2001 From: Masahiro Yamada Date: Thu, 21 Mar 2019 11:24:55 +0900 Subject: treewide: surround Kconfig file paths with double quotes Based on Linux commit 8636a1f9677db4f883f29a072f401303acfc2edd This will be needed when you sync Kconfig with Linux 5.0 or later. Signed-off-by: Masahiro Yamada Signed-off-by: Sascha Hauer --- Kconfig | 16 ++++++------- arch/arm/Kconfig | 50 ++++++++++++++++++++--------------------- arch/arm/mach-omap/Kconfig | 2 +- arch/arm/mach-samsung/Kconfig | 4 ++-- arch/arm/mach-versatile/Kconfig | 2 +- arch/mips/Kconfig | 12 +++++----- arch/ppc/Kconfig | 4 ++-- arch/riscv/Kconfig | 2 +- arch/x86/Kconfig | 4 ++-- common/Kconfig | 4 ++-- drivers/crypto/Kconfig | 2 +- drivers/i2c/Kconfig | 6 ++--- drivers/pinctrl/Kconfig | 2 +- drivers/usb/Kconfig | 13 +++++------ drivers/video/Kconfig | 2 +- drivers/w1/Kconfig | 4 ++-- fs/Kconfig | 10 ++++----- lib/Kconfig | 10 ++++----- scripts/Kconfig | 2 +- 19 files changed, 75 insertions(+), 76 deletions(-) (limited to 'drivers') diff --git a/Kconfig b/Kconfig index 2f2f1a6e3c..29c32463fb 100644 --- a/Kconfig +++ b/Kconfig @@ -6,12 +6,12 @@ mainmenu "Barebox/$(ARCH) $(KERNELVERSION) Configuration" source "arch/$(SRCARCH)/Kconfig" -source common/Kconfig -source commands/Kconfig -source net/Kconfig -source drivers/Kconfig -source fs/Kconfig -source lib/Kconfig -source crypto/Kconfig -source firmware/Kconfig +source "common/Kconfig" +source "commands/Kconfig" +source "net/Kconfig" +source "drivers/Kconfig" +source "fs/Kconfig" +source "lib/Kconfig" +source "crypto/Kconfig" +source "firmware/Kconfig" source "scripts/Kconfig" diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 9d3f5b2ca7..6fc76129f2 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -266,31 +266,31 @@ config ARCH_QEMU endchoice -source arch/arm/cpu/Kconfig -source arch/arm/mach-at91/Kconfig -source arch/arm/mach-bcm283x/Kconfig -source arch/arm/mach-clps711x/Kconfig -source arch/arm/mach-davinci/Kconfig -source arch/arm/mach-digic/Kconfig -source arch/arm/mach-ep93xx/Kconfig -source arch/arm/mach-highbank/Kconfig -source arch/arm/mach-imx/Kconfig -source arch/arm/mach-mxs/Kconfig -source arch/arm/mach-mvebu/Kconfig -source arch/arm/mach-netx/Kconfig -source arch/arm/mach-nomadik/Kconfig -source arch/arm/mach-omap/Kconfig -source arch/arm/mach-pxa/Kconfig -source arch/arm/mach-rockchip/Kconfig -source arch/arm/mach-samsung/Kconfig -source arch/arm/mach-socfpga/Kconfig -source arch/arm/mach-versatile/Kconfig -source arch/arm/mach-vexpress/Kconfig -source arch/arm/mach-tegra/Kconfig -source arch/arm/mach-uemd/Kconfig -source arch/arm/mach-zynq/Kconfig -source arch/arm/mach-qemu/Kconfig -source arch/arm/mach-zynqmp/Kconfig +source "arch/arm/cpu/Kconfig" +source "arch/arm/mach-at91/Kconfig" +source "arch/arm/mach-bcm283x/Kconfig" +source "arch/arm/mach-clps711x/Kconfig" +source "arch/arm/mach-davinci/Kconfig" +source "arch/arm/mach-digic/Kconfig" +source "arch/arm/mach-ep93xx/Kconfig" +source "arch/arm/mach-highbank/Kconfig" +source "arch/arm/mach-imx/Kconfig" +source "arch/arm/mach-mxs/Kconfig" +source "arch/arm/mach-mvebu/Kconfig" +source "arch/arm/mach-netx/Kconfig" +source "arch/arm/mach-nomadik/Kconfig" +source "arch/arm/mach-omap/Kconfig" +source "arch/arm/mach-pxa/Kconfig" +source "arch/arm/mach-rockchip/Kconfig" +source "arch/arm/mach-samsung/Kconfig" +source "arch/arm/mach-socfpga/Kconfig" +source "arch/arm/mach-versatile/Kconfig" +source "arch/arm/mach-vexpress/Kconfig" +source "arch/arm/mach-tegra/Kconfig" +source "arch/arm/mach-uemd/Kconfig" +source "arch/arm/mach-zynq/Kconfig" +source "arch/arm/mach-qemu/Kconfig" +source "arch/arm/mach-zynqmp/Kconfig" config ARM_ASM_UNIFIED bool diff --git a/arch/arm/mach-omap/Kconfig b/arch/arm/mach-omap/Kconfig index 49ca0ee157..e9228809f0 100644 --- a/arch/arm/mach-omap/Kconfig +++ b/arch/arm/mach-omap/Kconfig @@ -193,7 +193,7 @@ config MACH_WAGO_PFC_AM35XX endif -source arch/arm/boards/phytec-som-am335x/Kconfig +source "arch/arm/boards/phytec-som-am335x/Kconfig" choice prompt "Select OMAP board" diff --git a/arch/arm/mach-samsung/Kconfig b/arch/arm/mach-samsung/Kconfig index a2ddabf589..fa1a3ddcc4 100644 --- a/arch/arm/mach-samsung/Kconfig +++ b/arch/arm/mach-samsung/Kconfig @@ -73,7 +73,7 @@ config MACH_A9M2410DEV endchoice -source arch/arm/boards/friendlyarm-mini2440/Kconfig +source "arch/arm/boards/friendlyarm-mini2440/Kconfig" endmenu @@ -106,7 +106,7 @@ endchoice menu "Board specific settings" -source arch/arm/boards/friendlyarm-tiny6410/Kconfig +source "arch/arm/boards/friendlyarm-tiny6410/Kconfig" endmenu diff --git a/arch/arm/mach-versatile/Kconfig b/arch/arm/mach-versatile/Kconfig index 3c5cced455..95172cff8c 100644 --- a/arch/arm/mach-versatile/Kconfig +++ b/arch/arm/mach-versatile/Kconfig @@ -23,6 +23,6 @@ config MACH_VERSATILEPB_ARM1176 endchoice -source arch/arm/boards/versatile/Kconfig +source "arch/arm/boards/versatile/Kconfig" endif diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index eab9452de9..a4070cfe32 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -109,12 +109,12 @@ config MACH_MIPS_XBURST select GPIOLIB endchoice -source arch/mips/mach-malta/Kconfig -source arch/mips/mach-ar231x/Kconfig -source arch/mips/mach-ath79/Kconfig -source arch/mips/mach-bcm47xx/Kconfig -source arch/mips/mach-loongson/Kconfig -source arch/mips/mach-xburst/Kconfig +source "arch/mips/mach-malta/Kconfig" +source "arch/mips/mach-ar231x/Kconfig" +source "arch/mips/mach-ath79/Kconfig" +source "arch/mips/mach-bcm47xx/Kconfig" +source "arch/mips/mach-loongson/Kconfig" +source "arch/mips/mach-xburst/Kconfig" endmenu diff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig index 7a45ced7cd..798f342fa4 100644 --- a/arch/ppc/Kconfig +++ b/arch/ppc/Kconfig @@ -18,5 +18,5 @@ config ARCH_MPC85XX bool "Freescale MPC85xx" endchoice -source arch/ppc/mach-mpc5xxx/Kconfig -source arch/ppc/mach-mpc85xx/Kconfig +source "arch/ppc/mach-mpc5xxx/Kconfig" +source "arch/ppc/mach-mpc85xx/Kconfig" diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index c435cc8a31..16c3eecce6 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -62,7 +62,7 @@ config BUILTIN_DTB_NAME string "DTB to build into the barebox image" depends on BUILTIN_DTB -source arch/riscv/mach-erizo/Kconfig +source "arch/riscv/mach-erizo/Kconfig" endmenu diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 3f91585d02..1793055ae0 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -95,5 +95,5 @@ choice endchoice -source arch/x86/boot/Kconfig -source arch/x86/mach-i386/Kconfig +source "arch/x86/boot/Kconfig" +source "arch/x86/mach-i386/Kconfig" diff --git a/common/Kconfig b/common/Kconfig index 43b657019f..76b6dd5b47 100644 --- a/common/Kconfig +++ b/common/Kconfig @@ -762,13 +762,13 @@ config PBL_CONSOLE must be running at the address it's linked at and bss must be cleared. On ARM that would be after setup_c(). -source common/ratp/Kconfig +source "common/ratp/Kconfig" config PARTITION bool prompt "Enable Partitions" -source common/partitions/Kconfig +source "common/partitions/Kconfig" config ENV_HANDLING select CRC32 diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig index d1687e3774..b2709f00f8 100644 --- a/drivers/crypto/Kconfig +++ b/drivers/crypto/Kconfig @@ -4,6 +4,6 @@ menuconfig CRYPTO_HW if CRYPTO_HW -source drivers/crypto/caam/Kconfig +source "drivers/crypto/caam/Kconfig" endif diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig index fc314ec9c6..0bd8be04e1 100644 --- a/drivers/i2c/Kconfig +++ b/drivers/i2c/Kconfig @@ -3,8 +3,8 @@ menuconfig I2C if I2C -source drivers/i2c/algos/Kconfig -source drivers/i2c/busses/Kconfig +source "drivers/i2c/algos/Kconfig" +source "drivers/i2c/busses/Kconfig" config I2C_MUX tristate "I2C bus multiplexing support" @@ -13,7 +13,7 @@ config I2C_MUX handle multiplexed I2C bus topologies, by presenting each multiplexed segment as a I2C adapter. -source drivers/i2c/muxes/Kconfig +source "drivers/i2c/muxes/Kconfig" endif diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig index 45c3b351d6..46badeee06 100644 --- a/drivers/pinctrl/Kconfig +++ b/drivers/pinctrl/Kconfig @@ -83,7 +83,7 @@ config PINCTRL_TEGRA_XUSB The pinmux controller found on the Tegra 124 line of SoCs used for the SerDes lanes. -source drivers/pinctrl/mvebu/Kconfig +source "drivers/pinctrl/mvebu/Kconfig" config PINCTRL_VF610 bool diff --git a/drivers/usb/Kconfig b/drivers/usb/Kconfig index 8ff3d18d4a..99eff1c8d2 100644 --- a/drivers/usb/Kconfig +++ b/drivers/usb/Kconfig @@ -7,21 +7,20 @@ menuconfig USB_HOST if USB_HOST -source drivers/usb/imx/Kconfig +source "drivers/usb/imx/Kconfig" source "drivers/usb/dwc3/Kconfig" -source drivers/usb/host/Kconfig +source "drivers/usb/host/Kconfig" -source drivers/usb/otg/Kconfig +source "drivers/usb/otg/Kconfig" -source drivers/usb/storage/Kconfig +source "drivers/usb/storage/Kconfig" source "drivers/usb/misc/Kconfig" endif -source drivers/usb/gadget/Kconfig - -source drivers/usb/musb/Kconfig +source "drivers/usb/gadget/Kconfig" +source "drivers/usb/musb/Kconfig" diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index 79de32cf8e..a26bace176 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -96,7 +96,7 @@ config DRIVER_VIDEO_BCM283X help Add support for the BCM283X/VideoCore frame buffer device. -source drivers/video/imx-ipu-v3/Kconfig +source "drivers/video/imx-ipu-v3/Kconfig" config DRIVER_VIDEO_SIMPLEFB bool "Simple framebuffer support" diff --git a/drivers/w1/Kconfig b/drivers/w1/Kconfig index dbc1e3c948..4a16197c69 100644 --- a/drivers/w1/Kconfig +++ b/drivers/w1/Kconfig @@ -8,8 +8,8 @@ menuconfig W1 if W1 -source drivers/w1/masters/Kconfig -source drivers/w1/slaves/Kconfig +source "drivers/w1/masters/Kconfig" +source "drivers/w1/slaves/Kconfig" config W1_DUAL_SEARCH bool "dual search" diff --git a/fs/Kconfig b/fs/Kconfig index 76a3846929..e3a95321c7 100644 --- a/fs/Kconfig +++ b/fs/Kconfig @@ -25,7 +25,7 @@ config FS_CRAMFS select ZLIB prompt "cramfs support" -source fs/ext4/Kconfig +source "fs/ext4/Kconfig" config FS_RAMFS bool @@ -70,8 +70,8 @@ config FS_EFIVARFS help This filesystem driver provides access to EFI variables. -source fs/fat/Kconfig -source fs/ubifs/Kconfig +source "fs/fat/Kconfig" +source "fs/ubifs/Kconfig" config FS_BPKFS bool @@ -106,8 +106,8 @@ config FS_SMHFS located on a debugging host connected to the target running Barebox -source fs/pstore/Kconfig -source fs/squashfs/Kconfig +source "fs/pstore/Kconfig" +source "fs/squashfs/Kconfig" config FS_RATP bool diff --git a/lib/Kconfig b/lib/Kconfig index b0839e6c6e..03c61f7928 100644 --- a/lib/Kconfig +++ b/lib/Kconfig @@ -63,7 +63,7 @@ config GENERIC_FIND_NEXT_BIT config PROCESS_ESCAPE_SEQUENCE def_bool n -source lib/lzo/Kconfig +source "lib/lzo/Kconfig" config BCH bool @@ -125,13 +125,13 @@ config CRC8 when they need to do cyclic redundancy check according CRC8 algorithm. Module will be called crc8. -source lib/gui/Kconfig +source "lib/gui/Kconfig" -source lib/fonts/Kconfig +source "lib/fonts/Kconfig" -source lib/logo/Kconfig +source "lib/logo/Kconfig" -source lib/bootstrap/Kconfig +source "lib/bootstrap/Kconfig" config PRINTF_UUID bool diff --git a/scripts/Kconfig b/scripts/Kconfig index 14a577ac4f..20530b9ae3 100644 --- a/scripts/Kconfig +++ b/scripts/Kconfig @@ -10,7 +10,7 @@ config COMPILE_HOST_TOOLS This is usefull for compile coverage testing and for packaging the host tools. -source scripts/imx/Kconfig +source "scripts/imx/Kconfig" config MVEBU_HOSTTOOLS bool "mvebu hosttools" if COMPILE_HOST_TOOLS -- cgit v1.2.3