2013-01-29 06:40:18 +04:00
/*
* marzen board support - Reference DT implementation
*
* Copyright ( C ) 2011 Renesas Solutions Corp .
* Copyright ( C ) 2011 Magnus Damm
* Copyright ( C ) 2013 Simon Horman
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; version 2 of the License .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin St , Fifth Floor , Boston , MA 02110 - 1301 USA
*/
2014-05-15 15:32:06 +04:00
# include <linux/clk/shmobile.h>
# include <linux/clocksource.h>
2014-05-15 15:32:03 +04:00
# include <linux/of_platform.h>
2014-06-20 20:53:05 +04:00
2013-01-29 06:40:18 +04:00
# include <asm/irq.h>
# include <asm/mach/arch.h>
2014-06-20 20:53:05 +04:00
2014-05-15 15:32:07 +04:00
# include "clock.h"
2014-06-17 11:47:37 +04:00
# include "common.h"
2014-06-17 11:47:29 +04:00
# include "irqs.h"
2014-06-20 20:53:05 +04:00
# include "r8a7779.h"
2013-01-29 06:40:18 +04:00
2014-05-15 15:32:06 +04:00
static void __init marzen_init_timer ( void )
2013-01-29 06:40:18 +04:00
{
2014-05-15 15:32:06 +04:00
r8a7779_clocks_init ( r8a7779_read_mode_pins ( ) ) ;
clocksource_of_init ( ) ;
}
2014-05-15 15:32:07 +04:00
/*
* This is a really crude hack to provide clkdev support to platform
* devices until they get moved to DT .
*/
static const struct clk_name clk_names [ ] __initconst = {
{ " tmu0 " , " fck " , " sh-tmu.0 " } ,
} ;
2014-05-15 15:32:06 +04:00
static void __init marzen_init ( void )
{
2014-05-15 15:32:07 +04:00
shmobile_clk_workaround ( clk_names , ARRAY_SIZE ( clk_names ) , false ) ;
2013-01-29 06:40:18 +04:00
r8a7779_add_standard_devices_dt ( ) ;
2014-05-15 15:32:03 +04:00
of_platform_populate ( NULL , of_default_bus_match_table , NULL , NULL ) ;
2013-10-02 12:39:48 +04:00
r8a7779_init_irq_extpin_dt ( 1 ) ; /* IRQ1 as individual interrupt */
2013-01-29 06:40:18 +04:00
}
static const char * marzen_boards_compat_dt [ ] __initdata = {
2014-05-15 15:32:10 +04:00
" renesas,marzen " ,
2013-01-29 06:40:18 +04:00
" renesas,marzen-reference " ,
NULL ,
} ;
DT_MACHINE_START ( MARZEN , " marzen " )
. smp = smp_ops ( r8a7779_smp_ops ) ,
. map_io = r8a7779_map_io ,
2014-05-16 08:43:00 +04:00
. init_early = shmobile_init_delay ,
2014-05-15 15:32:06 +04:00
. init_time = marzen_init_timer ,
2013-01-29 06:40:18 +04:00
. nr_irqs = NR_IRQS_LEGACY ,
. init_irq = r8a7779_init_irq_dt ,
. init_machine = marzen_init ,
. dt_compat = marzen_boards_compat_dt ,
MACHINE_END