summaryrefslogtreecommitdiff
path: root/arch/arm/mach-mx5/mx53_evk.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-mx5/mx53_evk.c')
-rw-r--r--arch/arm/mach-mx5/mx53_evk.c807
1 files changed, 50 insertions, 757 deletions
diff --git a/arch/arm/mach-mx5/mx53_evk.c b/arch/arm/mach-mx5/mx53_evk.c
index 702d7d8912d0..443857c76a84 100644
--- a/arch/arm/mach-mx5/mx53_evk.c
+++ b/arch/arm/mach-mx5/mx53_evk.c
@@ -57,47 +57,11 @@
#include <mach/gpio.h>
#include <mach/mmc.h>
#include <mach/mxc_dvfs.h>
-#include <mach/iomux-mx53.h>
-
+#include "iomux.h"
+#include "mx53_pins.h"
#include "crm_regs.h"
#include "devices.h"
#include "usb.h"
-#include <linux/android_pmem.h>
-#include <linux/usb/android.h>
-
-#define ARM2_SD1_CD (0*32 + 1) /* GPIO_1_1 */
-
-#define MX53_HP_DETECT (1*32 + 5) /* GPIO_2_5 */
-
-#define EVK_SD3_CD (2*32 + 11) /* GPIO_3_11 */
-#define EVK_SD3_WP (2*32 + 12) /* GPIO_3_12 */
-#define EVK_SD1_CD (2*32 + 13) /* GPIO_3_13 */
-#define EVK_SD1_WP (2*32 + 14) /* GPIO_3_14 */
-#define ARM2_OTG_VBUS (2*32 + 22) /* GPIO_3_22 */
-#define MX53_DVI_PD (2*32 + 24) /* GPIO_3_24 */
-#define EVK_TS_INT (2*32 + 26) /* GPIO_3_26 */
-#define MX53_DVI_I2C (2*32 + 28) /* GPIO_3_28 */
-#define MX53_DVI_DETECT (2*32 + 31) /* GPIO_3_31 */
-
-#define MX53_CAM_RESET (3*32 + 0) /* GPIO_4_0 */
-#define MX53_ESAI_RESET (3*32 + 2) /* GPIO_4_2 */
-#define MX53_CAN2_EN2 (3*32 + 4) /* GPIO_4_4 */
-#define MX53_12V_EN (3*32 + 5) /* GPIO_4_5 */
-#define ARM2_LCD_CONTRAST (3*32 + 20) /* GPIO_4_20 */
-
-#define MX53_DVI_RESET (4*32 + 0) /* GPIO_5_0 */
-#define EVK_USB_HUB_RESET (4*32 + 20) /* GPIO_5_20 */
-#define MX53_TVIN_PWR (4*32 + 23) /* GPIO_5_23 */
-#define MX53_CAN2_EN1 (4*32 + 24) /* GPIO_5_24 */
-#define MX53_TVIN_RESET (4*32 + 25) /* GPIO_5_25 */
-
-#define EVK_OTG_VBUS (5*32 + 6) /* GPIO_6_6 */
-
-#define EVK_FEC_PHY_RESET (6*32 + 6) /* GPIO_7_6 */
-#define EVK_USBH1_VBUS (6*32 + 8) /* GPIO_7_8 */
-#define MX53_PMIC_INT (6*32 + 11) /* GPIO_7_11 */
-#define MX53_CAN1_EN1 (6*32 + 12) /* GPIO_7_12 */
-#define MX53_CAN1_EN2 (6*32 + 13) /* GPIO_7_13 */
/*!
* @file mach-mx53/mx53_evk.c
@@ -107,297 +71,11 @@
* @ingroup MSL_MX53
*/
extern int __init mx53_evk_init_mc13892(void);
+extern void __init mx53_evk_io_init(void);
extern struct cpu_wp *(*get_cpu_wp)(int *wp);
extern void (*set_num_cpu_wp)(int num);
static int num_cpu_wp = 3;
-static struct pad_desc mx53common_pads[] = {
- MX53_PAD_EIM_WAIT__GPIO_5_0,
-
- MX53_PAD_EIM_OE__DI1_PIN7,
- MX53_PAD_EIM_RW__DI1_PIN8,
-
- MX53_PAD_EIM_A25__DI0_D1_CS,
-
- MX53_PAD_EIM_D16__CSPI1_SCLK,
- MX53_PAD_EIM_D17__CSPI1_MISO,
- MX53_PAD_EIM_D18__CSPI1_MOSI,
-
- MX53_PAD_EIM_D20__SER_DISP0_CS,
-
- MX53_PAD_EIM_D23__DI0_D0_CS,
-
- MX53_PAD_EIM_D24__GPIO_3_24,
- MX53_PAD_EIM_D26__GPIO_3_26,
-
- MX53_PAD_EIM_D29__DISPB0_SER_RS,
-
- MX53_PAD_EIM_D30__DI0_PIN11,
- MX53_PAD_EIM_D31__DI0_PIN12,
-
- MX53_PAD_ATA_DA_1__GPIO_7_7,
- MX53_PAD_ATA_DATA4__GPIO_2_4,
- MX53_PAD_ATA_DATA5__GPIO_2_5,
- MX53_PAD_ATA_DATA6__GPIO_2_6,
-
- MX53_PAD_SD2_CLK__SD2_CLK,
- MX53_PAD_SD2_CMD__SD2_CMD,
- MX53_PAD_SD2_DATA0__SD2_DAT0,
- MX53_PAD_SD2_DATA1__SD2_DAT1,
- MX53_PAD_SD2_DATA2__SD2_DAT2,
- MX53_PAD_SD2_DATA3__SD2_DAT3,
- MX53_PAD_ATA_DATA12__SD2_DAT4,
- MX53_PAD_ATA_DATA13__SD2_DAT5,
- MX53_PAD_ATA_DATA14__SD2_DAT6,
- MX53_PAD_ATA_DATA15__SD2_DAT7,
-
- MX53_PAD_CSI0_D10__UART1_TXD,
- MX53_PAD_CSI0_D11__UART1_RXD,
-
- MX53_PAD_ATA_BUFFER_EN__UART2_RXD,
- MX53_PAD_ATA_DMARQ__UART2_TXD,
- MX53_PAD_ATA_DIOR__UART2_RTS,
- MX53_PAD_ATA_INTRQ__UART2_CTS,
-
- MX53_PAD_ATA_CS_0__UART3_TXD,
- MX53_PAD_ATA_CS_1__UART3_RXD,
-
- MX53_PAD_KEY_COL0__AUD5_TXC,
- MX53_PAD_KEY_ROW0__AUD5_TXD,
- MX53_PAD_KEY_COL1__AUD5_TXFS,
- MX53_PAD_KEY_ROW1__AUD5_RXD,
-
- MX53_PAD_CSI0_D7__GPIO_5_25,
-
- MX53_PAD_GPIO_2__MLBDAT,
- MX53_PAD_GPIO_3__MLBCLK,
-
- MX53_PAD_GPIO_6__MLBSIG,
-
- MX53_PAD_GPIO_4__GPIO_1_4,
- MX53_PAD_GPIO_7__GPIO_1_7,
- MX53_PAD_GPIO_8__GPIO_1_8,
-
- MX53_PAD_GPIO_10__GPIO_4_0,
-
- MX53_PAD_KEY_COL2__TXCAN1,
- MX53_PAD_KEY_ROW2__RXCAN1,
-
- /* CAN1 -- EN */
- MX53_PAD_GPIO_18__GPIO_7_13,
- /* CAN1 -- STBY */
- MX53_PAD_GPIO_17__GPIO_7_12,
- /* CAN1 -- NERR */
- MX53_PAD_GPIO_5__GPIO_1_5,
-
- MX53_PAD_KEY_COL4__TXCAN2,
- MX53_PAD_KEY_ROW4__RXCAN2,
-
- /* CAN2 -- EN */
- MX53_PAD_CSI0_D6__GPIO_5_24,
- /* CAN2 -- STBY */
- MX53_PAD_GPIO_14__GPIO_4_4,
- /* CAN2 -- NERR */
- MX53_PAD_CSI0_D4__GPIO_5_22,
-
- MX53_PAD_GPIO_11__GPIO_4_1,
- MX53_PAD_GPIO_12__GPIO_4_2,
- MX53_PAD_GPIO_13__GPIO_4_3,
- MX53_PAD_GPIO_16__GPIO_7_11,
- MX53_PAD_GPIO_19__GPIO_4_5,
-
- /* DI0 display clock */
- MX53_PAD_DI0_DISP_CLK__DI0_DISP_CLK,
-
- /* DI0 data enable */
- MX53_PAD_DI0_PIN15__DI0_PIN15,
- /* DI0 HSYNC */
- MX53_PAD_DI0_PIN2__DI0_PIN2,
- /* DI0 VSYNC */
- MX53_PAD_DI0_PIN3__DI0_PIN3,
-
- MX53_PAD_DISP0_DAT0__DISP0_DAT0,
- MX53_PAD_DISP0_DAT1__DISP0_DAT1,
- MX53_PAD_DISP0_DAT2__DISP0_DAT2,
- MX53_PAD_DISP0_DAT3__DISP0_DAT3,
- MX53_PAD_DISP0_DAT4__DISP0_DAT4,
- MX53_PAD_DISP0_DAT5__DISP0_DAT5,
- MX53_PAD_DISP0_DAT6__DISP0_DAT6,
- MX53_PAD_DISP0_DAT7__DISP0_DAT7,
- MX53_PAD_DISP0_DAT8__DISP0_DAT8,
- MX53_PAD_DISP0_DAT9__DISP0_DAT9,
- MX53_PAD_DISP0_DAT10__DISP0_DAT10,
- MX53_PAD_DISP0_DAT11__DISP0_DAT11,
- MX53_PAD_DISP0_DAT12__DISP0_DAT12,
- MX53_PAD_DISP0_DAT13__DISP0_DAT13,
- MX53_PAD_DISP0_DAT14__DISP0_DAT14,
- MX53_PAD_DISP0_DAT15__DISP0_DAT15,
- MX53_PAD_DISP0_DAT16__DISP0_DAT16,
- MX53_PAD_DISP0_DAT17__DISP0_DAT17,
- MX53_PAD_DISP0_DAT18__DISP0_DAT18,
- MX53_PAD_DISP0_DAT19__DISP0_DAT19,
- MX53_PAD_DISP0_DAT20__DISP0_DAT20,
- MX53_PAD_DISP0_DAT21__DISP0_DAT21,
- MX53_PAD_DISP0_DAT22__DISP0_DAT22,
- MX53_PAD_DISP0_DAT23__DISP0_DAT23,
-
- MX53_PAD_LVDS0_TX3_P__LVDS0_TX3,
- MX53_PAD_LVDS0_CLK_P__LVDS0_CLK,
- MX53_PAD_LVDS0_TX2_P__LVDS0_TX2,
- MX53_PAD_LVDS0_TX1_P__LVDS0_TX1,
- MX53_PAD_LVDS0_TX0_P__LVDS0_TX0,
-
- MX53_PAD_LVDS1_TX3_P__LVDS1_TX3,
- MX53_PAD_LVDS1_CLK_P__LVDS1_CLK,
- MX53_PAD_LVDS1_TX2_P__LVDS1_TX2,
- MX53_PAD_LVDS1_TX1_P__LVDS1_TX1,
- MX53_PAD_LVDS1_TX0_P__LVDS1_TX0,
-
- /* audio and CSI clock out */
- MX53_PAD_GPIO_0__SSI_EXT1_CLK,
-
- MX53_PAD_CSI0_D12__CSI0_D12,
- MX53_PAD_CSI0_D13__CSI0_D13,
- MX53_PAD_CSI0_D14__CSI0_D14,
- MX53_PAD_CSI0_D15__CSI0_D15,
- MX53_PAD_CSI0_D16__CSI0_D16,
- MX53_PAD_CSI0_D17__CSI0_D17,
- MX53_PAD_CSI0_D18__CSI0_D18,
- MX53_PAD_CSI0_D19__CSI0_D19,
-
- MX53_PAD_CSI0_VSYNC__CSI0_VSYNC,
- MX53_PAD_CSI0_MCLK__CSI0_HSYNC,
- MX53_PAD_CSI0_PIXCLK__CSI0_PIXCLK,
- /* Camera low power */
- MX53_PAD_CSI0_D5__GPIO_5_23,
-
- /* esdhc1 */
- MX53_PAD_SD1_CMD__SD1_CMD,
- MX53_PAD_SD1_CLK__SD1_CLK,
- MX53_PAD_SD1_DATA0__SD1_DATA0,
- MX53_PAD_SD1_DATA1__SD1_DATA1,
- MX53_PAD_SD1_DATA2__SD1_DATA2,
- MX53_PAD_SD1_DATA3__SD1_DATA3,
-
- /* esdhc3 */
- MX53_PAD_ATA_DATA8__SD3_DAT0,
- MX53_PAD_ATA_DATA9__SD3_DAT1,
- MX53_PAD_ATA_DATA10__SD3_DAT2,
- MX53_PAD_ATA_DATA11__SD3_DAT3,
- MX53_PAD_ATA_DATA0__SD3_DAT4,
- MX53_PAD_ATA_DATA1__SD3_DAT5,
- MX53_PAD_ATA_DATA2__SD3_DAT6,
- MX53_PAD_ATA_DATA3__SD3_DAT7,
- MX53_PAD_ATA_RESET_B__SD3_CMD,
- MX53_PAD_ATA_IORDY__SD3_CLK,
-
- /* FEC pins */
- MX53_PAD_FEC_MDIO__FEC_MDIO,
- MX53_PAD_FEC_REF_CLK__FEC_REF_CLK,
- MX53_PAD_FEC_RX_ER__FEC_RX_ER,
- MX53_PAD_FEC_CRS_DV__FEC_CRS_DV,
- MX53_PAD_FEC_RXD1__FEC_RXD1,
- MX53_PAD_FEC_RXD0__FEC_RXD0,
- MX53_PAD_FEC_TX_EN__FEC_TX_EN,
- MX53_PAD_FEC_TXD1__FEC_TXD1,
- MX53_PAD_FEC_TXD0__FEC_TXD0,
- MX53_PAD_FEC_MDC__FEC_MDC,
-
- MX53_PAD_CSI0_D8__I2C1_SDA,
- MX53_PAD_CSI0_D9__I2C1_SCL,
-
- MX53_PAD_KEY_COL3__I2C2_SCL,
- MX53_PAD_KEY_ROW3__I2C2_SDA,
-};
-
-static struct pad_desc mx53evk_pads[] = {
- /* USB OTG USB_OC */
- MX53_PAD_EIM_A24__GPIO_5_4,
-
- /* USB OTG USB_PWR */
- MX53_PAD_EIM_A23__GPIO_6_6,
-
- /* DISPB0_SER_CLK */
- MX53_PAD_EIM_D21__DISPB0_SER_CLK,
-
- /* DI0_PIN1 */
- MX53_PAD_EIM_D22__DISPB0_SER_DIN,
-
- /* DVI I2C ENABLE */
- MX53_PAD_EIM_D28__GPIO_3_28,
-
- /* DVI DET */
- MX53_PAD_EIM_D31__GPIO_3_31,
-
- /* SDHC1 SD_CD */
- MX53_PAD_EIM_DA13__GPIO_3_13,
-
- /* SDHC1 SD_WP */
- MX53_PAD_EIM_DA14__GPIO_3_14,
-
- /* SDHC3 SD_CD */
- MX53_PAD_EIM_DA11__GPIO_3_11,
-
- /* SDHC3 SD_WP */
- MX53_PAD_EIM_DA12__GPIO_3_12,
-
- /* PWM backlight */
- MX53_PAD_GPIO_1__PWMO,
-
- /* USB HOST USB_PWR */
- MX53_PAD_ATA_DA_2__GPIO_7_8,
-
- /* USB HOST USB_RST */
- MX53_PAD_CSI0_DATA_EN__GPIO_5_20,
-
- /* USB HOST CARD_ON */
- MX53_PAD_EIM_DA15__GPIO_3_15,
-
- /* USB HOST CARD_RST */
- MX53_PAD_ATA_DATA7__GPIO_2_7,
-
- /* USB HOST WAN_WAKE */
- MX53_PAD_EIM_D25__GPIO_3_25,
-
- /* FEC_RST */
- MX53_PAD_ATA_DA_0__GPIO_7_6,
-};
-
-static struct pad_desc mx53arm2_pads[] = {
- /* USB OTG USB_OC */
- MX53_PAD_EIM_D21__GPIO_3_21,
-
- /* USB OTG USB_PWR */
- MX53_PAD_EIM_D22__GPIO_3_22,
-
- /* SDHC1 SD_CD */
- MX53_PAD_GPIO_1__GPIO_1_1,
-
- /* gpio backlight */
- MX53_PAD_DI0_PIN4__GPIO_4_20,
-};
-
-static struct pad_desc mx53_nand_pads[] = {
- MX53_PAD_NANDF_CLE__NANDF_CLE,
- MX53_PAD_NANDF_ALE__NANDF_ALE,
- MX53_PAD_NANDF_WP_B__NANDF_WP_B,
- MX53_PAD_NANDF_WE_B__NANDF_WE_B,
- MX53_PAD_NANDF_RE_B__NANDF_RE_B,
- MX53_PAD_NANDF_RB0__NANDF_RB0,
- MX53_PAD_NANDF_CS0__NANDF_CS0,
- MX53_PAD_NANDF_CS1__NANDF_CS1 ,
- MX53_PAD_NANDF_CS2__NANDF_CS2,
- MX53_PAD_NANDF_CS3__NANDF_CS3 ,
- MX53_PAD_EIM_DA0__EIM_DA0,
- MX53_PAD_EIM_DA1__EIM_DA1,
- MX53_PAD_EIM_DA2__EIM_DA2,
- MX53_PAD_EIM_DA3__EIM_DA3,
- MX53_PAD_EIM_DA4__EIM_DA4,
- MX53_PAD_EIM_DA5__EIM_DA5,
- MX53_PAD_EIM_DA6__EIM_DA6,
- MX53_PAD_EIM_DA7__EIM_DA7,
-};
-
/* working point(wp): 0 - 800MHz; 1 - 166.25MHz; */
static struct cpu_wp cpu_wp_auto[] = {
{
@@ -511,40 +189,10 @@ static struct platform_pwm_backlight_data mxc_pwm_backlight_data = {
.pwm_id = 1,
.max_brightness = 255,
.dft_brightness = 128,
- .pwm_period_ns = 50000,
+ .pwm_period_ns = 78770,
};
-static void flexcan_xcvr_enable(int id, int en)
-{
- static int pwdn;
- if (id < 0 || id > 1)
- return;
-
- if (en) {
- if (!(pwdn++))
- gpio_set_value(MX53_12V_EN, 1);
-
- if (id == 0) {
- gpio_set_value(MX53_CAN1_EN1, 1);
- gpio_set_value(MX53_CAN1_EN2, 1);
- } else {
- gpio_set_value(MX53_CAN2_EN1, 1);
- gpio_set_value(MX53_CAN2_EN2, 1);
- }
-
- } else {
- if (!(--pwdn))
- gpio_set_value(MX53_12V_EN, 0);
-
- if (id == 0) {
- gpio_set_value(MX53_CAN1_EN1, 0);
- gpio_set_value(MX53_CAN1_EN2, 0);
- } else {
- gpio_set_value(MX53_CAN2_EN1, 0);
- gpio_set_value(MX53_CAN2_EN2, 0);
- }
- }
-}
+extern void flexcan_xcvr_enable(int id, int en);
static struct flexcan_platform_data flexcan0_data = {
.core_reg = NULL,
@@ -594,72 +242,12 @@ static struct mxc_vpu_platform_data mxc_vpu_data = {
static struct fec_platform_data fec_data = {
.phy = PHY_INTERFACE_MODE_RMII,
- .phy_mask = ~1UL,
};
-/* workaround for ecspi chipselect pin may not keep correct level when idle */
-static void mx53_evk_gpio_spi_chipselect_active(int cspi_mode, int status,
- int chipselect)
-{
- switch (cspi_mode) {
- case 1:
- switch (chipselect) {
- case 0x1:
- {
- struct pad_desc eim_d19_gpio = MX53_PAD_EIM_D19__GPIO_3_19;
- struct pad_desc cspi_ss0 = MX53_PAD_EIM_EB2__CSPI_SS0;
-
- /* de-select SS1 of instance: ecspi1. */
- mxc_iomux_v3_setup_pad(&eim_d19_gpio);
- mxc_iomux_v3_setup_pad(&cspi_ss0);
- }
- break;
- case 0x2:
- {
- struct pad_desc eim_eb2_gpio = MX53_PAD_EIM_EB2__GPIO_2_30;
- struct pad_desc cspi_ss1 = MX53_PAD_EIM_D19__CSPI_SS1;
-
- /* de-select SS0 of instance: ecspi1. */
- mxc_iomux_v3_setup_pad(&eim_eb2_gpio);
- mxc_iomux_v3_setup_pad(&cspi_ss1);
- }
- break;
- default:
- break;
- }
- break;
- case 2:
- break;
- case 3:
- break;
- default:
- break;
- }
-}
-
-static void mx53_evk_gpio_spi_chipselect_inactive(int cspi_mode, int status,
- int chipselect)
-{
- switch (cspi_mode) {
- case 1:
- switch (chipselect) {
- case 0x1:
- break;
- case 0x2:
- break;
- default:
- break;
- }
- break;
- case 2:
- break;
- case 3:
- break;
- default:
- break;
- }
-}
-
+extern void mx53_evk_gpio_spi_chipselect_active(int cspi_mode, int status,
+ int chipselect);
+extern void mx53_evk_gpio_spi_chipselect_inactive(int cspi_mode, int status,
+ int chipselect);
static struct mxc_spi_master mxcspi1_data = {
.maxchipselect = 4,
.spi_version = 23,
@@ -679,11 +267,11 @@ static struct mxc_dvfs_platform_data dvfs_core_data = {
.reg_id = "SW1",
.clk1_id = "cpu_clk",
.clk2_id = "gpc_dvfs_clk",
- .gpc_cntr_offset = MXC_GPC_CNTR_OFFSET,
- .gpc_vcr_offset = MXC_GPC_VCR_OFFSET,
- .ccm_cdcr_offset = MXC_CCM_CDCR_OFFSET,
- .ccm_cacrr_offset = MXC_CCM_CACRR_OFFSET,
- .ccm_cdhipr_offset = MXC_CCM_CDHIPR_OFFSET,
+ .gpc_cntr_reg_addr = MXC_GPC_CNTR,
+ .gpc_vcr_reg_addr = MXC_GPC_VCR,
+ .ccm_cdcr_reg_addr = MXC_CCM_CDCR,
+ .ccm_cacrr_reg_addr = MXC_CCM_CACRR,
+ .ccm_cdhipr_reg_addr = MXC_CCM_CDHIPR,
.prediv_mask = 0x1F800,
.prediv_offset = 11,
.prediv_val = 3,
@@ -709,98 +297,18 @@ static struct ldb_platform_data ldb_data = {
.ext_ref = 1,
};
-static struct pad_desc mx53esai_pads[] = {
- MX53_PAD_FEC_MDIO__ESAI_SCKR,
- MX53_PAD_FEC_REF_CLK__ESAI_FSR,
- MX53_PAD_FEC_RX_ER__ESAI_HCKR,
- MX53_PAD_FEC_CRS_DV__ESAI_SCKT,
- MX53_PAD_FEC_RXD1__ESAI_FST,
- MX53_PAD_FEC_RXD0__ESAI_HCKT,
- MX53_PAD_FEC_TX_EN__ESAI_TX3_RX2,
- MX53_PAD_FEC_TXD1__ESAI_TX2_RX3,
- MX53_PAD_FEC_TXD0__ESAI_TX4_RX1,
- MX53_PAD_FEC_MDC__ESAI_TX5_RX0,
- MX53_PAD_NANDF_CS2__ESAI_TX0,
- MX53_PAD_NANDF_CS3__ESAI_TX1,
-};
-
-void gpio_activate_esai_ports(void)
-{
- mxc_iomux_v3_setup_multiple_pads(mx53esai_pads,
- ARRAY_SIZE(mx53esai_pads));
-}
-
static struct mxc_esai_platform_data esai_data = {
.activate_esai_ports = gpio_activate_esai_ports,
};
-void gpio_cs42888_pdwn(int pdwn)
-{
- if (pdwn)
- gpio_set_value(MX53_ESAI_RESET, 0);
- else
- gpio_set_value(MX53_ESAI_RESET, 1);
-}
-EXPORT_SYMBOL(gpio_cs42888_pdwn);
-
-static void gpio_usbotg_vbus_active(void)
-{
- if (board_is_mx53_arm2()) {
- /* MX53 ARM2 CPU board */
- /* Enable OTG VBus with GPIO low */
- gpio_set_value(ARM2_OTG_VBUS, 0);
- } else if (board_is_mx53_evk_a()) {
- /* MX53 EVK board ver A*/
- /* Enable OTG VBus with GPIO low */
- gpio_set_value(EVK_OTG_VBUS, 0);
- } else if (board_is_mx53_evk_b()) {
- /* MX53 EVK board ver B*/
- /* Enable OTG VBus with GPIO high */
- gpio_set_value(EVK_OTG_VBUS, 1);
- }
-}
-
-static void gpio_usbotg_vbus_inactive(void)
-{
- if (board_is_mx53_arm2()) {
- /* MX53 ARM2 CPU board */
- /* Disable OTG VBus with GPIO high */
- gpio_set_value(ARM2_OTG_VBUS, 1);
- } else if (board_is_mx53_evk_a()) {
- /* MX53 EVK board ver A*/
- /* Disable OTG VBus with GPIO high */
- gpio_set_value(EVK_OTG_VBUS, 1);
- } else if (board_is_mx53_evk_b()) {
- /* MX53 EVK board ver B*/
- /* Disable OTG VBus with GPIO low */
- gpio_set_value(EVK_OTG_VBUS, 0);
- }
-}
-
-static void mx53_gpio_usbotg_driver_vbus(bool on)
-{
- if (on)
- gpio_usbotg_vbus_active();
- else
- gpio_usbotg_vbus_inactive();
-}
-
-static void mx53_gpio_host1_driver_vbus(bool on)
-{
- if (on)
- gpio_set_value(EVK_USBH1_VBUS, 1);
- else
- gpio_set_value(EVK_USBH1_VBUS, 0);
-}
-
static void adv7180_pwdn(int pwdn)
{
- gpio_request(MX53_TVIN_PWR, "tvin-pwr");
- gpio_direction_output(MX53_TVIN_PWR, 0);
+ gpio_request(IOMUX_TO_GPIO(MX53_PIN_CSI0_D5), "gpio5_23");
+ gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_CSI0_D5), 0);
if (pwdn)
- gpio_set_value(MX53_TVIN_PWR, 0);
+ gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_CSI0_D5), 0);
else
- gpio_set_value(MX53_TVIN_PWR, 1);
+ gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_CSI0_D5), 1);
}
static struct mxc_tvin_platform_data adv7180_data = {
@@ -871,14 +379,13 @@ device_initcall(mxc_init_fb);
static void camera_pwdn(int pwdn)
{
- gpio_request(MX53_TVIN_PWR, "tvin-pwr");
- gpio_direction_output(MX53_TVIN_PWR, 0);
- gpio_set_value(MX53_TVIN_PWR, pwdn);
+ gpio_request(IOMUX_TO_GPIO(MX53_PIN_CSI0_D5), "gpio5_23");
+ gpio_direction_output(IOMUX_TO_GPIO(MX53_PIN_CSI0_D5), 0);
+ gpio_set_value(IOMUX_TO_GPIO(MX53_PIN_CSI0_D5), pwdn);
}
static struct mxc_camera_platform_data camera_data = {
.analog_regulator = "VSD",
- .gpo_regulator = "VVIDEO",
.mclk = 24000000,
.csi = 0,
.pwdn = camera_pwdn,
@@ -901,18 +408,6 @@ static struct i2c_board_info mxc_i2c0_board_info[] __initdata = {
},
};
-static void sii9022_hdmi_reset(void)
-{
- gpio_set_value(MX53_DVI_RESET, 0);
- msleep(10);
- gpio_set_value(MX53_DVI_RESET, 1);
- msleep(10);
-}
-
-static struct mxc_lcd_platform_data sii9022_hdmi_data = {
- .reset = sii9022_hdmi_reset,
-};
-
/* TO DO add platform data */
static struct i2c_board_info mxc_i2c1_board_info[] __initdata = {
{
@@ -922,7 +417,7 @@ static struct i2c_board_info mxc_i2c1_board_info[] __initdata = {
{
.type = "tsc2007",
.addr = 0x48,
- .irq = IOMUX_TO_IRQ_V3(EVK_TS_INT),
+ .irq = IOMUX_TO_IRQ(MX53_PIN_EIM_A25),
},
{
.type = "backlight-i2c",
@@ -936,11 +431,6 @@ static struct i2c_board_info mxc_i2c1_board_info[] __initdata = {
.type = "eeprom",
.addr = 0x50,
},
- {
- .type = "sii9022",
- .addr = 0x39,
- .platform_data = &sii9022_hdmi_data,
- },
};
static struct mtd_partition mxc_dataflash_partitions[] = {
@@ -978,9 +468,9 @@ static int sdhc_write_protect(struct device *dev)
if (!board_is_mx53_arm2()) {
if (to_platform_device(dev)->id == 0)
- rc = gpio_get_value(EVK_SD1_WP);
+ rc = gpio_get_value(IOMUX_TO_GPIO(MX53_PIN_EIM_DA14));
else
- rc = gpio_get_value(EVK_SD3_WP);
+ rc = gpio_get_value(IOMUX_TO_GPIO(MX53_PIN_EIM_DA12));
}
return rc;
@@ -991,14 +481,14 @@ static unsigned int sdhc_get_card_det_status(struct device *dev)
int ret;
if (board_is_mx53_arm2()) {
if (to_platform_device(dev)->id == 0)
- ret = gpio_get_value(ARM2_SD1_CD);
+ ret = gpio_get_value(IOMUX_TO_GPIO(MX53_PIN_GPIO_1));
else
ret = 1;
} else {
if (to_platform_device(dev)->id == 0) {
- ret = gpio_get_value(EVK_SD1_CD);
+ ret = gpio_get_value(IOMUX_TO_GPIO(MX53_PIN_EIM_DA13));
} else{ /* config the det pin for SDHC3 */
- ret = gpio_get_value(EVK_SD3_CD);
+ ret = gpio_get_value(IOMUX_TO_GPIO(MX53_PIN_EIM_DA11));
}
}
@@ -1029,7 +519,6 @@ static struct mxc_mmc_platform_data mmc3_data = {
.status = sdhc_get_card_det_status,
.wp_status = sdhc_write_protect,
.clock_mmc = "esdhc_clk",
- .clk_always_on = 1,
};
/* return value 1 failure, 0 success */
@@ -1195,7 +684,7 @@ return 0;
static int headphone_det_status(void)
{
- return (gpio_get_value(MX53_HP_DETECT) == 0);
+ return (gpio_get_value(IOMUX_TO_GPIO(MX53_PIN_ATA_DATA5)) == 0);
}
static int mxc_sgtl5000_init(void);
@@ -1204,7 +693,7 @@ static struct mxc_audio_platform_data sgtl5000_data = {
.ssi_num = 1,
.src_port = 2,
.ext_port = 5,
- .hp_irq = IOMUX_TO_IRQ(MX53_HP_DETECT),
+ .hp_irq = IOMUX_TO_IRQ(MX53_PIN_ATA_DATA5),
.hp_status = headphone_det_status,
.amp_enable = mxc_sgtl5000_amp_enable,
.init = mxc_sgtl5000_init,
@@ -1251,19 +740,23 @@ static struct mxc_mlb_platform_data mlb_data = {
#ifdef CONFIG_MTD_PARTITIONS
static struct mtd_partition nand_flash_partitions[] = {
{
- .name = "BOOT",
+ .name = "bootloader",
.offset = 0,
- .size = 7 * 1024 * 1024},
+ .size = 3 * 1024 * 1024},
{
- .name = "MISC",
+ .name = "nand.kernel",
.offset = MTDPART_OFS_APPEND,
- .size = 1 * 1024 * 1024},
+ .size = 5 * 1024 * 1024},
{
- .name = "RECOVERY",
+ .name = "nand.rootfs",
.offset = MTDPART_OFS_APPEND,
- .size = 20 * 1024 * 1024},
+ .size = 256 * 1024 * 1024},
{
- .name = "ROOT",
+ .name = "nand.userfs1",
+ .offset = MTDPART_OFS_APPEND,
+ .size = 256 * 1024 * 1024},
+ {
+ .name = "nand.userfs2",
.offset = MTDPART_OFS_APPEND,
.size = MTDPART_SIZ_FULL},
};
@@ -1324,6 +817,7 @@ static struct platform_device mxc_alsa_surround_device = {
};
static int __initdata mxc_apc_on = { 0 }; /* OFF: 0 (default), ON: 1 */
+
static int __init apc_setup(char *__unused)
{
mxc_apc_on = 1;
@@ -1332,48 +826,6 @@ static int __init apc_setup(char *__unused)
}
__setup("apc", apc_setup);
-static int __initdata enable_w1 = { 0 };
-static int __init w1_setup(char *__unused)
-{
- enable_w1 = 1;
- return cpu_is_mx53();
-}
-__setup("w1", w1_setup);
-
-
-static int __initdata enable_spdif = { 0 };
-static int __init spdif_setup(char *__unused)
-{
- enable_spdif = 1;
- return 1;
-}
-__setup("spdif", spdif_setup);
-
-static struct android_pmem_platform_data android_pmem_pdata = {
- .name = "pmem_adsp",
- .start = 0,
- .size = SZ_64M,
- .no_allocator = 0,
- .cached = PMEM_NONCACHE_NORMAL,
-};
-
-static struct android_pmem_platform_data android_pmem_gpu_pdata = {
- .name = "pmem_gpu",
- .start = 0,
- .size = SZ_32M,
- .no_allocator = 0,
- .cached = PMEM_CACHE_ENABLE,
-};
-
-static struct android_usb_platform_data android_usb_pdata = {
- .vendor_id = 0x0bb4,
- .product_id = 0x0c01,
- .adb_product_id = 0x0c02,
- .version = 0x0100,
- .product_name = "Android Phone",
- .manufacturer_name = "Freescale",
- .nluns = 3,
-};
/*!
* Board specific fixup function. It is called by \b setup_arch() in
@@ -1396,38 +848,17 @@ static void __init fixup_mxc_board(struct machine_desc *desc, struct tag *tags,
int gpu_mem = SZ_128M;
int fb_mem = SZ_32M;
char *str;
- int size;
mxc_set_cpu_type(MXC_CPU_MX53);
get_cpu_wp = mx53_evk_get_cpu_wp;
set_num_cpu_wp = mx53_evk_set_num_cpu_wp;
- for_each_tag(t, tags) {
- if (t->hdr.tag != ATAG_MEM)
- continue;
- size = t->u.mem.size;
-
- android_pmem_pdata.start =
- PHYS_OFFSET + size - android_pmem_pdata.size;
- android_pmem_gpu_pdata.start =
- android_pmem_pdata.start - android_pmem_gpu_pdata.size;
- gpu_device.resource[5].start =
- android_pmem_gpu_pdata.start - SZ_16M;
- gpu_device.resource[5].end =
- gpu_device.resource[5].start + SZ_16M - 1;
- size -= android_pmem_pdata.size;
- size -= android_pmem_gpu_pdata.size;
- size -= SZ_16M;
- t->u.mem.size = size;
- }
-#if 0
for_each_tag(mem_tag, tags) {
if (mem_tag->hdr.tag == ATAG_MEM) {
total_mem = mem_tag->u.mem.size;
left_mem = total_mem - gpu_mem - fb_mem;
break;
-
}
}
@@ -1479,142 +910,9 @@ static void __init fixup_mxc_board(struct machine_desc *desc, struct tag *tags,
}
#endif
}
-#endif
-}
-
-static void __init mx53_evk_io_init(void)
-{
- mxc_iomux_v3_setup_multiple_pads(mx53common_pads,
- ARRAY_SIZE(mx53common_pads));
-
- if (board_is_mx53_arm2()) {
- /* MX53 ARM2 CPU board */
- pr_info("MX53 ARM2 board \n");
- mxc_iomux_v3_setup_multiple_pads(mx53arm2_pads,
- ARRAY_SIZE(mx53arm2_pads));
-
- /* Config GPIO for OTG VBus */
- gpio_request(ARM2_OTG_VBUS, "otg-vbus");
- gpio_direction_output(ARM2_OTG_VBUS, 1);
-
- gpio_request(ARM2_SD1_CD, "sdhc1-cd");
- gpio_direction_input(ARM2_SD1_CD); /* SD1 CD */
-
- gpio_request(ARM2_LCD_CONTRAST, "lcd-contrast");
- gpio_direction_output(ARM2_LCD_CONTRAST, 1);
- } else {
- /* MX53 EVK board */
- pr_info("MX53 EVK board \n");
- mxc_iomux_v3_setup_multiple_pads(mx53evk_pads,
- ARRAY_SIZE(mx53evk_pads));
-
- /* Host1 Vbus with GPIO high */
- gpio_request(EVK_USBH1_VBUS, "usbh1-vbus");
- gpio_direction_output(EVK_USBH1_VBUS, 1);
- /* shutdown the Host1 Vbus when system bring up,
- * Vbus will be opened in Host1 driver's probe function */
- gpio_set_value(EVK_USBH1_VBUS, 0);
-
- /* USB HUB RESET - De-assert USB HUB RESET_N */
- gpio_request(EVK_USB_HUB_RESET, "usb-hub-reset");
- gpio_direction_output(EVK_USB_HUB_RESET, 0);
- msleep(1);
- gpio_set_value(EVK_USB_HUB_RESET, 1);
-
- /* Config GPIO for OTG VBus */
- gpio_request(EVK_OTG_VBUS, "otg-vbus");
- gpio_direction_output(EVK_OTG_VBUS, 0);
- if (board_is_mx53_evk_a()) /*rev A,"1" disable, "0" enable vbus*/
- gpio_set_value(EVK_OTG_VBUS, 1);
- else if (board_is_mx53_evk_b()) /* rev B,"0" disable,"1" enable Vbus*/
- gpio_set_value(EVK_OTG_VBUS, 0);
-
- gpio_request(EVK_SD1_CD, "sdhc1-cd");
- gpio_direction_input(EVK_SD1_CD); /* SD1 CD */
- gpio_request(EVK_SD1_WP, "sdhc1-wp");
- gpio_direction_input(EVK_SD1_WP); /* SD1 WP */
-
- /* SD3 CD */
- gpio_request(EVK_SD3_CD, "sdhc3-cd");
- gpio_direction_input(EVK_SD3_CD);
-
- /* SD3 WP */
- gpio_request(EVK_SD3_WP, "sdhc3-wp");
- gpio_direction_input(EVK_SD3_WP);
-
- /* reset FEC PHY */
- gpio_request(EVK_FEC_PHY_RESET, "fec-phy-reset");
- gpio_direction_output(EVK_FEC_PHY_RESET, 0);
- msleep(1);
- gpio_set_value(EVK_FEC_PHY_RESET, 1);
-
- gpio_request(MX53_ESAI_RESET, "fesai-reset");
- gpio_direction_output(MX53_ESAI_RESET, 0);
- }
-
- /* DVI Detect */
- gpio_request(MX53_DVI_DETECT, "dvi-detect");
- gpio_direction_input(MX53_DVI_DETECT);
- /* DVI Reset - Assert for i2c disabled mode */
- gpio_request(MX53_DVI_RESET, "dvi-reset");
- gpio_set_value(MX53_DVI_RESET, 0);
-
- /* DVI Power-down */
- gpio_request(MX53_DVI_PD, "dvi-pd");
- gpio_direction_output(MX53_DVI_PD, 1);
-
- /* DVI I2C enable */
- gpio_request(MX53_DVI_I2C, "dvi-i2c");
- gpio_direction_output(MX53_DVI_I2C, 0);
-
- mxc_iomux_v3_setup_multiple_pads(mx53_nand_pads,
- ARRAY_SIZE(mx53_nand_pads));
-
- gpio_request(MX53_PMIC_INT, "pmic-int");
- gpio_direction_input(MX53_PMIC_INT); /*PMIC_INT*/
-
- /* headphone_det_b */
- gpio_request(MX53_HP_DETECT, "hp-detect");
- gpio_direction_input(MX53_HP_DETECT);
-
- /* power key */
-
- /* LCD related gpio */
-
- /* Camera reset */
- gpio_request(MX53_CAM_RESET, "cam-reset");
- gpio_direction_output(MX53_CAM_RESET, 1);
-
- /* TVIN reset */
- gpio_request(MX53_TVIN_RESET, "tvin-reset");
- gpio_direction_output(MX53_TVIN_RESET, 0);
- msleep(5);
- gpio_set_value(MX53_TVIN_RESET, 1);
-
- /* CAN1 enable GPIO*/
- gpio_request(MX53_CAN1_EN1, "can1-en1");
- gpio_direction_output(MX53_CAN1_EN1, 0);
-
- gpio_request(MX53_CAN1_EN2, "can1-en2");
- gpio_direction_output(MX53_CAN1_EN2, 0);
-
- /* CAN2 enable GPIO*/
- gpio_request(MX53_CAN2_EN1, "can2-en1");
- gpio_direction_output(MX53_CAN2_EN1, 0);
-
- gpio_request(MX53_CAN2_EN2, "can2-en2");
- gpio_direction_output(MX53_CAN2_EN2, 0);
-
- if (enable_spdif) {
- struct pad_desc spdif_pin = MX53_PAD_GPIO_19__SPDIF_TX1;
- mxc_iomux_v3_setup_pad(&spdif_pin);
- } else {
- /* GPIO for 12V */
- gpio_request(MX53_12V_EN, "12v-en");
- gpio_direction_output(MX53_12V_EN, 0);
- }
}
-
+extern void mx53_gpio_usbotg_driver_vbus(bool on);
+extern void mx53_gpio_host1_driver_vbus(bool on);
/*!
* Board specific initialization.
*/
@@ -1627,17 +925,17 @@ static void __init mxc_board_init(void)
/* SD card detect irqs */
if (board_is_mx53_arm2()) {
- mxcsdhc1_device.resource[2].start = IOMUX_TO_IRQ_V3(ARM2_SD1_CD);
- mxcsdhc1_device.resource[2].end = IOMUX_TO_IRQ_V3(ARM2_SD1_CD);
+ mxcsdhc1_device.resource[2].start = IOMUX_TO_IRQ(MX53_PIN_GPIO_1);
+ mxcsdhc1_device.resource[2].end = IOMUX_TO_IRQ(MX53_PIN_GPIO_1);
mmc3_data.card_inserted_state = 1;
mmc3_data.status = NULL;
mmc3_data.wp_status = NULL;
mmc1_data.wp_status = NULL;
} else {
- mxcsdhc3_device.resource[2].start = IOMUX_TO_IRQ_V3(EVK_SD3_CD);
- mxcsdhc3_device.resource[2].end = IOMUX_TO_IRQ_V3(EVK_SD3_CD);
- mxcsdhc1_device.resource[2].start = IOMUX_TO_IRQ_V3(EVK_SD1_CD);
- mxcsdhc1_device.resource[2].end = IOMUX_TO_IRQ_V3(EVK_SD1_CD);
+ mxcsdhc3_device.resource[2].start = IOMUX_TO_IRQ(MX53_PIN_EIM_DA11);
+ mxcsdhc3_device.resource[2].end = IOMUX_TO_IRQ(MX53_PIN_EIM_DA11);
+ mxcsdhc1_device.resource[2].start = IOMUX_TO_IRQ(MX53_PIN_EIM_DA13);
+ mxcsdhc1_device.resource[2].end = IOMUX_TO_IRQ(MX53_PIN_EIM_DA13);
}
mxc_cpu_common_init();
@@ -1695,10 +993,7 @@ static void __init mxc_board_init(void)
ARRAY_SIZE(mxc_i2c0_board_info));
i2c_register_board_info(1, mxc_i2c1_board_info,
ARRAY_SIZE(mxc_i2c1_board_info));
- mxc_register_device(&mxc_android_pmem_device, &android_pmem_pdata);
- mxc_register_device(&mxc_android_pmem_gpu_device, &android_pmem_gpu_pdata);
- mxc_register_device(&android_usb_device, &android_usb_pdata);
- mxc_register_device(&mxc_powerkey_device, NULL);
+
mx53_evk_init_mc13892();
/*
pm_power_off = mxc_power_off;
@@ -1715,8 +1010,6 @@ static void __init mxc_board_init(void)
mxc_register_device(&mxc_alsa_surround_device,
&mxc_surround_audio_data);
}
- mxc_register_device(&mxc_v4l2_device, NULL);
- mxc_register_device(&mxc_v4l2out_device, NULL);
}
static void __init mx53_evk_timer_init(void)