Skip to content

Commit

Permalink
platform/chrome: wilco_ec: Fix keyboard backlight probing
Browse files Browse the repository at this point in the history
The EC on the Wilco platform responds with 0xFF to commands related to
the keyboard backlight on the absence of a keyboard backlight module.
This change allows the EC driver to continue loading even if the
backlight module is not present.

Fixes: 119a3cb ("platform/chrome: wilco_ec: Add keyboard backlight LED support")
Signed-off-by: Daniel Campello <campello@chromium.org>
Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Signed-off-by: Benson Leung <bleung@chromium.org>
  • Loading branch information
Daniel Campello authored and Benson Leung committed Jan 10, 2020
1 parent 856a0a6 commit dfb9a88
Showing 1 changed file with 20 additions and 8 deletions.
28 changes: 20 additions & 8 deletions drivers/platform/chrome/wilco_ec/keyboard_leds.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,28 +73,33 @@ static int send_kbbl_msg(struct wilco_ec_device *ec,
return ret;
}

if (response->status) {
dev_err(ec->dev,
"EC reported failure sending keyboard LEDs command: %d",
response->status);
return -EIO;
}

return 0;
}

static int set_kbbl(struct wilco_ec_device *ec, enum led_brightness brightness)
{
struct wilco_keyboard_leds_msg request;
struct wilco_keyboard_leds_msg response;
int ret;

memset(&request, 0, sizeof(request));
request.command = WILCO_EC_COMMAND_KBBL;
request.subcmd = WILCO_KBBL_SUBCMD_SET_STATE;
request.mode = WILCO_KBBL_MODE_FLAG_PWM;
request.percent = brightness;

return send_kbbl_msg(ec, &request, &response);
ret = send_kbbl_msg(ec, &request, &response);
if (ret < 0)
return ret;

if (response.status) {
dev_err(ec->dev,
"EC reported failure sending keyboard LEDs command: %d",
response.status);
return -EIO;
}

return 0;
}

static int kbbl_exist(struct wilco_ec_device *ec, bool *exists)
Expand Down Expand Up @@ -140,6 +145,13 @@ static int kbbl_init(struct wilco_ec_device *ec)
if (ret < 0)
return ret;

if (response.status) {
dev_err(ec->dev,
"EC reported failure sending keyboard LEDs command: %d",
response.status);
return -EIO;
}

if (response.mode & WILCO_KBBL_MODE_FLAG_PWM)
return response.percent;

Expand Down

0 comments on commit dfb9a88

Please sign in to comment.