home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / arm / mach-at91 / include / mach / board.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  5.9 KB  |  187 lines

  1. /*
  2.  * arch/arm/mach-at91/include/mach/board.h
  3.  *
  4.  *  Copyright (C) 2005 HP Labs
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License as published by
  8.  * the Free Software Foundation; either version 2 of the License, or
  9.  * (at your option) any later version.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program; if not, write to the Free Software
  18.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  19.  */
  20.  
  21. /*
  22.  * These are data structures found in platform_device.dev.platform_data,
  23.  * and describing board-specific data needed by drivers.  For example,
  24.  * which pin is used for a given GPIO role.
  25.  *
  26.  * In 2.6, drivers should strongly avoid board-specific knowledge so
  27.  * that supporting new boards normally won't require driver patches.
  28.  * Most board-specific knowledge should be in arch/.../board-*.c files.
  29.  */
  30.  
  31. #ifndef __ASM_ARCH_BOARD_H
  32. #define __ASM_ARCH_BOARD_H
  33.  
  34. #include <linux/mtd/partitions.h>
  35. #include <linux/device.h>
  36. #include <linux/i2c.h>
  37. #include <linux/leds.h>
  38. #include <linux/spi/spi.h>
  39. #include <linux/usb/atmel_usba_udc.h>
  40.  
  41.  /* USB Device */
  42. struct at91_udc_data {
  43.     u8    vbus_pin;        /* high == host powering us */
  44.     u8    pullup_pin;        /* active == D+ pulled up */
  45.     u8    pullup_active_low;    /* true == pullup_pin is active low */
  46. };
  47. extern void __init at91_add_device_udc(struct at91_udc_data *data);
  48.  
  49.  /* USB High Speed Device */
  50. extern void __init at91_add_device_usba(struct usba_platform_data *data);
  51.  
  52.  /* Compact Flash */
  53. struct at91_cf_data {
  54.     u8    irq_pin;        /* I/O IRQ */
  55.     u8    det_pin;        /* Card detect */
  56.     u8    vcc_pin;        /* power switching */
  57.     u8    rst_pin;        /* card reset */
  58.     u8    chipselect;        /* EBI Chip Select number */
  59. };
  60. extern void __init at91_add_device_cf(struct at91_cf_data *data);
  61.  
  62.  /* MMC / SD */
  63. struct at91_mmc_data {
  64.     u8        det_pin;    /* card detect IRQ */
  65.     unsigned    slot_b:1;    /* uses Slot B */
  66.     unsigned    wire4:1;    /* (SD) supports DAT0..DAT3 */
  67.     u8        wp_pin;        /* (SD) writeprotect detect */
  68.     u8        vcc_pin;    /* power switching (high == on) */
  69. };
  70. extern void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data);
  71.  
  72.  /* Ethernet (EMAC & MACB) */
  73. struct at91_eth_data {
  74.     u32        phy_mask;
  75.     u8        phy_irq_pin;    /* PHY IRQ */
  76.     u8        is_rmii;    /* using RMII interface? */
  77. };
  78. extern void __init at91_add_device_eth(struct at91_eth_data *data);
  79.  
  80. #if defined(CONFIG_ARCH_AT91SAM9260) || defined(CONFIG_ARCH_AT91SAM9263) || defined(CONFIG_ARCH_AT91SAM9G20) || defined(CONFIG_ARCH_AT91CAP9)
  81. #define eth_platform_data    at91_eth_data
  82. #endif
  83.  
  84.  /* USB Host */
  85. struct at91_usbh_data {
  86.     u8        ports;        /* number of ports on root hub */
  87.     u8        vbus_pin[];    /* port power-control pin */
  88. };
  89. extern void __init at91_add_device_usbh(struct at91_usbh_data *data);
  90.  
  91.  /* NAND / SmartMedia */
  92. struct atmel_nand_data {
  93.     u8        enable_pin;    /* chip enable */
  94.     u8        det_pin;    /* card detect */
  95.     u8        rdy_pin;    /* ready/busy */
  96.     u8        ale;        /* address line number connected to ALE */
  97.     u8        cle;        /* address line number connected to CLE */
  98.     u8        bus_width_16;    /* buswidth is 16 bit */
  99.     struct mtd_partition* (*partition_info)(int, int*);
  100. };
  101. extern void __init at91_add_device_nand(struct atmel_nand_data *data);
  102.  
  103.  /* I2C*/
  104. extern void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices);
  105.  
  106.  /* SPI */
  107. extern void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices);
  108.  
  109.  /* Serial */
  110. #define ATMEL_UART_CTS    0x01
  111. #define ATMEL_UART_RTS    0x02
  112. #define ATMEL_UART_DSR    0x04
  113. #define ATMEL_UART_DTR    0x08
  114. #define ATMEL_UART_DCD    0x10
  115. #define ATMEL_UART_RI    0x20
  116.  
  117. extern void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins);
  118. extern void __init at91_set_serial_console(unsigned portnr);
  119.  
  120. struct at91_uart_config {
  121.     unsigned short    console_tty;    /* tty number of serial console */
  122.     unsigned short    nr_tty;        /* number of serial tty's */
  123.     short        tty_map[];    /* map UART to tty number */
  124. };
  125. extern struct platform_device *atmel_default_console_device;
  126. extern void __init __deprecated at91_init_serial(struct at91_uart_config *config);
  127.  
  128. struct atmel_uart_data {
  129.     short        use_dma_tx;    /* use transmit DMA? */
  130.     short        use_dma_rx;    /* use receive DMA? */
  131.     void __iomem    *regs;        /* virtual base address, if any */
  132. };
  133. extern void __init at91_add_device_serial(void);
  134.  
  135. /*
  136.  * PWM
  137.  */
  138. #define AT91_PWM0    0
  139. #define AT91_PWM1    1
  140. #define AT91_PWM2    2
  141. #define AT91_PWM3    3
  142.  
  143. extern void __init at91_add_device_pwm(u32 mask);
  144.  
  145. /*
  146.  * SSC -- accessed through ssc_request(id).  Drivers don't bind to SSC
  147.  * platform devices.  Their SSC ID is part of their configuration data,
  148.  * along with information about which SSC signals they should use.
  149.  */
  150. #define ATMEL_SSC_TK    0x01
  151. #define ATMEL_SSC_TF    0x02
  152. #define ATMEL_SSC_TD    0x04
  153. #define ATMEL_SSC_TX    (ATMEL_SSC_TK | ATMEL_SSC_TF | ATMEL_SSC_TD)
  154.  
  155. #define ATMEL_SSC_RK    0x10
  156. #define ATMEL_SSC_RF    0x20
  157. #define ATMEL_SSC_RD    0x40
  158. #define ATMEL_SSC_RX    (ATMEL_SSC_RK | ATMEL_SSC_RF | ATMEL_SSC_RD)
  159.  
  160. extern void __init at91_add_device_ssc(unsigned id, unsigned pins);
  161.  
  162.  /* LCD Controller */
  163. struct atmel_lcdfb_info;
  164. extern void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data);
  165.  
  166.  /* AC97 */
  167. struct atmel_ac97_data {
  168.     u8        reset_pin;    /* reset */
  169. };
  170. extern void __init at91_add_device_ac97(struct atmel_ac97_data *data);
  171.  
  172.  /* ISI */
  173. extern void __init at91_add_device_isi(void);
  174.  
  175.  /* Touchscreen Controller */
  176. extern void __init at91_add_device_tsadcc(void);
  177.  
  178.  /* LEDs */
  179. extern void __init at91_init_leds(u8 cpu_led, u8 timer_led);
  180. extern void __init at91_gpio_leds(struct gpio_led *leds, int nr);
  181. extern void __init at91_pwm_leds(struct gpio_led *leds, int nr);
  182.  
  183. /* FIXME: this needs a better location, but gets stuff building again */
  184. extern int at91_suspend_entering_slow_clock(void);
  185.  
  186. #endif
  187.