Linux Audio

Check our new training course

Yocto / OpenEmbedded training

Feb 10-13, 2025
Register
Loading...
Note: File does not exist in v6.13.7.
  1/*
  2 *  linux/arch/arm/mach-pxa/colibri-evalboard.c
  3 *
  4 *  Support for Toradex Colibri Evaluation Carrier Board
  5 *  Daniel Mack <daniel@caiaq.de>
  6 *  Marek Vasut <marek.vasut@gmail.com>
  7 *
  8 *  This program is free software; you can redistribute it and/or modify
  9 *  it under the terms of the GNU General Public License version 2 as
 10 *  published by the Free Software Foundation.
 11 */
 12
 13#include <linux/init.h>
 14#include <linux/kernel.h>
 15#include <linux/platform_device.h>
 16#include <linux/interrupt.h>
 17#include <linux/gpio.h>
 18#include <asm/mach-types.h>
 19#include <mach/hardware.h>
 20#include <asm/mach/arch.h>
 21#include <linux/i2c.h>
 22#include <linux/i2c/pxa-i2c.h>
 23#include <asm/io.h>
 24
 25#include <mach/pxa27x.h>
 26#include <mach/colibri.h>
 27#include <linux/platform_data/mmc-pxamci.h>
 28#include <linux/platform_data/usb-ohci-pxa27x.h>
 29#include <mach/pxa27x-udc.h>
 30
 31#include "generic.h"
 32#include "devices.h"
 33
 34/******************************************************************************
 35 * SD/MMC card controller
 36 ******************************************************************************/
 37#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE)
 38static struct pxamci_platform_data colibri_mci_platform_data = {
 39	.ocr_mask		= MMC_VDD_32_33 | MMC_VDD_33_34,
 40	.gpio_power		= -1,
 41	.gpio_card_ro		= -1,
 42	.detect_delay_ms	= 200,
 43};
 44
 45static void __init colibri_mmc_init(void)
 46{
 47	if (machine_is_colibri())	/* PXA270 Colibri */
 48		colibri_mci_platform_data.gpio_card_detect =
 49			GPIO0_COLIBRI_PXA270_SD_DETECT;
 50	if (machine_is_colibri300())	/* PXA300 Colibri */
 51		colibri_mci_platform_data.gpio_card_detect =
 52			GPIO13_COLIBRI_PXA300_SD_DETECT;
 53	else				/* PXA320 Colibri */
 54		colibri_mci_platform_data.gpio_card_detect =
 55			GPIO28_COLIBRI_PXA320_SD_DETECT;
 56
 57	pxa_set_mci_info(&colibri_mci_platform_data);
 58}
 59#else
 60static inline void colibri_mmc_init(void) {}
 61#endif
 62
 63/******************************************************************************
 64 * USB Host
 65 ******************************************************************************/
 66#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
 67static int colibri_ohci_init(struct device *dev)
 68{
 69	UP2OCR = UP2OCR_HXS | UP2OCR_HXOE | UP2OCR_DPPDE | UP2OCR_DMPDE;
 70	return 0;
 71}
 72
 73static struct pxaohci_platform_data colibri_ohci_info = {
 74	.port_mode	= PMM_PERPORT_MODE,
 75	.flags		= ENABLE_PORT1 |
 76			  POWER_CONTROL_LOW | POWER_SENSE_LOW,
 77	.init		= colibri_ohci_init,
 78};
 79
 80static void __init colibri_uhc_init(void)
 81{
 82	/* Colibri PXA270 has two usb ports, TBA for 320 */
 83	if (machine_is_colibri())
 84		colibri_ohci_info.flags	|= ENABLE_PORT2;
 85
 86	pxa_set_ohci_info(&colibri_ohci_info);
 87}
 88#else
 89static inline void colibri_uhc_init(void) {}
 90#endif
 91
 92/******************************************************************************
 93 * I2C RTC
 94 ******************************************************************************/
 95#if defined(CONFIG_RTC_DRV_DS1307) || defined(CONFIG_RTC_DRV_DS1307_MODULE)
 96static struct i2c_board_info __initdata colibri_i2c_devs[] = {
 97	{
 98		I2C_BOARD_INFO("m41t00", 0x68),
 99	},
100};
101
102static void __init colibri_rtc_init(void)
103{
104	pxa_set_i2c_info(NULL);
105	i2c_register_board_info(0, ARRAY_AND_SIZE(colibri_i2c_devs));
106}
107#else
108static inline void colibri_rtc_init(void) {}
109#endif
110
111void __init colibri_evalboard_init(void)
112{
113	pxa_set_ffuart_info(NULL);
114	pxa_set_btuart_info(NULL);
115	pxa_set_stuart_info(NULL);
116
117	colibri_mmc_init();
118	colibri_uhc_init();
119	colibri_rtc_init();
120}