提交 2c181214 编写于 作者: R Rafał Miłecki 提交者: Zheng Zengkai

Revert "pinctrl: bcm: ns: support updated DT binding as syscon subnode"

stable inclusion
from stable-5.10.77
commit 01c2881bb0e0a71b87ca425e1b763ac13855aa7e
bugzilla: 185677 https://gitee.com/openeuler/kernel/issues/I4IAP7

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=01c2881bb0e0a71b87ca425e1b763ac13855aa7e

--------------------------------

commit 6dba4bdf upstream.

This reverts commit a49d784d.

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: NRafał Miłecki <rafal@milecki.pl>
Link: https://lore.kernel.org/r/20211008205938.29925-3-zajec5@gmail.comSigned-off-by: NLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: NChen Jun <chenjun102@huawei.com>
Acked-by: NWeilong Chen <chenweilong@huawei.com>
Signed-off-by: NChen Jun <chenjun102@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 9009b06e
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
#include <linux/err.h> #include <linux/err.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/mfd/syscon.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/of_device.h> #include <linux/of_device.h>
...@@ -13,7 +12,6 @@ ...@@ -13,7 +12,6 @@
#include <linux/pinctrl/pinctrl.h> #include <linux/pinctrl/pinctrl.h>
#include <linux/pinctrl/pinmux.h> #include <linux/pinctrl/pinmux.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/regmap.h>
#include <linux/slab.h> #include <linux/slab.h>
#define FLAG_BCM4708 BIT(1) #define FLAG_BCM4708 BIT(1)
...@@ -24,8 +22,7 @@ struct ns_pinctrl { ...@@ -24,8 +22,7 @@ struct ns_pinctrl {
struct device *dev; struct device *dev;
unsigned int chipset_flag; unsigned int chipset_flag;
struct pinctrl_dev *pctldev; struct pinctrl_dev *pctldev;
struct regmap *regmap; void __iomem *base;
u32 offset;
struct pinctrl_desc pctldesc; struct pinctrl_desc pctldesc;
struct ns_pinctrl_group *groups; struct ns_pinctrl_group *groups;
...@@ -232,9 +229,9 @@ static int ns_pinctrl_set_mux(struct pinctrl_dev *pctrl_dev, ...@@ -232,9 +229,9 @@ static int ns_pinctrl_set_mux(struct pinctrl_dev *pctrl_dev,
unset |= BIT(pin_number); unset |= BIT(pin_number);
} }
regmap_read(ns_pinctrl->regmap, ns_pinctrl->offset, &tmp); tmp = readl(ns_pinctrl->base);
tmp &= ~unset; tmp &= ~unset;
regmap_write(ns_pinctrl->regmap, ns_pinctrl->offset, tmp); writel(tmp, ns_pinctrl->base);
return 0; return 0;
} }
...@@ -266,13 +263,13 @@ static const struct of_device_id ns_pinctrl_of_match_table[] = { ...@@ -266,13 +263,13 @@ static const struct of_device_id ns_pinctrl_of_match_table[] = {
static int ns_pinctrl_probe(struct platform_device *pdev) static int ns_pinctrl_probe(struct platform_device *pdev)
{ {
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct device_node *np = dev->of_node;
const struct of_device_id *of_id; const struct of_device_id *of_id;
struct ns_pinctrl *ns_pinctrl; struct ns_pinctrl *ns_pinctrl;
struct pinctrl_desc *pctldesc; struct pinctrl_desc *pctldesc;
struct pinctrl_pin_desc *pin; struct pinctrl_pin_desc *pin;
struct ns_pinctrl_group *group; struct ns_pinctrl_group *group;
struct ns_pinctrl_function *function; struct ns_pinctrl_function *function;
struct resource *res;
int i; int i;
ns_pinctrl = devm_kzalloc(dev, sizeof(*ns_pinctrl), GFP_KERNEL); ns_pinctrl = devm_kzalloc(dev, sizeof(*ns_pinctrl), GFP_KERNEL);
...@@ -290,18 +287,12 @@ static int ns_pinctrl_probe(struct platform_device *pdev) ...@@ -290,18 +287,12 @@ static int ns_pinctrl_probe(struct platform_device *pdev)
return -EINVAL; return -EINVAL;
ns_pinctrl->chipset_flag = (uintptr_t)of_id->data; ns_pinctrl->chipset_flag = (uintptr_t)of_id->data;
ns_pinctrl->regmap = syscon_node_to_regmap(of_get_parent(np)); res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
if (IS_ERR(ns_pinctrl->regmap)) { "cru_gpio_control");
int err = PTR_ERR(ns_pinctrl->regmap); ns_pinctrl->base = devm_ioremap_resource(dev, res);
if (IS_ERR(ns_pinctrl->base)) {
dev_err(dev, "Failed to map pinctrl regs: %d\n", err); dev_err(dev, "Failed to map pinctrl regs\n");
return PTR_ERR(ns_pinctrl->base);
return err;
}
if (of_property_read_u32(np, "offset", &ns_pinctrl->offset)) {
dev_err(dev, "Failed to get register offset\n");
return -ENOENT;
} }
memcpy(pctldesc, &ns_pinctrl_desc, sizeof(*pctldesc)); memcpy(pctldesc, &ns_pinctrl_desc, sizeof(*pctldesc));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册