Hi, On Sat, May 06, 2023 at 05:54:33PM +0200, Jakob Hauser wrote: > Implement cable detection by extcon and handle the driver according to the > connector type. > > There are basically three types of action: "set_charging", "set_otg" and > "set_disconnect". > > A forth helper function to "unset_otg" was added because this is used in both > "set_charging" and "set_disconnect". In the first case it covers the rather > rare event that someone changes from OTG to charging without disconnect. In > the second case, when disconnecting, the values are set back to the ones from > initialization to return into a defined state. > > Additionally, there is "set_mivr". When connecting to e.g. a laptop/PC, the > minimum input voltage regulation (MIVR) shall prevent a voltage drop if the > cable or the supply is weak. The MIVR value is set to 4600MV, same as in the > Android driver [1]. When disconnecting, MIVR is set back to DISABLED. > > In the function rt5033_get_charger_state(): When in OTG mode, the chip > reports status "charging". Change this to "discharging" because there is > no charging going on in OTG mode [2]. > > [1] https://github.com/msm8916-mainline/linux-downstream/blob/GT-I9195I/drivers/battery/rt5033_charger.c#L499 > [2] https://github.com/msm8916-mainline/linux-downstream/blob/GT-I9195I/drivers/battery/rt5033_charger.c#L686-L687 > > Tested-by: Raymond Hackley <raymondhackley@xxxxxxxxxxxxxx> > Signed-off-by: Jakob Hauser <jahau@xxxxxxxxxxxxxx> > --- > [...] > diff --git a/include/linux/mfd/rt5033.h b/include/linux/mfd/rt5033.h > index e99e2ab0c1c1..d2c613764756 100644 > --- a/include/linux/mfd/rt5033.h > +++ b/include/linux/mfd/rt5033.h > @@ -53,6 +53,14 @@ struct rt5033_charger { > struct rt5033_dev *rt5033; > struct power_supply *psy; > struct rt5033_charger_data *chg; > + struct extcon_dev *edev; > + struct notifier_block extcon_nb; > + struct work_struct extcon_work; > + struct mutex lock; > + bool online; > + bool otg; > + bool mivr_enabled; > + u8 cv_regval; > }; Please move 'struct rt5033_charger' and 'struct rt5033_charger_data' to drivers/power/supply/rt5033_charger.c; they are not supposed to be used directly by others. Making it private helps to avoid cross-subsystem series for future maintanence patches. Otherwise LGTM. -- Sebastian
Attachment:
signature.asc
Description: PGP signature