msm: board-9615: Configure devices for HSIC/HSUSB concurrent mode.
Set usb_core_id property in the platform data of four devices:
1. usb_core_id = 0 for the HSUSB ci13xxx device
2. usb_core_id = 1 for the HSIC ci13xxx device
3. usb_core_id = 0 for the HSUSB android device
4. usb_core_id = 1 for the HSIC android device (new device added)
Change-Id: I28fd5afeb2a137864868d799cd51d23bd9812be3
Signed-off-by: Ido Shayevitz <idos@codeaurora.org>
diff --git a/arch/arm/mach-msm/Makefile b/arch/arm/mach-msm/Makefile
index b47344e..702667b 100644
--- a/arch/arm/mach-msm/Makefile
+++ b/arch/arm/mach-msm/Makefile
@@ -301,6 +301,7 @@
obj-$(CONFIG_MACH_SAPPHIRE) += board-sapphire-rfkill.o msm_vibrator.o
CFLAGS_msm_vibrator.o += -Idrivers/staging/android
+CFLAGS_board-9615.o += -Idrivers/usb/gadget
obj-$(CONFIG_ARCH_FSM9XXX) += board-fsm9xxx.o
diff --git a/arch/arm/mach-msm/board-9615.c b/arch/arm/mach-msm/board-9615.c
index 7181990..a312e2b 100644
--- a/arch/arm/mach-msm/board-9615.c
+++ b/arch/arm/mach-msm/board-9615.c
@@ -52,6 +52,7 @@
#include "pm.h"
#include "pm-boot.h"
#include <mach/gpiomux.h>
+#include "ci13xxx_udc.h"
#ifdef CONFIG_ION_MSM
#define MSM_ION_AUDIO_SIZE 0xAF000
@@ -762,10 +763,21 @@
.core_clk_always_on_workaround = true,
};
-static struct msm_hsic_peripheral_platform_data msm_hsic_peripheral_pdata = {
+
+static struct ci13xxx_platform_data msm_peripheral_pdata = {
+ .usb_core_id = 0,
+};
+
+static struct msm_hsic_peripheral_platform_data
+ msm_hsic_peripheral_pdata_private = {
.core_clk_always_on_workaround = true,
};
+static struct ci13xxx_platform_data msm_hsic_peripheral_pdata = {
+ .usb_core_id = 1,
+ .prv_data = &msm_hsic_peripheral_pdata_private,
+};
+
#define PID_MAGIC_ID 0x71432909
#define SERIAL_NUM_MAGIC_ID 0x61945374
#define SERIAL_NUMBER_LENGTH 127
@@ -864,6 +876,7 @@
&msm_device_hsic_host,
&msm_device_usb_bam,
&msm_android_usb_device,
+ &msm_android_usb_hsic_device,
&msm9615_device_uart_gsbi4,
&msm9615_device_ext_2p95v_vreg,
&msm9615_device_ssbi_pmic1,
@@ -959,6 +972,8 @@
{
struct android_usb_platform_data *android_pdata =
msm_android_usb_device.dev.platform_data;
+ struct android_usb_platform_data *android_hsic_pdata =
+ msm_android_usb_hsic_device.dev.platform_data;
msm9615_device_init();
msm9615_init_gpiomux();
@@ -976,6 +991,8 @@
msm_device_otg.dev.platform_data = &msm_otg_pdata;
msm_otg_pdata.phy_init_seq = shelby_phy_init_seq;
+ msm_device_gadget_peripheral.dev.platform_data =
+ &msm_peripheral_pdata;
msm_device_hsic_peripheral.dev.platform_data =
&msm_hsic_peripheral_pdata;
msm_device_usb_bam.dev.platform_data = &msm_usb_bam_pdata;
@@ -988,8 +1005,12 @@
msm9615_init_mmc();
slim_register_board_info(msm_slim_devices,
ARRAY_SIZE(msm_slim_devices));
+
android_pdata->update_pid_and_serial_num =
usb_diag_update_pid_and_serial_num;
+ android_hsic_pdata->update_pid_and_serial_num =
+ usb_diag_update_pid_and_serial_num;
+
msm_pm_boot_pdata.p_addr = allocate_contiguous_ebi_nomap(SZ_8, SZ_64K);
BUG_ON(msm_pm_boot_init(&msm_pm_boot_pdata));
msm_tsens_early_init(&msm_tsens_pdata);
diff --git a/arch/arm/mach-msm/devices-9615.c b/arch/arm/mach-msm/devices-9615.c
index 06d8653..9c2b26a 100644
--- a/arch/arm/mach-msm/devices-9615.c
+++ b/arch/arm/mach-msm/devices-9615.c
@@ -1348,7 +1348,9 @@
return 0;
}
-struct android_usb_platform_data msm_android_usb_pdata;
+struct android_usb_platform_data msm_android_usb_pdata = {
+ .usb_core_id = 0,
+};
struct platform_device msm_android_usb_device = {
.name = "android_usb",
@@ -1358,6 +1360,19 @@
},
};
+struct android_usb_platform_data msm_android_usb_hsic_pdata = {
+ .usb_core_id = 1,
+};
+
+struct platform_device msm_android_usb_hsic_device = {
+ .name = "android_usb_hsic",
+ .id = -1,
+ .dev = {
+ .platform_data = &msm_android_usb_hsic_pdata,
+ },
+};
+
+
void __init msm9615_device_init(void)
{
msm_spm_init(msm_spm_data, ARRAY_SIZE(msm_spm_data));
@@ -1365,6 +1380,8 @@
BUG_ON(msm_rpmrs_levels_init(&msm_rpmrs_data));
msm_android_usb_pdata.swfi_latency =
msm_rpmrs_levels[0].latency_us;
+ msm_android_usb_hsic_pdata.swfi_latency =
+ msm_rpmrs_levels[0].latency_us;
}
diff --git a/arch/arm/mach-msm/devices.h b/arch/arm/mach-msm/devices.h
index e9911cf..f2fd791 100644
--- a/arch/arm/mach-msm/devices.h
+++ b/arch/arm/mach-msm/devices.h
@@ -113,6 +113,7 @@
extern struct platform_device msm_device_otg;
extern struct platform_device msm_android_usb_device;
+extern struct platform_device msm_android_usb_hsic_device;
extern struct platform_device msm_device_hsic_peripheral;
extern struct platform_device msm8960_device_otg;
extern struct platform_device msm8960_device_gadget_peripheral;