[ARM] 3590/1: AT91RM9200 Platform devices support

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>
This commit is contained in:
Andrew Victor 2006-06-19 18:16:46 +01:00 committed by Russell King
parent 067bbada4c
commit 82dc0772a8
2 changed files with 28 additions and 3 deletions

View file

@ -39,6 +39,8 @@ extern int at91_serial_map[AT91_NR_UART];
extern int at91_console_port; extern int at91_console_port;
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <linux/device.h>
#include <linux/spi/spi.h>
/* USB Device */ /* USB Device */
struct at91_udc_data { struct at91_udc_data {
@ -91,10 +93,25 @@ struct at91_nand_data {
extern void __init at91_add_device_nand(struct at91_nand_data *data); extern void __init at91_add_device_nand(struct at91_nand_data *data);
/* I2C*/ /* I2C*/
void __init at91_add_device_i2c(void); extern void __init at91_add_device_i2c(void);
/* RTC */ /* SPI */
void __init at91_add_device_rtc(void); 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 */ /* LEDs */
extern u8 at91_leds_cpu; extern u8 at91_leds_cpu;

View file

@ -48,4 +48,12 @@ static inline void arch_reset(char mode)
at91_sys_write(AT91_ST_CR, AT91_ST_WDRST); 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 #endif