2011-10-10 18:29:24 +02:00
/*
* Setup code for AT91SAM Evaluation Kits with Device Tree support
*
* 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 18:08:14 +01:00
# include <linux/of.h>
# include <linux/of_irq.h>
2011-10-10 18:29:24 +02: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 18:08:14 +01: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 19:18:51 +02:00
{ . compatible = " atmel,at91sam9x5-gpio " , . data = at91_gpio_of_irq_setup } ,
2012-02-14 18:08:14 +01:00
{ /*sentinel*/ }
} ;
2011-10-10 18:29:24 +02:00
static void __init at91_dt_init_irq ( void )
{
2012-02-14 18:08:14 +01:00
of_irq_init ( irq_of_match ) ;
2011-10-10 18:29:24 +02: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 = {
2012-03-01 14:47:44 +08:00
" atmel,at91sam9 " ,
2011-10-10 18:29:24 +02:00
NULL
} ;
DT_MACHINE_START ( at91sam_dt , " Atmel AT91SAM (Device Tree) " )
/* Maintainer: Atmel */
. timer = & at91sam926x_timer ,
. map_io = at91_map_io ,
2012-02-28 13:57:51 +08:00
. init_early = at91_dt_initialize ,
2011-10-10 18:29:24 +02:00
. init_irq = at91_dt_init_irq ,
. init_machine = at91_dt_device_init ,
. dt_compat = at91_dt_board_compat ,
MACHINE_END