Provided by: freebsd-manpages_12.2-2_all bug

NAME

       pwmc — PWM (Pulse Width Modulation) control device driver

SYNOPSIS

       To compile this driver into the kernel, place the following lines in your kernel configuration file:

             device pwmbus
             device pwmc

       Alternatively, to load the driver as a module at boot time, place the following line in loader.conf(5):

             pwmc_load="YES"

DESCRIPTION

       The  pwmc  driver  provides  device-control access to a channel of PWM hardware.  Each instance of a pwmc
       device is associated with a single PWM output channel.

       Some PWM hardware is organized with multiple channels sharing a common clock or other resources.  In such
       cases, a separate pwmc instance will exist for each channel, but changing the period or duty cycle of any
       one channel may affect other channels within the hardware which share the same  resources.   Consult  the
       documentation for the underlying PWM hardware device driver for details on channels that share resources.

       An  instance  of  pwmc  creates  a character device named /dev/pwm/pwmcX.Y where X is a sequential number
       assigned to each PWM hardware controller as it is discovered by the system, and Y is the  channel  number
       within  that  hardware  controller.   The  driver  can  be configured to create aliases that point to the
       pwmcX.Y entries, in effect creating named channels.

       The pwmc driver provides control of a PWM channel with the following ioctl(2) calls and data  structures,
       defined in <dev/pwm/pwmc.h>:

       PWMGETSTATE (struct pwm_state)
               Retrieve the current state of the channel.

       PWMSETSTATE (struct pwm_state)
               Set  the current state of the channel.  All parameters are updated on every call.  To change just
               one of the values, use PWMGETSTATE to get the current state and then submit the  same  data  back
               with just the appropriate value changed.

       The pwm_state structure is defined as follows:

       struct pwm_state {
               u_int           period;
               u_int           duty;
               uint32_t        flags;
               bool            enable;
       };

       period  The duration, in nanoseconds, of one complete on-off cycle.

       duty    The duration, in nanoseconds, of the on portion of one cycle.

       flags   Flags  that  affect  the  output  signal  can  be bitwise-ORed together.  The following flags are
               currently defined:

               PWM_POLARITY_INVERTED  Invert the signal polarity.

       enable  False to disable the output signal or true to enable it.

HINTS CONFIGURATION

       On a device.hints(5) based system, such as MIPS, these values are configurable for pwmc:

       hint.pwmc.%d.at
               The pwmbus instance the pwmc instance is attached to.

       hint.pwmc.%d.channel
               The hardware channel number the instance is attached to.  Channel numbers count up from zero.

       hint.pwmc.%d.label
               If this optional hint is set, the driver creates an alias in /dev/pwm with the given name,  which
               points to the instance.

FDT CONFIGURATION

       On  an  fdt(4)  based system, a pwmc device is described with a child node of the pwm hardware controller
       node.  When the hardware supports multiple channels within the controller, it is not necessary to include
       a pwmc child node for every channel the hardware supports.  Define only the channels you need to control.

       The following properties are required for a pwmc device node:

       compatible
               Must be the string "freebsd,pwmc".

       reg     The hardware channel number.

       The following properties are optional for the pwmc device node:

       label   A string containing only characters legal in a file name.  The driver creates an alias  with  the
               given name in /dev/pwm which points to the instance's /dev/pwm/pwmcX.Y device entry.

       Example of a PWM hardware node containing one pwmc child node:

       &ehrpwm0 {
           status = "okay";
           pinctrl-names = "default";
           pinctrl-0 = <&ehrpwm0_AB_pins>;

           pwmcontrol@0 {
               compatible = "freebsd,pwmc";
               reg = <0>;
               label = "backlight";
           };
       };

FILES

       /dev/pwm/pwmc*

SEE ALSO

       fdt(4), device.hints(5), pwm(8), pwm(9)

HISTORY

       The pwmc driver appeared in FreeBSD 13.0.

Debian                                            June 17, 2019                                          PWMC(4)