diff options
author | Thierry Reding <thierry.reding@gmail.com> | 2016-09-08 10:59:29 +0200 |
---|---|---|
committer | Thierry Reding <thierry.reding@gmail.com> | 2016-09-08 10:59:29 +0200 |
commit | 51f01e4cbaf321effa75a21611ed5c34ea7cc583 (patch) | |
tree | 7d4ab85ed86beb175351738eef22132d8987678e /drivers/pwm | |
parent | 29b4817d4018df78086157ea3a55c1d9424a7cfc (diff) | |
parent | 0733424c9ba9f42242409d1ece780777272f7ea1 (diff) |
Merge branch 'for-4.9/core' into for-next
Diffstat (limited to 'drivers/pwm')
-rw-r--r-- | drivers/pwm/core.c | 2 | ||||
-rw-r--r-- | drivers/pwm/sysfs.c | 18 |
2 files changed, 20 insertions, 0 deletions
diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c index 0dbd29e287db..172ef8245811 100644 --- a/drivers/pwm/core.c +++ b/drivers/pwm/core.c @@ -339,6 +339,8 @@ int pwmchip_remove(struct pwm_chip *chip) unsigned int i; int ret = 0; + pwmchip_sysfs_unexport_children(chip); + mutex_lock(&pwm_lock); for (i = 0; i < chip->npwm; i++) { diff --git a/drivers/pwm/sysfs.c b/drivers/pwm/sysfs.c index 18ed725594c3..0296d8178ae2 100644 --- a/drivers/pwm/sysfs.c +++ b/drivers/pwm/sysfs.c @@ -409,6 +409,24 @@ void pwmchip_sysfs_unexport(struct pwm_chip *chip) } } +void pwmchip_sysfs_unexport_children(struct pwm_chip *chip) +{ + struct device *parent; + unsigned int i; + + parent = class_find_device(&pwm_class, NULL, chip, + pwmchip_sysfs_match); + if (!parent) + return; + + for (i = 0; i < chip->npwm; i++) { + struct pwm_device *pwm = &chip->pwms[i]; + + if (test_bit(PWMF_EXPORTED, &pwm->flags)) + pwm_unexport_child(parent, pwm); + } +} + static int __init pwm_sysfs_init(void) { return class_register(&pwm_class); |