Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp2919808ybx; Fri, 8 Nov 2019 11:16:37 -0800 (PST) X-Google-Smtp-Source: APXvYqwYZNggOzs6WHpefZ8V6dykzROVrAGIPuoR9mrRW97E9ell+m6CbqSWSid4RWnQoSXrEjyp X-Received: by 2002:aa7:c444:: with SMTP id n4mr10727482edr.3.1573240597366; Fri, 08 Nov 2019 11:16:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573240597; cv=none; d=google.com; s=arc-20160816; b=sZstVx/Ux3L0vdffd+MQDRTXPx/jLUtW2JkvhRjHROw4jxENSF/BnEeTtLW3V4omGG hM7h1l5sY8v6a2V8jdp8bRcw7yW6lRBmUTiov6jOrDb3DWi18bidfVTEyan44tfH8KkT +Y0wwJdk+SrS4n+ZoR1IFs5tUQQ+ufxg8VFgHWWdmeo4Z+Y5fuRZNpz9eZORVysC5y3b WZS+su0Sl58jC6y38599rj2dOmPA5CKClzyzEnDZVMFkNQToHWdzb7tPTK5oZY5oKACN J7eQurV4lNK1xxNOG6pxtBjloNJOvHa/M3zui00av1TGGk3FUNS6n2Qa1yDNTrLWEvlg YjQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=yQc8iBu0aa9FY3Vf9zs4g3IfWbcS+Y2xw9JjgNE2syM=; b=Qrxzg8ieNI93vdlv0z9run3biO4TFHVHsTLxUqhRov1l4iL/SGzOc0VkQj1FURWbQh vDJdT74ZvHylYj3DINcP5CSKsNV1JgFKLcckta+9snC2wWAA8Fd9VYeVpCwBi3IfxLiI 9PUp8H7ljRVuqxlWQeajUf+swYo0MrwPTEC1NXQk2B6CEsiaFkx+pPkGNSS2rRab/QGD UrjyJoPeGYwqRp20d8xAkOXkS7PJjzFYHH3vZNbDwn1HPQ8TOBGfTmCaqj4is/GuJcuR uP0HV57eCCA6ZsQIii7ZAeSyd9/vjd53I8rLlMR2j/VZJrfjZmSeQatKMTOinTNDb7FL 81aw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=mcqWl5fn; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b22si4633967ejv.159.2019.11.08.11.16.13; Fri, 08 Nov 2019 11:16:37 -0800 (PST) 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; dkim=pass header.i=@kernel.org header.s=default header.b=mcqWl5fn; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389852AbfKHTEf (ORCPT + 99 others); Fri, 8 Nov 2019 14:04:35 -0500 Received: from mail.kernel.org ([198.145.29.99]:34540 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391016AbfKHTEd (ORCPT ); Fri, 8 Nov 2019 14:04:33 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 50FD3214DB; Fri, 8 Nov 2019 19:04:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1573239871; bh=E+OCrg1Hgz1vdAv/f74VlJJK7oGTL8UsyW2/kOx4ziE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mcqWl5fnyugNmaBUFDV+UjV6X53+XETueGlpiRr+pK7H8crWNNjqD881tmf7GjRUf 3GrY+VdUb/6NCMxfoLdTq1LL384IYxUEZ/uK46Cugwi/RGMMJLK5Xk8li5CLlrHPFy YseMLSbfWyBjN4mp0698TPvAESjXdDlEgYifsyjA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Federico Ricchiuto , Mika Westerberg , Andy Shevchenko , Sasha Levin Subject: [PATCH 5.3 011/140] pinctrl: intel: Allocate IRQ chip dynamic Date: Fri, 8 Nov 2019 19:48:59 +0100 Message-Id: <20191108174901.907292692@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191108174900.189064908@linuxfoundation.org> References: <20191108174900.189064908@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Andy Shevchenko [ Upstream commit 57ff2df1b952c7934d7b0e1d3a2ec403ec76edec ] Keeping the IRQ chip definition static shares it with multiple instances of the GPIO chip in the system. This is bad and now we get this warning from GPIO library: "detected irqchip that is shared with multiple gpiochips: please fix the driver." Hence, move the IRQ chip definition from being driver static into the struct intel_pinctrl. So a unique IRQ chip is used for each GPIO chip instance. Fixes: ee1a6ca43dba ("pinctrl: intel: Add Intel Broxton pin controller support") Depends-on: 5ff56b015e85 ("pinctrl: intel: Disable GPIO pin interrupts in suspend") Reported-by: Federico Ricchiuto Suggested-by: Mika Westerberg Signed-off-by: Andy Shevchenko Signed-off-by: Mika Westerberg Signed-off-by: Sasha Levin --- drivers/pinctrl/intel/pinctrl-intel.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c index a18d6eefe6726..4323796cbe118 100644 --- a/drivers/pinctrl/intel/pinctrl-intel.c +++ b/drivers/pinctrl/intel/pinctrl-intel.c @@ -96,6 +96,7 @@ struct intel_pinctrl_context { * @pctldesc: Pin controller description * @pctldev: Pointer to the pin controller device * @chip: GPIO chip in this pin controller + * @irqchip: IRQ chip in this pin controller * @soc: SoC/PCH specific pin configuration data * @communities: All communities in this pin controller * @ncommunities: Number of communities in this pin controller @@ -108,6 +109,7 @@ struct intel_pinctrl { struct pinctrl_desc pctldesc; struct pinctrl_dev *pctldev; struct gpio_chip chip; + struct irq_chip irqchip; const struct intel_pinctrl_soc_data *soc; struct intel_community *communities; size_t ncommunities; @@ -1081,16 +1083,6 @@ static irqreturn_t intel_gpio_irq(int irq, void *data) return ret; } -static struct irq_chip intel_gpio_irqchip = { - .name = "intel-gpio", - .irq_ack = intel_gpio_irq_ack, - .irq_mask = intel_gpio_irq_mask, - .irq_unmask = intel_gpio_irq_unmask, - .irq_set_type = intel_gpio_irq_type, - .irq_set_wake = intel_gpio_irq_wake, - .flags = IRQCHIP_MASK_ON_SUSPEND, -}; - static int intel_gpio_add_pin_ranges(struct intel_pinctrl *pctrl, const struct intel_community *community) { @@ -1140,12 +1132,22 @@ static int intel_gpio_probe(struct intel_pinctrl *pctrl, int irq) pctrl->chip = intel_gpio_chip; + /* Setup GPIO chip */ pctrl->chip.ngpio = intel_gpio_ngpio(pctrl); pctrl->chip.label = dev_name(pctrl->dev); pctrl->chip.parent = pctrl->dev; pctrl->chip.base = -1; pctrl->irq = irq; + /* Setup IRQ chip */ + pctrl->irqchip.name = dev_name(pctrl->dev); + pctrl->irqchip.irq_ack = intel_gpio_irq_ack; + pctrl->irqchip.irq_mask = intel_gpio_irq_mask; + pctrl->irqchip.irq_unmask = intel_gpio_irq_unmask; + pctrl->irqchip.irq_set_type = intel_gpio_irq_type; + pctrl->irqchip.irq_set_wake = intel_gpio_irq_wake; + pctrl->irqchip.flags = IRQCHIP_MASK_ON_SUSPEND; + ret = devm_gpiochip_add_data(pctrl->dev, &pctrl->chip, pctrl); if (ret) { dev_err(pctrl->dev, "failed to register gpiochip\n"); @@ -1175,15 +1177,14 @@ static int intel_gpio_probe(struct intel_pinctrl *pctrl, int irq) return ret; } - ret = gpiochip_irqchip_add(&pctrl->chip, &intel_gpio_irqchip, 0, + ret = gpiochip_irqchip_add(&pctrl->chip, &pctrl->irqchip, 0, handle_bad_irq, IRQ_TYPE_NONE); if (ret) { dev_err(pctrl->dev, "failed to add irqchip\n"); return ret; } - gpiochip_set_chained_irqchip(&pctrl->chip, &intel_gpio_irqchip, irq, - NULL); + gpiochip_set_chained_irqchip(&pctrl->chip, &pctrl->irqchip, irq, NULL); return 0; } -- 2.20.1