On Mon, Apr 29, 2019 at 1:36 PM Guenter Roeck <li...@roeck-us.net> 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 <enric.balle...@collabora.com> > > Signed-off-by: Andrey Smirnov <andrew.smir...@gmail.com> > > Cc: Chris Healy <cphe...@gmail.com> > > Cc: Lucas Stach <l.st...@pengutronix.de> > > Cc: Fabio Estevam <fabio.este...@nxp.com> > > Cc: Guenter Roeck <li...@roeck-us.net> > > Cc: Sebastian Reichel <s...@kernel.org> > > Cc: linux-kernel@vger.kernel.org > > Cc: linux...@vger.kernel.org > > --- > > 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