On Mon, Apr 29, 2019 at 1:36 PM Guenter Roeck <[email protected]> wrote: > > On Mon, Apr 29, 2019 at 12:53:48PM -0700, Andrey Smirnov wrote: > > 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] > > --- > > drivers/power/supply/Kconfig | 9 + > > drivers/power/supply/Makefile | 1 + > > drivers/power/supply/ucs1002_power.c | 646 +++++++++++++++++++++++++++ > > 3 files changed, 656 insertions(+) > > create mode 100644 drivers/power/supply/ucs1002_power.c > > > > diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig > > index e901b9879e7e..c614c8a196f3 100644 > > --- a/drivers/power/supply/Kconfig > > +++ b/drivers/power/supply/Kconfig > > @@ -660,4 +660,13 @@ config FUEL_GAUGE_SC27XX > > Say Y here to enable support for fuel gauge with SC27XX > > PMIC chips. > > > > +config CHARGER_UCS1002 > > + tristate "Microchip UCS1002 USB Port Power Controller" > > + depends on I2C > > + depends on OF > > + select REGMAP_I2C > > + help > > + Say Y to enable support for Microchip UCS1002 Programmable > > + USB Port Power Controller with Charger Emulation. > > + > > endif # POWER_SUPPLY > > diff --git a/drivers/power/supply/Makefile b/drivers/power/supply/Makefile > > index b731c2a9b695..c56803a9e4fe 100644 > > --- a/drivers/power/supply/Makefile > > +++ b/drivers/power/supply/Makefile > > @@ -87,3 +87,4 @@ obj-$(CONFIG_AXP288_CHARGER) += axp288_charger.o > > obj-$(CONFIG_CHARGER_CROS_USBPD) += cros_usbpd-charger.o > > obj-$(CONFIG_CHARGER_SC2731) += sc2731_charger.o > > obj-$(CONFIG_FUEL_GAUGE_SC27XX) += sc27xx_fuel_gauge.o > > +obj-$(CONFIG_CHARGER_UCS1002) += ucs1002_power.o > > diff --git a/drivers/power/supply/ucs1002_power.c > > b/drivers/power/supply/ucs1002_power.c > > new file mode 100644 > > index 000000000000..677f20a4d76f > > --- /dev/null > > +++ b/drivers/power/supply/ucs1002_power.c > > @@ -0,0 +1,646 @@ > ... > > + > > +static enum power_supply_usb_type ucs1002_usb_types[] = { > > + POWER_SUPPLY_USB_TYPE_PD, > > + POWER_SUPPLY_USB_TYPE_SDP, > > + POWER_SUPPLY_USB_TYPE_DCP, > > + POWER_SUPPLY_USB_TYPE_CDP, > > + POWER_SUPPLY_USB_TYPE_UNKNOWN, > > +}; > > + > > +static int ucs1002_set_usb_type(struct ucs1002_info *info, int val) > > +{ > > + unsigned int mode; > > + > > + if (val >= ARRAY_SIZE(ucs1002_usb_types)) > > + return -EINVAL; > > + > I hate to bring it up that late, but I don't see a check > against val being negative anywhere in the calling code. >
Sure, I'll add it in v4 Thanks, Andrey Smirnov

