linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: Liam Breck <liam@networkimprov.net>
Cc: Sebastian Reichel <sre@kernel.org>,
	linux-pm@vger.kernel.org, Tony Lindgren <tony@atomide.com>,
	Liam Breck <kernel@networkimprov.net>
Subject: Re: [PATCH v4 2/4] power: bq24190_charger: Clean up extcon code
Date: Sat, 8 Apr 2017 22:05:23 +0200	[thread overview]
Message-ID: <d82efc98-daa1-cf64-d49b-2e79065886fc@redhat.com> (raw)
In-Reply-To: <CAKvHMgQngU5s1M6D6zCt2je=P6GOKD48KVexwd7LK5zMJm8gEg@mail.gmail.com>

Hi,

On 08-04-17 21:09, Liam Breck wrote:
> On Sat, Apr 8, 2017 at 3:02 AM, Hans de Goede <hdegoede@redhat.com> wrote:
>> Hi,
>>
>> On 08-04-17 00:27, Liam Breck wrote:
>>>
>>> Hallo Hans,
>>>
>>> On Thu, Apr 6, 2017 at 12:17 AM, Hans de Goede <hdegoede@redhat.com>
>>> wrote:
>>
>>
>> <snip>
>>
>>
>>>>> -       /*
>>>>> -        * If no charger has been detected and host mode is requested,
>>>>> activate
>>>>> -        * the 5V boost converter, otherwise deactivate it.
>>>>> -        */
>>>>> -       if (!iinlim && extcon_get_state(bdi->extcon, EXTCON_USB_HOST) ==
>>>>> 1) {
>>>>> -               ret = bq24190_write_mask(bdi, BQ24190_REG_POC,
>>>>> -
>>>>> BQ24190_REG_POC_CHG_CONFIG_MASK,
>>>>> -
>>>>> BQ24190_REG_POC_CHG_CONFIG_SHIFT,
>>>>> -
>>>>> BQ24190_REG_POC_CHG_CONFIG_OTG);
>>>>> -       } else {
>>>>> -               ret = bq24190_write_mask(bdi, BQ24190_REG_POC,
>>>>> -
>>>>> BQ24190_REG_POC_CHG_CONFIG_MASK,
>>>>> -
>>>>> BQ24190_REG_POC_CHG_CONFIG_SHIFT,
>>>>> -
>>>>> BQ24190_REG_POC_CHG_CONFIG_CHARGE);
>>>>> -       }
>>>>> -       if (ret)
>>>>> -               dev_err(bdi->dev, "Can't set CHG_CONFIG: %d\n", ret);
>>>>> +       /* Set OTG 5V boost: on if no charger detected and in USB host
>>>>> mode, else off */
>>>>> +       error = bq24190_write_mask(bdi, BQ24190_REG_POC,
>>>>> +                                  BQ24190_REG_POC_CHG_CONFIG_MASK,
>>>>> +                                  BQ24190_REG_POC_CHG_CONFIG_SHIFT,
>>>>> +                       !iinlim && extcon_get_state(bdi->extcon,
>>>>> EXTCON_USB_HOST) == 1
>>>>> +                                ? BQ24190_REG_POC_CHG_CONFIG_OTG
>>>>> +                                : BQ24190_REG_POC_CHG_CONFIG_CHARGE);
>>>>> +       if (error < 0)
>>>>> +               dev_err(bdi->dev, "Can't set CHG_CONFIG: %d\n", error);
>>>>>
>>>>>         pm_runtime_mark_last_busy(bdi->dev);
>>>>>         pm_runtime_put_autosuspend(bdi->dev);
>>>>
>>>>
>>>>
>>>> I still find the refactored code you're proposing here a lot less
>>>> readable
>>>> then the original code, and the same goes for the comment. If you insist
>>>> in changing this, then I suggest changing it into this:
>>>
>>>
>>> OK. I'll collapse the comment to one line tho.
>>
>>
>> Please don't having this as 2 lines really is not a problem in any way and
>> I find the longer comment a lot easier to parse.
>>
>>
>>>
>>>>         /*
>>>>          * If no charger has been detected and host mode is requested,
>>>> activate
>>>>          * the 5V boost converter, otherwise deactivate it.
>>>>          */
>>>>         if (!iinlim && extcon_get_state(bdi->extcon, EXTCON_USB_HOST) ==
>>>> 1)
>>>>                 chg_config = BQ24190_REG_POC_CHG_CONFIG_OTG;
>>>>         else
>>>>                 chg_config = BQ24190_REG_POC_CHG_CONFIG_CHARGE;
>>>>
>>>>         error = bq24190_write_mask(bdi, BQ24190_REG_POC,
>>>>                                    BQ24190_REG_POC_CHG_CONFIG_MASK,
>>>>                                    BQ24190_REG_POC_CHG_CONFIG_SHIFT,
>>>>                                    chg_config);
>>>>         if (error)
>>>>                 dev_err(bdi->dev, "Can't set CHG_CONFIG: %d\n", error);
>>>>
>>>>> @@ -1432,8 +1427,8 @@ static int bq24190_probe(struct i2c_client
>>>>> *client,
>>>>>         }
>>>>>
>>>>>         /*
>>>>> -        * The extcon-name property is purely an in kernel interface for
>>>>> -        * x86/ACPI use, DT platforms should get extcon via phandle.
>>>>> +        * ACPI platforms should use device_property "extcon-name".
>>>>> +        * Devicetree platforms should get extcon via phandle (not yet
>>>>> supported).
>>>>>          */
>>>>>         if (device_property_read_string(dev, "extcon-name", &name) == 0)
>>>>> {
>>>>>                 bdi->extcon = extcon_get_extcon_dev(name);
>>>>
>>>>
>>>>
>>>> The new comment suggest that extcon-name is something which should
>>>> actually
>>>> be used inside ACPI DSDT tables, which it is not, please leave the
>>>> comment
>>>> as is.
>>>
>>>
>>> OK, right. But "in kernel interface" sounds official, and this is
>>> really a custom msg passing method. A platform-data struct is
>>> documented in a header, and a module parameter has its own docs
>>> scheme; and use of those methods is well documented. I can't tell how
>>> I would invoke this one. How about this...
>>>
>>> A Devicetree should provide extcon-name via phandle (not yet supported).
>>
>>
>> No a devicetree should not provide a name it would provide a phandle
>> pointing to the extcon, no name (and name based lookup) should be
>> involved.
>
> OK.
>
>>> ACPI extcon drivers/clients[?] should insert[?] device_property
>>> extcon-name into our device with relevant_api_call(args).
>>
>>
>> For an example of how this is used see:
>>
>> https://github.com/jwrdegoede/linux-sunxi/commit/7fa4460e2a18a3f6ffb39ae4940fee1dd2a880a4
>>
>> Around line 214 of i2c-cht-wc.c and later.
>
> So a comment like...
>
> On ACPI platforms, extcon clients should invoke this driver with:
> struct i2c_adapter a = { ... };
> i2c_add_adapter(&a);
> struct property_entry pe[] = { PROPERTY_ENTRY_STRING("extcon-name",
> <name>), ... };
> struct i2c_board_info bi = { .type = "bq24190", .addr = 0x6b,
> .properties = pe, .irq = <irq> };
> i2c_new_device(&a, &bi);

Sure that works for me.

Regards,

Hans

  reply	other threads:[~2017-04-08 20:05 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-06  3:10 [PATCH v4 0/4] BQ24190 charger fixes Liam Breck
2017-04-06  3:10 ` [PATCH v4 1/4] power: bq24190_charger: Limit over/under voltage fault logging Liam Breck
2017-04-06  7:12   ` Hans de Goede
2017-04-06  3:10 ` [PATCH v4 2/4] power: bq24190_charger: Clean up extcon code Liam Breck
2017-04-06  7:17   ` Hans de Goede
2017-04-07 22:27     ` Liam Breck
2017-04-08 10:02       ` Hans de Goede
2017-04-08 19:09         ` Liam Breck
2017-04-08 20:05           ` Hans de Goede [this message]
2017-04-10  9:03             ` Liam Breck
2017-04-10  9:11               ` Hans de Goede
2017-04-06  3:10 ` [PATCH v4 3/4] power: bq24190_charger: Uniform pm_runtime_get() failure handling Liam Breck
2017-04-06  7:19   ` Hans de Goede
2017-04-06  3:10 ` [PATCH v4 4/4] power: bq24190_charger: Delay before polling reset flag Liam Breck
2017-04-06  7:20   ` Hans de Goede
2017-04-07 21:46     ` Liam Breck
2017-04-08  9:58       ` Hans de Goede
2017-04-08 19:25         ` Liam Breck
2017-04-08 20:14           ` Hans de Goede
2017-04-08 20:46             ` Liam Breck
2017-04-08 20:48               ` Hans de Goede

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d82efc98-daa1-cf64-d49b-2e79065886fc@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=kernel@networkimprov.net \
    --cc=liam@networkimprov.net \
    --cc=linux-pm@vger.kernel.org \
    --cc=sre@kernel.org \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).