Home Home > GIT Browse > SLE12-SP4-AZURE
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2019-02-20 12:08:06 +0100
committerTakashi Iwai <tiwai@suse.de>2019-02-20 12:08:10 +0100
commite4588d3bc54bebf3039cfe5f2b4337d993adeea3 (patch)
tree40ab6aba8028e1d420872c696c9e9fbaf0de50e1
parent134bd8fdfb57a08b3389a73de6697542c322073a (diff)
phy: work around 'phys' references to usb-nop-xceiv devices
(bsc#1051510).
-rw-r--r--patches.drivers/phy-work-around-phys-references-to-usb-nop-xceiv-dev.patch84
-rw-r--r--series.conf1
2 files changed, 85 insertions, 0 deletions
diff --git a/patches.drivers/phy-work-around-phys-references-to-usb-nop-xceiv-dev.patch b/patches.drivers/phy-work-around-phys-references-to-usb-nop-xceiv-dev.patch
new file mode 100644
index 0000000000..efef6b8c48
--- /dev/null
+++ b/patches.drivers/phy-work-around-phys-references-to-usb-nop-xceiv-dev.patch
@@ -0,0 +1,84 @@
+From b7563e2796f8b23c98afcfea7363194227fa089d Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Fri, 12 Jan 2018 11:12:05 +0100
+Subject: [PATCH] phy: work around 'phys' references to usb-nop-xceiv devices
+Git-commit: b7563e2796f8b23c98afcfea7363194227fa089d
+Patch-mainline: v4.15-rc9
+References: bsc#1051510
+
+Stefan Wahren reports a problem with a warning fix that was merged
+for v4.15: we had lots of device nodes with a 'phys' property pointing
+to a device node that is not compliant with the binding documented in
+Documentation/devicetree/bindings/phy/phy-bindings.txt
+
+This generally works because USB HCD drivers that support both the generic
+phy subsystem and the older usb-phy subsystem ignore most errors from
+phy_get() and related calls and then use the usb-phy driver instead.
+
+However, it turns out that making the usb-nop-xceiv device compatible with
+the generic-phy binding changes the phy_get() return code from -EINVAL to
+-EPROBE_DEFER, and the dwc2 usb controller driver for bcm2835 now returns
+-EPROBE_DEFER from its probe function rather than ignoring the failure,
+breaking all USB support on raspberry-pi when CONFIG_GENERIC_PHY is
+enabled. The same code is used in the dwc3 driver and the usb_add_hcd()
+function, so a reasonable assumption would be that many other platforms
+are affected as well.
+
+I have reviewed all the related patches and concluded that "usb-nop-xceiv"
+is the only USB phy that is affected by the change, and since it is by far
+the most commonly referenced phy, all the other USB phy drivers appear
+to be used in ways that are are either safe in DT (they don't use the
+'phys' property), or in the driver (they already ignore -EPROBE_DEFER
+from generic-phy when usb-phy is available).
+
+To work around the problem, this adds a special case to _of_phy_get()
+so we ignore any PHY node that is compatible with "usb-nop-xceiv",
+as we know that this can never load no matter how much we defer. In the
+future, we might implement a generic-phy driver for "usb-nop-xceiv"
+and then remove this workaround.
+
+Since we generally want older kernels to also want to work with the
+fixed devicetree files, it would be good to backport the patch into
+stable kernels as well (3.13+ are possibly affected), even though they
+don't contain any of the patches that may have caused regressions.
+
+Fixes: 014d6da6cb25 ARM: dts: bcm283x: Fix DTC warnings about missing phy-cells
+Fixes: c5bbf358b790 arm: dts: nspire: Add missing #phy-cells to usb-nop-xceiv
+Fixes: 44e5dced2ef6 arm: dts: marvell: Add missing #phy-cells to usb-nop-xceiv
+Fixes: f568f6f554b8 ARM: dts: omap: Add missing #phy-cells to usb-nop-xceiv
+Fixes: d745d5f277bf ARM: dts: imx51-zii-rdu1: Add missing #phy-cells to usb-nop-xceiv
+Fixes: 915fbe59cbf2 ARM: dts: imx: Add missing #phy-cells to usb-nop-xceiv
+Link: https://marc.info/?l=linux-usb&m=151518314314753&w=2
+Link: https://patchwork.kernel.org/patch/10158145/
+Cc: stable@vger.kernel.org
+Cc: Felipe Balbi <balbi@kernel.org>
+Cc: Eric Anholt <eric@anholt.net>
+Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
+Acked-by: Rob Herring <robh@kernel.org>
+Tested-by: Hans Verkuil <hans.verkuil@cisco.com>
+Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/phy/phy-core.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
+index b4964b067aec..8f6e8e28996d 100644
+--- a/drivers/phy/phy-core.c
++++ b/drivers/phy/phy-core.c
+@@ -410,6 +410,10 @@ static struct phy *_of_phy_get(struct device_node *np, int index)
+ if (ret)
+ return ERR_PTR(-ENODEV);
+
++ /* This phy type handled by the usb-phy subsystem for now */
++ if (of_device_is_compatible(args.np, "usb-nop-xceiv"))
++ return ERR_PTR(-ENODEV);
++
+ mutex_lock(&phy_provider_mutex);
+ phy_provider = of_phy_provider_lookup(args.np);
+ if (IS_ERR(phy_provider) || !try_module_get(phy_provider->owner)) {
+--
+2.16.4
+
diff --git a/series.conf b/series.conf
index ebe04e010c..6e92022486 100644
--- a/series.conf
+++ b/series.conf
@@ -11444,6 +11444,7 @@
patches.arch/powerpc-64s-Allow-control-of-RFI-flush-via-debugfs.patch
patches.arch/powerpc-pseries-include-linux-types.h-in-asm-hvcall.h.patch
patches.fixes/ARM-sunxi_defconfig-Enable-CMA.patch
+ patches.drivers/phy-work-around-phys-references-to-usb-nop-xceiv-dev.patch
patches.fixes/workqueue-avoid-hard-lockups-in-show_workqueue_state.patch
patches.drivers/libata-apply-max_sec_1024-to-all-liteon-ep1-series-devices.patch
patches.drivers/Input-twl4030-vibra-fix-sibling-node-lookup