pinctrl: ralink: move ralink architecture pinmux header into the driver
authorSergio Paracuellos <sergio.paracuellos@gmail.com>
Fri, 4 Jun 2021 11:51:54 +0000 (13:51 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 7 Jun 2021 07:17:47 +0000 (09:17 +0200)
Ralink architecture is making use of the header located in
'arch/mips/include/asm/mach-ralink/pinmux.h' to stablish the
mechanisms to make derived SoCs to set its pin functions and
groups. In order to move all architecture pinmux into a more
accurate place which is 'drivers/pinctrl/ralink' we have to
first of all move this file also there with a small modification
which creates 'rt2880_pinmux_init' function to allow SoCs pinctrl
drivers to pass its configuration to the common code located in
'pinctrl-rt2880.c' file.

Signed-off-by: Sergio Paracuellos <sergio.paracuellos@gmail.com>
Link: https://lore.kernel.org/r/20210604115159.8834-2-sergio.paracuellos@gmail.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
arch/mips/include/asm/mach-ralink/pinmux.h [deleted file]
arch/mips/ralink/prom.c
drivers/pinctrl/ralink/pinctrl-rt2880.c
drivers/pinctrl/ralink/pinmux.h [new file with mode: 0644]

diff --git a/arch/mips/include/asm/mach-ralink/pinmux.h b/arch/mips/include/asm/mach-ralink/pinmux.h
deleted file mode 100644 (file)
index 0483093..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  Copyright (C) 2012 John Crispin <john@phrozen.org>
- */
-
-#ifndef _RT288X_PINMUX_H__
-#define _RT288X_PINMUX_H__
-
-#define FUNC(name, value, pin_first, pin_count) \
-       { name, value, pin_first, pin_count }
-
-#define GRP(_name, _func, _mask, _shift) \
-       { .name = _name, .mask = _mask, .shift = _shift, \
-         .func = _func, .gpio = _mask, \
-         .func_count = ARRAY_SIZE(_func) }
-
-#define GRP_G(_name, _func, _mask, _gpio, _shift) \
-       { .name = _name, .mask = _mask, .shift = _shift, \
-         .func = _func, .gpio = _gpio, \
-         .func_count = ARRAY_SIZE(_func) }
-
-struct rt2880_pmx_group;
-
-struct rt2880_pmx_func {
-       const char *name;
-       const char value;
-
-       int pin_first;
-       int pin_count;
-       int *pins;
-
-       int *groups;
-       int group_count;
-
-       int enabled;
-};
-
-struct rt2880_pmx_group {
-       const char *name;
-       int enabled;
-
-       const u32 shift;
-       const char mask;
-       const char gpio;
-
-       struct rt2880_pmx_func *func;
-       int func_count;
-};
-
-extern struct rt2880_pmx_group *rt2880_pinmux_data;
-
-#endif
index 25728def3503b10fccfcd25cd4e5a24608dc95d2..aaac1e6ec7d9a7c61f885ae3b02286530d4c40ee 100644 (file)
@@ -18,7 +18,6 @@
 #include "common.h"
 
 struct ralink_soc_info soc_info;
-struct rt2880_pmx_group *rt2880_pinmux_data = NULL;
 
 enum ralink_soc_type ralink_soc;
 EXPORT_SYMBOL_GPL(ralink_soc);
index 1f4bca854add5516e5d2bef3f20270f07aa193e6..abe31d4d448e9bec7b66d969c276f6db423ed325 100644 (file)
@@ -17,9 +17,9 @@
 #include <linux/pinctrl/machine.h>
 
 #include <asm/mach-ralink/ralink_regs.h>
-#include <asm/mach-ralink/pinmux.h>
 #include <asm/mach-ralink/mt7620.h>
 
+#include "pinmux.h"
 #include "../core.h"
 #include "../pinctrl-utils.h"
 
@@ -311,13 +311,14 @@ static int rt2880_pinmux_pins(struct rt2880_priv *p)
        return 0;
 }
 
-static int rt2880_pinmux_probe(struct platform_device *pdev)
+int rt2880_pinmux_init(struct platform_device *pdev,
+                      struct rt2880_pmx_group *data)
 {
        struct rt2880_priv *p;
        struct pinctrl_dev *dev;
        int err;
 
-       if (!rt2880_pinmux_data)
+       if (!data)
                return -ENOTSUPP;
 
        /* setup the private data */
@@ -327,7 +328,7 @@ static int rt2880_pinmux_probe(struct platform_device *pdev)
 
        p->dev = &pdev->dev;
        p->desc = &rt2880_pctrl_desc;
-       p->groups = rt2880_pinmux_data;
+       p->groups = data;
        platform_set_drvdata(pdev, p);
 
        /* init the device */
@@ -346,24 +347,3 @@ static int rt2880_pinmux_probe(struct platform_device *pdev)
 
        return PTR_ERR_OR_ZERO(dev);
 }
-
-static const struct of_device_id rt2880_pinmux_match[] = {
-       { .compatible = "ralink,rt2880-pinmux" },
-       {},
-};
-MODULE_DEVICE_TABLE(of, rt2880_pinmux_match);
-
-static struct platform_driver rt2880_pinmux_driver = {
-       .probe = rt2880_pinmux_probe,
-       .driver = {
-               .name = "rt2880-pinmux",
-               .of_match_table = rt2880_pinmux_match,
-       },
-};
-
-static int __init rt2880_pinmux_init(void)
-{
-       return platform_driver_register(&rt2880_pinmux_driver);
-}
-
-core_initcall_sync(rt2880_pinmux_init);
diff --git a/drivers/pinctrl/ralink/pinmux.h b/drivers/pinctrl/ralink/pinmux.h
new file mode 100644 (file)
index 0000000..0046abe
--- /dev/null
@@ -0,0 +1,53 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ *  Copyright (C) 2012 John Crispin <john@phrozen.org>
+ */
+
+#ifndef _RT288X_PINMUX_H__
+#define _RT288X_PINMUX_H__
+
+#define FUNC(name, value, pin_first, pin_count) \
+       { name, value, pin_first, pin_count }
+
+#define GRP(_name, _func, _mask, _shift) \
+       { .name = _name, .mask = _mask, .shift = _shift, \
+         .func = _func, .gpio = _mask, \
+         .func_count = ARRAY_SIZE(_func) }
+
+#define GRP_G(_name, _func, _mask, _gpio, _shift) \
+       { .name = _name, .mask = _mask, .shift = _shift, \
+         .func = _func, .gpio = _gpio, \
+         .func_count = ARRAY_SIZE(_func) }
+
+struct rt2880_pmx_group;
+
+struct rt2880_pmx_func {
+       const char *name;
+       const char value;
+
+       int pin_first;
+       int pin_count;
+       int *pins;
+
+       int *groups;
+       int group_count;
+
+       int enabled;
+};
+
+struct rt2880_pmx_group {
+       const char *name;
+       int enabled;
+
+       const u32 shift;
+       const char mask;
+       const char gpio;
+
+       struct rt2880_pmx_func *func;
+       int func_count;
+};
+
+int rt2880_pinmux_init(struct platform_device *pdev,
+                      struct rt2880_pmx_group *data);
+
+#endif