All of lore.kernel.org
 help / color / mirror / Atom feed
From: Drew Fustini <drew@beagleboard.org>
To: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Linus Walleij <linus.walleij@linaro.org>,
	"open list:GPIO SUBSYSTEM" <linux-gpio@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Tony Lindgren <tony@atomide.com>,
	Alexandre Belloni <alexandre.belloni@bootlin.com>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Pantelis Antoniou <pantelis.antoniou@konsulko.com>,
	Jason Kridner <jkridner@beagleboard.org>,
	Robert Nelson <robertcnelson@beagleboard.org>,
	Joe Perches <joe@perches.com>,
	Dan Carpenter <dan.carpenter@oracle.com>
Subject: Re: [PATCH v5 2/2] pinctrl: pinmux: Add pinmux-select debugfs file
Date: Mon, 15 Feb 2021 13:09:49 -0800	[thread overview]
Message-ID: <20210215210949.GA1012667@x1> (raw)
In-Reply-To: <CAHp75VeqbKjg7pLCgO9-vd2NnqQy6VPaRFKrAWn-1TaJgi1-SA@mail.gmail.com>

On Mon, Feb 15, 2021 at 09:04:20PM +0200, Andy Shevchenko wrote:
> On Sat, Feb 13, 2021 at 12:30 AM Drew Fustini <drew@beagleboard.org> wrote:
> >
> > Add "pinmux-select" to debugfs which will activate a function and group
> > when "<function-name group-name>" are written to the file. The write
> 
> The non-standard way of showing parameters, I would write that as
>  "<function-name> <group-name>".

Sorry for your comments, but I don't understand what you mean by this
one.  I think we wrote ""<function-name> <group-name>" the same way, no?

> 
> > 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 ]
> 
> Format this...
> 
> > To activate function pinmux-i2c1 and group pinmux-i2c1-pins:
> >
> > echo "pinmux-i2c1 pinmux-i2c1-pins" > pinmux-select
> 
> ...and this with two leading spaces (for example) to make sure that
> people will understand that these lines are part of the example.

Ok, thanks.

> 
> ...
> 
> >  drivers/pinctrl/pinmux.c | 99 ++++++++++++++++++++++++++++++++++++++++
> 
> Still needs a documentation update.

There is no documentation for any of the existing pinctrl debugfs files.
I was planning to do this as part of a seperate patch, but I can make it
part of this series instead.

> 
> ...
> 
> > +       const char *usage =
> > +               "usage: echo '<function-name> <group-name>' > pinmux-select";
> 
> This is quite unusual to have in the kernel. Just return an error
> code, everything else should be simply documented.
> 
> ...
> 
> > +       if (len > PINMUX_SELECT_MAX) {
> 
> > +               dev_err(pctldev->dev, "write too big for buffer");
> 
> Noisy, the user will get an error code and interpret it properly.
> So, please drop them all. Otherwise it would be quite easy to exhaust
> kernel buffer with this noise and lost the important messages.
> 
> > +               return -EINVAL;
> 
> To achieve the above, this rather should be -ENOMEM.
> 
> > +       }

Thanks, I will remove the usage message and change the return value.

> 
> ...
> 
> > +       gname = strchr(fname, ' ');
> > +       if (!gname) {
> > +               dev_err(pctldev->dev, usage);
> > +               ret = -EINVAL;
> > +               goto free_buf;
> > +       }
> > +       *gname++ = '\0';
> 
> I was thinking about this again and I guess we may allow any amount of
> spaces in between and any kind of  (like newline or TAB).
> So, taking above into consideration the code may look like this:
> 
> /* Take the input and remove leading and trailing spaces of entire buffer */
> fname = strstrip(buf);
> /* Find a separator, i.e. a space character */
> for (gname = fname; !isspace(gname); gname++)
>   if (*gname == '\0')
>     return -EINVAL;
> /* Replace separator with %NUL to terminate first word */
> *gname = '\0';
> /* Drop space characters between first and second words */
> gname = skip_spaces(gname + 1);
> if (*gname == '\0')
>   return -EINVAL;
> 
> But please double check the logic.
> 
> ...


Thanks for the example code.  I'll test it out.


> 
> > +free_buf:
> 
> exit_free_buf:
> 

Ok, thanks.

> > +       kfree(buf);
> > +
> > +       return ret;
> > +}
> 
> -- 
> With Best Regards,
> Andy Shevchenko

      reply	other threads:[~2021-02-15 21:10 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-12 22:30 [PATCH v5 0/2] pinctrl: pinmux: Add pinmux-select debugfs file Drew Fustini
2021-02-12 22:30 ` [PATCH v5 1/2] pinctrl: use to octal permissions for debugfs files Drew Fustini
2021-02-13 12:56   ` Andy Shevchenko
2021-02-16  8:41   ` Geert Uytterhoeven
2021-03-02  8:36   ` Linus Walleij
2021-03-02 10:23     ` Andy Shevchenko
2021-03-02 16:22       ` Linus Walleij
2021-03-02 17:10         ` Drew Fustini
2021-02-12 22:30 ` [PATCH v5 2/2] pinctrl: pinmux: Add pinmux-select debugfs file Drew Fustini
2021-02-15 19:04   ` Andy Shevchenko
2021-02-15 21:09     ` Drew Fustini [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210215210949.GA1012667@x1 \
    --to=drew@beagleboard.org \
    --cc=alexandre.belloni@bootlin.com \
    --cc=andy.shevchenko@gmail.com \
    --cc=dan.carpenter@oracle.com \
    --cc=geert@linux-m68k.org \
    --cc=jkridner@beagleboard.org \
    --cc=joe@perches.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pantelis.antoniou@konsulko.com \
    --cc=robertcnelson@beagleboard.org \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.