Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755393AbbGDFUm (ORCPT ); Sat, 4 Jul 2015 01:20:42 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:40562 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751856AbbGDFUP (ORCPT ); Sat, 4 Jul 2015 01:20:15 -0400 From: Jisheng Zhang To: , CC: , , Jisheng Zhang Subject: [PATCH v2 1/2] irqchip: dw-apb-ictl: add private data structure Date: Sat, 4 Jul 2015 13:19:29 +0800 Message-ID: <1435987170-3962-2-git-send-email-jszhang@marvell.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1435987170-3962-1-git-send-email-jszhang@marvell.com> References: <1435987170-3962-1-git-send-email-jszhang@marvell.com> MIME-Version: 1.0 Content-Type: text/plain X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2015-07-04_02:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 kscore.is_bulkscore=0 kscore.compositescore=1 compositescore=0.9 suspectscore=2 malwarescore=0 phishscore=0 bulkscore=0 kscore.is_spamscore=0 rbsscore=0.9 spamscore=0 urlsuspectscore=0.9 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1506180000 definitions=main-1507040095 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3003 Lines: 105 This patch adds struct dw_apb_ictl_priv definition, now it only has one member: the irq domain. Then make the generic irq chip gc->private to point to the struct. This is to prepare for the next patch which will implement irq_set_affinity. Signed-off-by: Jisheng Zhang --- drivers/irqchip/irq-dw-apb-ictl.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/drivers/irqchip/irq-dw-apb-ictl.c b/drivers/irqchip/irq-dw-apb-ictl.c index 53bb732..8bef7f7 100644 --- a/drivers/irqchip/irq-dw-apb-ictl.c +++ b/drivers/irqchip/irq-dw-apb-ictl.c @@ -16,6 +16,7 @@ #include #include #include +#include #include "irqchip.h" @@ -26,11 +27,16 @@ #define APB_INT_FINALSTATUS_L 0x30 #define APB_INT_FINALSTATUS_H 0x34 +struct dw_apb_ictl_priv { + struct irq_domain *domain; +}; + static void dw_apb_ictl_handler(unsigned int irq, struct irq_desc *desc) { struct irq_chip *chip = irq_get_chip(irq); struct irq_chip_generic *gc = irq_get_handler_data(irq); - struct irq_domain *d = gc->private; + struct dw_apb_ictl_priv *priv = gc->private; + struct irq_domain *d = priv->domain; u32 stat; int n; @@ -71,27 +77,34 @@ static int __init dw_apb_ictl_init(struct device_node *np, unsigned int clr = IRQ_NOREQUEST | IRQ_NOPROBE | IRQ_NOAUTOEN; struct resource r; struct irq_domain *domain; + struct dw_apb_ictl_priv *priv; struct irq_chip_generic *gc; void __iomem *iobase; int ret, nrirqs, irq; u32 reg; + priv = kzalloc(sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + /* Map the parent interrupt for the chained handler */ irq = irq_of_parse_and_map(np, 0); if (irq <= 0) { pr_err("%s: unable to parse irq\n", np->full_name); - return -EINVAL; + ret = -EINVAL; + goto err_free; } ret = of_address_to_resource(np, 0, &r); if (ret) { pr_err("%s: unable to get resource\n", np->full_name); - return ret; + goto err_free; } if (!request_mem_region(r.start, resource_size(&r), np->full_name)) { pr_err("%s: unable to request mem region\n", np->full_name); - return -ENOMEM; + ret = -ENOMEM; + goto err_free; } iobase = ioremap(r.start, resource_size(&r)); @@ -138,7 +151,8 @@ static int __init dw_apb_ictl_init(struct device_node *np, } gc = irq_get_domain_generic_chip(domain, 0); - gc->private = domain; + priv->domain = domain; + gc->private = priv; gc->reg_base = iobase; gc->chip_types[0].regs.mask = APB_INT_MASK_L; @@ -164,6 +178,8 @@ err_unmap: iounmap(iobase); err_release: release_mem_region(r.start, resource_size(&r)); +err_free: + kfree(priv); return ret; } IRQCHIP_DECLARE(dw_apb_ictl, -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/