1/* 2 * Copyright (C) ST-Ericsson SA 2011 3 * 4 * License Terms: GNU General Public License v2 5 * Author: Mattias Wallin <mattias.wallin@stericsson.com> for ST-Ericsson 6 */ 7#include <linux/io.h> 8#include <linux/errno.h> 9#include <linux/clksrc-dbx500-prcmu.h> 10#include <linux/clocksource.h> 11#include <linux/of.h> 12#include <linux/of_address.h> 13 14#include "setup.h" 15 16#include "db8500-regs.h" 17#include "id.h" 18 19static const struct of_device_id prcmu_timer_of_match[] __initconst = { 20 { .compatible = "stericsson,db8500-prcmu-timer-4", }, 21 { }, 22}; 23 24void __init ux500_timer_init(void) 25{ 26 void __iomem *prcmu_timer_base; 27 void __iomem *tmp_base; 28 struct device_node *np; 29 30 if (cpu_is_u8500_family() || cpu_is_ux540_family()) 31 prcmu_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE); 32 else 33 ux500_unknown_soc(); 34 35 np = of_find_matching_node(NULL, prcmu_timer_of_match); 36 if (!np) 37 goto dt_fail; 38 39 tmp_base = of_iomap(np, 0); 40 if (!tmp_base) 41 goto dt_fail; 42 43 prcmu_timer_base = tmp_base; 44 45dt_fail: 46 clksrc_dbx500_prcmu_init(prcmu_timer_base); 47 clocksource_of_init(); 48} 49