diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig index f77e8830580..35d727f706a 100644 --- a/arch/arm/mach-msm/Kconfig +++ b/arch/arm/mach-msm/Kconfig @@ -422,6 +422,14 @@ config MACH_MSM7627A_QRD1 help Support for the Qualcomm MSM7627A Refrence Design. +config MACH_MSM7627A_EVB + depends on ARCH_MSM7X27A + depends on !MSM_STACKED_MEMORY + default y + bool "MSM7627A EVB" + help + Support for the Qualcomm MSM7627A Reference Design. + config MACH_MSM7X30_SURF depends on ARCH_MSM7X30 depends on !MSM_STACKED_MEMORY diff --git a/arch/arm/mach-msm/Makefile b/arch/arm/mach-msm/Makefile index 53b7dabf891..dc841d82583 100644 --- a/arch/arm/mach-msm/Makefile +++ b/arch/arm/mach-msm/Makefile @@ -223,6 +223,7 @@ obj-$(CONFIG_MACH_MSM7X27A_RUMI3) += board-msm7x27a.o board-msm7627a-storage.o b obj-$(CONFIG_MACH_MSM7X27A_SURF) += board-msm7x27a.o board-msm7627a-storage.o board-msm7627a-bt.o board-msm7627a-camera.o board-msm7627a-display.o obj-$(CONFIG_MACH_MSM7X27A_FFA) += board-msm7x27a.o board-msm7627a-storage.o board-msm7627a-bt.o board-msm7627a-camera.o board-msm7627a-display.o obj-$(CONFIG_MACH_MSM7627A_QRD1) += board-qrd7627a.o board-msm7627a-storage.o board-msm7627a-bt.o board-msm7627a-camera.o board-msm7627a-display.o +obj-$(CONFIG_MACH_MSM7627A_EVB) += board-qrd7627a.o board-msm7627a-storage.o board-msm7627a-bt.o board-msm7627a-camera.o board-msm7627a-display.o obj-$(CONFIG_ARCH_MSM7X30) += board-msm7x30.o devices-msm7x30.o memory_topology.o obj-$(CONFIG_ARCH_MSM7X30) += clock-local.o clock-7x30.o acpuclock-7x30.o obj-$(CONFIG_MACH_MSM7X25_SURF) += board-msm7x27.o devices-msm7x25.o diff --git a/arch/arm/mach-msm/board-msm7627a-bt.c b/arch/arm/mach-msm/board-msm7627a-bt.c index 8b3b6064508..c92a8987aa0 100644 --- a/arch/arm/mach-msm/board-msm7627a-bt.c +++ b/arch/arm/mach-msm/board-msm7627a-bt.c @@ -933,6 +933,9 @@ void __init msm7627a_bt_power_init(void) int i, rc = 0; struct device *dev; + if (machine_is_msm7627a_evb()) + return; + gpio_bt_config(); i2c_register_board_info(MSM_GSBI1_QUP_I2C_BUS_ID, diff --git a/arch/arm/mach-msm/board-msm7627a-camera.c b/arch/arm/mach-msm/board-msm7627a-camera.c index a3c2da345eb..abf73020e31 100644 --- a/arch/arm/mach-msm/board-msm7627a-camera.c +++ b/arch/arm/mach-msm/board-msm7627a-camera.c @@ -509,7 +509,9 @@ void __init msm7627a_camera_init(void) qrd1_camera_gpio_cfg(); platform_add_devices(camera_devices_qrd, ARRAY_SIZE(camera_devices_qrd)); - } else + } else if (machine_is_msm7627a_evb()) + return; + else platform_add_devices(camera_devices_msm, ARRAY_SIZE(camera_devices_msm)); diff --git a/arch/arm/mach-msm/board-msm7627a-display.c b/arch/arm/mach-msm/board-msm7627a-display.c index 32d29b2e414..8c03d17b361 100644 --- a/arch/arm/mach-msm/board-msm7627a-display.c +++ b/arch/arm/mach-msm/board-msm7627a-display.c @@ -316,6 +316,10 @@ static struct platform_device *qrd_fb_devices[] __initdata = { &mipi_dsi_truly_panel_device, }; +static struct platform_device *evb_fb_devices[] __initdata = { + +}; + void __init msm_msm7627a_allocate_memory_regions(void) { void *addr; @@ -688,6 +692,9 @@ void __init msm_fb_add_devices(void) if (machine_is_msm7627a_qrd1()) platform_add_devices(qrd_fb_devices, ARRAY_SIZE(qrd_fb_devices)); + else if (machine_is_msm7627a_evb()) + platform_add_devices(evb_fb_devices, + ARRAY_SIZE(evb_fb_devices)); else platform_add_devices(msm_fb_devices, ARRAY_SIZE(msm_fb_devices)); diff --git a/arch/arm/mach-msm/board-msm7627a-storage.c b/arch/arm/mach-msm/board-msm7627a-storage.c index c3657b54273..93a61782cc5 100644 --- a/arch/arm/mach-msm/board-msm7627a-storage.c +++ b/arch/arm/mach-msm/board-msm7627a-storage.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2011, Code Aurora Forum. All rights reserved. +/* Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -148,7 +148,7 @@ static struct sdcc_gpio sdcc_cfg_data[] = { static int gpio_sdc1_hw_det = 85; static void gpio_sdc1_config(void) { - if (machine_is_msm7627a_qrd1()) + if (machine_is_msm7627a_qrd1() || machine_is_msm7627a_evb()) gpio_sdc1_hw_det = 42; } @@ -248,7 +248,8 @@ static unsigned int msm7627a_sdcc_slot_status(struct device *dev) } else { status = gpio_direction_input(gpio_sdc1_hw_det); if (!status) { - if (machine_is_msm7627a_qrd1()) + if (machine_is_msm7627a_qrd1() || + machine_is_msm7627a_evb()) status = !gpio_get_value(gpio_sdc1_hw_det); else status = gpio_get_value(gpio_sdc1_hw_det); diff --git a/arch/arm/mach-msm/board-qrd7627a.c b/arch/arm/mach-msm/board-qrd7627a.c index e3664a4c624..a21abb85936 100644 --- a/arch/arm/mach-msm/board-qrd7627a.c +++ b/arch/arm/mach-msm/board-qrd7627a.c @@ -658,7 +658,7 @@ static struct platform_device msm_batt_device = { .dev.platform_data = &msm_psy_batt_data, }; -static struct platform_device *qrd1_devices[] __initdata = { +static struct platform_device *qrd_common_devices[] __initdata = { &msm_device_dmov, &msm_device_smd, &msm_device_uart1, @@ -793,8 +793,27 @@ static void __init msm7627a_init_regulators(void) __func__, rc); } +static void msm7627a_add_io_devices(void) +{ + if (machine_is_msm7627a_evb()) + return; + +#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_RMI4_I2C) || \ + defined(CONFIG_TOUCHSCREEN_SYNAPTICS_RMI4_I2C_MODULE) + i2c_register_board_info(MSM_GSBI1_QUP_I2C_BUS_ID, + synaptic_i2c_clearpad3k, + ARRAY_SIZE(synaptic_i2c_clearpad3k)); +#endif + platform_device_register(&hs_pdev); + +#ifdef CONFIG_MSM_RPC_VIBRATOR + msm_init_pmic_vibrator(); +#endif + +} + #define UART1DM_RX_GPIO 45 -static void __init msm_qrd1_init(void) +static void __init msm_qrd_init(void) { msm7x2x_misc_init(); msm7627a_init_regulators(); @@ -811,8 +830,10 @@ static void __init msm_qrd1_init(void) #endif msm_device_gadget_peripheral.dev.platform_data = &msm_gadget_pdata; - platform_add_devices(qrd1_devices, - ARRAY_SIZE(qrd1_devices)); + + platform_add_devices(qrd_common_devices, + ARRAY_SIZE(qrd_common_devices)); + msm7627a_init_mmc(); #ifdef CONFIG_USB_EHCI_MSM_72K @@ -830,17 +851,7 @@ static void __init msm_qrd1_init(void) msm7627a_camera_init(); -#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_RMI4_I2C) || \ - defined(CONFIG_TOUCHSCREEN_SYNAPTICS_RMI4_I2C_MODULE) - i2c_register_board_info(MSM_GSBI1_QUP_I2C_BUS_ID, - synaptic_i2c_clearpad3k, - ARRAY_SIZE(synaptic_i2c_clearpad3k)); -#endif - platform_device_register(&hs_pdev); - -#ifdef CONFIG_MSM_RPC_VIBRATOR - msm_init_pmic_vibrator(); -#endif + msm7627a_add_io_devices(); } static void __init qrd7627a_init_early(void) @@ -853,7 +864,17 @@ MACHINE_START(MSM7627A_QRD1, "QRD MSM7627a QRD1") .map_io = msm_common_io_init, .reserve = msm7627a_reserve, .init_irq = msm_init_irq, - .init_machine = msm_qrd1_init, + .init_machine = msm_qrd_init, + .timer = &msm_timer, + .init_early = qrd7627a_init_early, + .handle_irq = vic_handle_irq, +MACHINE_END +MACHINE_START(MSM7627A_EVB, "QRD MSM7627a EVB") + .boot_params = PHYS_OFFSET + 0x100, + .map_io = msm_common_io_init, + .reserve = msm7627a_reserve, + .init_irq = msm_init_irq, + .init_machine = msm_qrd_init, .timer = &msm_timer, .init_early = qrd7627a_init_early, .handle_irq = vic_handle_irq,