Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp919246ybe; Fri, 6 Sep 2019 09:12:56 -0700 (PDT) X-Google-Smtp-Source: APXvYqw/EniWRozsUkeE72w67sAzeaAiyzw+QcvNbla0BcTEIBGFLyMjF2/ZsKBQSl7C/KvzxsfO X-Received: by 2002:aa7:9293:: with SMTP id j19mr11969059pfa.90.1567786376211; Fri, 06 Sep 2019 09:12:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1567786376; cv=none; d=google.com; s=arc-20160816; b=uL3BeAabV+O+ZRTil05bYCTnvETzCGKM+ap1X5ZmtsZurV4aoTP5k1o1OtHo0zBR/C w2XTQmTBcykUpdvO7Mo3ThX7h2Zc05Jltdy1MBoSy6gyv9OFJ6hVXAX8ZISlporRmnuy MUy6FhqCWU6Dk29Gatopui1AvQpzZBJal8H69d5O6wbQdhjCb9mPLJ+d0AQroBgM4vtO h2yQ1Rl6oLNNv3eyEzqhPm4isZXLU6sz3DP4x2UonGH4LwonJ9yUKyzUc2KflC0Hk+rp ErqVz5zIjjmEwHTM4+j9tg2qqcK/7MQj3MPsge9mhuKwo5F6isB72iNaMiAnslTLMQe5 07jw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=Bm086tEaeQW0fAkHS7TxPl3JZCN3Dupcy4GOd+TlRIY=; b=HSOJ8rIdeqG53s6PoVi+6soDZce8KGo4GUobPAH5BUvHI4uPxPOxNU5fLgTdp4yjSX LeIspe/Ku/FG7WmqNzkjejJ+alX8H2nXIFr8UogF+koWnGI/gt8eLkI/nO1UW54iakdT yw7N9Oy2x6lnETs1qGxGSDPvyv/cwoorF2spy+92OqU8bkI4R3yLBsmYrb73B1mM3yDa h4FYa0eCZ82z7ZdlsHCYWeDyHaJCr9ZKnoG+0CAxwnniTAokZpDvjQGX6bU5nXZthwxe MzmYkf+XNFaVkKZYbM/zz9gl/VcG7BV5c4ec0XTzqCgOwA6n39tCQSWnERnJg7JAmB+V VYjQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b9si5829327pfo.273.2019.09.06.09.12.40; Fri, 06 Sep 2019 09:12:56 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390017AbfIFKrT (ORCPT + 99 others); Fri, 6 Sep 2019 06:47:19 -0400 Received: from inva020.nxp.com ([92.121.34.13]:34920 "EHLO inva020.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726080AbfIFKrS (ORCPT ); Fri, 6 Sep 2019 06:47:18 -0400 Received: from inva020.nxp.com (localhost [127.0.0.1]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id EC6331A0216; Fri, 6 Sep 2019 12:47:15 +0200 (CEST) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id F00A21A0BC3; Fri, 6 Sep 2019 12:47:10 +0200 (CEST) Received: from titan.ap.freescale.net (TITAN.ap.freescale.net [10.192.208.233]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 8E114402FB; Fri, 6 Sep 2019 18:47:04 +0800 (SGT) From: Hui Song To: Shawn Guo , Li Yang , Rob Herring , Mark Rutland , Linus Walleij , Bartosz Golaszewski Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, Song Hui Subject: [PATCH] gpio/mpc8xxx: change irq handler from chained to normal Date: Fri, 6 Sep 2019 18:37:00 +0800 Message-Id: <20190906103700.2034-1-hui.song_1@nxp.com> X-Mailer: git-send-email 2.9.5 X-Virus-Scanned: ClamAV using ClamSMTP Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Song Hui more one gpio controller use share one interrupt, make request interrupt to be shared. Signed-off-by: Laurentiu Tudor Signed-off-by: Alex Marginean Signed-off-by: Song Hui --- drivers/gpio/gpio-mpc8xxx.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/drivers/gpio/gpio-mpc8xxx.c b/drivers/gpio/gpio-mpc8xxx.c index 1a680aa..4006250 100644 --- a/drivers/gpio/gpio-mpc8xxx.c +++ b/drivers/gpio/gpio-mpc8xxx.c @@ -22,6 +22,7 @@ #include #include #include +#include #define MPC8XXX_GPIO_PINS 32 @@ -127,10 +128,9 @@ static int mpc8xxx_gpio_to_irq(struct gpio_chip *gc, unsigned offset) return -ENXIO; } -static void mpc8xxx_gpio_irq_cascade(struct irq_desc *desc) +static irqreturn_t mpc8xxx_gpio_irq_cascade(int irq, void *data) { - struct mpc8xxx_gpio_chip *mpc8xxx_gc = irq_desc_get_handler_data(desc); - struct irq_chip *chip = irq_desc_get_chip(desc); + struct mpc8xxx_gpio_chip *mpc8xxx_gc = (struct mpc8xxx_gpio_chip *)data; struct gpio_chip *gc = &mpc8xxx_gc->gc; unsigned int mask; @@ -139,8 +139,8 @@ static void mpc8xxx_gpio_irq_cascade(struct irq_desc *desc) if (mask) generic_handle_irq(irq_linear_revmap(mpc8xxx_gc->irq, 32 - ffs(mask))); - if (chip->irq_eoi) - chip->irq_eoi(&desc->irq_data); + + return IRQ_HANDLED; } static void mpc8xxx_irq_unmask(struct irq_data *d) @@ -319,6 +319,7 @@ static const struct of_device_id mpc8xxx_gpio_ids[] = { { .compatible = "fsl,mpc5125-gpio", .data = &mpc5125_gpio_devtype, }, { .compatible = "fsl,pq3-gpio", }, { .compatible = "fsl,ls1028a-gpio", .data = &ls1028a_gpio_devtype, }, + { .compatible = "fsl,ls1088a-gpio", .data = &ls1028a_gpio_devtype, }, { .compatible = "fsl,qoriq-gpio", }, {} }; @@ -408,8 +409,14 @@ static int mpc8xxx_probe(struct platform_device *pdev) if (devtype->gpio_dir_in_init) devtype->gpio_dir_in_init(gc); - irq_set_chained_handler_and_data(mpc8xxx_gc->irqn, - mpc8xxx_gpio_irq_cascade, mpc8xxx_gc); + ret = request_irq(mpc8xxx_gc->irqn, mpc8xxx_gpio_irq_cascade, + IRQF_NO_THREAD | IRQF_SHARED, "gpio-cascade", mpc8xxx_gc); + if (ret) { + pr_err("%s: failed to request_irq(%d), ret = %d\n", + np->full_name, mpc8xxx_gc->irqn, ret); + goto err; + } + return 0; err: iounmap(mpc8xxx_gc->regs); -- 2.9.5