Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fbab3698 authored by Eddie James's avatar Eddie James Committed by Greg Kroah-Hartman
Browse files

hwmon: (pmbus/ibm-cffps) Switch LEDs to blocking brightness call



commit 9861ff954c7e83e2f738ce16fbe15f8a1e121771 upstream.

Since i2c_smbus functions can sleep, the brightness setting function
for this driver must be the blocking version to avoid scheduling while
atomic.

Signed-off-by: default avatarEddie James <eajames@linux.ibm.com>
Link: https://lore.kernel.org/r/20191106200106.29519-2-eajames@linux.ibm.com


Fixes: ef9e1cdf ("hwmon: (pmbus/cffps) Add led class device for power supply fault led")
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 0b7cd89c
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -269,7 +269,7 @@ static int ibm_cffps_read_word_data(struct i2c_client *client, int page,
	return rc;
}

static void ibm_cffps_led_brightness_set(struct led_classdev *led_cdev,
static int ibm_cffps_led_brightness_set(struct led_classdev *led_cdev,
					enum led_brightness brightness)
{
	int rc;
@@ -286,9 +286,11 @@ static void ibm_cffps_led_brightness_set(struct led_classdev *led_cdev,
	rc = i2c_smbus_write_byte_data(psu->client, CFFPS_SYS_CONFIG_CMD,
				       psu->led_state);
	if (rc < 0)
		return;
		return rc;

	led_cdev->brightness = brightness;

	return 0;
}

static int ibm_cffps_led_blink_set(struct led_classdev *led_cdev,
@@ -324,7 +326,7 @@ static void ibm_cffps_create_led_class(struct ibm_cffps *psu)
		 client->addr);
	psu->led.name = psu->led_name;
	psu->led.max_brightness = LED_FULL;
	psu->led.brightness_set = ibm_cffps_led_brightness_set;
	psu->led.brightness_set_blocking = ibm_cffps_led_brightness_set;
	psu->led.blink_set = ibm_cffps_led_blink_set;

	rc = devm_led_classdev_register(dev, &psu->led);