PWM controller driver
As you need struct gpio_chip
when writing GPIO-controller drivers and struct irq_chip
when writing IRQ-controller drivers, a PWM controller is represented in the kernel as an instance of the struct pwm_chip
structure:

PWM controller and devices
struct pwm_chip { struct device *dev; const struct pwm_ops *ops; int base; unsigned int npwm; struct pwm_device *pwms; struct pwm_device * (*of_xlate)(struct pwm_chip *pc, const struct of_phandle_args *args); unsigned int of_pwm_n_cells; bool can_sleep; };
The following lists the meaning of each element in the structure:
dev
: This represents the device associated with the chip.Ops
: This is a data structure providing callback functions this chip exposes to consumer drivers.Base
: This is the number of the first PWM controlled by this chip. Ifchip->base < 0
, then the kernel will dynamically assign a base.can_sleep
: This should be set totrue
by the chip driver if the.config...