apq8064: slim: Add MSM slimbus controller to APQ8064
Add device definition, and initialization code to support slimbus
controller on APQ8064.
Signed-off-by: Sagar Dharia <sdharia@codeaurora.org>
Conflicts:
arch/arm/mach-msm/board-apq8064.c
diff --git a/arch/arm/mach-msm/board-apq8064.c b/arch/arm/mach-msm/board-apq8064.c
index b021524..be9698a 100644
--- a/arch/arm/mach-msm/board-apq8064.c
+++ b/arch/arm/mach-msm/board-apq8064.c
@@ -15,6 +15,7 @@
#include <linux/io.h>
#include <linux/irq.h>
#include <linux/i2c.h>
+#include <linux/slimbus/slimbus.h>
#include <linux/msm_ssbi.h>
#include <linux/spi/spi.h>
#include <asm/mach-types.h>
@@ -293,6 +294,7 @@
static struct platform_device *common_devices[] __initdata = {
&apq8064_device_qup_i2c_gsbi4,
&apq8064_device_qup_spi_gsbi5,
+ &apq8064_slim_ctrl,
&apq8064_device_ssbi_pmic1,
&apq8064_device_ssbi_pmic2,
};
@@ -455,6 +457,10 @@
},
};
+static struct slim_boardinfo apq8064_slim_devices[] = {
+ /* Add slimbus slaves as needed */
+};
+
static struct msm_i2c_platform_data apq8064_i2c_qup_gsbi4_pdata = {
.clk_freq = 100000,
.src_clk_rate = 24000000,
@@ -524,6 +530,8 @@
msm8064_pm8921_regulator_pdata_len;
platform_add_devices(common_devices, ARRAY_SIZE(common_devices));
apq8064_init_mmc();
+ slim_register_board_info(apq8064_slim_devices,
+ ARRAY_SIZE(apq8064_slim_devices));
}
static void __init apq8064_sim_init(void)
diff --git a/arch/arm/mach-msm/devices-8064.c b/arch/arm/mach-msm/devices-8064.c
index 32bc651..ce01c7f 100644
--- a/arch/arm/mach-msm/devices-8064.c
+++ b/arch/arm/mach-msm/devices-8064.c
@@ -187,6 +187,46 @@
},
};
+#define LPASS_SLIMBUS_PHYS 0x28080000
+#define LPASS_SLIMBUS_BAM_PHYS 0x28084000
+/* 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 = 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 apq8064_slim_ctrl = {
+ .name = "msm_slim_ctrl",
+ .id = 1,
+ .num_resources = ARRAY_SIZE(slimbus_res),
+ .resource = slimbus_res,
+ .dev = {
+ .coherent_dma_mask = 0xffffffffULL,
+ },
+};
+
struct platform_device apq8064_device_ssbi_pmic1 = {
.name = "msm_ssbi",
.id = 0,
diff --git a/arch/arm/mach-msm/devices.h b/arch/arm/mach-msm/devices.h
index 80783d1..3cd7fea 100644
--- a/arch/arm/mach-msm/devices.h
+++ b/arch/arm/mach-msm/devices.h
@@ -63,6 +63,7 @@
extern struct platform_device apq8064_device_uart_gsbi3;
extern struct platform_device apq8064_device_qup_i2c_gsbi4;
extern struct platform_device apq8064_device_qup_spi_gsbi5;
+extern struct platform_device apq8064_slim_ctrl;
extern struct platform_device apq8064_device_ssbi_pmic1;
extern struct platform_device apq8064_device_ssbi_pmic2;