aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm63xx/patches-5.10/144-add-removed-syscon_regmap_lookup_by_pdevname.patch
diff options
context:
space:
mode:
authorÁlvaro Fernández Rojas <noltari@gmail.com>2021-02-17 19:07:23 +0100
committerÁlvaro Fernández Rojas <noltari@gmail.com>2021-02-17 20:40:16 +0100
commitf323dec4f866d9ea75eae11c6762d0144d100628 (patch)
treec40f33e9a89e935b32e6a1520f02019200e7cc17 /target/linux/bcm63xx/patches-5.10/144-add-removed-syscon_regmap_lookup_by_pdevname.patch
parent5bb9954826229782d4d285d65dfcca8a1c9e20d9 (diff)
downloadupstream-f323dec4f866d9ea75eae11c6762d0144d100628.tar.gz
upstream-f323dec4f866d9ea75eae11c6762d0144d100628.tar.bz2
upstream-f323dec4f866d9ea75eae11c6762d0144d100628.zip
bcm63xx: add kernel 5.10 support
Runtime-tested on Comtrend AR-5387un. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/bcm63xx/patches-5.10/144-add-removed-syscon_regmap_lookup_by_pdevname.patch')
-rw-r--r--target/linux/bcm63xx/patches-5.10/144-add-removed-syscon_regmap_lookup_by_pdevname.patch68
1 files changed, 68 insertions, 0 deletions
diff --git a/target/linux/bcm63xx/patches-5.10/144-add-removed-syscon_regmap_lookup_by_pdevname.patch b/target/linux/bcm63xx/patches-5.10/144-add-removed-syscon_regmap_lookup_by_pdevname.patch
new file mode 100644
index 0000000000..683b1bbfce
--- /dev/null
+++ b/target/linux/bcm63xx/patches-5.10/144-add-removed-syscon_regmap_lookup_by_pdevname.patch
@@ -0,0 +1,68 @@
+From: Adrian Schmutzler <freifunk@adrianschmutzler.de>
+Date: Fri, 03 Apr 2020 19:50:03 +0200
+Subject: add removed helper syscon_regmap_lookup_by_pdevname
+
+The helper syscon_regmap_lookup_by_pdevname has been removed in 29d14b668d2f
+("mfd: Remove unused helper syscon_regmap_lookup_by_pdevname") due to lack
+of users.
+
+Thus, we have to maintain it locally.
+
+This patch includes a fix due to changes in driver_find_device;
+kernel commit: 92ce7e83b4e5 ("driver_find_device: Unify the match function
+with class_find_device()")
+
+Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
+
+--- a/drivers/mfd/syscon.c
++++ b/drivers/mfd/syscon.c
+@@ -205,6 +205,27 @@ struct regmap *syscon_regmap_lookup_by_c
+ }
+ EXPORT_SYMBOL_GPL(syscon_regmap_lookup_by_compatible);
+
++static int syscon_match_pdevname(struct device *dev, const void *data)
++{
++ return !strcmp(dev_name(dev), (const char *)data);
++}
++
++struct regmap *syscon_regmap_lookup_by_pdevname(const char *s)
++{
++ struct device *dev;
++ struct syscon *syscon;
++
++ dev = driver_find_device(&syscon_driver.driver, NULL, (void *)s,
++ syscon_match_pdevname);
++ if (!dev)
++ return ERR_PTR(-EPROBE_DEFER);
++
++ syscon = dev_get_drvdata(dev);
++
++ return syscon->regmap;
++}
++EXPORT_SYMBOL_GPL(syscon_regmap_lookup_by_pdevname);
++
+ struct regmap *syscon_regmap_lookup_by_phandle(struct device_node *np,
+ const char *property)
+ {
+--- a/include/linux/mfd/syscon.h
++++ b/include/linux/mfd/syscon.h
+@@ -20,6 +20,7 @@ struct device_node;
+ extern struct regmap *device_node_to_regmap(struct device_node *np);
+ extern struct regmap *syscon_node_to_regmap(struct device_node *np);
+ extern struct regmap *syscon_regmap_lookup_by_compatible(const char *s);
++extern struct regmap *syscon_regmap_lookup_by_pdevname(const char *s);
+ extern struct regmap *syscon_regmap_lookup_by_phandle(
+ struct device_node *np,
+ const char *property);
+@@ -43,6 +44,11 @@ static inline struct regmap *syscon_regm
+ {
+ return ERR_PTR(-ENOTSUPP);
+ }
++
++static inline struct regmap *syscon_regmap_lookup_by_pdevname(const char *s)
++{
++ return ERR_PTR(-ENOTSUPP);
++}
+
+ static inline struct regmap *syscon_regmap_lookup_by_phandle(
+ struct device_node *np,