1 From 01a031fa350f9fa197451a3b4aed04c43c46c50e Mon Sep 17 00:00:00 2001
2 From: Fabrice Gasnier <fabrice.gasnier@st.com>
3 Date: Mon, 1 Oct 2018 15:23:56 +0200
4 Subject: [PATCH 307/725] Revert "pwm: Set class for exported channels in
7 Content-Type: text/plain; charset=UTF-8
8 Content-Transfer-Encoding: 8bit
10 commit c289d6625237aa785b484b4e94c23b3b91ea7e60 upstream.
12 This reverts commit 7e5d1fd75c3dde9fc10c4472b9368089d1b81d00 ("pwm: Set
13 class for exported channels in sysfs") as it causes regression with
14 multiple pwm chip[1], when exporting a pwm channel (echo X > export):
16 - ABI (Documentation/ABI/testing/sysfs-class-pwm) states pwmX should be
17 created in /sys/class/pwm/pwmchipN/pwmX
18 - Reverted patch causes new entry to be also created directly in
20 - 1st time, exporting pwmX will create an entry in /sys/class/pwm/pwmX
21 - class attributes are added under pwmX folder, such as export, unexport
22 npwm, symlinks. This is wrong as it belongs to pwmchipN. It may cause
23 bad behavior and report wrong values.
24 - when another export happens on another pwmchip, it can't be created
25 (e.g. -EEXIST). This is causing the issue with multiple pwmchip.
27 Example on stm32 (stm32429i-eval) platform:
31 $ cd /sys/class/pwm/pwmchip0/
34 pwm0 pwmchip0 pwmchip4
36 $ cd /sys/class/pwm/pwmchip4/
38 sysfs: cannot create duplicate filename '/class/pwm/pwm0'
39 ...Exception stack follows...
41 This is also seen on other platform [2]
43 [1] https://lkml.org/lkml/2018/9/25/713
44 [2] https://lkml.org/lkml/2018/9/25/447
46 Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
47 Tested-by: Gottfried Haider <gottfried.haider@gmail.com>
48 Tested-by: Michal Vokáč <michal.vokac@ysoft.com>
49 Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
51 drivers/pwm/sysfs.c | 1 -
52 1 file changed, 1 deletion(-)
54 --- a/drivers/pwm/sysfs.c
55 +++ b/drivers/pwm/sysfs.c
56 @@ -263,7 +263,6 @@ static int pwm_export_child(struct devic
58 mutex_init(&export->lock);
60 - export->child.class = parent->class;
61 export->child.release = pwm_export_release;
62 export->child.parent = parent;
63 export->child.devt = MKDEV(0, 0);