bcm53xx: backport patch fixing pinctrl driver
This switches pinctrl driver to use the old & good DT binding. There is no more need to adjust upstream DTS file. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
This commit is contained in:
		@@ -0,0 +1,106 @@
 | 
			
		||||
From 6dba4bdfd7a30e77b848a45404b224588bf989e5 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
 | 
			
		||||
Date: Fri, 8 Oct 2021 22:59:38 +0200
 | 
			
		||||
Subject: [PATCH] Revert "pinctrl: bcm: ns: support updated DT binding as
 | 
			
		||||
 syscon subnode"
 | 
			
		||||
MIME-Version: 1.0
 | 
			
		||||
Content-Type: text/plain; charset=UTF-8
 | 
			
		||||
Content-Transfer-Encoding: 8bit
 | 
			
		||||
 | 
			
		||||
This reverts commit a49d784d5a8272d0f63c448fe8dc69e589db006e.
 | 
			
		||||
 | 
			
		||||
The updated binding was wrong / invalid and has been reverted. There
 | 
			
		||||
isn't any upstream kernel DTS using it and Broadcom isn't known to use
 | 
			
		||||
it neither. There is close to zero chance this will cause regression for
 | 
			
		||||
anyone.
 | 
			
		||||
 | 
			
		||||
Actually in-kernel bcm5301x.dtsi still uses the old good binding and so
 | 
			
		||||
it's broken since the driver update. This revert fixes it.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
 | 
			
		||||
Link: https://lore.kernel.org/r/20211008205938.29925-3-zajec5@gmail.com
 | 
			
		||||
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
 | 
			
		||||
---
 | 
			
		||||
 drivers/pinctrl/bcm/pinctrl-ns.c | 29 ++++++++++-------------------
 | 
			
		||||
 1 file changed, 10 insertions(+), 19 deletions(-)
 | 
			
		||||
 | 
			
		||||
--- a/drivers/pinctrl/bcm/pinctrl-ns.c
 | 
			
		||||
+++ b/drivers/pinctrl/bcm/pinctrl-ns.c
 | 
			
		||||
@@ -5,7 +5,6 @@
 | 
			
		||||
 
 | 
			
		||||
 #include <linux/err.h>
 | 
			
		||||
 #include <linux/io.h>
 | 
			
		||||
-#include <linux/mfd/syscon.h>
 | 
			
		||||
 #include <linux/module.h>
 | 
			
		||||
 #include <linux/of.h>
 | 
			
		||||
 #include <linux/of_device.h>
 | 
			
		||||
@@ -13,7 +12,6 @@
 | 
			
		||||
 #include <linux/pinctrl/pinctrl.h>
 | 
			
		||||
 #include <linux/pinctrl/pinmux.h>
 | 
			
		||||
 #include <linux/platform_device.h>
 | 
			
		||||
-#include <linux/regmap.h>
 | 
			
		||||
 #include <linux/slab.h>
 | 
			
		||||
 
 | 
			
		||||
 #define FLAG_BCM4708		BIT(1)
 | 
			
		||||
@@ -24,8 +22,7 @@ struct ns_pinctrl {
 | 
			
		||||
 	struct device *dev;
 | 
			
		||||
 	unsigned int chipset_flag;
 | 
			
		||||
 	struct pinctrl_dev *pctldev;
 | 
			
		||||
-	struct regmap *regmap;
 | 
			
		||||
-	u32 offset;
 | 
			
		||||
+	void __iomem *base;
 | 
			
		||||
 
 | 
			
		||||
 	struct pinctrl_desc pctldesc;
 | 
			
		||||
 	struct ns_pinctrl_group *groups;
 | 
			
		||||
@@ -232,9 +229,9 @@ static int ns_pinctrl_set_mux(struct pin
 | 
			
		||||
 		unset |= BIT(pin_number);
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
-	regmap_read(ns_pinctrl->regmap, ns_pinctrl->offset, &tmp);
 | 
			
		||||
+	tmp = readl(ns_pinctrl->base);
 | 
			
		||||
 	tmp &= ~unset;
 | 
			
		||||
-	regmap_write(ns_pinctrl->regmap, ns_pinctrl->offset, tmp);
 | 
			
		||||
+	writel(tmp, ns_pinctrl->base);
 | 
			
		||||
 
 | 
			
		||||
 	return 0;
 | 
			
		||||
 }
 | 
			
		||||
@@ -266,13 +263,13 @@ static const struct of_device_id ns_pinc
 | 
			
		||||
 static int ns_pinctrl_probe(struct platform_device *pdev)
 | 
			
		||||
 {
 | 
			
		||||
 	struct device *dev = &pdev->dev;
 | 
			
		||||
-	struct device_node *np = dev->of_node;
 | 
			
		||||
 	const struct of_device_id *of_id;
 | 
			
		||||
 	struct ns_pinctrl *ns_pinctrl;
 | 
			
		||||
 	struct pinctrl_desc *pctldesc;
 | 
			
		||||
 	struct pinctrl_pin_desc *pin;
 | 
			
		||||
 	struct ns_pinctrl_group *group;
 | 
			
		||||
 	struct ns_pinctrl_function *function;
 | 
			
		||||
+	struct resource *res;
 | 
			
		||||
 	int i;
 | 
			
		||||
 
 | 
			
		||||
 	ns_pinctrl = devm_kzalloc(dev, sizeof(*ns_pinctrl), GFP_KERNEL);
 | 
			
		||||
@@ -290,18 +287,12 @@ static int ns_pinctrl_probe(struct platf
 | 
			
		||||
 		return -EINVAL;
 | 
			
		||||
 	ns_pinctrl->chipset_flag = (uintptr_t)of_id->data;
 | 
			
		||||
 
 | 
			
		||||
-	ns_pinctrl->regmap = syscon_node_to_regmap(of_get_parent(np));
 | 
			
		||||
-	if (IS_ERR(ns_pinctrl->regmap)) {
 | 
			
		||||
-		int err = PTR_ERR(ns_pinctrl->regmap);
 | 
			
		||||
-
 | 
			
		||||
-		dev_err(dev, "Failed to map pinctrl regs: %d\n", err);
 | 
			
		||||
-
 | 
			
		||||
-		return err;
 | 
			
		||||
-	}
 | 
			
		||||
-
 | 
			
		||||
-	if (of_property_read_u32(np, "offset", &ns_pinctrl->offset)) {
 | 
			
		||||
-		dev_err(dev, "Failed to get register offset\n");
 | 
			
		||||
-		return -ENOENT;
 | 
			
		||||
+	res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
 | 
			
		||||
+					   "cru_gpio_control");
 | 
			
		||||
+	ns_pinctrl->base = devm_ioremap_resource(dev, res);
 | 
			
		||||
+	if (IS_ERR(ns_pinctrl->base)) {
 | 
			
		||||
+		dev_err(dev, "Failed to map pinctrl regs\n");
 | 
			
		||||
+		return PTR_ERR(ns_pinctrl->base);
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 	memcpy(pctldesc, &ns_pinctrl_desc, sizeof(*pctldesc));
 | 
			
		||||
@@ -1,33 +0,0 @@
 | 
			
		||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
 | 
			
		||||
Subject: [PATCH] ARM: dts: BCM5301X: Update Northstar pinctrl binding
 | 
			
		||||
MIME-Version: 1.0
 | 
			
		||||
Content-Type: text/plain; charset=UTF-8
 | 
			
		||||
Content-Transfer-Encoding: 8bit
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
--- a/arch/arm/boot/dts/bcm5301x.dtsi
 | 
			
		||||
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
 | 
			
		||||
@@ -422,7 +422,7 @@
 | 
			
		||||
 		#size-cells = <1>;
 | 
			
		||||
 
 | 
			
		||||
 		cru@100 {
 | 
			
		||||
-			compatible = "simple-bus";
 | 
			
		||||
+			compatible = "syscon", "simple-mfd";
 | 
			
		||||
 			reg = <0x100 0x1a4>;
 | 
			
		||||
 			ranges;
 | 
			
		||||
 			#address-cells = <1>;
 | 
			
		||||
@@ -448,10 +448,9 @@
 | 
			
		||||
 						     "sata1", "sata2";
 | 
			
		||||
 			};
 | 
			
		||||
 
 | 
			
		||||
-			pinctrl: pin-controller@1c0 {
 | 
			
		||||
+			pinctrl: pin-controller {
 | 
			
		||||
 				compatible = "brcm,bcm4708-pinmux";
 | 
			
		||||
-				reg = <0x1c0 0x24>;
 | 
			
		||||
-				reg-names = "cru_gpio_control";
 | 
			
		||||
+				offset = <0xc0>;
 | 
			
		||||
 
 | 
			
		||||
 				spi-pins {
 | 
			
		||||
 					groups = "spi_grp";
 | 
			
		||||
		Reference in New Issue
	
	Block a user