summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/crypto/Kconfig2
-rw-r--r--drivers/i2c/Kconfig6
-rw-r--r--drivers/pinctrl/Kconfig2
-rw-r--r--drivers/usb/Kconfig13
-rw-r--r--drivers/usb/dwc3/core.c21
-rw-r--r--drivers/video/Kconfig2
-rw-r--r--drivers/video/of_display_timing.c15
-rw-r--r--drivers/w1/Kconfig4
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"