Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
PWMBUS(9)		   Kernel Developer's Manual		     PWMBUS(9)

NAME
       pwmbus,		 PWMBUS_CHANNEL_CONFIG,		 PWMBUS_CHANNEL_COUNT,
       PWMBUS_CHANNEL_ENABLE,			    PWMBUS_CHANNEL_GET_CONFIG,
       PWMBUS_CHANNEL_GET_FLAGS,		    PWMBUS_CHANNEL_IS_ENABLED,
       PWMBUS_CHANNEL_SET_FLAGS, PWMBUS_GET_BUS	-- PWMBUS methods

SYNOPSIS
       device pwm
       #include	<pwmbus_if.h>

       int
       PWMBUS_CHANNEL_CONFIG(device_t  bus,  u_int  channel,   u_int   period,
	     u_int duty);

       int
       PWMBUS_CHANNEL_COUNT(device_t bus, u_int	*nchannel);

       int
       PWMBUS_CHANNEL_ENABLE(device_t bus, u_int channel, bool enable);

       int
       PWMBUS_CHANNEL_GET_CONFIG(device_t  bus,	 u_int channel,	u_int *period,
	     u_int *duty);

       int
       PWMBUS_CHANNEL_GET_FLAGS(device_t bus, u_int channel, uint32_t *flags);

       int
       PWMBUS_CHANNEL_IS_ENABLED(device_t bus, u_int channel, bool *enabled);

       int
       PWMBUS_CHANNEL_SET_FLAGS(device_t bus, u_int channel, uint32_t flags);

DESCRIPTION
       The PWMBUS (Pulse-Width Modulation) interface allows a device driver to
       register	to a global bus	so other devices in the	kernel can use them in
       a generic way.

       For all pwmbus methods, the period argument is the duration in nanosec-
       onds of one complete on-off cycle, and the duty argument	is  the	 dura-
       tion in nanoseconds of the on portion of	that cycle.

       Some  PWM  hardware  is	organized as a single controller with multiple
       channels.  Channel numbers count	up from	zero.  When multiple  channels
       are  present,  they  sometimes share a common clock or other resources.
       In such cases, changing the period or duty cycle	of any one channel may
       affect other channels within the	hardware  which	 share	the  same  re-
       sources.	 Consult the documentation for the underlying PWM hardware de-
       vice driver for details on channels that	share resources.

INTERFACE
       PWMBUS_CHANNEL_CONFIG(device_t  bus, u_int channel, u_int period, u_int
	       duty)
	       Configure the period and	duty (in nanoseconds) in the PWM  con-
	       troller	on  the	 bus  for the specified	channel.  Returns 0 on
	       success or EINVAL if the	values are not supported by  the  con-
	       troller	or  EBUSY  if the PWMBUS controller is in use and does
	       not support changing the	value on the fly.

       PWMBUS_CHANNEL_COUNT(device_t bus, u_int	*nchannel)
	       Get the number of channels supported by the controller.

       PWMBUS_CHANNEL_ENABLE(device_t bus, u_int channel, bool enable)
	       Enable the PWM channel.

       PWMBUS_CHANNEL_GET_CONFIG(device_t bus, u_int channel,  u_int  *period,
	       u_int *duty)
	       Get  the	 current  configuration	of the period and duty for the
	       specified channel.

       PWMBUS_CHANNEL_GET_FLAGS(device_t bus, u_int channel, uint32_t *flags)
	       Get the current flags for the channel.  If the driver  or  con-
	       troller does not	support	this, a	default	method returns a flags
	       value of	zero.

       PWMBUS_CHANNEL_IS_ENABLED(device_t bus, u_int channel, bool *enable)
	       Test whether the	PWM channel is enabled.

       PWMBUS_CHANNEL_SET_FLAGS(device_t bus, u_int channel, uint32_t flags)
	       Set  the	 flags of the channel (such as inverted	polarity).  If
	       the driver or controller	does not support this a	do-nothing de-
	       fault method is used.

HISTORY
       The pwmbus interface first appear in FreeBSD 13.0.  The	pwmbus	inter-
       face and	manual page was	written	by Emmanuel Vadot <manu@FreeBSD.org>.

FreeBSD	13.2			 March 9, 2021			     PWMBUS(9)

NAME | SYNOPSIS | DESCRIPTION | INTERFACE | HISTORY

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=pwm&sektion=9&manpath=FreeBSD+14.0-RELEASE+and+Ports>

home | help