diff options
Diffstat (limited to 'arch/arm/mach-tegra/board-ventana.c')
-rw-r--r-- | arch/arm/mach-tegra/board-ventana.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/board-ventana.c b/arch/arm/mach-tegra/board-ventana.c index 845494baf9e5..89a27cb229e9 100644 --- a/arch/arm/mach-tegra/board-ventana.c +++ b/arch/arm/mach-tegra/board-ventana.c @@ -34,6 +34,7 @@ #include <linux/gpio_keys.h> #include <linux/input.h> #include <linux/platform_data/tegra_usb.h> +#include <linux/usb/android_composite.h> #include <linux/mfd/tps6586x.h> #include <linux/memblock.h> #include <linux/i2c/atmel_mxt_ts.h> @@ -59,6 +60,7 @@ #include "board-ventana.h" #include "devices.h" #include "gpio-names.h" +#include "fuse.h" #include "wakeups-t2.h" #include "pm.h" @@ -135,6 +137,43 @@ static __initdata struct tegra_clk_init_table ventana_clk_init_table[] = { { NULL, NULL, 0, 0}, }; +static char *usb_functions[] = { "mtp" }; +static char *usb_functions_adb[] = { "mtp", "adb" }; + +static struct android_usb_product usb_products[] = { + { + .product_id = 0x7102, + .num_functions = ARRAY_SIZE(usb_functions), + .functions = usb_functions, + }, + { + .product_id = 0x7100, + .num_functions = ARRAY_SIZE(usb_functions_adb), + .functions = usb_functions_adb, + }, +}; + +/* standard android USB platform data */ +static struct android_usb_platform_data andusb_plat = { + .vendor_id = 0x0955, + .product_id = 0x7100, + .manufacturer_name = "NVIDIA", + .product_name = "Ventana", + .serial_number = NULL, + .num_products = ARRAY_SIZE(usb_products), + .products = usb_products, + .num_functions = ARRAY_SIZE(usb_functions_adb), + .functions = usb_functions_adb, +}; + +static struct platform_device androidusb_device = { + .name = "android_usb", + .id = -1, + .dev = { + .platform_data = &andusb_plat, + }, +}; + static struct tegra_ulpi_config ventana_ehci2_ulpi_phy_config = { .reset_gpio = TEGRA_GPIO_PV1, .clk = "cdev2", @@ -546,9 +585,12 @@ static void __init tegra_ventana_init(void) ventana_pinmux_init(); ventana_i2c_init(); ventana_uart_init(); + snprintf(serial, sizeof(serial), "%llx", tegra_chip_uid()); + andusb_plat.serial_number = kstrdup(serial, GFP_KERNEL); tegra_ehci2_device.dev.platform_data = &ventana_ehci2_ulpi_platform_data; platform_add_devices(ventana_devices, ARRAY_SIZE(ventana_devices)); + ventana_sdhci_init(); ventana_charge_init(); ventana_regulator_init(); |