Swaminathan S <[email protected]> writes:
> Signed-off-by: Swaminathan S <[email protected]>
Please add a descriptive changelog.
Kevin
> ---
> arch/arm/mach-davinci/board-dm646x-evm.c | 34
> ++++++++++++++++++++++++++++++
> arch/arm/mach-davinci/dm646x.c | 8 +++++++
> 2 files changed, 42 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c
> b/arch/arm/mach-davinci/board-dm646x-evm.c
> index 8c88fd0..c48b0a4 100644
> --- a/arch/arm/mach-davinci/board-dm646x-evm.c
> +++ b/arch/arm/mach-davinci/board-dm646x-evm.c
> @@ -59,6 +59,7 @@
> /* CPLD Register 0 bits to control ATA */
> #define DM646X_EVM_ATA_RST BIT(0)
> #define DM646X_EVM_ATA_PWD BIT(1)
> +#define DM646X_EVM_USB_VBUS BIT(7)
>
> #define DM646X_EVM_PHY_MASK (0x2)
> #define DM646X_EVM_MDIO_FREQUENCY (2200000) /* PHY bus frequency */
> @@ -80,10 +81,13 @@ static struct davinci_uart_config uart_config __initdata
> = {
> .enabled_uarts = (1 << 0),
> };
>
> +struct i2c_client *cple_reg0_client;
> +
> /* CPLD Register 0 Client: used for I/O Control */
> static int cpld_reg0_probe(struct i2c_client *client,
> const struct i2c_device_id *id)
> {
> + cple_reg0_client = client;
> if (HAS_ATA) {
> u8 data;
> struct i2c_msg msg[2] = {
> @@ -107,9 +111,39 @@ static int cpld_reg0_probe(struct i2c_client *client,
> i2c_transfer(client->adapter, msg + 1, 1);
> }
>
> + setup_usb(500, 8);
> +
> return 0;
> }
>
> +void usb_vbus_control(u8 on)
> +{
> + u8 data;
> + struct i2c_msg msg[2] = {
> + {
> + .addr = cple_reg0_client->addr,
> + .flags = I2C_M_RD,
> + .len = 1,
> + .buf = &data,
> + },
> + {
> + .addr = cple_reg0_client->addr,
> + .flags = 0,
> + .len = 1,
> + .buf = &data,
> + },
> + };
> +
> + i2c_transfer(cple_reg0_client->adapter, msg, 1);
> + if (on)
> + data |= DM646X_EVM_USB_VBUS;
> + else
> + data &= ~DM646X_EVM_USB_VBUS;
> +
> + i2c_transfer(cple_reg0_client->adapter, msg + 1, 1);
> +}
> +EXPORT_SYMBOL(usb_vbus_control);
> +
> static const struct i2c_device_id cpld_reg_ids[] = {
> { "cpld_reg0", 0, },
> { },
> diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c
> index a9b20e5..633a25b 100644
> --- a/arch/arm/mach-davinci/dm646x.c
> +++ b/arch/arm/mach-davinci/dm646x.c
> @@ -315,6 +315,13 @@ static struct clk vpif1_clk = {
> .flags = ALWAYS_ENABLED,
> };
>
> +static struct clk usb_clk = {
> + .name = "usb",
> + .parent = &pll1_sysclk3,
> + .lpsc = DAVINCI_LPSC_USB,
> + .flags = ALWAYS_ENABLED,
> +};
> +
> struct davinci_clk dm646x_clks[] = {
> CLK(NULL, "ref", &ref_clk),
> CLK(NULL, "aux", &aux_clkin),
> @@ -355,6 +362,7 @@ struct davinci_clk dm646x_clks[] = {
> CLK("palm_bk3710", NULL, &ide_clk),
> CLK(NULL, "vpif0", &vpif0_clk),
> CLK(NULL, "vpif1", &vpif1_clk),
> + CLK(NULL, "usb", &usb_clk),
> CLK(NULL, NULL, NULL),
> };
>
> --
> 1.6.0.rc1.64.g61192
>
> _______________________________________________
> Davinci-linux-open-source mailing list
> [email protected]
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source