Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp662192pxb; Wed, 20 Jan 2021 17:43:51 -0800 (PST) X-Google-Smtp-Source: ABdhPJzgGCPlAOPtyFNALM0DfOLqYNwKyrgnxsQKH+b5EExR/M563iSKJntG5+TXTudODgGdOPuq X-Received: by 2002:a50:d80c:: with SMTP id o12mr8894179edj.338.1611193431766; Wed, 20 Jan 2021 17:43:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611193431; cv=none; d=google.com; s=arc-20160816; b=DCbxlnu+ZF3eZ2qczMD+ZhrVJ5yDRNBgJ++BazXRnV0b7cbQuGtusIJlTxnfTnLkRw UGFfV1gwj/jpf1l1yuFdbAn3dRaMP/dXinf9AVAtlzrt9NR7WvFfBPqkuShdawxTzji/ DMoh7zoN4Oftks3h9BYPAgdSLZufEpOX/pEeV2UqSoncl/7+FHCSe7XHBArMxMYRIQax +RijCFSB0xV2VsX90A+feIlLnHRABXoQto+dMafv1fe2+sX0MGHoH/3lZ2bUMfvc/6Xo gS1FyFZ6OSUCXdHprlMc8rFZQji4j4pORm6Ol1Y6er6+UwCmKr3iqK9eQ3XHPPCnL4JH kMuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version; bh=vLmXTdYNbxxg2Spsrd/9xig/ZJMQuQlp8Rj+c7baHNM=; b=yPwwDtCYodL9fO+NefDE57UxRgBdCE8KAFUPGcWt6UupV0UKIN+24yGE66JZLYQ+qn H9T+MIrMJ+ZPC+Mu3zj4VP4VTP99h/Mz8PegSQRZok5N/A98r9HhYhSv3tTV/qoi1LWV RZdaCGEl80/afM4sWZTEp8vz7PWUsdPBYen4dSQFJWhNR9OfKAJ/a0C9XF3MXjJj60bx osD/iAzUJ/Q9S34fuyaMPUotvyrt7BxLAo1VLmcH5lQlLa1xx5g9TNB8G2TVYt2Arzsu sBw9mUR9ke4R1lQDyMDmpCFCW6dwAnVRlsFrwnZAWbFppxaYfBqNE5ckdhM4Iy6VtEJd woPA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r4si1251019ejj.81.2021.01.20.17.43.28; Wed, 20 Jan 2021 17:43:51 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732009AbhATVy2 convert rfc822-to-8bit (ORCPT + 99 others); Wed, 20 Jan 2021 16:54:28 -0500 Received: from mail-ed1-f53.google.com ([209.85.208.53]:42912 "EHLO mail-ed1-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731038AbhATVZW (ORCPT ); Wed, 20 Jan 2021 16:25:22 -0500 Received: by mail-ed1-f53.google.com with SMTP id g24so11220edw.9 for ; Wed, 20 Jan 2021 13:25:05 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=Z6bm+KeNhOA+Sfjw842s1FnVFMKm9Ys7vBrmxaK8+TQ=; b=byynURv+LUqkdPQpiWSlv1QL5de3EPVbXqX9lhilhG0p3/Hm3K1CZXt8FiatBoyRId ogqXVahcHYki8PiZwPw74HWE8rg0xa5SiIkbHKx/ZZwssREy6UWnu7DyutTb5R4Mycdv PIvnUNs1+PRwmBqgUj3rQp/OEgbOtLNrN6WivTVqrUbTSyjkiULlTBy2M6rIJAtpTOBi QmgHyCk7CTXG829PkRt9F2cIbH4nMG3r3wvsqr7noTixF9GnLj+qmSyI/TOfb8y+6tnv kOLR+/CJVSAevLdapKk4dJfMW20a/WpTLSTVByKpRdhp77DY+nWOos3gEM3Hsp7xB/ts HVTg== X-Gm-Message-State: AOAM530DUFECGrqEoDSeI+ZP9O3MHS8bWc9mipX8TV0nOA0k+X9C4wtm zlY55s2YDoxfUj2AM7iPEGdC0DL5uZ55OcjKAU8= X-Received: by 2002:aa7:d148:: with SMTP id r8mr8716147edo.127.1611177879933; Wed, 20 Jan 2021 13:24:39 -0800 (PST) MIME-Version: 1.0 References: <20210120133008.2421897-1-arnd@kernel.org> <20210120133008.2421897-3-arnd@kernel.org> In-Reply-To: <20210120133008.2421897-3-arnd@kernel.org> From: Barry Song Date: Thu, 21 Jan 2021 10:24:28 +1300 Message-ID: Subject: Re: [PATCH 2/2] irqchip: remove sirfsoc driver To: Arnd Bergmann Cc: linux-arm-kernel@lists.infradead.org, LKML , Marc Zyngier , Thomas Gleixner , Arnd Bergmann Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Arnd Bergmann 于2021年1月21日周四 上午2:30写道: > > From: Arnd Bergmann > > The CSR SiRF prima2/atlas platforms are getting removed, so this driver > is no longer needed. > > Cc: Barry Song > Signed-off-by: Arnd Bergmann Acked-by: Barry Song > --- > drivers/irqchip/Makefile | 1 - > drivers/irqchip/irq-sirfsoc.c | 134 ---------------------------------- > 2 files changed, 135 deletions(-) > delete mode 100644 drivers/irqchip/irq-sirfsoc.c > > diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile > index 084e11774071..37e3556df127 100644 > --- a/drivers/irqchip/Makefile > +++ b/drivers/irqchip/Makefile > @@ -45,7 +45,6 @@ obj-$(CONFIG_I8259) += irq-i8259.o > obj-$(CONFIG_IMGPDC_IRQ) += irq-imgpdc.o > obj-$(CONFIG_IRQ_MIPS_CPU) += irq-mips-cpu.o > obj-$(CONFIG_IXP4XX_IRQ) += irq-ixp4xx.o > -obj-$(CONFIG_SIRF_IRQ) += irq-sirfsoc.o > obj-$(CONFIG_JCORE_AIC) += irq-jcore-aic.o > obj-$(CONFIG_RDA_INTC) += irq-rda-intc.o > obj-$(CONFIG_RENESAS_INTC_IRQPIN) += irq-renesas-intc-irqpin.o > diff --git a/drivers/irqchip/irq-sirfsoc.c b/drivers/irqchip/irq-sirfsoc.c > deleted file mode 100644 > index c86faaa35ca4..000000000000 > --- a/drivers/irqchip/irq-sirfsoc.c > +++ /dev/null > @@ -1,134 +0,0 @@ > -// SPDX-License-Identifier: GPL-2.0-or-later > -/* > - * interrupt controller support for CSR SiRFprimaII > - * > - * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. > - */ > - > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > - > -#define SIRFSOC_INT_RISC_MASK0 0x0018 > -#define SIRFSOC_INT_RISC_MASK1 0x001C > -#define SIRFSOC_INT_RISC_LEVEL0 0x0020 > -#define SIRFSOC_INT_RISC_LEVEL1 0x0024 > -#define SIRFSOC_INIT_IRQ_ID 0x0038 > -#define SIRFSOC_INT_BASE_OFFSET 0x0004 > - > -#define SIRFSOC_NUM_IRQS 64 > -#define SIRFSOC_NUM_BANKS (SIRFSOC_NUM_IRQS / 32) > - > -static struct irq_domain *sirfsoc_irqdomain; > - > -static void __iomem *sirfsoc_irq_get_regbase(void) > -{ > - return (void __iomem __force *)sirfsoc_irqdomain->host_data; > -} > - > -static __init void sirfsoc_alloc_gc(void __iomem *base) > -{ > - unsigned int clr = IRQ_NOREQUEST | IRQ_NOPROBE | IRQ_NOAUTOEN; > - unsigned int set = IRQ_LEVEL; > - struct irq_chip_generic *gc; > - struct irq_chip_type *ct; > - int i; > - > - irq_alloc_domain_generic_chips(sirfsoc_irqdomain, 32, 1, "irq_sirfsoc", > - handle_level_irq, clr, set, > - IRQ_GC_INIT_MASK_CACHE); > - > - for (i = 0; i < SIRFSOC_NUM_BANKS; i++) { > - gc = irq_get_domain_generic_chip(sirfsoc_irqdomain, i * 32); > - gc->reg_base = base + i * SIRFSOC_INT_BASE_OFFSET; > - ct = gc->chip_types; > - ct->chip.irq_mask = irq_gc_mask_clr_bit; > - ct->chip.irq_unmask = irq_gc_mask_set_bit; > - ct->regs.mask = SIRFSOC_INT_RISC_MASK0; > - } > -} > - > -static void __exception_irq_entry sirfsoc_handle_irq(struct pt_regs *regs) > -{ > - void __iomem *base = sirfsoc_irq_get_regbase(); > - u32 irqstat; > - > - irqstat = readl_relaxed(base + SIRFSOC_INIT_IRQ_ID); > - handle_domain_irq(sirfsoc_irqdomain, irqstat & 0xff, regs); > -} > - > -static int __init sirfsoc_irq_init(struct device_node *np, > - struct device_node *parent) > -{ > - void __iomem *base = of_iomap(np, 0); > - if (!base) > - panic("unable to map intc cpu registers\n"); > - > - sirfsoc_irqdomain = irq_domain_add_linear(np, SIRFSOC_NUM_IRQS, > - &irq_generic_chip_ops, base); > - sirfsoc_alloc_gc(base); > - > - writel_relaxed(0, base + SIRFSOC_INT_RISC_LEVEL0); > - writel_relaxed(0, base + SIRFSOC_INT_RISC_LEVEL1); > - > - writel_relaxed(0, base + SIRFSOC_INT_RISC_MASK0); > - writel_relaxed(0, base + SIRFSOC_INT_RISC_MASK1); > - > - set_handle_irq(sirfsoc_handle_irq); > - > - return 0; > -} > -IRQCHIP_DECLARE(sirfsoc_intc, "sirf,prima2-intc", sirfsoc_irq_init); > - > -struct sirfsoc_irq_status { > - u32 mask0; > - u32 mask1; > - u32 level0; > - u32 level1; > -}; > - > -static struct sirfsoc_irq_status sirfsoc_irq_st; > - > -static int sirfsoc_irq_suspend(void) > -{ > - void __iomem *base = sirfsoc_irq_get_regbase(); > - > - sirfsoc_irq_st.mask0 = readl_relaxed(base + SIRFSOC_INT_RISC_MASK0); > - sirfsoc_irq_st.mask1 = readl_relaxed(base + SIRFSOC_INT_RISC_MASK1); > - sirfsoc_irq_st.level0 = readl_relaxed(base + SIRFSOC_INT_RISC_LEVEL0); > - sirfsoc_irq_st.level1 = readl_relaxed(base + SIRFSOC_INT_RISC_LEVEL1); > - > - return 0; > -} > - > -static void sirfsoc_irq_resume(void) > -{ > - void __iomem *base = sirfsoc_irq_get_regbase(); > - > - writel_relaxed(sirfsoc_irq_st.mask0, base + SIRFSOC_INT_RISC_MASK0); > - writel_relaxed(sirfsoc_irq_st.mask1, base + SIRFSOC_INT_RISC_MASK1); > - writel_relaxed(sirfsoc_irq_st.level0, base + SIRFSOC_INT_RISC_LEVEL0); > - writel_relaxed(sirfsoc_irq_st.level1, base + SIRFSOC_INT_RISC_LEVEL1); > -} > - > -static struct syscore_ops sirfsoc_irq_syscore_ops = { > - .suspend = sirfsoc_irq_suspend, > - .resume = sirfsoc_irq_resume, > -}; > - > -static int __init sirfsoc_irq_pm_init(void) > -{ > - if (!sirfsoc_irqdomain) > - return 0; > - > - register_syscore_ops(&sirfsoc_irq_syscore_ops); > - return 0; > -} > -device_initcall(sirfsoc_irq_pm_init); > -- > 2.29.2 >