RE: [PATCH v2 3/3] power/supply: Add generic USB charger driver

From: Paul Cercueil
Date: Thu Dec 19 2019 - 06:35:48 EST


Hi Peter,


Le mer., déc. 18, 2019 at 02:46, Peter Chen <peter.chen@xxxxxxx> a écrit :

>> >
>> >> >> +
>> >> >> + desc = &charger->desc;
>> >> >> + desc->name = "usb-charger";
>> >> >> + desc->properties = usb_charger_properties;
>> >> >> + desc->num_properties = ARRAY_SIZE(usb_charger_properties);
>> >> >> + desc->get_property = usb_charger_get_property;
>> >> >> + desc->type = POWER_SUPPLY_TYPE_USB;
>> >> >
>> >> > What's your further plan for this generic USB charger?
>> >> > To support BC1.2, we need to know charger type, and how we
>> could >> get > it?
>> >> >
>> >> > Peter
>> >>
>> >> Well I don't really know. The USB role framework does not give
>> any >> info about what's plugged.
>> >>
>> >
>> > What's the use case for this patch set? How it be used?
>>
>> My devicetree:
>>
>> usb_otg: usb@13440000 {
>> compatible = "ingenic,jz4770-musb", "simple-mfd";
>> reg = <0x13440000 0x10000>;
>> [...]
>>
>> usb-role-switch;
>>
>> connector {
>> compatible = "gpio-usb-b-connector", "usb-b-connector";
>> label = "mini-USB";
>> type = "mini";
>>
>> id-gpios = <&gpf 18 GPIO_ACTIVE_HIGH>;
>> vbus-gpios = <&gpb 5 GPIO_ACTIVE_HIGH>;
>> [...]
>> };
>>
>> usb_charger: usb-charger {
>> compatible = "usb-charger";
>> };
>> };
>>
>> The new gpio-usb-connector driver uses the ID/VBUS GPIOs to detect
>> in which state (device, host, unconnected) a OTG connector is.
>> However, that means I cannot use the standard gpio-charger driver to
>> detect the presence of a charger based on the state of the VBUS
>> gpio, since it's already requested here. So the point of this
>> patchset is to provide an alternative to gpio-charger that works
>> with OTG controllers compatible with 'usb-role-switch'.
>>
>
> Thanks for explaining it.
>
> What's the user for this USB charger, PMIC or what else? How the user
> uses this USB charger interface?

It's exported as a standard charger, so it can be passed to client drivers through
devicetree, and its online status can be retrieved from sysfs.


Hi Paul,

If you would like to get role from usb-role-switch, the udc driver may probably have already worked.
There is a 'state' entry under the udc device to indicate USB Ch9 state. Try to see if it could
satisfy your requirement.

This is not the proper way to retrieve charger status.
Linux supports chargers through the power supply subsystem, that's where it should be exported.

Cheers,
-Paul