Hi Andrey, Am Sonntag, den 28.04.2019, 22:47 -0700 schrieb Andrey Smirnov: > Add driver for Microchip UCS1002 Programmable USB Port Power > Controller with Charger Emulation. The driver exposed a power supply > device to control/monitor various parameter of the device as well as a > regulator to allow controlling VBUS line. > > > Signed-off-by: Enric Balletbo Serra <[email protected]> > > Signed-off-by: Andrey Smirnov <[email protected]> > > Cc: Chris Healy <[email protected]> > > Cc: Lucas Stach <[email protected]> > > Cc: Fabio Estevam <[email protected]> > > Cc: Guenter Roeck <[email protected]> > > Cc: Sebastian Reichel <[email protected]> > Cc: [email protected] > Cc: [email protected] > --- [...] > + /* Enable charge rationing by default */ > > + ret = regmap_update_bits(info->regmap, UCS1002_REG_GENERAL_CFG, > > + F_RATION_EN, F_RATION_EN); > > + if (ret) { > > + dev_err(dev, "Failed to read general config: %d\n", ret); > > + return ret; > > + } > + > > + /* > > + * Ignore the M1, M2, PWR_EN, and EM_EN pin states. Set active > > + * mode selection to BC1.2 CDP. > > + */ > > + ret = regmap_update_bits(info->regmap, UCS1002_REG_SWITCH_CFG, > > + V_SET_ACTIVE_MODE_MASK, > + V_SET_ACTIVE_MODE_BC12_CDP);
This doesn't work as the F_PIN_IGNORE bit isn't set, so the the external strap settings are applied. I had to apply the following diff to make the driver behave as expected again: --- a/drivers/power/supply/ucs1002_power.c +++ b/drivers/power/supply/ucs1002_power.c @@ -548,8 +548,8 @@ static int ucs1002_probe(struct i2c_client *client, * mode selection to BC1.2 CDP. */ ret = regmap_update_bits(info->regmap, UCS1002_REG_SWITCH_CFG, - V_SET_ACTIVE_MODE_MASK, - V_SET_ACTIVE_MODE_BC12_CDP); + V_SET_ACTIVE_MODE_MASK | F_PIN_IGNORE, + V_SET_ACTIVE_MODE_BC12_CDP | F_PIN_IGNORE); Regards, Lucas

