[PATCH 04/17] ARM: pxa: Push Colibri evalboard MFP into module files
Eric Miao
eric.y.miao at gmail.com
Wed Nov 3 10:47:02 EDT 2010
On Wed, Nov 3, 2010 at 7:51 AM, Marek Vasut <marek.vasut at gmail.com> wrote:
> This change -- pushing the MFP configuration back into Module files -- is
> necessary because some evalboards can be used with multiple modules, where MFP
> differs from module to module. Therefore MFP isn't board-specific, but
> module-specific and the module should preconfigure itself for the board.
>
> (And there is also the C preprocesor limitation and conflicting #define-s)
>
> Signed-off-by: Marek Vasut <marek.vasut at gmail.com>
> Acked-by: Daniel Mack <daniel at caiaq.de>
OK.
> ---
> arch/arm/mach-pxa/Kconfig | 8 +-
> arch/arm/mach-pxa/colibri-pxa270-evalboard.c | 61 ++++-----------
> arch/arm/mach-pxa/colibri-pxa270-income.c | 47 -----------
> arch/arm/mach-pxa/colibri-pxa270.c | 96 ++++++++++++++++++++++
> arch/arm/mach-pxa/colibri-pxa300.c | 61 ++++++---------
> arch/arm/mach-pxa/colibri-pxa320.c | 112 ++++++++++----------------
> arch/arm/mach-pxa/colibri-pxa3xx.c | 49 -----------
> arch/arm/mach-pxa/include/mach/colibri.h | 6 ++
> 8 files changed, 188 insertions(+), 252 deletions(-)
>
> diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
> index dd235ec..b44d613 100644
> --- a/arch/arm/mach-pxa/Kconfig
> +++ b/arch/arm/mach-pxa/Kconfig
> @@ -232,10 +232,6 @@ config MACH_COLIBRI
> bool "Toradex Colibri PXA270"
> select PXA27x
>
> -config MACH_COLIBRI_PXA270_EVALBOARD
> - bool "Toradex Colibri Evaluation Carrier Board support (PXA270)"
> - depends on MACH_COLIBRI
> -
> config MACH_COLIBRI_PXA270_INCOME
> bool "Income s.r.o. PXA270 SBC"
> depends on MACH_COLIBRI
> @@ -253,6 +249,10 @@ config MACH_COLIBRI320
> select PXA3xx
> select CPU_PXA320
>
> +config MACH_COLIBRI_PXA270_EVALBOARD
> + bool "Toradex Colibri Evaluation Carrier Board support"
> + depends on MACH_COLIBRI || MACH_COLIBRI300 || MACH_COLIBRI320
> +
> config MACH_VPAC270
> bool "Voipac PXA270"
> select PXA27x
> diff --git a/arch/arm/mach-pxa/colibri-pxa270-evalboard.c b/arch/arm/mach-pxa/colibri-pxa270-evalboard.c
> index 6177ff5..e1a2b52 100644
> --- a/arch/arm/mach-pxa/colibri-pxa270-evalboard.c
> +++ b/arch/arm/mach-pxa/colibri-pxa270-evalboard.c
> @@ -30,61 +30,28 @@
> #include "devices.h"
>
> /******************************************************************************
> - * Pin configuration
> - ******************************************************************************/
> -static mfp_cfg_t colibri_pxa270_evalboard_pin_config[] __initdata = {
> - /* MMC */
> - GPIO32_MMC_CLK,
> - GPIO92_MMC_DAT_0,
> - GPIO109_MMC_DAT_1,
> - GPIO110_MMC_DAT_2,
> - GPIO111_MMC_DAT_3,
> - GPIO112_MMC_CMD,
> - GPIO0_GPIO, /* SD detect */
> -
> - /* FFUART */
> - GPIO39_FFUART_TXD,
> - GPIO34_FFUART_RXD,
> -
> - /* UHC */
> - GPIO88_USBH1_PWR,
> - GPIO89_USBH1_PEN,
> - GPIO119_USBH2_PWR,
> - GPIO120_USBH2_PEN,
> -
> - /* PCMCIA */
> - GPIO85_nPCE_1,
> - GPIO54_nPCE_2,
> - GPIO55_nPREG,
> - GPIO50_nPIOR,
> - GPIO51_nPIOW,
> - GPIO49_nPWE,
> - GPIO48_nPOE,
> - GPIO57_nIOIS16,
> - GPIO56_nPWAIT,
> - GPIO104_PSKTSEL,
> - GPIO53_GPIO, /* RESET */
> - GPIO83_GPIO, /* BVD1 */
> - GPIO82_GPIO, /* BVD2 */
> - GPIO1_GPIO, /* READY */
> - GPIO84_GPIO, /* DETECT */
> - GPIO107_GPIO, /* PPEN */
> -};
> -
> -/******************************************************************************
> * SD/MMC card controller
> ******************************************************************************/
> #if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE)
> static struct pxamci_platform_data colibri_pxa270_mci_platform_data = {
> .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
> .gpio_power = -1,
> - .gpio_card_detect = GPIO0_COLIBRI_PXA270_SD_DETECT,
> .gpio_card_ro = -1,
> .detect_delay_ms = 200,
> };
>
> static void __init colibri_pxa270_mmc_init(void)
> {
> + if (machine_is_colibri()) /* PXA270 Colibri */
> + colibri_pxa270_mci_platform_data.gpio_card_detect =
> + GPIO0_COLIBRI_PXA270_SD_DETECT;
> + if (machine_is_colibri300()) /* PXA300 Colibri */
> + colibri_pxa270_mci_platform_data.gpio_card_detect =
> + GPIO39_COLIBRI_PXA300_SD_DETECT;
> + else /* PXA320 Colibri */
> + colibri_pxa270_mci_platform_data.gpio_card_detect =
> + GPIO28_COLIBRI_PXA320_SD_DETECT;
> +
> pxa_set_mci_info(&colibri_pxa270_mci_platform_data);
> }
> #else
> @@ -103,13 +70,17 @@ static int colibri_pxa270_ohci_init(struct device *dev)
>
> static struct pxaohci_platform_data colibri_pxa270_ohci_info = {
> .port_mode = PMM_PERPORT_MODE,
> - .flags = ENABLE_PORT1 | ENABLE_PORT2 |
> + .flags = ENABLE_PORT1 |
> POWER_CONTROL_LOW | POWER_SENSE_LOW,
> .init = colibri_pxa270_ohci_init,
> };
>
> static void __init colibri_pxa270_uhc_init(void)
> {
> + /* Colibri PXA270 has two usb ports, TBA for 320 */
> + if (machine_is_colibri())
> + colibri_pxa270_ohci_info.flags |= ENABLE_PORT2;
> +
> pxa_set_ohci_info(&colibri_pxa270_ohci_info);
> }
> #else
> @@ -118,7 +89,6 @@ static inline void colibri_pxa270_uhc_init(void) {}
>
> void __init colibri_pxa270_evalboard_init(void)
> {
> - pxa2xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa270_evalboard_pin_config));
> pxa_set_ffuart_info(NULL);
> pxa_set_btuart_info(NULL);
> pxa_set_stuart_info(NULL);
> @@ -126,4 +96,3 @@ void __init colibri_pxa270_evalboard_init(void)
> colibri_pxa270_mmc_init();
> colibri_pxa270_uhc_init();
> }
> -
> diff --git a/arch/arm/mach-pxa/colibri-pxa270-income.c b/arch/arm/mach-pxa/colibri-pxa270-income.c
> index 37f0f3e..07b62a0 100644
> --- a/arch/arm/mach-pxa/colibri-pxa270-income.c
> +++ b/arch/arm/mach-pxa/colibri-pxa270-income.c
> @@ -46,52 +46,6 @@
> #define GPIO113_INCOME_TS_IRQ (113)
>
> /******************************************************************************
> - * Pin configuration
> - ******************************************************************************/
> -static mfp_cfg_t income_pin_config[] __initdata = {
> - /* MMC */
> - GPIO32_MMC_CLK,
> - GPIO92_MMC_DAT_0,
> - GPIO109_MMC_DAT_1,
> - GPIO110_MMC_DAT_2,
> - GPIO111_MMC_DAT_3,
> - GPIO112_MMC_CMD,
> - GPIO0_GPIO, /* SD detect */
> - GPIO1_GPIO, /* SD read-only */
> -
> - /* FFUART */
> - GPIO39_FFUART_TXD,
> - GPIO34_FFUART_RXD,
> -
> - /* BFUART */
> - GPIO42_BTUART_RXD,
> - GPIO43_BTUART_TXD,
> - GPIO45_BTUART_RTS,
> -
> - /* STUART */
> - GPIO46_STUART_RXD,
> - GPIO47_STUART_TXD,
> -
> - /* UHC */
> - GPIO88_USBH1_PWR,
> - GPIO89_USBH1_PEN,
> -
> - /* LCD */
> - GPIOxx_LCD_TFT_16BPP,
> -
> - /* PWM */
> - GPIO16_PWM0_OUT,
> -
> - /* I2C */
> - GPIO117_I2C_SCL,
> - GPIO118_I2C_SDA,
> -
> - /* LED */
> - GPIO54_GPIO, /* LED A */
> - GPIO55_GPIO, /* LED B */
> -};
> -
> -/******************************************************************************
> * SD/MMC card controller
> ******************************************************************************/
> #if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE)
> @@ -257,7 +211,6 @@ static inline void income_pwm_init(void) {}
>
> void __init colibri_pxa270_income_boardinit(void)
> {
> - pxa2xx_mfp_config(ARRAY_AND_SIZE(income_pin_config));
> pxa_set_ffuart_info(NULL);
> pxa_set_btuart_info(NULL);
> pxa_set_stuart_info(NULL);
> diff --git a/arch/arm/mach-pxa/colibri-pxa270.c b/arch/arm/mach-pxa/colibri-pxa270.c
> index 73205bc..e940004 100644
> --- a/arch/arm/mach-pxa/colibri-pxa270.c
> +++ b/arch/arm/mach-pxa/colibri-pxa270.c
> @@ -33,6 +33,99 @@
> #include "generic.h"
>
> /******************************************************************************
> + * Evaluation board MFP
> + ******************************************************************************/
> +#ifdef CONFIG_MACH_COLIBRI_PXA270_EVALBOARD
> +static mfp_cfg_t colibri_pxa270_evalboard_pin_config[] __initdata = {
> + /* MMC */
> + GPIO32_MMC_CLK,
> + GPIO92_MMC_DAT_0,
> + GPIO109_MMC_DAT_1,
> + GPIO110_MMC_DAT_2,
> + GPIO111_MMC_DAT_3,
> + GPIO112_MMC_CMD,
> + GPIO0_GPIO, /* SD detect */
> +
> + /* FFUART */
> + GPIO39_FFUART_TXD,
> + GPIO34_FFUART_RXD,
> +
> + /* UHC */
> + GPIO88_USBH1_PWR,
> + GPIO89_USBH1_PEN,
> + GPIO119_USBH2_PWR,
> + GPIO120_USBH2_PEN,
> +
> + /* PCMCIA */
> + GPIO85_nPCE_1,
> + GPIO54_nPCE_2,
> + GPIO55_nPREG,
> + GPIO50_nPIOR,
> + GPIO51_nPIOW,
> + GPIO49_nPWE,
> + GPIO48_nPOE,
> + GPIO57_nIOIS16,
> + GPIO56_nPWAIT,
> + GPIO104_PSKTSEL,
> + GPIO53_GPIO, /* RESET */
> + GPIO83_GPIO, /* BVD1 */
> + GPIO82_GPIO, /* BVD2 */
> + GPIO1_GPIO, /* READY */
> + GPIO84_GPIO, /* DETECT */
> + GPIO107_GPIO, /* PPEN */
> +};
> +#else
> +static mfp_cfg_t colibri_pxa270_evalboard_pin_config[] __initdata = {};
> +#endif
> +
> +#ifdef CONFIG_MACH_COLIBRI_PXA270_INCOME
> +static mfp_cfg_t income_pin_config[] __initdata = {
> + /* MMC */
> + GPIO32_MMC_CLK,
> + GPIO92_MMC_DAT_0,
> + GPIO109_MMC_DAT_1,
> + GPIO110_MMC_DAT_2,
> + GPIO111_MMC_DAT_3,
> + GPIO112_MMC_CMD,
> + GPIO0_GPIO, /* SD detect */
> + GPIO1_GPIO, /* SD read-only */
> +
> + /* FFUART */
> + GPIO39_FFUART_TXD,
> + GPIO34_FFUART_RXD,
> +
> + /* BFUART */
> + GPIO42_BTUART_RXD,
> + GPIO43_BTUART_TXD,
> + GPIO45_BTUART_RTS,
> +
> + /* STUART */
> + GPIO46_STUART_RXD,
> + GPIO47_STUART_TXD,
> +
> + /* UHC */
> + GPIO88_USBH1_PWR,
> + GPIO89_USBH1_PEN,
> +
> + /* LCD */
> + GPIOxx_LCD_TFT_16BPP,
> +
> + /* PWM */
> + GPIO16_PWM0_OUT,
> +
> + /* I2C */
> + GPIO117_I2C_SCL,
> + GPIO118_I2C_SDA,
> +
> + /* LED */
> + GPIO54_GPIO, /* LED A */
> + GPIO55_GPIO, /* LED B */
> +};
> +#else
> +static mfp_cfg_t income_pin_config[] __initdata = {};
> +#endif
> +
> +/******************************************************************************
> * Pin configuration
> ******************************************************************************/
> static mfp_cfg_t colibri_pxa270_pin_config[] __initdata = {
> @@ -185,9 +278,12 @@ static void __init colibri_pxa270_init(void)
>
> switch (colibri_pxa270_baseboard) {
> case COLIBRI_PXA270_EVALBOARD:
> + pxa2xx_mfp_config(ARRAY_AND_SIZE(
> + colibri_pxa270_evalboard_pin_config));
> colibri_pxa270_evalboard_init();
> break;
> case COLIBRI_PXA270_INCOME:
> + pxa2xx_mfp_config(ARRAY_AND_SIZE(income_pin_config));
> colibri_pxa270_income_boardinit();
> break;
> default:
> diff --git a/arch/arm/mach-pxa/colibri-pxa300.c b/arch/arm/mach-pxa/colibri-pxa300.c
> index d039bd1..649c83c 100644
> --- a/arch/arm/mach-pxa/colibri-pxa300.c
> +++ b/arch/arm/mach-pxa/colibri-pxa300.c
> @@ -31,9 +31,28 @@
> #include "generic.h"
> #include "devices.h"
>
> +
> +#ifdef CONFIG_MACH_COLIBRI_PXA270_EVALBOARD
> +static mfp_cfg_t colibri_pxa300_evalboard_pin_config[] __initdata = {
> + /* MMC */
> + GPIO7_MMC1_CLK,
> + GPIO14_MMC1_CMD,
> + GPIO3_MMC1_DAT0,
> + GPIO4_MMC1_DAT1,
> + GPIO5_MMC1_DAT2,
> + GPIO6_MMC1_DAT3,
> + GPIO39_GPIO, /* SD detect */
> +
> + /* UHC */
> + GPIO0_2_USBH_PEN,
> + GPIO1_2_USBH_PWR,
> +};
> +#else
> +static mfp_cfg_t colibri_pxa300_evalboard_pin_config[] __initdata = {};
> +#endif
> +
> #if defined(CONFIG_AX88796)
> #define COLIBRI_ETH_IRQ_GPIO mfp_to_gpio(GPIO26_GPIO)
> -
> /*
> * Asix AX88796 Ethernet
> */
> @@ -80,35 +99,6 @@ static void __init colibri_pxa300_init_eth(void)
> static inline void __init colibri_pxa300_init_eth(void) {}
> #endif /* CONFIG_AX88796 */
>
> -#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
> -static mfp_cfg_t colibri_pxa300_usb_pin_config[] __initdata = {
> - GPIO0_2_USBH_PEN,
> - GPIO1_2_USBH_PWR,
> -};
> -
> -static struct pxaohci_platform_data colibri_pxa300_ohci_info = {
> - .port_mode = PMM_GLOBAL_MODE,
> - .flags = ENABLE_PORT1 | POWER_CONTROL_LOW | POWER_SENSE_LOW,
> -};
> -
> -void __init colibri_pxa300_init_ohci(void)
> -{
> - pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa300_usb_pin_config));
> - pxa_set_ohci_info(&colibri_pxa300_ohci_info);
> -}
> -#else
> -static inline void colibri_pxa300_init_ohci(void) {}
> -#endif /* CONFIG_USB_OHCI_HCD || CONFIG_USB_OHCI_HCD_MODULE */
> -
> -static mfp_cfg_t colibri_pxa300_mmc_pin_config[] __initdata = {
> - GPIO7_MMC1_CLK,
> - GPIO14_MMC1_CMD,
> - GPIO3_MMC1_DAT0,
> - GPIO4_MMC1_DAT1,
> - GPIO5_MMC1_DAT2,
> - GPIO6_MMC1_DAT3,
> -};
> -
> #if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE)
> static mfp_cfg_t colibri_pxa300_lcd_pin_config[] __initdata = {
> GPIO54_LCD_LDD_0,
> @@ -171,18 +161,15 @@ static inline void colibri_pxa310_init_ac97(void) {}
>
> void __init colibri_pxa300_init(void)
> {
> - pxa_set_ffuart_info(NULL);
> - pxa_set_btuart_info(NULL);
> - pxa_set_stuart_info(NULL);
> -
> colibri_pxa300_init_eth();
> - colibri_pxa300_init_ohci();
> colibri_pxa3xx_init_nand();
> colibri_pxa300_init_lcd();
> colibri_pxa3xx_init_lcd(mfp_to_gpio(GPIO39_GPIO));
> colibri_pxa310_init_ac97();
> - colibri_pxa3xx_init_mmc(ARRAY_AND_SIZE(colibri_pxa300_mmc_pin_config),
> - mfp_to_gpio(MFP_PIN_GPIO13));
> +
> + /* Evalboard init */
> + pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa300_evalboard_pin_config));
> + colibri_pxa270_evalboard_init();
> }
>
> MACHINE_START(COLIBRI300, "Toradex Colibri PXA300")
> diff --git a/arch/arm/mach-pxa/colibri-pxa320.c b/arch/arm/mach-pxa/colibri-pxa320.c
> index ccb2c59..6f15f2a 100644
> --- a/arch/arm/mach-pxa/colibri-pxa320.c
> +++ b/arch/arm/mach-pxa/colibri-pxa320.c
> @@ -35,9 +35,47 @@
> #include "generic.h"
> #include "devices.h"
>
> +#ifdef CONFIG_MACH_COLIBRI_PXA270_EVALBOARD
> +static mfp_cfg_t colibri_pxa320_evalboard_pin_config[] __initdata = {
> + /* MMC */
> + GPIO22_MMC1_CLK,
> + GPIO23_MMC1_CMD,
> + GPIO18_MMC1_DAT0,
> + GPIO19_MMC1_DAT1,
> + GPIO20_MMC1_DAT2,
> + GPIO21_MMC1_DAT3,
> + GPIO28_GPIO, /* SD detect */
> +
> + /* UART 1 configuration (may be set by bootloader) */
> + GPIO99_UART1_CTS,
> + GPIO104_UART1_RTS,
> + GPIO97_UART1_RXD,
> + GPIO98_UART1_TXD,
> + GPIO101_UART1_DTR,
> + GPIO103_UART1_DSR,
> + GPIO100_UART1_DCD,
> + GPIO102_UART1_RI,
> +
> + /* UART 2 configuration */
> + GPIO109_UART2_CTS,
> + GPIO112_UART2_RTS,
> + GPIO110_UART2_RXD,
> + GPIO111_UART2_TXD,
> +
> + /* UART 3 configuration */
> + GPIO30_UART3_RXD,
> + GPIO31_UART3_TXD,
> +
> + /* UHC */
> + GPIO2_2_USBH_PEN,
> + GPIO3_2_USBH_PWR,
> +};
> +#else
> +static mfp_cfg_t colibri_pxa320_evalboard_pin_config[] __initdata = {};
> +#endif
> +
> #if defined(CONFIG_AX88796)
> #define COLIBRI_ETH_IRQ_GPIO mfp_to_gpio(GPIO36_GPIO)
> -
> /*
> * Asix AX88796 Ethernet
> */
> @@ -84,26 +122,6 @@ static void __init colibri_pxa320_init_eth(void)
> static inline void __init colibri_pxa320_init_eth(void) {}
> #endif /* CONFIG_AX88796 */
>
> -#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
> -static mfp_cfg_t colibri_pxa320_usb_pin_config[] __initdata = {
> - GPIO2_2_USBH_PEN,
> - GPIO3_2_USBH_PWR,
> -};
> -
> -static struct pxaohci_platform_data colibri_pxa320_ohci_info = {
> - .port_mode = PMM_GLOBAL_MODE,
> - .flags = ENABLE_PORT1 | POWER_CONTROL_LOW | POWER_SENSE_LOW,
> -};
> -
> -void __init colibri_pxa320_init_ohci(void)
> -{
> - pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa320_usb_pin_config));
> - pxa_set_ohci_info(&colibri_pxa320_ohci_info);
> -}
> -#else
> -static inline void colibri_pxa320_init_ohci(void) {}
> -#endif /* CONFIG_USB_OHCI_HCD || CONFIG_USB_OHCI_HCD_MODULE */
> -
> #if defined(CONFIG_USB_GADGET_PXA27X)||defined(CONFIG_USB_GADGET_PXA27X_MODULE)
> static struct gpio_vbus_mach_info colibri_pxa320_gpio_vbus_info = {
> .gpio_vbus = mfp_to_gpio(MFP_PIN_GPIO96),
> @@ -140,15 +158,6 @@ static void __init colibri_pxa320_init_udc(void)
> static inline void colibri_pxa320_init_udc(void) {}
> #endif
>
> -static mfp_cfg_t colibri_pxa320_mmc_pin_config[] __initdata = {
> - GPIO22_MMC1_CLK,
> - GPIO23_MMC1_CMD,
> - GPIO18_MMC1_DAT0,
> - GPIO19_MMC1_DAT1,
> - GPIO20_MMC1_DAT2,
> - GPIO21_MMC1_DAT3
> -};
> -
> #if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE)
> static mfp_cfg_t colibri_pxa320_lcd_pin_config[] __initdata = {
> GPIO6_2_LCD_LDD_0,
> @@ -205,53 +214,18 @@ static inline void __init colibri_pxa320_init_ac97(void)
> static inline void colibri_pxa320_init_ac97(void) {}
> #endif
>
> -/*
> - * The following configuration is verified to work with the Toradex Orchid
> - * carrier board
> - */
> -static mfp_cfg_t colibri_pxa320_uart_pin_config[] __initdata = {
> - /* UART 1 configuration (may be set by bootloader) */
> - GPIO99_UART1_CTS,
> - GPIO104_UART1_RTS,
> - GPIO97_UART1_RXD,
> - GPIO98_UART1_TXD,
> - GPIO101_UART1_DTR,
> - GPIO103_UART1_DSR,
> - GPIO100_UART1_DCD,
> - GPIO102_UART1_RI,
> -
> - /* UART 2 configuration */
> - GPIO109_UART2_CTS,
> - GPIO112_UART2_RTS,
> - GPIO110_UART2_RXD,
> - GPIO111_UART2_TXD,
> -
> - /* UART 3 configuration */
> - GPIO30_UART3_RXD,
> - GPIO31_UART3_TXD,
> -};
> -
> -static void __init colibri_pxa320_init_uart(void)
> -{
> - pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa320_uart_pin_config));
> -}
> -
> void __init colibri_pxa320_init(void)
> {
> - pxa_set_ffuart_info(NULL);
> - pxa_set_btuart_info(NULL);
> - pxa_set_stuart_info(NULL);
> -
> colibri_pxa320_init_eth();
> - colibri_pxa320_init_ohci();
> colibri_pxa3xx_init_nand();
> colibri_pxa320_init_lcd();
> colibri_pxa3xx_init_lcd(mfp_to_gpio(GPIO49_GPIO));
> colibri_pxa320_init_ac97();
> - colibri_pxa3xx_init_mmc(ARRAY_AND_SIZE(colibri_pxa320_mmc_pin_config),
> - mfp_to_gpio(MFP_PIN_GPIO28));
> - colibri_pxa320_init_uart();
> colibri_pxa320_init_udc();
> +
> + /* Evalboard init */
> + pxa3xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa320_evalboard_pin_config));
> + colibri_pxa270_evalboard_init();
> }
>
> MACHINE_START(COLIBRI320, "Toradex Colibri PXA320")
> diff --git a/arch/arm/mach-pxa/colibri-pxa3xx.c b/arch/arm/mach-pxa/colibri-pxa3xx.c
> index 199afa2..96b2d9f 100644
> --- a/arch/arm/mach-pxa/colibri-pxa3xx.c
> +++ b/arch/arm/mach-pxa/colibri-pxa3xx.c
> @@ -64,55 +64,6 @@ void __init colibri_pxa3xx_init_eth(struct ax_plat_data *plat_data)
> }
> #endif
>
> -#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE)
> -static int mmc_detect_pin;
> -
> -static int colibri_pxa3xx_mci_init(struct device *dev,
> - irq_handler_t colibri_mmc_detect_int,
> - void *data)
> -{
> - int ret;
> -
> - ret = gpio_request(mmc_detect_pin, "mmc card detect");
> - if (ret)
> - return ret;
> -
> - gpio_direction_input(mmc_detect_pin);
> - ret = request_irq(gpio_to_irq(mmc_detect_pin), colibri_mmc_detect_int,
> - IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
> - "MMC card detect", data);
> - if (ret) {
> - gpio_free(mmc_detect_pin);
> - return ret;
> - }
> -
> - return 0;
> -}
> -
> -static void colibri_pxa3xx_mci_exit(struct device *dev, void *data)
> -{
> - free_irq(mmc_detect_pin, data);
> - gpio_free(gpio_to_irq(mmc_detect_pin));
> -}
> -
> -static struct pxamci_platform_data colibri_pxa3xx_mci_platform_data = {
> - .detect_delay_ms = 200,
> - .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
> - .init = colibri_pxa3xx_mci_init,
> - .exit = colibri_pxa3xx_mci_exit,
> - .gpio_card_detect = -1,
> - .gpio_card_ro = -1,
> - .gpio_power = -1,
> -};
> -
> -void __init colibri_pxa3xx_init_mmc(mfp_cfg_t *pins, int len, int detect_pin)
> -{
> - pxa3xx_mfp_config(pins, len);
> - mmc_detect_pin = detect_pin;
> - pxa_set_mci_info(&colibri_pxa3xx_mci_platform_data);
> -}
> -#endif /* CONFIG_MMC_PXA || CONFIG_MMC_PXA_MODULE */
> -
> #if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE)
> static int lcd_bl_pin;
>
> diff --git a/arch/arm/mach-pxa/include/mach/colibri.h b/arch/arm/mach-pxa/include/mach/colibri.h
> index 58dada1..63a948a 100644
> --- a/arch/arm/mach-pxa/include/mach/colibri.h
> +++ b/arch/arm/mach-pxa/include/mach/colibri.h
> @@ -59,5 +59,11 @@ static inline void colibri_pxa3xx_init_nand(void) {}
> #define GPIO0_COLIBRI_PXA270_SD_DETECT 0
> #define GPIO113_COLIBRI_PXA270_TS_IRQ 113
>
> +/* GPIO definitions for Colibri PXA300/310 */
> +#define GPIO39_COLIBRI_PXA300_SD_DETECT 39
> +
> +/* GPIO definitions for Colibri PXA320 */
> +#define GPIO28_COLIBRI_PXA320_SD_DETECT 28
> +
> #endif /* _COLIBRI_H_ */
>
> --
> 1.7.2.3
>
>
More information about the linux-arm-kernel
mailing list