diff mbox series

[v3] doc: document the pwm command

Message ID 20240801100754.44732-1-emil.kronborg@protonmail.com
State Changes Requested, archived
Delegated to: Heinrich Schuchardt
Headers show
Series [v3] doc: document the pwm command | expand

Commit Message

Emil Kronborg Aug. 1, 2024, 10:07 a.m. UTC
Signed-off-by: Emil Kronborg <emil.kronborg@protonmail.com>
---
Changes in v3:
- The help text for 'pwm config' in the examples section is more
  explicit about 20 us and 14 us for the period and duty cycle,
  respectively.
- Fixed 'pwm enable' and 'pwm disable' in the examples section to only
  expect 2 arguments.
- Rebased on top of master.

 doc/usage/cmd/pwm.rst | 80 +++++++++++++++++++++++++++++++++++++++++++
 doc/usage/index.rst   |  1 +
 2 files changed, 81 insertions(+)
 create mode 100644 doc/usage/cmd/pwm.rst


base-commit: 7010f22eba35b2a6b66ba37ce565e566ca08c68f

Comments

Emil Kronborg Aug. 1, 2024, 11:19 a.m. UTC | #1
Hi Quentin,

> On 8/1/24 12:07 PM, Emil Kronborg wrote:
> > [...]
> > +.. SPDX-License-Identifier: GPL-2.0+:
> 
> This isn't a valid identifier (spurious ':') I believe.
> 
> Also, I would highly suggest to change it to GPL-2.0-or-later which is
> the current naming scheme for the same license, c.f.
> https://spdx.org/licenses/
> 
> Otherwise, looking good so with that changed:
> 
> Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
> 
> Thanks!
> Quentin


> On 8/1/24 12:07 PM, Emil Kronborg wrote:
> > [...]
> > +.. SPDX-License-Identifier: GPL-2.0+:
> 
> This isn't a valid identifier (spurious ':') I believe.

Hm, I agree that it looks weird, but I think it is fine. There seems to
be a mix of colon and no colon though.

    $ git grep "SPDX-License-Identifier: GPL-2.0+:" doc/usage/ | wc -l
    48
    $ git grep "SPDX-License-Identifier: GPL-2.0+" doc/usage/ | wc -l
    114

With that said, GPL-2.0-or-later is most correct to use, and probably
_without_ a trailing colon. In fact, GPL-2.0+ is actually deprecated
according to the link you sent.

Should I send a new patch where the license is fixed?
Heinrich Schuchardt Aug. 2, 2024, 3:28 p.m. UTC | #2
On 01.08.24 12:07, Emil Kronborg wrote:
> Signed-off-by: Emil Kronborg <emil.kronborg@protonmail.com>
> ---
> Changes in v3:
> - The help text for 'pwm config' in the examples section is more
>    explicit about 20 us and 14 us for the period and duty cycle,
>    respectively.
> - Fixed 'pwm enable' and 'pwm disable' in the examples section to only
>    expect 2 arguments.
> - Rebased on top of master.
> 
>   doc/usage/cmd/pwm.rst | 80 +++++++++++++++++++++++++++++++++++++++++++
>   doc/usage/index.rst   |  1 +
>   2 files changed, 81 insertions(+)
>   create mode 100644 doc/usage/cmd/pwm.rst
> 
> diff --git a/doc/usage/cmd/pwm.rst b/doc/usage/cmd/pwm.rst
> new file mode 100644
> index 000000000000..bd1255d82186
> --- /dev/null
> +++ b/doc/usage/cmd/pwm.rst
> @@ -0,0 +1,80 @@
> +.. SPDX-License-Identifier: GPL-2.0+:
> +
> +.. index::
> +   single: pwm (command)
> +
> +pwm command
> +===========
> +
> +Synopsis
> +--------
> +
> +::
> +
> +    pwm invert <pwm_dev_num> <channel> <polarity> - invert polarity
> +    pwm config <pwm_dev_num> <channel> <period_ns> <duty_ns> - config PWM
> +    pwm enable <pwm_dev_num> <channel> - enable PWM output
> +    pwm disable <pwm_dev_num> <channel> - disable PWM output

Thank you for documenting the command.

To stay consistent with other pages, please, remove the descriptions 
here. They are available below.

> +
> +
> +Description
> +-----------
> +
> +The ``pwm`` command is used to access and configure PWM (Pulse Width Modulation)
> +signals. For all subcommands, the following arguments are common:
> +
> +pwm_dev_num
> +    device number
> +
> +channel
> +    channel on chosen device
> +
> +pwm invert
> +----------
> +
> +The signal's active and inactive states are swapped.

This would imply that all invocations irrespective of the polarity value 
swap the active and inactive state.

I guess we could say here:

The polarity of the signal is set.

If the value of `polarity` is 0, the default polarity is used.
If the value of `polarity` is 1, the polarity is inverted.

> +
> +pwm config
> +----------
> +
> +Configure the period and duty cycle in nanoseconds.

According to https://en.wikipedia.org/wiki/Duty_cycle "duty cycle" is 
the ratio of "pulse active time" and "total period". This implies that 
it is dimensionless.

%s/duty cycle/pulse width/ or "duty period" as in pwm.h.

> +
> +pwm enable
> +----------
> +
> +Enable output on the configured device and channel.

What happens if the device-channel combination is not configured yet?

> +
> +pwm disable
> +-----------
> +
> +Disable output on the configured device and channel.



Please, describe the parameters here:

pwm_dev_num
    Device number of the pulse width modulation device

channel
    Output channel of the PWM device

polarity
    * 0 - use normal polarity
    * 1 - use inverted polarity

duty_ns
    pulse width in ns

period_ns
    cycle time in ns


> +
> +Examples
> +--------
> +
> +Configure device 0 channel 0 to 20 us period and 14 us (that is, 70%) duty cycle::

Please, add comma, use 'µs', and don't misuse 'duty cycle':

"Configure device 0, channel 0 to 20 µs period time and 14 µs (that is, 
70%) pulse width::"

Best regards

Heinrich

> +
> +    => pwm config 0 0 20000 14000
> +
> +Enable output on the configured device and channel::
> +
> +    => pwm enable 0 0
> +
> +Disable output on the configured device and channel::
> +
> +    => pwm disable 0 0
> +
> +Invert the signal on the configured device and channel::
> +
> +    => pwm invert 0 0 1
> +
> +Configuration
> +-------------
> +
> +The ``pwm`` command is only available if CONFIG_CMD_PWM=y.
> +
> +Return value
> +------------
> +
> +If the command succeeds, the return value ``$?`` is set to 0. If an error occurs, the
> +return value ``$?`` is set to 1.
> diff --git a/doc/usage/index.rst b/doc/usage/index.rst
> index 49b354e6ffd2..1adab5283950 100644
> --- a/doc/usage/index.rst
> +++ b/doc/usage/index.rst
> @@ -92,6 +92,7 @@ Shell commands
>      cmd/pinmux
>      cmd/printenv
>      cmd/pstore
> +   cmd/pwm
>      cmd/qfw
>      cmd/read
>      cmd/reset
> 
> base-commit: 7010f22eba35b2a6b66ba37ce565e566ca08c68f
Emil Kronborg Aug. 5, 2024, 12:48 p.m. UTC | #3
On Fri, Aug 02, 2024 at 17:28 GMT, Heinrich Schuchardt wrote:
> On 01.08.24 12:07, Emil Kronborg wrote:
> > [...]
> > +Synopsis
> > +--------
> > +
> > +::
> > +
> > +    pwm invert <pwm_dev_num> <channel> <polarity> - invert polarity
> > +    pwm config <pwm_dev_num> <channel> <period_ns> <duty_ns> - config PWM
> > +    pwm enable <pwm_dev_num> <channel> - enable PWM output
> > +    pwm disable <pwm_dev_num> <channel> - disable PWM output
> 
> To stay consistent with other pages, please, remove the descriptions
> here. They are available below.
> 

Hm, all other documented commands in /doc/usage/cmd have a Synopsis
section except for the write command, which refers to the read command.
Wouldn't this break the consistency?

> > +pwm invert
> > +----------
> > +
> > +The signal's active and inactive states are swapped.
> 
> This would imply that all invocations irrespective of the polarity value
> swap the active and inactive state.
> 
> I guess we could say here:
> 
> The polarity of the signal is set.
> 
> If the value of `polarity` is 0, the default polarity is used.
> If the value of `polarity` is 1, the polarity is inverted.

Your suggestion is more precise. I will include it in the next revision.

> > +pwm config
> > +----------
> > +
> > +Configure the period and duty cycle in nanoseconds.
> 
> According to https://en.wikipedia.org/wiki/Duty_cycle "duty cycle" is
> the ratio of "pulse active time" and "total period". This implies that
> it is dimensionless.
> 
> %s/duty cycle/pulse width/ or "duty period" as in pwm.h.

That's a good point. I will also include this change.

> > +
> > +pwm enable
> > +----------
> > +
> > +Enable output on the configured device and channel.
> 
> What happens if the device-channel combination is not configured yet?

The device is enabled with whatever period and duty period are currently
set. My guess is that the default reset values of the SoC are used.

    => pwm enable 0 0
    => echo $?
    0
    => pwm config 0 0 20000 14000
    => pwm enable 0 0
    => echo $?
    0

> > +
> > +pwm disable
> > +-----------
> > +
> > +Disable output on the configured device and channel.
> 
> 
> 
> Please, describe the parameters here:
> 
> pwm_dev_num
>     Device number of the pulse width modulation device
> 
> channel
>     Output channel of the PWM device
> 
> polarity
>     * 0 - use normal polarity
>     * 1 - use inverted polarity
> 
> duty_ns
>     pulse width in ns
> 
> period_ns
>     cycle time in ns
> 

The common arguments, namely pwm_dev_num and channel, are already
described in the Description section. The parameters polarity, duty_ns,
and period_ns are detailed within the command descriptions. Including
them again here might be redundant.

It seems like you want some specific layout. Is there some described
command I can use as reference? Or is it documented somewhere how to
describe a command properly? I used some of the commonly used commands
as reference, but even those are documented differently.

> > +
> > +Examples
> > +--------
> > +
> > +Configure device 0 channel 0 to 20 us period and 14 us (that is, 70%) duty cycle::
> 
> Please, add comma, use 'µs', and don't misuse 'duty cycle':
> 
> "Configure device 0, channel 0 to 20 µs period time and 14 µs (that is,
> 70%) pulse width::"
> 

I wasn't sure if it was allowed to use characters like 'µ', but it's
good to know that it is allowed; I think it looks better.

Thanks for reviewing.
Heinrich Schuchardt Aug. 5, 2024, 12:50 p.m. UTC | #4
On 05.08.24 14:48, Emil Kronborg wrote:
> On Fri, Aug 02, 2024 at 17:28 GMT, Heinrich Schuchardt wrote:
>> On 01.08.24 12:07, Emil Kronborg wrote:
>>> [...]
>>> +Synopsis
>>> +--------
>>> +
>>> +::
>>> +
>>> +    pwm invert <pwm_dev_num> <channel> <polarity> - invert polarity
>>> +    pwm config <pwm_dev_num> <channel> <period_ns> <duty_ns> - config PWM
>>> +    pwm enable <pwm_dev_num> <channel> - enable PWM output
>>> +    pwm disable <pwm_dev_num> <channel> - disable PWM output
>>
>> To stay consistent with other pages, please, remove the descriptions
>> here. They are available below.
>>
> 
> Hm, all other documented commands in /doc/usage/cmd have a Synopsis
> section except for the write command, which refers to the read command.
> Wouldn't this break the consistency?

I meant, please, remove " - invert polarity", etc.

Best regards

Heinrich

> 
>>> +pwm invert
>>> +----------
>>> +
>>> +The signal's active and inactive states are swapped.
>>
>> This would imply that all invocations irrespective of the polarity value
>> swap the active and inactive state.
>>
>> I guess we could say here:
>>
>> The polarity of the signal is set.
>>
>> If the value of `polarity` is 0, the default polarity is used.
>> If the value of `polarity` is 1, the polarity is inverted.
> 
> Your suggestion is more precise. I will include it in the next revision.
> 
>>> +pwm config
>>> +----------
>>> +
>>> +Configure the period and duty cycle in nanoseconds.
>>
>> According to https://en.wikipedia.org/wiki/Duty_cycle "duty cycle" is
>> the ratio of "pulse active time" and "total period". This implies that
>> it is dimensionless.
>>
>> %s/duty cycle/pulse width/ or "duty period" as in pwm.h.
> 
> That's a good point. I will also include this change.
> 
>>> +
>>> +pwm enable
>>> +----------
>>> +
>>> +Enable output on the configured device and channel.
>>
>> What happens if the device-channel combination is not configured yet?
> 
> The device is enabled with whatever period and duty period are currently
> set. My guess is that the default reset values of the SoC are used.
> 
>      => pwm enable 0 0
>      => echo $?
>      0
>      => pwm config 0 0 20000 14000
>      => pwm enable 0 0
>      => echo $?
>      0
> 
>>> +
>>> +pwm disable
>>> +-----------
>>> +
>>> +Disable output on the configured device and channel.
>>
>>
>>
>> Please, describe the parameters here:
>>
>> pwm_dev_num
>>      Device number of the pulse width modulation device
>>
>> channel
>>      Output channel of the PWM device
>>
>> polarity
>>      * 0 - use normal polarity
>>      * 1 - use inverted polarity
>>
>> duty_ns
>>      pulse width in ns
>>
>> period_ns
>>      cycle time in ns
>>
> 
> The common arguments, namely pwm_dev_num and channel, are already
> described in the Description section. The parameters polarity, duty_ns,
> and period_ns are detailed within the command descriptions. Including
> them again here might be redundant.
> 
> It seems like you want some specific layout. Is there some described
> command I can use as reference? Or is it documented somewhere how to
> describe a command properly? I used some of the commonly used commands
> as reference, but even those are documented differently.
> 
>>> +
>>> +Examples
>>> +--------
>>> +
>>> +Configure device 0 channel 0 to 20 us period and 14 us (that is, 70%) duty cycle::
>>
>> Please, add comma, use 'µs', and don't misuse 'duty cycle':
>>
>> "Configure device 0, channel 0 to 20 µs period time and 14 µs (that is,
>> 70%) pulse width::"
>>
> 
> I wasn't sure if it was allowed to use characters like 'µ', but it's
> good to know that it is allowed; I think it looks better.
> 
> Thanks for reviewing.
>
diff mbox series

Patch

diff --git a/doc/usage/cmd/pwm.rst b/doc/usage/cmd/pwm.rst
new file mode 100644
index 000000000000..bd1255d82186
--- /dev/null
+++ b/doc/usage/cmd/pwm.rst
@@ -0,0 +1,80 @@ 
+.. SPDX-License-Identifier: GPL-2.0+:
+
+.. index::
+   single: pwm (command)
+
+pwm command
+===========
+
+Synopsis
+--------
+
+::
+
+    pwm invert <pwm_dev_num> <channel> <polarity> - invert polarity
+    pwm config <pwm_dev_num> <channel> <period_ns> <duty_ns> - config PWM
+    pwm enable <pwm_dev_num> <channel> - enable PWM output
+    pwm disable <pwm_dev_num> <channel> - disable PWM output
+
+
+Description
+-----------
+
+The ``pwm`` command is used to access and configure PWM (Pulse Width Modulation)
+signals. For all subcommands, the following arguments are common:
+
+pwm_dev_num
+    device number
+
+channel
+    channel on chosen device
+
+pwm invert
+----------
+
+The signal's active and inactive states are swapped.
+
+pwm config
+----------
+
+Configure the period and duty cycle in nanoseconds.
+
+pwm enable
+----------
+
+Enable output on the configured device and channel.
+
+pwm disable
+-----------
+
+Disable output on the configured device and channel.
+
+Examples
+--------
+
+Configure device 0 channel 0 to 20 us period and 14 us (that is, 70%) duty cycle::
+
+    => pwm config 0 0 20000 14000
+
+Enable output on the configured device and channel::
+
+    => pwm enable 0 0
+
+Disable output on the configured device and channel::
+
+    => pwm disable 0 0
+
+Invert the signal on the configured device and channel::
+
+    => pwm invert 0 0 1
+
+Configuration
+-------------
+
+The ``pwm`` command is only available if CONFIG_CMD_PWM=y.
+
+Return value
+------------
+
+If the command succeeds, the return value ``$?`` is set to 0. If an error occurs, the
+return value ``$?`` is set to 1.
diff --git a/doc/usage/index.rst b/doc/usage/index.rst
index 49b354e6ffd2..1adab5283950 100644
--- a/doc/usage/index.rst
+++ b/doc/usage/index.rst
@@ -92,6 +92,7 @@  Shell commands
    cmd/pinmux
    cmd/printenv
    cmd/pstore
+   cmd/pwm
    cmd/qfw
    cmd/read
    cmd/reset