2014-05-13 01:06:13 +02:00
/*
* Device Tree support for Mediatek SoCs
*
* Copyright ( c ) 2014 MundoReader S . L .
* Author : Matthias Brugger < matthias . bgg @ gmail . com >
*
* 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 ; either version 2 of the License , or
* ( at your option ) any later version .
*
* 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 .
*/
# include <linux/init.h>
# include <asm/mach/arch.h>
2015-10-02 23:19:37 +08:00
# include <linux/of.h>
# include <linux/clk-provider.h>
# include <linux/clocksource.h>
# define GPT6_CON_MT65xx 0x10008060
# define GPT_ENABLE 0x31
static void __init mediatek_timer_init ( void )
{
void __iomem * gpt_base ;
if ( of_machine_is_compatible ( " mediatek,mt6589 " ) | |
2016-04-07 20:18:35 +02:00
of_machine_is_compatible ( " mediatek,mt7623 " ) | |
2017-07-31 15:36:38 +08:00
of_machine_is_compatible ( " mediatek,mt7623a " ) | |
2015-10-02 23:19:37 +08:00
of_machine_is_compatible ( " mediatek,mt8135 " ) | |
of_machine_is_compatible ( " mediatek,mt8127 " ) ) {
/* turn on GPT6 which ungates arch timer clocks */
gpt_base = ioremap ( GPT6_CON_MT65xx , 0x04 ) ;
/* enable clock and set to free-run */
writel ( GPT_ENABLE , gpt_base ) ;
iounmap ( gpt_base ) ;
}
of_clk_init ( NULL ) ;
2017-05-26 17:40:46 +02:00
timer_probe ( ) ;
2015-10-02 23:19:37 +08:00
} ;
2014-05-13 01:06:13 +02:00
static const char * const mediatek_board_dt_compat [ ] = {
2015-10-20 14:34:31 +08:00
" mediatek,mt2701 " ,
2014-05-13 01:06:13 +02:00
" mediatek,mt6589 " ,
2014-11-14 13:14:52 +08:00
" mediatek,mt6592 " ,
2016-01-05 17:24:27 +01:00
" mediatek,mt7623 " ,
2017-07-31 15:36:38 +08:00
" mediatek,mt7623a " ,
2014-11-11 15:53:41 +08:00
" mediatek,mt8127 " ,
2014-11-11 15:53:43 +08:00
" mediatek,mt8135 " ,
2014-05-13 01:06:13 +02:00
NULL ,
} ;
DT_MACHINE_START ( MEDIATEK_DT , " Mediatek Cortex-A7 (Device Tree) " )
. dt_compat = mediatek_board_dt_compat ,
2015-10-02 23:19:37 +08:00
. init_time = mediatek_timer_init ,
2014-05-13 01:06:13 +02:00
MACHINE_END