Subject: [PATCH 03/11] ARM: pxa: Push Colibri evalboard MFP into module files

From: [email-masked] (Marek Vasut)
Date: Tue, 21 Sep 2010 23:55:33 +0200

Dne Po 20. z??? 2010 16:29:39 Eric Miao napsal(a):
> On Thu, Sep 16, 2010 at 10:32 AM, Marek Vasut <[email-masked]> 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 <[email-masked]>
> > Acked-by: Daniel Mack <[email-masked]>
> > ---
> >  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;
> > +
> 
> It's a bit confusing here in a file called colibri-pxa270-evalboard.c
> but pxa300 and
> pxa320 code are there. And until I looked behind and saw the rename patch I
> came to know how it's working.

Yes, but I don't feel like reordering to patches. The gain is minimal and it's 
very error-prone.
> 
> Wouldn't be better to rename before change?
> 
> >        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 98673ac..8488dfe 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 40b6ac2..dab49ce 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 99e850d..e886ab2 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_MODU
> > LE) 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.1