* [PATCH v9 1/4] pinctrl: use to octal permissions for debugfs files
2021-03-02 5:30 [PATCH v9 0/4] pinctrl: pinmux: Add pinmux-select debugfs file Drew Fustini
@ 2021-03-02 5:30 ` Drew Fustini
2021-03-02 5:30 ` [PATCH v9 2/4] pinctrl: pinmux: Add pinmux-select debugfs file Drew Fustini
` (3 subsequent siblings)
4 siblings, 0 replies; 12+ messages in thread
From: Drew Fustini @ 2021-03-02 5:30 UTC (permalink / raw)
To: Linus Walleij, linux-gpio, linux-kernel, Tony Lindgren,
Andy Shevchenko, Alexandre Belloni, Geert Uytterhoeven,
Pantelis Antoniou, Jason Kridner, Robert Nelson, Joe Perches,
Dan Carpenter, Jonathan Corbet, linux-doc
Cc: Drew Fustini, Geert Uytterhoeven
Switch over pinctrl debugfs files to use octal permissions as they are
preferred over symbolic permissions. Refer to commit f90774e1fd27
("checkpatch: look for symbolic permissions and suggest octal instead").
Note: S_IFREG flag is added to the mode by __debugfs_create_file()
in fs/debugfs/inode.c
Suggested-by: Joe Perches <joe@perches.com>
Suggested-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Drew Fustini <drew@beagleboard.org>
---
drivers/pinctrl/core.c | 12 ++++++------
drivers/pinctrl/pinconf.c | 4 ++--
drivers/pinctrl/pinmux.c | 4 ++--
3 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c
index 3663d87f51a0..07458742bc0f 100644
--- a/drivers/pinctrl/core.c
+++ b/drivers/pinctrl/core.c
@@ -1888,11 +1888,11 @@ static void pinctrl_init_device_debugfs(struct pinctrl_dev *pctldev)
dev_name(pctldev->dev));
return;
}
- debugfs_create_file("pins", S_IFREG | S_IRUGO,
+ debugfs_create_file("pins", 0444,
device_root, pctldev, &pinctrl_pins_fops);
- debugfs_create_file("pingroups", S_IFREG | S_IRUGO,
+ debugfs_create_file("pingroups", 0444,
device_root, pctldev, &pinctrl_groups_fops);
- debugfs_create_file("gpio-ranges", S_IFREG | S_IRUGO,
+ debugfs_create_file("gpio-ranges", 0444,
device_root, pctldev, &pinctrl_gpioranges_fops);
if (pctldev->desc->pmxops)
pinmux_init_device_debugfs(device_root, pctldev);
@@ -1914,11 +1914,11 @@ static void pinctrl_init_debugfs(void)
return;
}
- debugfs_create_file("pinctrl-devices", S_IFREG | S_IRUGO,
+ debugfs_create_file("pinctrl-devices", 0444,
debugfs_root, NULL, &pinctrl_devices_fops);
- debugfs_create_file("pinctrl-maps", S_IFREG | S_IRUGO,
+ debugfs_create_file("pinctrl-maps", 0444,
debugfs_root, NULL, &pinctrl_maps_fops);
- debugfs_create_file("pinctrl-handles", S_IFREG | S_IRUGO,
+ debugfs_create_file("pinctrl-handles", 0444,
debugfs_root, NULL, &pinctrl_fops);
}
diff --git a/drivers/pinctrl/pinconf.c b/drivers/pinctrl/pinconf.c
index 02c075cc010b..d9d54065472e 100644
--- a/drivers/pinctrl/pinconf.c
+++ b/drivers/pinctrl/pinconf.c
@@ -370,9 +370,9 @@ DEFINE_SHOW_ATTRIBUTE(pinconf_groups);
void pinconf_init_device_debugfs(struct dentry *devroot,
struct pinctrl_dev *pctldev)
{
- debugfs_create_file("pinconf-pins", S_IFREG | S_IRUGO,
+ debugfs_create_file("pinconf-pins", 0444,
devroot, pctldev, &pinconf_pins_fops);
- debugfs_create_file("pinconf-groups", S_IFREG | S_IRUGO,
+ debugfs_create_file("pinconf-groups", 0444,
devroot, pctldev, &pinconf_groups_fops);
}
diff --git a/drivers/pinctrl/pinmux.c b/drivers/pinctrl/pinmux.c
index bab888fe3f8e..c651b2db0925 100644
--- a/drivers/pinctrl/pinmux.c
+++ b/drivers/pinctrl/pinmux.c
@@ -676,9 +676,9 @@ DEFINE_SHOW_ATTRIBUTE(pinmux_pins);
void pinmux_init_device_debugfs(struct dentry *devroot,
struct pinctrl_dev *pctldev)
{
- debugfs_create_file("pinmux-functions", S_IFREG | S_IRUGO,
+ debugfs_create_file("pinmux-functions", 0444,
devroot, pctldev, &pinmux_functions_fops);
- debugfs_create_file("pinmux-pins", S_IFREG | S_IRUGO,
+ debugfs_create_file("pinmux-pins", 0444,
devroot, pctldev, &pinmux_pins_fops);
}
--
2.25.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v9 2/4] pinctrl: pinmux: Add pinmux-select debugfs file
2021-03-02 5:30 [PATCH v9 0/4] pinctrl: pinmux: Add pinmux-select debugfs file Drew Fustini
2021-03-02 5:30 ` [PATCH v9 1/4] pinctrl: use to octal permissions for debugfs files Drew Fustini
@ 2021-03-02 5:30 ` Drew Fustini
2021-03-12 13:57 ` Enrico Weigelt, metux IT consult
2021-03-02 5:30 ` [PATCH v9 3/4] Documentation: rename pinctl to pin-control Drew Fustini
` (2 subsequent siblings)
4 siblings, 1 reply; 12+ messages in thread
From: Drew Fustini @ 2021-03-02 5:30 UTC (permalink / raw)
To: Linus Walleij, linux-gpio, linux-kernel, Tony Lindgren,
Andy Shevchenko, Alexandre Belloni, Geert Uytterhoeven,
Pantelis Antoniou, Jason Kridner, Robert Nelson, Joe Perches,
Dan Carpenter, Jonathan Corbet, linux-doc
Cc: Drew Fustini, Geert Uytterhoeven
Add "pinmux-select" to debugfs which will activate a pin function for a
given pin group:
echo "<group-name function-name>" > pinmux-select
The write operation pinmux_select() handles this by checking that the
names map to valid selectors and then calling ops->set_mux().
The existing "pinmux-functions" debugfs file lists the pin functions
registered for the pin controller. For example:
function: pinmux-uart0, groups = [ pinmux-uart0-pins ]
function: pinmux-mmc0, groups = [ pinmux-mmc0-pins ]
function: pinmux-mmc1, groups = [ pinmux-mmc1-pins ]
function: pinmux-i2c0, groups = [ pinmux-i2c0-pins ]
function: pinmux-i2c1, groups = [ pinmux-i2c1-pins ]
function: pinmux-spi1, groups = [ pinmux-spi1-pins ]
To activate function pinmux-i2c1 on group pinmux-i2c1-pins:
echo "pinmux-i2c1-pins pinmux-i2c1" > pinmux-select
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: Tony Lindgren <tony@atomide.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Drew Fustini <drew@beagleboard.org>
---
drivers/pinctrl/pinmux.c | 102 +++++++++++++++++++++++++++++++++++++++
1 file changed, 102 insertions(+)
diff --git a/drivers/pinctrl/pinmux.c b/drivers/pinctrl/pinmux.c
index c651b2db0925..f4abfaecfc5c 100644
--- a/drivers/pinctrl/pinmux.c
+++ b/drivers/pinctrl/pinmux.c
@@ -12,6 +12,7 @@
*/
#define pr_fmt(fmt) "pinmux core: " fmt
+#include <linux/ctype.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
@@ -673,6 +674,105 @@ void pinmux_show_setting(struct seq_file *s,
DEFINE_SHOW_ATTRIBUTE(pinmux_functions);
DEFINE_SHOW_ATTRIBUTE(pinmux_pins);
+#define PINMUX_SELECT_MAX 128
+static ssize_t pinmux_select(struct file *file, const char __user *user_buf,
+ size_t len, loff_t *ppos)
+{
+ struct seq_file *sfile = file->private_data;
+ struct pinctrl_dev *pctldev = sfile->private;
+ const struct pinmux_ops *pmxops = pctldev->desc->pmxops;
+ const char *const *groups;
+ char *buf, *gname, *fname;
+ unsigned int num_groups;
+ int fsel, gsel, ret;
+
+ if (len > PINMUX_SELECT_MAX)
+ return -ENOMEM;
+
+ buf = kzalloc(PINMUX_SELECT_MAX, GFP_KERNEL);
+ if (!buf)
+ return -ENOMEM;
+
+ ret = strncpy_from_user(buf, user_buf, PINMUX_SELECT_MAX);
+ if (ret < 0)
+ goto exit_free_buf;
+ buf[len-1] = '\0';
+
+ /* remove leading and trailing spaces of input buffer */
+ gname = strstrip(buf);
+ if (*gname == '\0') {
+ ret = -EINVAL;
+ goto exit_free_buf;
+ }
+
+ /* find a separator which is a spacelike character */
+ for (fname = gname; !isspace(*fname); fname++) {
+ if (*fname == '\0') {
+ ret = -EINVAL;
+ goto exit_free_buf;
+ }
+ }
+ *fname = '\0';
+
+ /* drop extra spaces between function and group names */
+ fname = skip_spaces(fname + 1);
+ if (*fname == '\0') {
+ ret = -EINVAL;
+ goto exit_free_buf;
+ }
+
+ ret = pinmux_func_name_to_selector(pctldev, fname);
+ if (ret < 0) {
+ dev_err(pctldev->dev, "invalid function %s in map table\n", fname);
+ goto exit_free_buf;
+ }
+ fsel = ret;
+
+ ret = pmxops->get_function_groups(pctldev, fsel, &groups, &num_groups);
+ if (ret) {
+ dev_err(pctldev->dev, "no groups for function %d (%s)", fsel, fname);
+ goto exit_free_buf;
+ }
+
+ ret = match_string(groups, num_groups, gname);
+ if (ret < 0) {
+ dev_err(pctldev->dev, "invalid group %s", gname);
+ goto exit_free_buf;
+ }
+
+ ret = pinctrl_get_group_selector(pctldev, gname);
+ if (ret < 0) {
+ dev_err(pctldev->dev, "failed to get group selector for %s", gname);
+ goto exit_free_buf;
+ }
+ gsel = ret;
+
+ ret = pmxops->set_mux(pctldev, fsel, gsel);
+ if (ret) {
+ dev_err(pctldev->dev, "set_mux() failed: %d", ret);
+ goto exit_free_buf;
+ }
+ ret = len;
+
+exit_free_buf:
+ kfree(buf);
+
+ return ret;
+}
+
+static int pinmux_select_open(struct inode *inode, struct file *file)
+{
+ return single_open(file, NULL, inode->i_private);
+}
+
+static const struct file_operations pinmux_select_ops = {
+ .owner = THIS_MODULE,
+ .open = pinmux_select_open,
+ .write = pinmux_select,
+ .llseek = no_llseek,
+ .release = single_release,
+};
+
void pinmux_init_device_debugfs(struct dentry *devroot,
struct pinctrl_dev *pctldev)
{
@@ -680,6 +780,8 @@ void pinmux_init_device_debugfs(struct dentry *devroot,
devroot, pctldev, &pinmux_functions_fops);
debugfs_create_file("pinmux-pins", 0444,
devroot, pctldev, &pinmux_pins_fops);
+ debugfs_create_file("pinmux-select", 0200,
+ devroot, pctldev, &pinmux_select_ops);
}
#endif /* CONFIG_DEBUG_FS */
--
2.25.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v9 2/4] pinctrl: pinmux: Add pinmux-select debugfs file
2021-03-02 5:30 ` [PATCH v9 2/4] pinctrl: pinmux: Add pinmux-select debugfs file Drew Fustini
@ 2021-03-12 13:57 ` Enrico Weigelt, metux IT consult
2021-03-13 8:42 ` Drew Fustini
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Enrico Weigelt, metux IT consult @ 2021-03-12 13:57 UTC (permalink / raw)
To: Drew Fustini, Linus Walleij, linux-gpio, linux-kernel,
Tony Lindgren, Andy Shevchenko, Alexandre Belloni,
Geert Uytterhoeven, Pantelis Antoniou, Jason Kridner,
Robert Nelson, Joe Perches, Dan Carpenter, Jonathan Corbet,
linux-doc
Cc: Geert Uytterhoeven
On 02.03.21 06:30, Drew Fustini wrote:
Hi folks,
> Add "pinmux-select" to debugfs which will activate a pin function for a
> given pin group:
>
> echo "<group-name function-name>" > pinmux-select
>
> The write operation pinmux_select() handles this by checking that the
> names map to valid selectors and then calling ops->set_mux().
I've already been playing with similar idea, but for external muxes.
For example, some boards have multiple SIM slots that can be switched
via some gpio pin.
Not sure whether traditional pinmux would be a good match for that.
--mtx
--
---
Hinweis: unverschlüsselte E-Mails können leicht abgehört und manipuliert
werden ! Für eine vertrauliche Kommunikation senden Sie bitte ihren
GPG/PGP-Schlüssel zu.
---
Enrico Weigelt, metux IT consult
Free software and Linux embedded engineering
info@metux.net -- +49-151-27565287
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v9 2/4] pinctrl: pinmux: Add pinmux-select debugfs file
2021-03-12 13:57 ` Enrico Weigelt, metux IT consult
@ 2021-03-13 8:42 ` Drew Fustini
2021-03-13 9:28 ` Alexandre Belloni
2021-03-15 16:24 ` Linus Walleij
2 siblings, 0 replies; 12+ messages in thread
From: Drew Fustini @ 2021-03-13 8:42 UTC (permalink / raw)
To: Enrico Weigelt, metux IT consult
Cc: Linus Walleij, linux-gpio, linux-kernel, Tony Lindgren,
Andy Shevchenko, Alexandre Belloni, Geert Uytterhoeven,
Pantelis Antoniou, Jason Kridner, Robert Nelson, Joe Perches,
Dan Carpenter, Jonathan Corbet, linux-doc, Geert Uytterhoeven
On Fri, Mar 12, 2021 at 02:57:54PM +0100, Enrico Weigelt, metux IT consult wrote:
> On 02.03.21 06:30, Drew Fustini wrote:
>
> Hi folks,
>
> > Add "pinmux-select" to debugfs which will activate a pin function for a
> > given pin group:
> >
> > echo "<group-name function-name>" > pinmux-select
> >
> > The write operation pinmux_select() handles this by checking that the
> > names map to valid selectors and then calling ops->set_mux().
>
> I've already been playing with similar idea, but for external muxes.
> For example, some boards have multiple SIM slots that can be switched
> via some gpio pin.
>
> Not sure whether traditional pinmux would be a good match for that.
>
>
> --mtx
>
Thank you for your comment. I am interested in understanding other
use cases.
Linus can hopefully correct me, but I think this is covered by section
"Drivers needing both pin control and GPIOs" in pinctl.rst [1]. The
driver could be both a GPIO consumer and pinctrl consumer and then be
able to call pinctrl_select_state() and devm_gpio_request().
Thank you,
Drew
[1] https://www.kernel.org/doc/html/latest/driver-api/pinctl.html
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v9 2/4] pinctrl: pinmux: Add pinmux-select debugfs file
2021-03-12 13:57 ` Enrico Weigelt, metux IT consult
2021-03-13 8:42 ` Drew Fustini
@ 2021-03-13 9:28 ` Alexandre Belloni
2021-03-13 18:47 ` Geert Uytterhoeven
2021-03-15 16:24 ` Linus Walleij
2 siblings, 1 reply; 12+ messages in thread
From: Alexandre Belloni @ 2021-03-13 9:28 UTC (permalink / raw)
To: Enrico Weigelt, metux IT consult
Cc: Drew Fustini, Linus Walleij, linux-gpio, linux-kernel,
Tony Lindgren, Andy Shevchenko, Geert Uytterhoeven,
Pantelis Antoniou, Jason Kridner, Robert Nelson, Joe Perches,
Dan Carpenter, Jonathan Corbet, linux-doc, Geert Uytterhoeven
On 12/03/2021 14:57:54+0100, Enrico Weigelt, metux IT consult wrote:
> On 02.03.21 06:30, Drew Fustini wrote:
>
> Hi folks,
>
> > Add "pinmux-select" to debugfs which will activate a pin function for a
> > given pin group:
> >
> > echo "<group-name function-name>" > pinmux-select
> >
> > The write operation pinmux_select() handles this by checking that the
> > names map to valid selectors and then calling ops->set_mux().
>
> I've already been playing with similar idea, but for external muxes.
> For example, some boards have multiple SIM slots that can be switched
> via some gpio pin.
>
> Not sure whether traditional pinmux would be a good match for that.
>
If you want to be able to use both, then I guess gpio-mux is what you
are looking for. Obviously, it will also require support in the bus
core. On what bus are those SIMs? (I guess the answer will be UART and
then unfortunately UARTs are not represented as busses).
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v9 2/4] pinctrl: pinmux: Add pinmux-select debugfs file
2021-03-13 9:28 ` Alexandre Belloni
@ 2021-03-13 18:47 ` Geert Uytterhoeven
2021-03-18 19:40 ` Enrico Weigelt, metux IT consult
0 siblings, 1 reply; 12+ messages in thread
From: Geert Uytterhoeven @ 2021-03-13 18:47 UTC (permalink / raw)
To: Alexandre Belloni
Cc: Enrico Weigelt, metux IT consult, Drew Fustini, Linus Walleij,
open list:GPIO SUBSYSTEM, Linux Kernel Mailing List,
Tony Lindgren, Andy Shevchenko, Pantelis Antoniou, Jason Kridner,
Robert Nelson, Joe Perches, Dan Carpenter, Jonathan Corbet,
open list:DOCUMENTATION, Geert Uytterhoeven
Hi Alexandre,
On Sat, Mar 13, 2021 at 10:28 AM Alexandre Belloni
<alexandre.belloni@bootlin.com> wrote:
> On 12/03/2021 14:57:54+0100, Enrico Weigelt, metux IT consult wrote:
> > On 02.03.21 06:30, Drew Fustini wrote:
> > > Add "pinmux-select" to debugfs which will activate a pin function for a
> > > given pin group:
> > >
> > > echo "<group-name function-name>" > pinmux-select
> > >
> > > The write operation pinmux_select() handles this by checking that the
> > > names map to valid selectors and then calling ops->set_mux().
> >
> > I've already been playing with similar idea, but for external muxes.
> > For example, some boards have multiple SIM slots that can be switched
> > via some gpio pin.
> >
> > Not sure whether traditional pinmux would be a good match for that.
>
> If you want to be able to use both, then I guess gpio-mux is what you
> are looking for. Obviously, it will also require support in the bus
> core. On what bus are those SIMs? (I guess the answer will be UART and
> then unfortunately UARTs are not represented as busses).
We do have support for devices connected to UARTs.
See patternProperties in Documentation/devicetree/bindings/serial/serial.yaml.
Or do you mean something different?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v9 2/4] pinctrl: pinmux: Add pinmux-select debugfs file
2021-03-13 18:47 ` Geert Uytterhoeven
@ 2021-03-18 19:40 ` Enrico Weigelt, metux IT consult
0 siblings, 0 replies; 12+ messages in thread
From: Enrico Weigelt, metux IT consult @ 2021-03-18 19:40 UTC (permalink / raw)
To: Geert Uytterhoeven, Alexandre Belloni
Cc: Drew Fustini, Linus Walleij, open list:GPIO SUBSYSTEM,
Linux Kernel Mailing List, Tony Lindgren, Andy Shevchenko,
Pantelis Antoniou, Jason Kridner, Robert Nelson, Joe Perches,
Dan Carpenter, Jonathan Corbet, open list:DOCUMENTATION,
Geert Uytterhoeven
On 13.03.21 19:47, Geert Uytterhoeven wrote:
>>> I've already been playing with similar idea, but for external muxes.
>>> For example, some boards have multiple SIM slots that can be switched
>>> via some gpio pin.
>>>
>>> Not sure whether traditional pinmux would be a good match for that.
>>
>> If you want to be able to use both, then I guess gpio-mux is what you
>> are looking for. Obviously, it will also require support in the bus
>> core. On what bus are those SIMs? (I guess the answer will be UART and
>> then unfortunately UARTs are not represented as busses).
>
> We do have support for devices connected to UARTs.
> See patternProperties in Documentation/devicetree/bindings/serial/serial.yaml.
> Or do you mean something different?
in my case, the SIM cards are connected directly to the baseband
(there're extra lines on the m2 slots for that). CPU doesn't ever see
any of this traffic, just can select which SIM card is routed to the
m2 slot via gpio.
--mtx
--
---
Hinweis: unverschlüsselte E-Mails können leicht abgehört und manipuliert
werden ! Für eine vertrauliche Kommunikation senden Sie bitte ihren
GPG/PGP-Schlüssel zu.
---
Enrico Weigelt, metux IT consult
Free software and Linux embedded engineering
info@metux.net -- +49-151-27565287
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v9 2/4] pinctrl: pinmux: Add pinmux-select debugfs file
2021-03-12 13:57 ` Enrico Weigelt, metux IT consult
2021-03-13 8:42 ` Drew Fustini
2021-03-13 9:28 ` Alexandre Belloni
@ 2021-03-15 16:24 ` Linus Walleij
2 siblings, 0 replies; 12+ messages in thread
From: Linus Walleij @ 2021-03-15 16:24 UTC (permalink / raw)
To: Enrico Weigelt, metux IT consult
Cc: Drew Fustini, open list:GPIO SUBSYSTEM, linux-kernel,
Tony Lindgren, Andy Shevchenko, Alexandre Belloni,
Geert Uytterhoeven, Pantelis Antoniou, Jason Kridner,
Robert Nelson, Joe Perches, Dan Carpenter, Jonathan Corbet,
Linux Doc Mailing List, Geert Uytterhoeven
On Fri, Mar 12, 2021 at 2:57 PM Enrico Weigelt, metux IT consult
<lkml@metux.net> wrote:
> On 02.03.21 06:30, Drew Fustini wrote:
>
> Hi folks,
>
> > Add "pinmux-select" to debugfs which will activate a pin function for a
> > given pin group:
> >
> > echo "<group-name function-name>" > pinmux-select
> >
> > The write operation pinmux_select() handles this by checking that the
> > names map to valid selectors and then calling ops->set_mux().
>
> I've already been playing with similar idea, but for external muxes.
> For example, some boards have multiple SIM slots that can be switched
> via some gpio pin.
>
> Not sure whether traditional pinmux would be a good match for that.
What is wrong with the subsystem
drivers/mux?
It's exactly for this usecase I think. Peter Rosin already wrote
a GPIO-controlled mux driver too.
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v9 3/4] Documentation: rename pinctl to pin-control
2021-03-02 5:30 [PATCH v9 0/4] pinctrl: pinmux: Add pinmux-select debugfs file Drew Fustini
2021-03-02 5:30 ` [PATCH v9 1/4] pinctrl: use to octal permissions for debugfs files Drew Fustini
2021-03-02 5:30 ` [PATCH v9 2/4] pinctrl: pinmux: Add pinmux-select debugfs file Drew Fustini
@ 2021-03-02 5:30 ` Drew Fustini
2021-03-02 5:30 ` [PATCH v9 4/4] docs/pinctrl: document debugfs files Drew Fustini
2021-03-10 13:43 ` [PATCH v9 0/4] pinctrl: pinmux: Add pinmux-select debugfs file Linus Walleij
4 siblings, 0 replies; 12+ messages in thread
From: Drew Fustini @ 2021-03-02 5:30 UTC (permalink / raw)
To: Linus Walleij, linux-gpio, linux-kernel, Tony Lindgren,
Andy Shevchenko, Alexandre Belloni, Geert Uytterhoeven,
Pantelis Antoniou, Jason Kridner, Robert Nelson, Joe Perches,
Dan Carpenter, Jonathan Corbet, linux-doc
Cc: Drew Fustini
pinctl is not ideal as pinctrl (with an 'r') is much more common. Linus
state that pin-control.rst would be the best name for the documentation.
Link: https://lore.kernel.org/linux-gpio/20210126050817.GA187797@x1/#t
Suggested-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Drew Fustini <drew@beagleboard.org>
---
Documentation/driver-api/gpio/legacy.rst | 2 +-
Documentation/driver-api/index.rst | 2 +-
Documentation/driver-api/{pinctl.rst => pin-control.rst} | 0
MAINTAINERS | 2 +-
4 files changed, 3 insertions(+), 3 deletions(-)
rename Documentation/driver-api/{pinctl.rst => pin-control.rst} (100%)
diff --git a/Documentation/driver-api/gpio/legacy.rst b/Documentation/driver-api/gpio/legacy.rst
index 9bc34ba697d9..9b12eeb89170 100644
--- a/Documentation/driver-api/gpio/legacy.rst
+++ b/Documentation/driver-api/gpio/legacy.rst
@@ -461,7 +461,7 @@ pin controller?
This is done by registering "ranges" of pins, which are essentially
cross-reference tables. These are described in
-Documentation/driver-api/pinctl.rst
+Documentation/driver-api/pin-control.rst
While the pin allocation is totally managed by the pinctrl subsystem,
gpio (under gpiolib) is still maintained by gpio drivers. It may happen
diff --git a/Documentation/driver-api/index.rst b/Documentation/driver-api/index.rst
index f357f3eb400c..cd382bda2cf9 100644
--- a/Documentation/driver-api/index.rst
+++ b/Documentation/driver-api/index.rst
@@ -60,7 +60,7 @@ available subsections can be seen below.
80211/index
uio-howto
firmware/index
- pinctl
+ pin-control
gpio/index
md/index
media/index
diff --git a/Documentation/driver-api/pinctl.rst b/Documentation/driver-api/pin-control.rst
similarity index 100%
rename from Documentation/driver-api/pinctl.rst
rename to Documentation/driver-api/pin-control.rst
diff --git a/MAINTAINERS b/MAINTAINERS
index 281de213ef47..c54c98910dd4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -13800,7 +13800,7 @@ L: linux-gpio@vger.kernel.org
S: Maintained
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git
F: Documentation/devicetree/bindings/pinctrl/
-F: Documentation/driver-api/pinctl.rst
+F: Documentation/driver-api/pin-control.rst
F: drivers/pinctrl/
F: include/linux/pinctrl/
--
2.25.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v9 4/4] docs/pinctrl: document debugfs files
2021-03-02 5:30 [PATCH v9 0/4] pinctrl: pinmux: Add pinmux-select debugfs file Drew Fustini
` (2 preceding siblings ...)
2021-03-02 5:30 ` [PATCH v9 3/4] Documentation: rename pinctl to pin-control Drew Fustini
@ 2021-03-02 5:30 ` Drew Fustini
2021-03-10 13:43 ` [PATCH v9 0/4] pinctrl: pinmux: Add pinmux-select debugfs file Linus Walleij
4 siblings, 0 replies; 12+ messages in thread
From: Drew Fustini @ 2021-03-02 5:30 UTC (permalink / raw)
To: Linus Walleij, linux-gpio, linux-kernel, Tony Lindgren,
Andy Shevchenko, Alexandre Belloni, Geert Uytterhoeven,
Pantelis Antoniou, Jason Kridner, Robert Nelson, Joe Perches,
Dan Carpenter, Jonathan Corbet, linux-doc
Cc: Drew Fustini
Document debugfs directories and files created for pinctrl subsystem.
Suggested-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Drew Fustini <drew@beagleboard.org>
---
Documentation/driver-api/pin-control.rst | 37 ++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/Documentation/driver-api/pin-control.rst b/Documentation/driver-api/pin-control.rst
index 3d2deaf48841..c905b273e833 100644
--- a/Documentation/driver-api/pin-control.rst
+++ b/Documentation/driver-api/pin-control.rst
@@ -1428,3 +1428,40 @@ on the pins defined by group B::
The above has to be done from process context. The reservation of the pins
will be done when the state is activated, so in effect one specific pin
can be used by different functions at different times on a running system.
+
+
+Debugfs files
+=============
+These files are created in ``/sys/kernel/debug/pinctrl``:
+
+- ``pinctrl-devices``: prints each pin controller device along with columns to
+ indicate support for pinmux and pinconf
+
+- ``pinctrl-handles``: prints each configured pin controller handle and the
+ corresponding pinmux maps
+
+- ``pinctrl-maps``: print all pinctrl maps
+
+A sub-directory is created inside of ``/sys/kernel/debug/pinctrl`` for each pin
+controller device containing these files:
+
+- ``pins``: prints a line for each pin registered on the pin controller. The
+ pinctrl driver may add additional information such as register contents.
+
+- ``gpio-ranges``: print ranges that map gpio lines to pins on the controller
+
+- ``pingroups``: print all pin groups registered on the pin controller
+
+- ``pinconf-pins``: print pin config settings for each pin
+
+- ``pinconf-groups``: print pin config settings per pin group
+
+- ``pinmux-functions``: print each pin function along with the pin groups that
+ map to the pin function
+
+- ``pinmux-pins``: iterate through all pins and print mux owner, gpio owner
+ and if the pin is a hog
+
+- ``pinmux-select``: write to this file to activate a pin function for a group::
+
+ echo "<group-name function-name>" > pinmux-select
--
2.25.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v9 0/4] pinctrl: pinmux: Add pinmux-select debugfs file
2021-03-02 5:30 [PATCH v9 0/4] pinctrl: pinmux: Add pinmux-select debugfs file Drew Fustini
` (3 preceding siblings ...)
2021-03-02 5:30 ` [PATCH v9 4/4] docs/pinctrl: document debugfs files Drew Fustini
@ 2021-03-10 13:43 ` Linus Walleij
4 siblings, 0 replies; 12+ messages in thread
From: Linus Walleij @ 2021-03-10 13:43 UTC (permalink / raw)
To: Drew Fustini
Cc: open list:GPIO SUBSYSTEM, linux-kernel, Tony Lindgren,
Andy Shevchenko, Alexandre Belloni, Geert Uytterhoeven,
Pantelis Antoniou, Jason Kridner, Robert Nelson, Joe Perches,
Dan Carpenter, Jonathan Corbet, Linux Doc Mailing List
On Tue, Mar 2, 2021 at 6:32 AM Drew Fustini <drew@beagleboard.org> wrote:
> This series first converts the debugfs files in the pinctrl subsystem to
> octal permissions and then adds a new debugfs file "pinmux-select".
>
> Group name and function name can be written to "pinmux-select" which
> will cause the pin function for the specified group to be activated on
> the pin controller.
>
> This series also renames documentation from pinctl to pin-control and
> adds documentation for the pinctrl debugfs files.
>
> Notes for PATCH v9:
> - rename pinctl.rst documentation to pin-control.rst per discussion
> with Linus W.
Excellent, I have applied this v9 version!
Good job!
Linus Walleij
^ permalink raw reply [flat|nested] 12+ messages in thread