[ARM] 3590/1: AT91RM9200 Platform devices support
authorAndrew Victor <andrew@sanpeople.com>
Mon, 19 Jun 2006 17:16:46 +0000 (18:16 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Mon, 19 Jun 2006 17:16:46 +0000 (18:16 +0100)
Patch from Andrew Victor

This patch includes the structures and exported functions required for
the platform-device support (added in patch 3585/1).

Also adds the arch_identify() function for run-time detection of which
AT91 processor the code is running on.  [Original patch from Ivan
Kokshaysky]

Signed-off-by: Andrew Victor <andrew@sanpeople.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
include/asm-arm/arch-at91rm9200/board.h
include/asm-arm/arch-at91rm9200/system.h

index 4fdef13d01d4a4ce5b80ebf359019ea4f4251d34..587948d567535a904734da115e0ea49e3f164ba8 100644 (file)
@@ -39,6 +39,8 @@ extern int at91_serial_map[AT91_NR_UART];
 extern int at91_console_port;
 
 #include <linux/mtd/partitions.h>
+#include <linux/device.h>
+#include <linux/spi/spi.h>
 
  /* USB Device */
 struct at91_udc_data {
@@ -91,10 +93,25 @@ struct at91_nand_data {
 extern void __init at91_add_device_nand(struct at91_nand_data *data);
 
  /* I2C*/
-void __init at91_add_device_i2c(void);
+extern void __init at91_add_device_i2c(void);
 
- /* RTC */
-void __init at91_add_device_rtc(void);
+ /* SPI */
+extern void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices);
+
+ /* Serial */
+struct at91_uart_config {
+       unsigned short  console_tty;    /* tty number of serial console */
+       unsigned short  nr_tty;         /* number of serial tty's */
+       short           tty_map[];      /* map UART to tty number */
+};
+extern struct platform_device *at91_default_console_device;
+extern void __init at91_init_serial(struct at91_uart_config *config);
+
+struct at91_uart_data {
+       short           use_dma_tx;     /* use transmit DMA? */
+       short           use_dma_rx;     /* use receive DMA? */
+};
+extern void __init at91_add_device_serial(void);
 
  /* LEDs */
 extern u8 at91_leds_cpu;
index 29c42655f05c6b70db620053eca7c718906aafbe..945e66507a78d8ff3b4eec4dcbcfd97112bae0b0 100644 (file)
@@ -48,4 +48,12 @@ static inline void arch_reset(char mode)
        at91_sys_write(AT91_ST_CR, AT91_ST_WDRST);
 }
 
+#define ARCH_ID_AT91RM9200     0x09200080
+#define ARCH_ID_AT91SAM9261    0x019000a0
+
+static inline unsigned long arch_identify(void)
+{
+       return at91_sys_read(AT91_DBGU_CIDR) & (AT91_CIDR_EPROC | AT91_CIDR_ARCH);
+}
+
 #endif