[PATCH 03/11] ARM: pxa: Push Colibri evalboard MFP into module files
Marek Vasut
marek.vasut at gmail.com
Tue Sep 21 17:55:33 EDT 2010
Dne Po 20. září 2010 16:29:39 Eric Miao napsal(a):
> On Thu, Sep 16, 2010 at 10:32 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>
> > ---
> > 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
More information about the linux-arm-kernel
mailing list