2011-10-10 20:29:24 +04:00
/*
* Setup code for AT91SAM Evaluation Kits with Device Tree support
*
* Covers : * AT91SAM9G45 - EKES board
* * AT91SAM9M10 - EKES board
* * AT91SAM9M10G45 - EK board
*
* Copyright ( C ) 2011 Atmel ,
* 2011 Nicolas Ferre < nicolas . ferre @ atmel . com >
*
* Licensed under GPLv2 or later .
*/
# include <linux/types.h>
# include <linux/init.h>
# include <linux/module.h>
# include <linux/gpio.h>
2012-02-14 21:08:14 +04:00
# include <linux/of.h>
# include <linux/of_irq.h>
2011-10-10 20:29:24 +04:00
# include <linux/of_platform.h>
# include <mach/board.h>
# include <asm/setup.h>
# include <asm/irq.h>
# include <asm/mach/arch.h>
# include <asm/mach/map.h>
# include <asm/mach/irq.h>
# include "generic.h"
2012-02-14 21:08:14 +04:00
static const struct of_device_id irq_of_match [ ] __initconst = {
{ . compatible = " atmel,at91rm9200-aic " , . data = at91_aic_of_init } ,
{ . compatible = " atmel,at91rm9200-gpio " , . data = at91_gpio_of_irq_setup } ,
2010-07-20 21:18:51 +04:00
{ . compatible = " atmel,at91sam9x5-gpio " , . data = at91_gpio_of_irq_setup } ,
2012-02-14 21:08:14 +04:00
{ /*sentinel*/ }
} ;
2011-10-10 20:29:24 +04:00
static void __init at91_dt_init_irq ( void )
{
2012-02-14 21:08:14 +04:00
of_irq_init ( irq_of_match ) ;
2011-10-10 20:29:24 +04:00
}
static void __init at91_dt_device_init ( void )
{
of_platform_populate ( NULL , of_default_bus_match_table , NULL , NULL ) ;
}
static const char * at91_dt_board_compat [ ] __initdata = {
" atmel,at91sam9m10g45ek " ,
2011-03-10 21:08:55 +03:00
" atmel,at91sam9x5ek " ,
2011-10-14 05:40:52 +04:00
" calao,usb-a9g20 " ,
2011-10-10 20:29:24 +04:00
NULL
} ;
DT_MACHINE_START ( at91sam_dt , " Atmel AT91SAM (Device Tree) " )
/* Maintainer: Atmel */
. timer = & at91sam926x_timer ,
. map_io = at91_map_io ,
2012-02-28 09:57:51 +04:00
. init_early = at91_dt_initialize ,
2011-10-10 20:29:24 +04:00
. init_irq = at91_dt_init_irq ,
. init_machine = at91_dt_device_init ,
. dt_compat = at91_dt_board_compat ,
MACHINE_END