lkml.org 
[lkml]   [2017]   [Nov]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [RFC PATCH v2 6/7] typec: tcpm: Represent source supply through power_supply class
    Hi,

    On Tue, Nov 14, 2017 at 11:44:47AM +0000, Adam Thomson wrote:
    > diff --git a/drivers/usb/typec/tcpm.c b/drivers/usb/typec/tcpm.c
    > index 78983e1..7c26c3d 100644
    > --- a/drivers/usb/typec/tcpm.c
    > +++ b/drivers/usb/typec/tcpm.c
    > @@ -12,6 +12,7 @@
    > #include <linux/kernel.h>
    > #include <linux/module.h>
    > #include <linux/mutex.h>
    > +#include <linux/power_supply.h>
    > #include <linux/proc_fs.h>
    > #include <linux/sched/clock.h>
    > #include <linux/seq_file.h>
    > @@ -277,6 +278,10 @@ struct tcpm_port {
    > u32 current_limit;
    > u32 supply_voltage;
    >
    > + /* Used to export TA voltage and current */
    > + struct power_supply *psy;
    > + struct power_supply_desc psy_desc;
    > +
    > u32 bist_request;
    >
    > /* PD state for Vendor Defined Messages */
    > @@ -1756,6 +1761,7 @@ static int tcpm_pd_select_pdo(struct tcpm_port *port)
    > int ret = -EINVAL;
    >
    > port->pps_data.supported = false;
    > + port->psy_desc.type = POWER_SUPPLY_TYPE_USB_PD;
    >
    > /*
    > * Select the source PDO providing the most power while staying within
    > @@ -1775,8 +1781,10 @@ static int tcpm_pd_select_pdo(struct tcpm_port *port)
    > mv = pdo_min_voltage(pdo);
    > break;
    > case PDO_TYPE_APDO:
    > - if (pdo_apdo_type(pdo) == APDO_TYPE_PPS)
    > + if (pdo_apdo_type(pdo) == APDO_TYPE_PPS) {
    > port->pps_data.supported = true;
    > + port->psy_desc.type = POWER_SUPPLY_TYPE_USB_PD_PPS;
    > + }
    > continue;
    > default:
    > tcpm_log(port, "Invalid PDO type, ignoring");
    > @@ -2248,6 +2256,9 @@ static void tcpm_reset_port(struct tcpm_port *port)
    > port->try_snk_count = 0;
    > port->supply_voltage = 0;
    > port->current_limit = 0;
    > + port->psy_desc.type = POWER_SUPPLY_TYPE_USB_TYPE_C;

    Is it OK to everybody that the type of the psy is changed like that?
    Hans?!

    We do have drivers that already change the type, for example
    drivers/power/supply/isp1704_charger.c, but what does the user space
    expect? The ABI for the power supply class was never documented I
    guess.

    I'm not against changing the type, but I think that we should have an
    attribute file listing all supported types a psy can have if we go
    forward with this. Ideally the type file would just list them as space
    separated values, and show the current one with asterisk in front of
    it. The output would be similar we have with some of the other files
    under /sys/power, at least /sys/power/state, but that would break the
    ABI.


    Thanks,

    --
    heikki
    \
     
     \ /
      Last update: 2017-11-24 13:19    [W:4.053 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site