aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/brcm2708/patches-4.19/950-0310-Revert-pwm-Set-class-for-exported-channels-in-sysfs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/brcm2708/patches-4.19/950-0310-Revert-pwm-Set-class-for-exported-channels-in-sysfs.patch')
-rw-r--r--target/linux/brcm2708/patches-4.19/950-0310-Revert-pwm-Set-class-for-exported-channels-in-sysfs.patch63
1 files changed, 63 insertions, 0 deletions
diff --git a/target/linux/brcm2708/patches-4.19/950-0310-Revert-pwm-Set-class-for-exported-channels-in-sysfs.patch b/target/linux/brcm2708/patches-4.19/950-0310-Revert-pwm-Set-class-for-exported-channels-in-sysfs.patch
new file mode 100644
index 0000000000..ea8a2b2c06
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.19/950-0310-Revert-pwm-Set-class-for-exported-channels-in-sysfs.patch
@@ -0,0 +1,63 @@
+From d499c8f6171122d78a90c3a6403ac7c0c1f50887 Mon Sep 17 00:00:00 2001
+From: Fabrice Gasnier <fabrice.gasnier@st.com>
+Date: Mon, 1 Oct 2018 15:23:56 +0200
+Subject: [PATCH 310/703] Revert "pwm: Set class for exported channels in
+ sysfs"
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+commit c289d6625237aa785b484b4e94c23b3b91ea7e60 upstream.
+
+This reverts commit 7e5d1fd75c3dde9fc10c4472b9368089d1b81d00 ("pwm: Set
+class for exported channels in sysfs") as it causes regression with
+multiple pwm chip[1], when exporting a pwm channel (echo X > export):
+
+- ABI (Documentation/ABI/testing/sysfs-class-pwm) states pwmX should be
+ created in /sys/class/pwm/pwmchipN/pwmX
+- Reverted patch causes new entry to be also created directly in
+ /sys/class/pwm/pwmX
+- 1st time, exporting pwmX will create an entry in /sys/class/pwm/pwmX
+- class attributes are added under pwmX folder, such as export, unexport
+ npwm, symlinks. This is wrong as it belongs to pwmchipN. It may cause
+ bad behavior and report wrong values.
+- when another export happens on another pwmchip, it can't be created
+ (e.g. -EEXIST). This is causing the issue with multiple pwmchip.
+
+Example on stm32 (stm32429i-eval) platform:
+$ ls /sys/class/pwm
+pwmchip0 pwmchip4
+
+$ cd /sys/class/pwm/pwmchip0/
+$ echo 0 > export
+$ ls /sys/class/pwm
+pwm0 pwmchip0 pwmchip4
+
+$ cd /sys/class/pwm/pwmchip4/
+$ echo 0 > export
+sysfs: cannot create duplicate filename '/class/pwm/pwm0'
+...Exception stack follows...
+
+This is also seen on other platform [2]
+
+[1] https://lkml.org/lkml/2018/9/25/713
+[2] https://lkml.org/lkml/2018/9/25/447
+
+Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
+Tested-by: Gottfried Haider <gottfried.haider@gmail.com>
+Tested-by: Michal Vokáč <michal.vokac@ysoft.com>
+Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
+---
+ drivers/pwm/sysfs.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/drivers/pwm/sysfs.c
++++ b/drivers/pwm/sysfs.c
+@@ -263,7 +263,6 @@ static int pwm_export_child(struct devic
+ export->pwm = pwm;
+ mutex_init(&export->lock);
+
+- export->child.class = parent->class;
+ export->child.release = pwm_export_release;
+ export->child.parent = parent;
+ export->child.devt = MKDEV(0, 0);