Unverified Commit dfb9a885 authored by Daniel Campello's avatar Daniel Campello Committed by Benson Leung
Browse files

platform/chrome: wilco_ec: Fix keyboard backlight probing



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: 119a3cb6 ("platform/chrome: wilco_ec: Add keyboard backlight LED support")
Signed-off-by: default avatarDaniel Campello <campello@chromium.org>
Signed-off-by: default avatarEnric Balletbo i Serra <enric.balletbo@collabora.com>
Signed-off-by: default avatarBenson Leung <bleung@chromium.org>
parent 856a0a6e
Loading
Loading
Loading
Loading
+20 −8
Original line number Diff line number Diff line
@@ -73,13 +73,6 @@ 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;
}

@@ -87,6 +80,7 @@ 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;
@@ -94,7 +88,18 @@ static int set_kbbl(struct wilco_ec_device *ec, enum led_brightness brightness)
	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)
@@ -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;