diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/crypto/Kconfig | 2 | ||||
-rw-r--r-- | drivers/i2c/Kconfig | 6 | ||||
-rw-r--r-- | drivers/pinctrl/Kconfig | 2 | ||||
-rw-r--r-- | drivers/usb/Kconfig | 13 | ||||
-rw-r--r-- | drivers/usb/dwc3/core.c | 21 | ||||
-rw-r--r-- | drivers/video/Kconfig | 2 | ||||
-rw-r--r-- | drivers/video/of_display_timing.c | 15 | ||||
-rw-r--r-- | drivers/w1/Kconfig | 4 |
8 files changed, 42 insertions, 23 deletions
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/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); 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/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; } 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" |