Re: [PATCH v2 2/3] power: supply: Add Lenovo Yoga C630 EC driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Sun, Feb 05, 2023 at 05:28:08PM +0200, Dmitry Baryshkov wrote:
> From: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx>
> 
> The Qualcomm Snapdragon-based Lenovo Yoga C630 has some sort of EC
> providing AC-adapter and battery status, as well as USB Type-C altmode
> notifications for Displayport operation.
> 
> The Yoga C630 ships with Windows, where these operations primarily are
> implemented in ACPI, but due to various issues with the hardware
> representation therein it's not possible to run Linux on this
> information. As such this is a best-effort re-implementation of these
> operations, based on the register map expressed in ACPI and a fair
> amount of trial and error.
> 
> Tested-by: Steev Klimaszewski <steev@xxxxxxxx>
> Signed-off-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx>
> ---

[...]

> +static bool yoga_c630_ec_is_charged(struct yoga_c630_ec *ec)
> +{
> +	if (ec->bat_status != 0)
> +		return false;
> +
> +	if (ec->full_charge_capacity == ec->capacity_now)
> +		return true;
> +
> +	if (ec->design_capacity == ec->capacity_now)
> +		return true;

For other platforms I've seen the current capacity sometimes
reaching higher values than the full charge capacity, so it's better
to use <= here.

> +	return false;
> +}

[...]

> +static int yoga_c630_ec_query_usb_event(struct yoga_c630_ec *ec)
> +{
> +	struct device *dev = &ec->client->dev;
> +	int event;
> +
> +	mutex_lock(&ec->lock);
> +	event = yoga_c630_ec_read8(ec, LENOVO_EC_QUERY_USB_EVENT);
> +	mutex_unlock(&ec->lock);
> +	if (event < 0) {
> +		dev_err(dev, "unable to query USB event\n");
> +		return event;
> +	}
> +
> +	/* FIXME: handle the returned event to set the Type-C properties */

I guess this is more of a TODO than a FIXME? :)

> +
> +	return 0;
> +}

-- Sebastian

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux