From patchwork Tue Mar 9 14:20:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linus Walleij X-Patchwork-Id: 395996 Delivered-To: patch@linaro.org Received: by 2002:a02:8562:0:0:0:0:0 with SMTP id g89csp2624601jai; Tue, 9 Mar 2021 06:20:52 -0800 (PST) X-Google-Smtp-Source: ABdhPJwZB7Xnjl+F3vi840K4cAaxvm1UHCsEVWBle8N6HCdgMj5tzOQvG7zCryF9T5VGNn7Ya4wZ X-Received: by 2002:aa7:c345:: with SMTP id j5mr4264116edr.338.1615299651849; Tue, 09 Mar 2021 06:20:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615299651; cv=none; d=google.com; s=arc-20160816; b=NQnPMS5RgvdHgnCtnSYfvII6PafHMI2vkD9T1GbiPVmEi7QdgM0jqfijmeHJEzS+Eu 285zVGmrMuqOmaLvwWGb3tN1nT1zrGKQ3Y3XHzhNTkqzRuv7+3CZsU5d8VUQTjLTKQqU gTYNth+w+pEDUqBoUMIZCUHikPfjMGRlpFvFGWputLM/PpAIqam8gQy7fX2vAo+q5isY nWlii2Sh1R9MMHaxBQaLn9m4KOd6ZehzKxFSH/YqfYfE3s61mBON4b9rSFDLh7foFZOz NiP+b3czYeNoh+1K+HZppMNiNCcXnmMv5Guf87hTHDVowqJ7mDrmME2Yb++JER2IuEU8 f5nw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=AJyZdrYMJo+scwkiupHH0j/771HxMLWlOWm0nrPtSXk=; b=dG29k1zpuX8oRMIIy5DlwfXwyku3x3KqTMPuhWM6NxUH3RCzn3EqZVDz8APYpPb5D1 NeWkXOQgWpUvg2HETw7+xP1NCW0hUImzRYf9EcV0IzxySZavUdUBEeMEkipTfw5nuUoU LDLuwwrMWBmCTlwY42hBLvYH9Mz/aGIir/s7Fo6KU10acn7bJGzbd3YprNHK5Lf1nQpc 7QOcmWhJie3J1nthgeCVFiGi1P6C/sIIU4DJ0VRnnNioyvLF/iXJYgUBqrSiNjE51a/h rBRscMm0BrY2WcXUxktupxxWlq6OlrmGiAJMv0hIbjlnimA5OhtjTWn7/L9EQCYUTobQ 7qDQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Qf5TOSf+; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id hp3si1506940ejc.253.2021.03.09.06.20.51; Tue, 09 Mar 2021 06:20:51 -0800 (PST) Received-SPF: pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Qf5TOSf+; spf=pass (google.com: domain of devicetree-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=devicetree-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230081AbhCIOUS (ORCPT + 6 others); Tue, 9 Mar 2021 09:20:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56416 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230325AbhCIOUG (ORCPT ); Tue, 9 Mar 2021 09:20:06 -0500 Received: from mail-lf1-x131.google.com (mail-lf1-x131.google.com [IPv6:2a00:1450:4864:20::131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A5319C06174A for ; Tue, 9 Mar 2021 06:20:05 -0800 (PST) Received: by mail-lf1-x131.google.com with SMTP id x4so20617967lfu.7 for ; Tue, 09 Mar 2021 06:20:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=AJyZdrYMJo+scwkiupHH0j/771HxMLWlOWm0nrPtSXk=; b=Qf5TOSf+bwAE3pDY6aNa1r0d+rcL6PPADVoY+Kq3ENDNoUJDBr2oLd4H336hpJsf5s m59+mNbmEFUU7AMq5+VXNC/YmjDz94QkcoEGjGfuoH13YXMS4QLFh3s+wOIjmu51RdsP Gne85erp2BuVB5VaF+yGm1jqBHfRVoA23Q5GTZe1lNWodHTKTHFLNIF6J+L2exsGEvZ3 EPt19oMXU9lX7yxw1aumG2PRhmGInOvLB6K5oYdMskAj8RUBrRbFXD+jFOwKruqDzoZh ePfRjhcr0f7+JHc9KfzOFpgNYwW++JWV1gUUP1c4tjylLOzL1VnxpBC5yEMfSbYYywWJ pqBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=AJyZdrYMJo+scwkiupHH0j/771HxMLWlOWm0nrPtSXk=; b=as1UPdQq/KYLTk9BB78pEuWh9YyFe6rL3Ktdh96MODY9Ea2mXzT8/DK+0e7q2RtFXi 43b8ts2ZOYtDVk9Ex4oarNCvCCNTKb8PD3btiPzSAd5pyX8UxlqKRL1Y6BeEuZrA8La9 WzhXHIOpjk2OwRcGOlpezszKehOD8FVt/KrE8sw/S0YaPnCX3MxAPWvd0Bn9Z5Diygje fB0tinu8kCd4jsIWuxJWZ72RvHQSj7Fsf/53G2qBHaW637bDocAXS077ivCz2tBBP940 NkNI7QCOF5+nLN8UQCPfh4hXFdywpL2nNMPjn9qUXqRJ9rUb3Q9+NKs5Ke3qdhWxkVaD fCtw== X-Gm-Message-State: AOAM532AKkHoSlxvIlIEQ81p70DoDIoxZot4oKfi1tD5zn+1nc/HQxbZ S4YOnBapkrAS01zK+tUtf+c+3w== X-Received: by 2002:a05:6512:348c:: with SMTP id v12mr17350197lfr.271.1615299604042; Tue, 09 Mar 2021 06:20:04 -0800 (PST) Received: from localhost.localdomain (c-d7cb225c.014-348-6c756e10.bbcust.telenor.se. [92.34.203.215]) by smtp.gmail.com with ESMTPSA id e11sm1272457ljj.59.2021.03.09.06.20.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Mar 2021 06:20:03 -0800 (PST) From: Linus Walleij To: Alexander Shiyan , linux-arm-kernel@lists.infradead.org Cc: Linus Walleij , devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, Rob Herring Subject: [PATCH] ARM/gpio/dt-bindings: Clean out gpio alias from CLPS711X Date: Tue, 9 Mar 2021 15:20:00 +0100 Message-Id: <20210309142000.3034451-1-linus.walleij@linaro.org> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org This removes the use of GPIO alias from the CLPS711X GPIO driver. This driver only use it to add quirks to two GPIO blocks for which we can reuse the standard property "ngpios" and define a new Cirrus quirk to do it properly and get rid of the alias. The patch changes the driver, the one DTS file and the bindings in one go: my apologies but this is a lockstep solution to avoid any unclarities or inbetween states. Old device trees with aliases are supported but will produce a warning in dmesg and new properties will take precedence. Cc: devicetree@vger.kernel.org Cc: linux-gpio@vger.kernel.org Cc: Rob Herring Link: https://lore.kernel.org/linux-gpio/CACRpkda8+Lvz+c=ohXsEDkNSQ63hPo613P4p_90fvKyC_kQ_GA@mail.gmail.com/T/#t Signed-off-by: Linus Walleij --- This is a result of a discussion with Rob about whether we can get rid of GPIO aliases. I think we can at least get rid of this one. --- .../bindings/gpio/gpio-clps711x.txt | 10 +++--- arch/arm/boot/dts/ep7209.dtsi | 8 ++--- drivers/gpio/gpio-clps711x.c | 36 +++++++++---------- 3 files changed, 26 insertions(+), 28 deletions(-) -- 2.29.2 diff --git a/Documentation/devicetree/bindings/gpio/gpio-clps711x.txt b/Documentation/devicetree/bindings/gpio/gpio-clps711x.txt index 0a304ad29d81..c1ff20107607 100644 --- a/Documentation/devicetree/bindings/gpio/gpio-clps711x.txt +++ b/Documentation/devicetree/bindings/gpio/gpio-clps711x.txt @@ -11,15 +11,13 @@ Required properties: 0 = active high 1 = active low -Note: Each GPIO port should have an alias correctly numbered in "aliases" -node. +Optional properties: +- cirrus,inverted-polarity: The polarity of the GPIO lines is + inverted in hardware. +- ngpios: Number of available GPIO lines 0..n-1, see gpio.txt Example: -aliases { - gpio0 = &porta; -}; - porta: gpio@80000000 { compatible = "cirrus,ep7312-gpio","cirrus,ep7209-gpio"; reg = <0x80000000 0x1>, <0x80000040 0x1>; diff --git a/arch/arm/boot/dts/ep7209.dtsi b/arch/arm/boot/dts/ep7209.dtsi index 365931f8b48d..7d0f04959fdd 100644 --- a/arch/arm/boot/dts/ep7209.dtsi +++ b/arch/arm/boot/dts/ep7209.dtsi @@ -11,10 +11,6 @@ / { compatible = "cirrus,ep7209"; aliases { - gpio0 = &porta; - gpio1 = &portb; - gpio3 = &portd; - gpio4 = &porte; serial0 = &uart1; serial1 = &uart2; spi0 = &spi; @@ -72,6 +68,8 @@ portd: gpio@80000003 { reg = <0x80000003 0x1 0x80000043 0x1>; gpio-controller; #gpio-cells = <2>; + /* This bank have all lines polarity inverted */ + cirrus,inverted-polarity; }; porte: gpio@80000083 { @@ -79,6 +77,8 @@ porte: gpio@80000083 { reg = <0x80000083 0x1 0x800000c3 0x1>; gpio-controller; #gpio-cells = <2>; + /* Only 3 GPIOs available on this bank */ + ngpios = <3>; }; syscon1: syscon@80000100 { diff --git a/drivers/gpio/gpio-clps711x.c b/drivers/gpio/gpio-clps711x.c index 75f6f8d4323e..d2a20dc8f5d9 100644 --- a/drivers/gpio/gpio-clps711x.c +++ b/drivers/gpio/gpio-clps711x.c @@ -16,14 +16,11 @@ static int clps711x_gpio_probe(struct platform_device *pdev) void __iomem *dat, *dir; struct gpio_chip *gc; int err, id; + u32 ngpios; if (!np) return -ENODEV; - id = of_alias_get_id(np, "gpio"); - if ((id < 0) || (id > 4)) - return -ENODEV; - gc = devm_kzalloc(&pdev->dev, sizeof(*gc), GFP_KERNEL); if (!gc) return -ENOMEM; @@ -36,29 +33,32 @@ static int clps711x_gpio_probe(struct platform_device *pdev) if (IS_ERR(dir)) return PTR_ERR(dir); - switch (id) { - case 3: + /* This ID will be negative if there is no alias node */ + id = of_alias_get_id(np, "gpio"); + + if (id >= 0) + dev_info(&pdev->dev, + "DT is using deprecated alias, please remove this and " + "replace with proper node attributes\n"); + + if (of_property_read_bool(np, "cirrus,inverted-polarity") || + id == 3) /* PORTD is inverted logic for direction register */ err = bgpio_init(gc, &pdev->dev, 1, dat, NULL, NULL, NULL, dir, 0); - break; - default: + else err = bgpio_init(gc, &pdev->dev, 1, dat, NULL, NULL, dir, NULL, 0); - break; - } - if (err) return err; - switch (id) { - case 4: - /* PORTE is 3 lines only */ + if (id == 4) + /* This is just for compatibility with older device trees */ gc->ngpio = 3; - break; - default: - break; - } + + if (!of_property_read_u32(np, "ngpios", &ngpios)) + /* PORTE is 3 lines only */ + gc->ngpio = ngpios; gc->base = -1; gc->owner = THIS_MODULE;