OpenWrt
/branches/18.06.1/target/linux/brcm63xx/patches-4.9/134-pinctrl-add-a-pincontrol-driver-for-BCM6348.patch |
@@ -12,8 +12,8 @@ |
--- |
drivers/pinctrl/bcm63xx/Kconfig | 7 + |
drivers/pinctrl/bcm63xx/Makefile | 1 + |
drivers/pinctrl/bcm63xx/pinctrl-bcm6348.c | 391 ++++++++++++++++++++++++++++++ |
3 files changed, 399 insertions(+) |
drivers/pinctrl/bcm63xx/pinctrl-bcm6348.c | 392 ++++++++++++++++++++++++++++++ |
3 files changed, 400 insertions(+) |
create mode 100644 drivers/pinctrl/bcm63xx/pinctrl-bcm6348.c |
|
--- a/drivers/pinctrl/bcm63xx/Kconfig |
@@ -37,7 +37,7 @@ |
+obj-$(CONFIG_PINCTRL_BCM6348) += pinctrl-bcm6348.o |
--- /dev/null |
+++ b/drivers/pinctrl/bcm63xx/pinctrl-bcm6348.c |
@@ -0,0 +1,391 @@ |
@@ -0,0 +1,392 @@ |
+/* |
+ * 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 |
@@ -321,14 +321,15 @@ |
+ struct bcm6348_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); |
+ const struct bcm6348_pingroup *grp = &bcm6348_groups[group]; |
+ const struct bcm6348_function *f = &bcm6348_funcs[selector]; |
+ u32 mask, val; |
+ u32 group_num, mask, val; |
+ |
+ /* |
+ * pins n..(n+7) share the same group, so we only need to look at |
+ * the first pin. |
+ */ |
+ mask = GROUP_MASK(grp->pins[0]); |
+ val = f->value << GROUP_SHIFT(grp->pins[0]); |
+ group_num = (unsigned long)bcm6348_pins[grp->pins[0]].drv_data; |
+ mask = GROUP_MASK(group_num); |
+ val = f->value << GROUP_SHIFT(group_num); |
+ |
+ bcm6348_rmw_mux(pctl, mask, val); |
+ |