18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * 48c2ecf20Sopenharmony_ci * Copyright (C) 2014 Broadcom Corporation 58c2ecf20Sopenharmony_ci * Author: Kevin Cernekee <cernekee@gmail.com> 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#include <linux/of.h> 98c2ecf20Sopenharmony_ci#include <linux/irqchip.h> 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include <asm/bmips.h> 128c2ecf20Sopenharmony_ci#include <asm/irq.h> 138c2ecf20Sopenharmony_ci#include <asm/irq_cpu.h> 148c2ecf20Sopenharmony_ci#include <asm/time.h> 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_cistatic const struct of_device_id smp_intc_dt_match[] = { 178c2ecf20Sopenharmony_ci { .compatible = "brcm,bcm7038-l1-intc" }, 188c2ecf20Sopenharmony_ci { .compatible = "brcm,bcm6345-l1-intc" }, 198c2ecf20Sopenharmony_ci {} 208c2ecf20Sopenharmony_ci}; 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ciunsigned int get_c0_compare_int(void) 238c2ecf20Sopenharmony_ci{ 248c2ecf20Sopenharmony_ci return CP0_LEGACY_COMPARE_IRQ; 258c2ecf20Sopenharmony_ci} 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_civoid __init arch_init_irq(void) 288c2ecf20Sopenharmony_ci{ 298c2ecf20Sopenharmony_ci struct device_node *dn; 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci /* Only these controllers support SMP IRQ affinity */ 328c2ecf20Sopenharmony_ci dn = of_find_matching_node(NULL, smp_intc_dt_match); 338c2ecf20Sopenharmony_ci if (dn) 348c2ecf20Sopenharmony_ci of_node_put(dn); 358c2ecf20Sopenharmony_ci else 368c2ecf20Sopenharmony_ci bmips_tp1_irqs = 0; 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci irqchip_init(); 398c2ecf20Sopenharmony_ci} 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ciIRQCHIP_DECLARE(mips_cpu_intc, "mti,cpu-interrupt-controller", 428c2ecf20Sopenharmony_ci mips_cpu_irq_of_init); 43