diff options
Diffstat (limited to 'arch/arm/mach-socfpga/socfpga.c')
| -rw-r--r-- | arch/arm/mach-socfpga/socfpga.c | 23 | 
1 files changed, 11 insertions, 12 deletions
| diff --git a/arch/arm/mach-socfpga/socfpga.c b/arch/arm/mach-socfpga/socfpga.c index 6732924a5fee..1042c023cf24 100644 --- a/arch/arm/mach-socfpga/socfpga.c +++ b/arch/arm/mach-socfpga/socfpga.c @@ -15,12 +15,12 @@   * along with this program.  If not, see <http://www.gnu.org/licenses/>.   */  #include <linux/dw_apb_timer.h> +#include <linux/irqchip.h>  #include <linux/of_address.h>  #include <linux/of_irq.h>  #include <linux/of_platform.h>  #include <asm/hardware/cache-l2x0.h> -#include <asm/hardware/gic.h>  #include <asm/mach/arch.h>  #include <asm/mach/map.h> @@ -29,6 +29,7 @@  void __iomem *socfpga_scu_base_addr = ((void __iomem *)(SOCFPGA_SCU_VIRT_BASE));  void __iomem *sys_manager_base_addr;  void __iomem *rst_manager_base_addr; +unsigned long cpu1start_addr;  static struct map_desc scu_io_desc __initdata = {  	.virtual	= SOCFPGA_SCU_VIRT_BASE, @@ -62,25 +63,25 @@ static void __init socfpga_map_io(void)  	early_printk("Early printk initialized\n");  } -const static struct of_device_id irq_match[] = { -	{ .compatible = "arm,cortex-a9-gic", .data = gic_of_init, }, -	{} -}; -  void __init socfpga_sysmgr_init(void)  {  	struct device_node *np;  	np = of_find_compatible_node(NULL, NULL, "altr,sys-mgr"); + +	if (of_property_read_u32(np, "cpu1-start-addr", +			(u32 *) &cpu1start_addr)) +		pr_err("SMP: Need cpu1-start-addr in device tree.\n"); +  	sys_manager_base_addr = of_iomap(np, 0);  	np = of_find_compatible_node(NULL, NULL, "altr,rst-mgr");  	rst_manager_base_addr = of_iomap(np, 0);  } -static void __init gic_init_irq(void) +static void __init socfpga_init_irq(void)  { -	of_irq_init(irq_match); +	irqchip_init();  	socfpga_sysmgr_init();  } @@ -98,16 +99,14 @@ static void __init socfpga_cyclone5_init(void)  static const char *altera_dt_match[] = {  	"altr,socfpga", -	"altr,socfpga-cyclone5",  	NULL  };  DT_MACHINE_START(SOCFPGA, "Altera SOCFPGA")  	.smp		= smp_ops(socfpga_smp_ops),  	.map_io		= socfpga_map_io, -	.init_irq	= gic_init_irq, -	.handle_irq     = gic_handle_irq, -	.timer		= &dw_apb_timer, +	.init_irq	= socfpga_init_irq, +	.init_time	= dw_apb_timer_init,  	.init_machine	= socfpga_cyclone5_init,  	.restart	= socfpga_cyclone5_restart,  	.dt_compat	= altera_dt_match, |