msm9615: Add board specific data for slimbus
Slimbus controller device, interrupt, slew-rate resources, and
relevant GPIOs are added to 9615.
Signed-off-by: Sagar Dharia <sdharia@codeaurora.org>
diff --git a/arch/arm/mach-msm/board-9615-gpiomux.c b/arch/arm/mach-msm/board-9615-gpiomux.c
index 4baa851..ea8caf5 100644
--- a/arch/arm/mach-msm/board-9615-gpiomux.c
+++ b/arch/arm/mach-msm/board-9615-gpiomux.c
@@ -23,6 +23,12 @@
.pull = GPIOMUX_PULL_NONE,
};
+static struct gpiomux_setting slimbus = {
+ .func = GPIOMUX_FUNC_2,
+ .drv = GPIOMUX_DRV_8MA,
+ .pull = GPIOMUX_PULL_KEEPER,
+};
+
static struct gpiomux_setting gsbi4 = {
.func = GPIOMUX_FUNC_1,
.drv = GPIOMUX_DRV_8MA,
@@ -227,6 +233,21 @@
},
};
+static struct msm_gpiomux_config msm9615_slimbus_configs[] __initdata = {
+ {
+ .gpio = 20, /* Slimbus data */
+ .settings = {
+ [GPIOMUX_SUSPENDED] = &slimbus,
+ },
+ },
+ {
+ .gpio = 23, /* Slimbus clk */
+ .settings = {
+ [GPIOMUX_SUSPENDED] = &slimbus,
+ },
+ },
+};
+
int __init msm9615_init_gpiomux(void)
{
int rc;
@@ -239,6 +260,9 @@
msm_gpiomux_install(msm9615_gsbi_configs,
ARRAY_SIZE(msm9615_gsbi_configs));
+ msm_gpiomux_install(msm9615_slimbus_configs,
+ ARRAY_SIZE(msm9615_slimbus_configs));
+
msm_gpiomux_install(msm9615_ps_hold_config,
ARRAY_SIZE(msm9615_ps_hold_config));
msm_gpiomux_install(msm9615_sdcc2_configs,
diff --git a/arch/arm/mach-msm/board-9615.c b/arch/arm/mach-msm/board-9615.c
index 7259603..c404045 100644
--- a/arch/arm/mach-msm/board-9615.c
+++ b/arch/arm/mach-msm/board-9615.c
@@ -13,6 +13,7 @@
#include <linux/kernel.h>
#include <linux/platform_device.h>
#include <linux/i2c.h>
+#include <linux/slimbus/slimbus.h>
#include <linux/msm_ssbi.h>
#include <linux/memblock.h>
#include <linux/usb/android.h>
@@ -227,6 +228,10 @@
#endif
}
+static struct slim_boardinfo msm_slim_devices[] = {
+ /* add slimbus slaves as needed */
+};
+
static struct msm_spi_platform_data msm9615_qup_spi_gsbi3_pdata = {
.max_clock_speed = 24000000,
};
@@ -391,6 +396,7 @@
&msm9615_device_qup_i2c_gsbi5,
&msm9615_device_qup_spi_gsbi3,
&msm_device_sps,
+ &msm9615_slim_ctrl,
&msm9615_device_tsens,
&msm_device_nand,
&msm_device_bam_dmux,
@@ -450,6 +456,8 @@
msm9615_init_ar6000pm();
msm9615_init_mmc();
+ slim_register_board_info(msm_slim_devices,
+ ARRAY_SIZE(msm_slim_devices));
msm_pm_set_platform_data(msm_pm_data, ARRAY_SIZE(msm_pm_data));
msm_pm_set_rpm_wakeup_irq(RPM_APCC_CPU0_WAKE_UP_IRQ);
msm_cpuidle_set_states(msm_cstates, ARRAY_SIZE(msm_cstates),
diff --git a/arch/arm/mach-msm/devices-9615.c b/arch/arm/mach-msm/devices-9615.c
index 0d3abb6..b3541d5 100644
--- a/arch/arm/mach-msm/devices-9615.c
+++ b/arch/arm/mach-msm/devices-9615.c
@@ -278,6 +278,53 @@
.resource = resources_qup_spi_gsbi3,
};
+#define LPASS_SLIMBUS_PHYS 0x28080000
+#define LPASS_SLIMBUS_BAM_PHYS 0x28084000
+#define LPASS_SLIMBUS_SLEW (MSM9615_TLMM_PHYS + 0x207C)
+/* Board info for the slimbus slave device */
+static struct resource slimbus_res[] = {
+ {
+ .start = LPASS_SLIMBUS_PHYS,
+ .end = LPASS_SLIMBUS_PHYS + 8191,
+ .flags = IORESOURCE_MEM,
+ .name = "slimbus_physical",
+ },
+ {
+ .start = LPASS_SLIMBUS_BAM_PHYS,
+ .end = LPASS_SLIMBUS_BAM_PHYS + 8191,
+ .flags = IORESOURCE_MEM,
+ .name = "slimbus_bam_physical",
+ },
+ {
+ .start = LPASS_SLIMBUS_SLEW,
+ .end = LPASS_SLIMBUS_SLEW + 4 - 1,
+ .flags = IORESOURCE_MEM,
+ .name = "slimbus_slew_reg",
+ },
+ {
+ .start = SLIMBUS0_CORE_EE1_IRQ,
+ .end = SLIMBUS0_CORE_EE1_IRQ,
+ .flags = IORESOURCE_IRQ,
+ .name = "slimbus_irq",
+ },
+ {
+ .start = SLIMBUS0_BAM_EE1_IRQ,
+ .end = SLIMBUS0_BAM_EE1_IRQ,
+ .flags = IORESOURCE_IRQ,
+ .name = "slimbus_bam_irq",
+ },
+};
+
+struct platform_device msm9615_slim_ctrl = {
+ .name = "msm_slim_ctrl",
+ .id = 1,
+ .num_resources = ARRAY_SIZE(slimbus_res),
+ .resource = slimbus_res,
+ .dev = {
+ .coherent_dma_mask = 0xffffffffULL,
+ },
+};
+
static struct resource resources_ssbi_pmic1[] = {
{
.start = MSM_PMIC1_SSBI_CMD_PHYS,
diff --git a/arch/arm/mach-msm/devices.h b/arch/arm/mach-msm/devices.h
index a243294..8a9c9fc 100644
--- a/arch/arm/mach-msm/devices.h
+++ b/arch/arm/mach-msm/devices.h
@@ -77,6 +77,7 @@
extern struct platform_device msm9615_device_uart_gsbi4;
extern struct platform_device msm9615_device_qup_i2c_gsbi5;
extern struct platform_device msm9615_device_qup_spi_gsbi3;
+extern struct platform_device msm9615_slim_ctrl;
extern struct platform_device msm9615_device_ssbi_pmic1;
extern struct platform_device msm9615_device_tsens;
extern struct platform_device msm_bus_9615_sys_fabric;