From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sylvain Lemieux Date: Tue, 14 Mar 2017 11:28:29 -0400 Subject: [U-Boot] [PATCH] usb: lpc32xx: Add i2c DM support Message-ID: <20170314152829.29887-1-slemieux.tyco@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de From: Liam Beguin Add DM support for i2c functions. Signed-off-by: Liam Beguin Signed-off-by: Sylvain Lemieux --- Note: * This patch is require as part of the DM support of the LPC32xx I2C driver. All I2C drivers should be converted, to DM, by the end of June 2017. * The USB driver is supporting the DM and non-DM API. * This patch depend on the following patchset: https://lists.denx.de/pipermail/u-boot/2017-March/283672.html drivers/usb/host/ohci-lpc32xx.c | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/drivers/usb/host/ohci-lpc32xx.c b/drivers/usb/host/ohci-lpc32xx.c index 9245126ed6..51be4c90c7 100644 --- a/drivers/usb/host/ohci-lpc32xx.c +++ b/drivers/usb/host/ohci-lpc32xx.c @@ -14,8 +14,10 @@ #include #include #include +#include #include #include +#include /* OTG I2C controller module register structures */ struct otgi2c_regs { @@ -83,12 +85,35 @@ static struct clk_pm_regs *clk_pwr = (struct clk_pm_regs *)CLK_PM_BASE; static int isp1301_set_value(int reg, u8 value) { +#ifndef CONFIG_DM_I2C return i2c_write(ISP1301_I2C_ADDR, reg, 1, &value, 1); +#else + struct udevice *dev; + int ret; + + ret = i2c_get_chip_for_busnum(I2C_2, ISP1301_I2C_ADDR, + 1, &dev); + if (ret) + return ret; + + return dm_i2c_write(dev, reg, &value, 1); +#endif } -static void isp1301_configure(void) +static int isp1301_configure(void) { +#ifndef CONFIG_DM_I2C i2c_set_bus_num(I2C_2); +#else + int ret; + struct udevice *bus; + + ret = uclass_get_device_by_seq(UCLASS_I2C, I2C_2, &bus); + if (ret) { + debug("%s: No bus %d\n", __func__, I2C_2); + return ret; + } +#endif /* * LPC32XX only supports DAT_SE0 USB mode @@ -116,6 +141,8 @@ static void isp1301_configure(void) /* Enable usb_need_clk clock after transceiver is initialized */ setbits_le32(&clk_pwr->usb_ctrl, CLK_USBCTRL_USBDVND_EN); + + return 0; } static int usbpll_setup(void) @@ -167,7 +194,9 @@ int usb_cpu_init(void) return ret; /* Configure ISP1301 */ - isp1301_configure(); + ret = isp1301_configure(); + if (ret) + return ret; /* setup USB clocks and PLL */ ret = usbpll_setup(); -- 2.11.0