On 11/5/20 1:22 PM, Vineet Gupta wrote: > NPS platform has been removed from ARC port and there are no in-tree > users of it now. So RIP ! > > Cc: Thomas Gleixner <t...@linutronix.de> > Cc: Jason Cooper <ja...@lakedaemon.net> > Cc: Marc Zyngier <m...@kernel.org> > Cc: linux-ker...@vger.kernel.org > Signed-off-by: Vineet Gupta <vgu...@synopsys.com>
Ping ! > --- > drivers/irqchip/Kconfig | 7 -- > drivers/irqchip/Makefile | 1 - > drivers/irqchip/irq-eznps.c | 165 ------------------------------------ > 3 files changed, 173 deletions(-) > delete mode 100644 drivers/irqchip/irq-eznps.c > > diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig > index c6098eee0c7c..7920c3a3017d 100644 > --- a/drivers/irqchip/Kconfig > +++ b/drivers/irqchip/Kconfig > @@ -389,13 +389,6 @@ config LS_SCFG_MSI > config PARTITION_PERCPU > bool > > -config EZNPS_GIC > - bool "NPS400 Global Interrupt Manager (GIM)" > - depends on ARC || (COMPILE_TEST && !64BIT) > - select IRQ_DOMAIN > - help > - Support the EZchip NPS400 global interrupt controller > - > config STM32_EXTI > bool > select IRQ_DOMAIN > diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile > index 94c2885882ee..0ac93bfaec61 100644 > --- a/drivers/irqchip/Makefile > +++ b/drivers/irqchip/Makefile > @@ -86,7 +86,6 @@ obj-$(CONFIG_MVEBU_PIC) += > irq-mvebu-pic.o > obj-$(CONFIG_MVEBU_SEI) += irq-mvebu-sei.o > obj-$(CONFIG_LS_EXTIRQ) += irq-ls-extirq.o > obj-$(CONFIG_LS_SCFG_MSI) += irq-ls-scfg-msi.o > -obj-$(CONFIG_EZNPS_GIC) += irq-eznps.o > obj-$(CONFIG_ARCH_ASPEED) += irq-aspeed-vic.o irq-aspeed-i2c-ic.o > irq-aspeed-scu-ic.o > obj-$(CONFIG_STM32_EXTI) += irq-stm32-exti.o > obj-$(CONFIG_QCOM_IRQ_COMBINER) += qcom-irq-combiner.o > diff --git a/drivers/irqchip/irq-eznps.c b/drivers/irqchip/irq-eznps.c > deleted file mode 100644 > index 2a7a38830a8d..000000000000 > --- a/drivers/irqchip/irq-eznps.c > +++ /dev/null > @@ -1,165 +0,0 @@ > -/* > - * Copyright (c) 2016, Mellanox Technologies. All rights reserved. > - * > - * This software is available to you under a choice of one of two > - * licenses. You may choose to be licensed under the terms of the GNU > - * General Public License (GPL) Version 2, available from the file > - * COPYING in the main directory of this source tree, or the > - * OpenIB.org BSD license below: > - * > - * Redistribution and use in source and binary forms, with or > - * without modification, are permitted provided that the following > - * conditions are met: > - * > - * - Redistributions of source code must retain the above > - * copyright notice, this list of conditions and the following > - * disclaimer. > - * > - * - Redistributions in binary form must reproduce the above > - * copyright notice, this list of conditions and the following > - * disclaimer in the documentation and/or other materials > - * provided with the distribution. > - * > - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND > - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS > - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN > - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN > - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE > - * SOFTWARE. > - */ > - > -#include <linux/interrupt.h> > -#include <linux/module.h> > -#include <linux/of.h> > -#include <linux/irq.h> > -#include <linux/irqdomain.h> > -#include <linux/irqchip.h> > -#include <soc/nps/common.h> > - > -#define NPS_NR_CPU_IRQS 8 /* number of interrupt lines of NPS400 CPU */ > -#define NPS_TIMER0_IRQ 3 > - > -/* > - * NPS400 core includes an Interrupt Controller (IC) support. > - * All cores can deactivate level irqs at first level control > - * at cores mesh layer called MTM. > - * For devices out side chip e.g. uart, network there is another > - * level called Global Interrupt Manager (GIM). > - * This second level can control level and edge interrupt. > - * > - * NOTE: AUX_IENABLE and CTOP_AUX_IACK are auxiliary registers > - * with private HW copy per CPU. > - */ > - > -static void nps400_irq_mask(struct irq_data *irqd) > -{ > - unsigned int ienb; > - unsigned int irq = irqd_to_hwirq(irqd); > - > - ienb = read_aux_reg(AUX_IENABLE); > - ienb &= ~(1 << irq); > - write_aux_reg(AUX_IENABLE, ienb); > -} > - > -static void nps400_irq_unmask(struct irq_data *irqd) > -{ > - unsigned int ienb; > - unsigned int irq = irqd_to_hwirq(irqd); > - > - ienb = read_aux_reg(AUX_IENABLE); > - ienb |= (1 << irq); > - write_aux_reg(AUX_IENABLE, ienb); > -} > - > -static void nps400_irq_eoi_global(struct irq_data *irqd) > -{ > - unsigned int __maybe_unused irq = irqd_to_hwirq(irqd); > - > - write_aux_reg(CTOP_AUX_IACK, 1 << irq); > - > - /* Don't ack GIC before all device access attempts are done */ > - mb(); > - > - nps_ack_gic(); > -} > - > -static void nps400_irq_ack(struct irq_data *irqd) > -{ > - unsigned int __maybe_unused irq = irqd_to_hwirq(irqd); > - > - write_aux_reg(CTOP_AUX_IACK, 1 << irq); > -} > - > -static struct irq_chip nps400_irq_chip_fasteoi = { > - .name = "NPS400 IC Global", > - .irq_mask = nps400_irq_mask, > - .irq_unmask = nps400_irq_unmask, > - .irq_eoi = nps400_irq_eoi_global, > -}; > - > -static struct irq_chip nps400_irq_chip_percpu = { > - .name = "NPS400 IC", > - .irq_mask = nps400_irq_mask, > - .irq_unmask = nps400_irq_unmask, > - .irq_ack = nps400_irq_ack, > -}; > - > -static int nps400_irq_map(struct irq_domain *d, unsigned int virq, > - irq_hw_number_t hw) > -{ > - switch (hw) { > - case NPS_TIMER0_IRQ: > -#ifdef CONFIG_SMP > - case NPS_IPI_IRQ: > -#endif > - irq_set_percpu_devid(virq); > - irq_set_chip_and_handler(virq, &nps400_irq_chip_percpu, > - handle_percpu_devid_irq); > - break; > - default: > - irq_set_chip_and_handler(virq, &nps400_irq_chip_fasteoi, > - handle_fasteoi_irq); > - break; > - } > - > - return 0; > -} > - > -static const struct irq_domain_ops nps400_irq_ops = { > - .xlate = irq_domain_xlate_onecell, > - .map = nps400_irq_map, > -}; > - > -static int __init nps400_of_init(struct device_node *node, > - struct device_node *parent) > -{ > - struct irq_domain *nps400_root_domain; > - > - if (parent) { > - pr_err("DeviceTree incore ic not a root irq controller\n"); > - return -EINVAL; > - } > - > - nps400_root_domain = irq_domain_add_linear(node, NPS_NR_CPU_IRQS, > - &nps400_irq_ops, NULL); > - > - if (!nps400_root_domain) { > - pr_err("nps400 root irq domain not avail\n"); > - return -ENOMEM; > - } > - > - /* > - * Needed for primary domain lookup to succeed > - * This is a primary irqchip, and can never have a parent > - */ > - irq_set_default_host(nps400_root_domain); > - > -#ifdef CONFIG_SMP > - irq_create_mapping(nps400_root_domain, NPS_IPI_IRQ); > -#endif > - > - return 0; > -} > -IRQCHIP_DECLARE(ezchip_nps400_ic, "ezchip,nps400-ic", nps400_of_init); > _______________________________________________ linux-snps-arc mailing list linux-snps-arc@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-snps-arc