2006-01-09 17:05:41 +00:00
/*
2008-08-05 16:14:15 +01:00
* arch / arm / mach - at91 / include / mach / board . h
2006-01-09 17:05:41 +00:00
*
* Copyright ( C ) 2005 HP Labs
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*/
/*
* These are data structures found in platform_device . dev . platform_data ,
2006-06-30 18:29:51 +02:00
* and describing board - specific data needed by drivers . For example ,
2006-01-09 17:05:41 +00:00
* which pin is used for a given GPIO role .
*
* In 2.6 , drivers should strongly avoid board - specific knowledge so
* that supporting new boards normally won ' t require driver patches .
* Most board - specific knowledge should be in arch / . . . / board - * . c files .
*/
# ifndef __ASM_ARCH_BOARD_H
# define __ASM_ARCH_BOARD_H
2011-12-29 14:43:24 +08:00
# include <linux/platform_data/atmel.h>
2006-04-02 17:15:51 +01:00
2006-01-09 17:05:41 +00:00
/* USB Device */
extern void __init at91_add_device_udc ( struct at91_udc_data * data ) ;
2008-04-05 21:14:03 +01:00
/* USB High Speed Device */
extern void __init at91_add_device_usba ( struct usba_platform_data * data ) ;
2006-01-09 17:05:41 +00:00
/* Compact Flash */
extern void __init at91_add_device_cf ( struct at91_cf_data * data ) ;
/* MMC / SD */
2009-09-22 16:45:22 -07:00
/* atmel-mci platform config */
extern void __init at91_add_device_mci ( short mmc_id , struct mci_platform_data * data ) ;
2011-03-08 20:17:06 +00:00
extern void __init at91_add_device_eth ( struct macb_platform_data * data ) ;
2007-02-01 09:22:23 +01:00
2006-01-09 17:05:41 +00:00
/* USB Host */
extern void __init at91_add_device_usbh ( struct at91_usbh_data * data ) ;
2009-06-26 15:36:58 +01:00
extern void __init at91_add_device_usbh_ohci ( struct at91_usbh_data * data ) ;
2009-09-25 12:11:32 +01:00
extern void __init at91_add_device_usbh_ehci ( struct at91_usbh_data * data ) ;
2006-01-09 17:05:41 +00:00
2008-06-06 18:04:53 +02:00
extern void __init at91_add_device_nand ( struct atmel_nand_data * data ) ;
2006-04-02 17:15:51 +01:00
/* I2C*/
2009-06-26 15:36:58 +01:00
# if defined(CONFIG_ARCH_AT91SAM9G45)
extern void __init at91_add_device_i2c ( short i2c_id , struct i2c_board_info * devices , int nr_devices ) ;
# else
2007-11-19 13:47:20 +01:00
extern void __init at91_add_device_i2c ( struct i2c_board_info * devices , int nr_devices ) ;
2009-06-26 15:36:58 +01:00
# endif
2006-04-02 17:15:51 +01:00
2006-06-19 18:16:46 +01:00
/* SPI */
extern void __init at91_add_device_spi ( struct spi_board_info * devices , int nr_devices ) ;
/* Serial */
2008-01-23 09:25:15 +01:00
# define ATMEL_UART_CTS 0x01
# define ATMEL_UART_RTS 0x02
# define ATMEL_UART_DSR 0x04
# define ATMEL_UART_DTR 0x08
# define ATMEL_UART_DCD 0x10
# define ATMEL_UART_RI 0x20
extern void __init at91_register_uart ( unsigned id , unsigned portnr , unsigned pins ) ;
2006-10-04 16:02:04 +02:00
extern struct platform_device * atmel_default_console_device ;
2006-06-19 18:16:46 +01:00
extern void __init at91_add_device_serial ( void ) ;
2006-04-02 17:15:51 +01:00
2008-09-18 19:42:37 +01:00
/*
* PWM
*/
# define AT91_PWM0 0
# define AT91_PWM1 1
# define AT91_PWM2 2
# define AT91_PWM3 3
extern void __init at91_add_device_pwm ( u32 mask ) ;
2008-01-23 09:18:06 +01:00
/*
* SSC - - accessed through ssc_request ( id ) . Drivers don ' t bind to SSC
* platform devices . Their SSC ID is part of their configuration data ,
* along with information about which SSC signals they should use .
*/
# define ATMEL_SSC_TK 0x01
# define ATMEL_SSC_TF 0x02
# define ATMEL_SSC_TD 0x04
# define ATMEL_SSC_TX (ATMEL_SSC_TK | ATMEL_SSC_TF | ATMEL_SSC_TD)
# define ATMEL_SSC_RK 0x10
# define ATMEL_SSC_RF 0x20
# define ATMEL_SSC_RD 0x40
# define ATMEL_SSC_RX (ATMEL_SSC_RK | ATMEL_SSC_RF | ATMEL_SSC_RD)
extern void __init at91_add_device_ssc ( unsigned id , unsigned pins ) ;
2007-05-02 17:46:49 +01:00
/* LCD Controller */
struct atmel_lcdfb_info ;
extern void __init at91_add_device_lcdc ( struct atmel_lcdfb_info * data ) ;
/* AC97 */
2009-08-06 15:20:22 +01:00
extern void __init at91_add_device_ac97 ( struct ac97c_platform_data * data ) ;
2007-05-02 17:46:49 +01:00
2008-01-22 11:43:26 +01:00
/* ISI */
2011-10-22 15:17:39 +08:00
struct isi_platform_data ;
extern void __init at91_add_device_isi ( struct isi_platform_data * data ,
bool use_pck_as_mck ) ;
2008-01-22 11:43:26 +01:00
2008-09-18 19:45:35 +01:00
/* Touchscreen Controller */
2009-11-19 09:31:20 -08:00
extern void __init at91_add_device_tsadcc ( struct at91_tsadcc_data * data ) ;
2008-09-18 19:45:35 +01:00
2009-09-16 23:37:32 +00:00
/* CAN */
extern void __init at91_add_device_can ( struct at91_can_data * data ) ;
2006-04-02 17:15:48 +01:00
/* LEDs */
2008-01-23 09:27:06 +01:00
extern void __init at91_gpio_leds ( struct gpio_led * leds , int nr ) ;
2008-09-21 21:31:16 +01:00
extern void __init at91_pwm_leds ( struct gpio_led * leds , int nr ) ;
2006-04-02 17:15:48 +01:00
2006-01-09 17:05:41 +00:00
# endif