#define CFFPS_MFR_VAUX_FAULT                   BIT(6)
 #define CFFPS_MFR_CURRENT_SHARE_WARNING                BIT(7)
 
+/*
+ * LED off state actually relinquishes LED control to PSU firmware, so it can
+ * turn on the LED for faults.
+ */
+#define CFFPS_LED_OFF                          0
 #define CFFPS_LED_BLINK                                BIT(0)
 #define CFFPS_LED_ON                           BIT(1)
-#define CFFPS_LED_OFF                          BIT(2)
 #define CFFPS_BLINK_RATE_MS                    250
 
 enum {
                                        enum led_brightness brightness)
 {
        int rc;
+       u8 next_led_state;
        struct ibm_cffps *psu = container_of(led_cdev, struct ibm_cffps, led);
 
        if (brightness == LED_OFF) {
-               psu->led_state = CFFPS_LED_OFF;
+               next_led_state = CFFPS_LED_OFF;
        } else {
                brightness = LED_FULL;
+
                if (psu->led_state != CFFPS_LED_BLINK)
-                       psu->led_state = CFFPS_LED_ON;
+                       next_led_state = CFFPS_LED_ON;
+               else
+                       next_led_state = CFFPS_LED_BLINK;
        }
 
+       dev_dbg(&psu->client->dev, "LED brightness set: %d. Command: %d.\n",
+               brightness, next_led_state);
+
        pmbus_set_page(psu->client, 0);
 
        rc = i2c_smbus_write_byte_data(psu->client, CFFPS_SYS_CONFIG_CMD,
-                                      psu->led_state);
+                                      next_led_state);
        if (rc < 0)
                return rc;
 
+       psu->led_state = next_led_state;
        led_cdev->brightness = brightness;
 
        return 0;
        int rc;
        struct ibm_cffps *psu = container_of(led_cdev, struct ibm_cffps, led);
 
-       psu->led_state = CFFPS_LED_BLINK;
-
-       if (led_cdev->brightness == LED_OFF)
-               return 0;
+       dev_dbg(&psu->client->dev, "LED blink set.\n");
 
        pmbus_set_page(psu->client, 0);
 
        if (rc < 0)
                return rc;
 
+       psu->led_state = CFFPS_LED_BLINK;
+       led_cdev->brightness = LED_FULL;
        *delay_on = CFFPS_BLINK_RATE_MS;
        *delay_off = CFFPS_BLINK_RATE_MS;