]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - arch/arm/mach-pxa/colibri-evalboard.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / arch / arm / mach-pxa / colibri-evalboard.c
similarity index 51%
rename from arch/arm/mach-pxa/colibri-pxa270-evalboard.c
rename to arch/arm/mach-pxa/colibri-evalboard.c
index 0f3b632c3b14f52ad182597198088040420f79c5..28f667e52ef9265dd44c4de7bac2e6cb5072c2d1 100644 (file)
@@ -1,7 +1,7 @@
 /*
- *  linux/arch/arm/mach-pxa/colibri-pxa270-evalboard.c
+ *  linux/arch/arm/mach-pxa/colibri-evalboard.c
  *
- *  Support for Toradex PXA270 based Colibri Evaluation Carrier Board
+ *  Support for Toradex Colibri Evaluation Carrier Board
  *  Daniel Mack <daniel@caiaq.de>
  *  Marek Vasut <marek.vasut@gmail.com>
  *
@@ -19,6 +19,7 @@
 #include <asm/mach-types.h>
 #include <mach/hardware.h>
 #include <asm/mach/arch.h>
+#include <linux/i2c.h>
 
 #include <mach/pxa27x.h>
 #include <mach/colibri.h>
 #include <mach/ohci.h>
 #include <mach/pxa27x-udc.h>
 
+#include <plat/i2c.h>
+
 #include "generic.h"
 #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,
-};
-
 /******************************************************************************
  * SD/MMC card controller
  ******************************************************************************/
 #if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE)
-static struct pxamci_platform_data colibri_pxa270_mci_platform_data = {
+static struct pxamci_platform_data colibri_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)
+static void __init colibri_mmc_init(void)
 {
-       pxa_set_mci_info(&colibri_pxa270_mci_platform_data);
+       if (machine_is_colibri())       /* PXA270 Colibri */
+               colibri_mci_platform_data.gpio_card_detect =
+                       GPIO0_COLIBRI_PXA270_SD_DETECT;
+       if (machine_is_colibri300())    /* PXA300 Colibri */
+               colibri_mci_platform_data.gpio_card_detect =
+                       GPIO13_COLIBRI_PXA300_SD_DETECT;
+       else                            /* PXA320 Colibri */
+               colibri_mci_platform_data.gpio_card_detect =
+                       GPIO28_COLIBRI_PXA320_SD_DETECT;
+
+       pxa_set_mci_info(&colibri_mci_platform_data);
 }
 #else
-static inline void colibri_pxa270_mmc_init(void) {}
+static inline void colibri_mmc_init(void) {}
 #endif
 
 /******************************************************************************
  * USB Host
  ******************************************************************************/
 #if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
-static int colibri_pxa270_ohci_init(struct device *dev)
+static int colibri_ohci_init(struct device *dev)
 {
        UP2OCR = UP2OCR_HXS | UP2OCR_HXOE | UP2OCR_DPPDE | UP2OCR_DMPDE;
        return 0;
 }
 
-static struct pxaohci_platform_data colibri_pxa270_ohci_info = {
+static struct pxaohci_platform_data colibri_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,
+       .init           = colibri_ohci_init,
 };
 
-static void __init colibri_pxa270_uhc_init(void)
+static void __init colibri_uhc_init(void)
 {
-       pxa_set_ohci_info(&colibri_pxa270_ohci_info);
+       /* Colibri PXA270 has two usb ports, TBA for 320 */
+       if (machine_is_colibri())
+               colibri_ohci_info.flags |= ENABLE_PORT2;
+
+       pxa_set_ohci_info(&colibri_ohci_info);
 }
 #else
-static inline void colibri_pxa270_uhc_init(void) {}
+static inline void colibri_uhc_init(void) {}
 #endif
 
-void __init colibri_pxa270_evalboard_init(void)
+/******************************************************************************
+ * I2C RTC
+ ******************************************************************************/
+#if defined(CONFIG_RTC_DRV_DS1307) || defined(CONFIG_RTC_DRV_DS1307_MODULE)
+static struct i2c_board_info __initdata colibri_i2c_devs[] = {
+       {
+               I2C_BOARD_INFO("m41t00", 0x68),
+       },
+};
+
+static void __init colibri_rtc_init(void)
+{
+       pxa_set_i2c_info(NULL);
+       i2c_register_board_info(0, ARRAY_AND_SIZE(colibri_i2c_devs));
+}
+#else
+static inline void colibri_rtc_init(void) {}
+#endif
+
+void __init colibri_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);
 
-       colibri_pxa270_mmc_init();
-       colibri_pxa270_uhc_init();
+       colibri_mmc_init();
+       colibri_uhc_init();
+       colibri_rtc_init();
 }
-