From 42954857190b9df16d9d873ecc7f6cc38e013e44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Tue, 9 Jul 2019 20:32:28 +0200 Subject: brcm2708: add linux 4.19 support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Boot tested on Raspberry Pi B+ (BCM2708) and Raspberry Pi 2 (BCM2709) Signed-off-by: Álvaro Fernández Rojas --- ...uevent-on-the-pwmchip-device-upon-channel.patch | 86 ++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 target/linux/brcm2708/patches-4.19/950-0311-pwm-Send-a-uevent-on-the-pwmchip-device-upon-channel.patch (limited to 'target/linux/brcm2708/patches-4.19/950-0311-pwm-Send-a-uevent-on-the-pwmchip-device-upon-channel.patch') diff --git a/target/linux/brcm2708/patches-4.19/950-0311-pwm-Send-a-uevent-on-the-pwmchip-device-upon-channel.patch b/target/linux/brcm2708/patches-4.19/950-0311-pwm-Send-a-uevent-on-the-pwmchip-device-upon-channel.patch new file mode 100644 index 0000000000..33d6b4d8f3 --- /dev/null +++ b/target/linux/brcm2708/patches-4.19/950-0311-pwm-Send-a-uevent-on-the-pwmchip-device-upon-channel.patch @@ -0,0 +1,86 @@ +From f88cefba19bb7ad7f92f721b94fcd9782f49a3c1 Mon Sep 17 00:00:00 2001 +From: Fabrice Gasnier +Date: Mon, 1 Oct 2018 15:23:57 +0200 +Subject: [PATCH 311/703] pwm: Send a uevent on the pwmchip device upon channel + sysfs (un)export +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +commit 552c02e3e7cfe2744b59de285aaea70021ae95c9 upstream. + +This patch sends a uevent (KOBJ_CHANGE) on the pwmchipN device, +everytime a pwmX channel has been exported/unexported via sysfs. This +allows udev to implement rules on such events, like: + +SUBSYSTEM=="pwm*", PROGRAM="/bin/sh -c '\ + chown -R root:gpio /sys/class/pwm && chmod -R 770 /sys/class/pwm;\ + chown -R root:gpio +/sys/devices/platform/soc/*.pwm/pwm/pwmchip* && chmod -R 770 +/sys/devices/platform/soc/*.pwm/pwm/pwmchip*\ +'" + +This is a replacement patch for commit 7e5d1fd75c3d ("pwm: Set class for +exported channels in sysfs"), see [1]. + +basic testing: +$ udevadm monitor --environment & +$ echo 0 > /sys/class/pwm/pwmchip0/export +KERNEL[197.321736] change /devices/.../pwm/pwmchip0 (pwm) +ACTION=change +DEVPATH=/devices/.../pwm/pwmchip0 +EXPORT=pwm0 +SEQNUM=2045 +SUBSYSTEM=pwm + +[1] https://lkml.org/lkml/2018/9/25/713 + +Signed-off-by: Fabrice Gasnier +Tested-by: Gottfried Haider +Tested-by: Michal Vokáč +Signed-off-by: Thierry Reding +--- + drivers/pwm/sysfs.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +--- a/drivers/pwm/sysfs.c ++++ b/drivers/pwm/sysfs.c +@@ -249,6 +249,7 @@ static void pwm_export_release(struct de + static int pwm_export_child(struct device *parent, struct pwm_device *pwm) + { + struct pwm_export *export; ++ char *pwm_prop[2]; + int ret; + + if (test_and_set_bit(PWMF_EXPORTED, &pwm->flags)) +@@ -276,6 +277,10 @@ static int pwm_export_child(struct devic + export = NULL; + return ret; + } ++ pwm_prop[0] = kasprintf(GFP_KERNEL, "EXPORT=pwm%u", pwm->hwpwm); ++ pwm_prop[1] = NULL; ++ kobject_uevent_env(&parent->kobj, KOBJ_CHANGE, pwm_prop); ++ kfree(pwm_prop[0]); + + return 0; + } +@@ -288,6 +293,7 @@ static int pwm_unexport_match(struct dev + static int pwm_unexport_child(struct device *parent, struct pwm_device *pwm) + { + struct device *child; ++ char *pwm_prop[2]; + + if (!test_and_clear_bit(PWMF_EXPORTED, &pwm->flags)) + return -ENODEV; +@@ -296,6 +302,11 @@ static int pwm_unexport_child(struct dev + if (!child) + return -ENODEV; + ++ pwm_prop[0] = kasprintf(GFP_KERNEL, "UNEXPORT=pwm%u", pwm->hwpwm); ++ pwm_prop[1] = NULL; ++ kobject_uevent_env(&parent->kobj, KOBJ_CHANGE, pwm_prop); ++ kfree(pwm_prop[0]); ++ + /* for device_find_child() */ + put_device(child); + device_unregister(child); -- cgit v1.2.3