msm: HTC: Add support for GSBI5, GSBI10, GSBI12
Change-Id: Ib5c127cab2adc3c1450f34eb5be0115ba682d591
diff --git a/arch/arm/mach-msm/clock-8960.c b/arch/arm/mach-msm/clock-8960.c
index a7f50cf..c67af4f 100755
--- a/arch/arm/mach-msm/clock-8960.c
+++ b/arch/arm/mach-msm/clock-8960.c
@@ -5694,11 +5694,12 @@
CLK_LOOKUP("core_clk", gsbi2_qup_clk.c, ""),
CLK_LOOKUP("core_clk", gsbi3_qup_clk.c, "qup_i2c.3"),
CLK_LOOKUP("core_clk", gsbi4_qup_clk.c, "qup_i2c.4"),
- CLK_LOOKUP("core_clk", gsbi5_qup_clk.c, ""),
+ CLK_LOOKUP("core_clk", gsbi5_qup_clk.c, "qup_i2c.5"),
CLK_LOOKUP("core_clk", gsbi6_qup_clk.c, ""),
CLK_LOOKUP("core_clk", gsbi7_qup_clk.c, ""),
- CLK_LOOKUP("core_clk", gsbi8_qup_clk.c, ""),
- CLK_LOOKUP("core_clk", gsbi9_qup_clk.c, ""),
+ CLK_LOOKUP("core_clk", gsbi8_qup_clk.c, "qup_i2c.8"),
+ CLK_LOOKUP("core_clk", gsbi9_qup_clk.c, "qup_i2c.9"),
+ CLK_LOOKUP("core_clk", gsbi10_qup_clk.c, "spi_qsd.1"),
CLK_LOOKUP("core_clk", gsbi10_qup_clk.c, "qup_i2c.10"),
CLK_LOOKUP("core_clk", gsbi11_qup_clk.c, ""),
CLK_LOOKUP("core_clk", gsbi12_qup_clk.c, "qup_i2c.12"),
@@ -5734,14 +5735,17 @@
CLK_LOOKUP("iface_clk", gsbi2_p_clk.c, ""),
CLK_LOOKUP("iface_clk", gsbi3_p_clk.c, "qup_i2c.3"),
CLK_LOOKUP("iface_clk", gsbi4_p_clk.c, "qup_i2c.4"),
- CLK_LOOKUP("iface_clk", gsbi5_p_clk.c, "msm_serial_hsl.0"),
+ CLK_LOOKUP("iface_clk", gsbi5_p_clk.c, "qup_i2c.5"),
CLK_LOOKUP("iface_clk", gsbi6_p_clk.c, "msm_serial_hs.0"),
CLK_LOOKUP("iface_clk", gsbi7_p_clk.c, ""),
/* used on 8960 SGLTE for serial console */
CLK_LOOKUP("iface_clk", gsbi8_p_clk.c, "msm_serial_hsl.1"),
/* used on 8960 standalone with Atheros Bluetooth */
+ CLK_LOOKUP("iface_clk", gsbi8_p_clk.c, "qup_i2c.8"),
CLK_LOOKUP("iface_clk", gsbi8_p_clk.c, "msm_serial_hs.2"),
+ CLK_LOOKUP("iface_clk", gsbi9_p_clk.c, "qup_i2c.9"),
CLK_LOOKUP("iface_clk", gsbi9_p_clk.c, "msm_serial_hs.1"),
+ CLK_LOOKUP("iface_clk", gsbi10_p_clk.c, "spi_qsd.1"),
CLK_LOOKUP("iface_clk", gsbi10_p_clk.c, "qup_i2c.10"),
CLK_LOOKUP("iface_clk", gsbi11_p_clk.c, ""),
CLK_LOOKUP("iface_clk", gsbi12_p_clk.c, "qup_i2c.12"),
diff --git a/arch/arm/mach-msm/devices-8960.c b/arch/arm/mach-msm/devices-8960.c
index 6ccb9a6..b7e62b8 100644
--- a/arch/arm/mach-msm/devices-8960.c
+++ b/arch/arm/mach-msm/devices-8960.c
@@ -1876,6 +1876,34 @@
.resource = resources_qup_i2c_gsbi3,
};
+static struct resource resources_qup_i2c_gsbi5[] = {
+ {
+ .name = "gsbi_qup_i2c_addr",
+ .start = MSM_GSBI5_PHYS,
+ .end = MSM_GSBI5_PHYS + MSM_QUP_SIZE - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .name = "qup_phys_addr",
+ .start = MSM_GSBI5_QUP_PHYS,
+ .end = MSM_GSBI5_QUP_PHYS + 4 - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .name = "qup_err_intr",
+ .start = GSBI5_QUP_IRQ,
+ .end = GSBI5_QUP_IRQ,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+struct platform_device msm8960_device_qup_i2c_gsbi5 = {
+ .name = "qup_i2c",
+ .id = 5,
+ .num_resources = ARRAY_SIZE(resources_qup_i2c_gsbi5),
+ .resource = resources_qup_i2c_gsbi5,
+};
+
static struct resource resources_qup_i2c_gsbi9[] = {
{
.name = "gsbi_qup_i2c_addr",
@@ -1951,6 +1979,20 @@
.end = GSBI12_QUP_IRQ,
.flags = IORESOURCE_IRQ,
},
+#ifdef CONFIG_MACH_HTC
+ {
+ .name = "i2c_sda",
+ .start = 44,
+ .end = 44,
+ .flags = IORESOURCE_IO,
+ },
+ {
+ .name = "i2c_clk",
+ .start = 45,
+ .end = 45,
+ .flags = IORESOURCE_IO,
+ },
+#endif
};
struct platform_device msm8960_device_qup_i2c_gsbi12 = {
@@ -2360,6 +2402,61 @@
.resource = resources_qup_spi_gsbi1,
};
+static struct resource resources_qup_spi_gsbi10[] = {
+ {
+ .name = "spi_base",
+ .start = MSM_GSBI10_QUP_PHYS,
+ .end = MSM_GSBI10_QUP_PHYS + SZ_4K - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .name = "gsbi_base",
+ .start = MSM_GSBI10_PHYS,
+ .end = MSM_GSBI10_PHYS + 4 - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .name = "spi_irq_in",
+ .start = GSBI10_QUP_IRQ,
+ .end = GSBI10_QUP_IRQ,
+ .flags = IORESOURCE_IRQ,
+ },
+#if 0 /* move gpio config to board file */
+ {
+ .name = "spi_clk",
+ .start = 74,
+ .end = 74,
+ .flags = IORESOURCE_IO,
+ },
+ {
+ .name = "spi_cs",
+ .start = 73,
+ .end = 73,
+ .flags = IORESOURCE_IO,
+ },
+ {
+ .name = "spi_miso",
+ .start = 72,
+ .end = 72,
+ .flags = IORESOURCE_IO,
+ },
+ {
+ .name = "spi_mosi",
+ .start = 71,
+ .end = 71,
+ .flags = IORESOURCE_IO,
+ },
+#endif
+};
+
+/* Use GSBI10 QUP for SPI-1 */
+struct platform_device msm8960_device_qup_spi_gsbi10 = {
+ .name = "spi_qsd",
+ .id = 1,
+ .num_resources = ARRAY_SIZE(resources_qup_spi_gsbi10),
+ .resource = resources_qup_spi_gsbi10,
+};
+
struct platform_device msm_pcm = {
.name = "msm-pcm-dsp",
.id = -1,
diff --git a/arch/arm/mach-msm/devices.h b/arch/arm/mach-msm/devices.h
index 5eb71ee..8e44ed7 100644
--- a/arch/arm/mach-msm/devices.h
+++ b/arch/arm/mach-msm/devices.h
@@ -65,11 +65,13 @@
extern struct platform_device msm8960_device_ssbi_pmic;
extern struct platform_device msm8960_device_qup_i2c_gsbi3;
extern struct platform_device msm8960_device_qup_i2c_gsbi4;
+extern struct platform_device msm8960_device_qup_i2c_gsbi5;
extern struct platform_device msm8960_device_qup_i2c_gsbi8;
extern struct platform_device msm8960_device_qup_i2c_gsbi9;
extern struct platform_device msm8960_device_qup_i2c_gsbi10;
extern struct platform_device msm8960_device_qup_i2c_gsbi12;
extern struct platform_device msm8960_device_qup_spi_gsbi1;
+extern struct platform_device msm8960_device_qup_spi_gsbi10;
extern struct platform_device msm8960_gemini_device;
extern struct platform_device msm8960_mercury_device;
extern struct platform_device msm8960_device_i2c_mux_gsbi4;