From patchwork Tue May 19 13:56:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Daniel_Gonz=C3=A1lez_Cabanelas?= X-Patchwork-Id: 1293427 X-Patchwork-Delegate: noltari@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.openwrt.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20170209 header.b=H73qxWZn; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=XtIayLuL; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 49RHXW4nDJz9sT4 for ; Tue, 19 May 2020 23:58:19 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Subject:MIME-Version:Message-ID:Date:To :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=FER23OmYZ4KKRXha4wFc7zIOXD3r+N+ocabcSZ7rdFg=; b=H73qxWZnx+aawT JiAP4nORSxNqiY6wKik5EqkT46Ys/udJXmU7Kn1/5WEGZB4k8dJFl2TXHEO7Af1kmrTQTrWP7NfJ0 1BKb9VqVpFQJF1jTFawDdas6g4kgPfQTSFNYfwpg0y2DZsov183SDmUffIo9F2lR2KGvi6vYllLKM zGM5UlBFAPARRXwpMqd9pg7RV7TvHvlNfBHCvu/1v2StW0pddkYuQlao66luOM48oGHsQy9yY48J3 UP1uHBnFPWF9w/b/U8usg8uh9mPzEfqjqDhJXoYJvGREDGyfgmVbvun4mIMBrMFcSck7+asxHSDDP u6eobiGlcThyyHulogQg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jb2l6-0002SD-D3; Tue, 19 May 2020 13:58:16 +0000 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jb2l4-0002Rr-5O for openwrt-devel@lists.openwrt.org; Tue, 19 May 2020 13:58:15 +0000 Received: by mail-wr1-x443.google.com with SMTP id i15so15980364wrx.10 for ; Tue, 19 May 2020 06:58:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=cLMrimpXskOCR75KEmxZ/Ujrpho2BbH32aTqUYiYxPM=; b=XtIayLuLzyxwQ+javOsN+zlHzNHTWupHWMXAhTu8zv0XfsxF2elJDIy8YjVSkiObr2 0pJn5Zw7GoFyBmDRAjrmKBXMKV+ED3QJWwyovX+sotiR2Xn/Bt0i+MTv3bkh2GfiSK0O lHEcIQKI2dRJysIg13sUsjTyRxMvYAYQJ/0/6hzSqWVtEWqn4ke9fFKrMq6qesZTLOoR 9DmD/7V517f0eOkwVMrPR49ydPWMq8S9vfy4rTe+C+T9rtVIBAzWjQbbFQh5Gn3C26X3 6Ys1Y1ydc3ds1ekJ8b9wUw9MD5UL7iCZxnhw1AwONGG52njCbEJrGa0Oe7ZT+LgBf2d7 qtmA== 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=cLMrimpXskOCR75KEmxZ/Ujrpho2BbH32aTqUYiYxPM=; b=PjO5BVwDDzz374XVIKnyc531Y3m2XVyO69DOtLZPoRJDOiNpBHkfke+dXYmt0gOogb U19BoRVl39aoZZkoWmyMMYQLXJahQ9zDQgr3tTHxdmjMWmgPq9zGOfxg6YbRxAoPyTbK f/Ge91HxQla7Q5jewGs+I+7lfG2oFg/eNxqIXoht1ej+YO3ejBjEAXaDalhtoNvDtOjM kiEp6hwJFlho3j+7TnQQZoHJQcPUTAQBhTpp3uhxKh54iXs8NNDwXJwYBpww28FA8aW1 1U5Iz/MqfF45J690l9v+G+4IrC+U944LBowkDWesVaiCDSyEFdZp4i8z7CPfg4AtT00X Kkzg== X-Gm-Message-State: AOAM530UcBMsMVoI0YSeum8N3PoU9QgjH2dDfn+LWlIT0Nl/jmnjR/zg 8qT4nQedPjT2OUk1oL0Cq7hdv2ccU6Q= X-Google-Smtp-Source: ABdhPJymvZJQHJJlgDGsyMYDR2RifPPpHLLItFvZdQI23XBFYfzs2yJJgTr9TOD/KhMQG+pPOWozSA== X-Received: by 2002:a5d:68c7:: with SMTP id p7mr27786915wrw.29.1589896691924; Tue, 19 May 2020 06:58:11 -0700 (PDT) Received: from tool.localnet ([213.177.197.81]) by smtp.googlemail.com with ESMTPSA id m82sm4272257wmf.3.2020.05.19.06.58.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 May 2020 06:58:11 -0700 (PDT) From: Daniel =?iso-8859-1?q?Gonz=E1lez?= Cabanelas To: openwrt-devel@lists.openwrt.org Date: Tue, 19 May 2020 15:56:29 +0200 Message-ID: <4504793.NA6h3OzpFv@tool> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200519_065814_219840_A187C00F X-CRM114-Status: GOOD ( 12.36 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2a00:1450:4864:20:0:0:0:443 listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [dgcbueu[at]gmail.com] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature Subject: [OpenWrt-Devel] [PATCH v2] bcm63xx: pinctrl: fix BCM6348 groups X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: noltari@gmail.com, jonas.gorski@gmail.com Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org The current driver has some troubles: - Some groupings are wrong. - The pinctrl group0 owns pins never used (at least in Openwrt) for any pinmux. The driver hijacks all the pins on the group avoiding any other use, spite they're free. I.e. for buttons, causing this kernel error: [ 4.735928] gpio-keys-polled keys: unable to claim gpio 479, err=-22 [ 4.742642] gpio-keys-polled: probe of keys failed with error -22 - Minor errors about groupings on the documentation - Missing "diag" grouping in dtsi - Wrong groupings in dtsi Fix it by setting the correct groups. And relax the pin capturing, letting the gpios belonging to any group to be used for other purposes like buttons. This was the behavior with stock firmwares and old OpenWrt versions which never caused any trouble. Signed-off-by: Daniel González Cabanelas --- changes in v2: - Use a different approach since the group0 might own pins for the diag function (spite this is never used). Just don't hijack all the pins by the pinctrl driver (they aren't 8 members group perfect). - Fix bad pin groupings in several driver related files. target/linux/bcm63xx/dts/bcm6348.dtsi | 9 ++++-- ...d-BCM6348-pincontroller-binding-docu.patch | 6 ++-- ...-add-a-pincontrol-driver-for-BCM6348.patch | 29 +++---------------- 3 files changed, 14 insertions(+), 30 deletions(-) diff --git a/target/linux/bcm63xx/dts/bcm6348.dtsi b/target/linux/bcm63xx/dts/bcm6348.dtsi index f3e17be533..951a3fc4df 100644 --- a/target/linux/bcm63xx/dts/bcm6348.dtsi +++ b/target/linux/bcm63xx/dts/bcm6348.dtsi @@ -92,7 +92,7 @@ }; pinctrl_mii_snoop: mii_snoop { - function = "ext_ephy"; + function = "mii_snoop"; groups = "group1", "group4"; }; @@ -123,7 +123,12 @@ pinctrl_utopia: utopia { function = "utopia"; - groups = "group0", "group1", "group3"; + groups = "group1", "group3", "group4"; + }; + + pinctrl_diag: diag { + function = "diag"; + groups = "group0", "group1", "group2", "group3", "group4"; }; }; diff --git a/target/linux/bcm63xx/patches-5.4/133-Documentation-add-BCM6348-pincontroller-binding-docu.patch b/target/linux/bcm63xx/patches-5.4/133-Documentation-add-BCM6348-pincontroller-binding-docu.patch index 6bac90373c..800f0540cc 100644 --- a/target/linux/bcm63xx/patches-5.4/133-Documentation-add-BCM6348-pincontroller-binding-docu.patch +++ b/target/linux/bcm63xx/patches-5.4/133-Documentation-add-BCM6348-pincontroller-binding-docu.patch @@ -41,9 +41,9 @@ Signed-off-by: Jonas Gorski + +name pins functions +----------------------------------------------------------- -+group0 32-36 ext_mii, utopia, diag ++group0 32-36 ext_mii, diag +group1 22-31 ext_ephy, mii_snoop, mii_pccard, + spi_master_uart, utopia, diag +group2 16-21 pci, diag -+group3 8-15 ext_mii, utopia -+group4 0-7 ext_ephy, mii_snoop, legacy_led, diag ++group3 8-15 ext_mii, utopia, diag ++group4 0-7 ext_ephy, mii_snoop, legacy_led, utopia, diag diff --git a/target/linux/bcm63xx/patches-5.4/134-pinctrl-add-a-pincontrol-driver-for-BCM6348.patch b/target/linux/bcm63xx/patches-5.4/134-pinctrl-add-a-pincontrol-driver-for-BCM6348.patch index b48723c1b3..3b613fdca5 100644 --- a/target/linux/bcm63xx/patches-5.4/134-pinctrl-add-a-pincontrol-driver-for-BCM6348.patch +++ b/target/linux/bcm63xx/patches-5.4/134-pinctrl-add-a-pincontrol-driver-for-BCM6348.patch @@ -37,7 +37,7 @@ Signed-off-by: Jonas Gorski +obj-$(CONFIG_PINCTRL_BCM6348) += pinctrl-bcm6348.o --- /dev/null +++ b/drivers/pinctrl/bcm63xx/pinctrl-bcm6348.c -@@ -0,0 +1,391 @@ +@@ -0,0 +1,370 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive @@ -225,15 +225,16 @@ Signed-off-by: Jonas Gorski +}; + +static const char * const utopia_groups[] = { -+ "group0", + "group1", + "group3", ++ "group4", +}; + +static const char * const diag_groups[] = { + "group0", + "group1", + "group2", ++ "group3", + "group4", +}; + @@ -335,27 +336,6 @@ Signed-off-by: Jonas Gorski + return 0; +} + -+static int bcm6348_gpio_request_enable(struct pinctrl_dev *pctldev, -+ struct pinctrl_gpio_range *range, -+ unsigned offset) -+{ -+ struct bcm6348_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); -+ struct pin_desc *desc; -+ u32 mask; -+ -+ /* don't reconfigure if already muxed */ -+ desc = pin_desc_get(pctldev, offset); -+ if (desc->mux_usecount) -+ return 0; -+ -+ mask = GROUP_MASK(offset); -+ -+ /* disable all functions using this pin */ -+ bcm6348_rmw_mux(pctl, mask, 0); -+ -+ return 0; -+} -+ +static struct pinctrl_ops bcm6348_pctl_ops = { + .get_groups_count = bcm6348_pinctrl_get_group_count, + .get_group_name = bcm6348_pinctrl_get_group_name, @@ -371,8 +351,7 @@ Signed-off-by: Jonas Gorski + .get_function_name = bcm6348_pinctrl_get_func_name, + .get_function_groups = bcm6348_pinctrl_get_groups, + .set_mux = bcm6348_pinctrl_set_mux, -+ .gpio_request_enable = bcm6348_gpio_request_enable, -+ .strict = true, ++ .strict = false, +}; + +static int bcm6348_pinctrl_probe(struct platform_device *pdev)