PWM
imx6ull有8路PWM输出
NXP定义结构体imx_chip, 下面的pwd_chip是内核自己的结构体,
对应的结构体是
static struct imx_pwm_data imx_pwm_data_v2 = {
.config = imx_pwm_config_v2,
.set_enable = imx_pwm_set_enable_v2,
};
imx_chip
struct imx_chip {
struct clk *clk_per;
struct clk *clk_ipg;
void __iomem *mmio_base;
struct pwm_chip chip;
int (*config)(struct pwm_chip *chip,
struct pwm_device *pwm, int duty_ns, int period_ns);
void (*set_enable)(struct pwm_chip *chip, bool enable);
};
最终imx_chip->config = imx_pwm_config_v2, imx_chip->set_enable = imx_pwm_set_enable_v2
pwm_chip
struct pwm_chip {
struct device *dev;
struct list_head list;
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;
};
里面的ops包括了开启关闭, 切换频率等
初始化这个结构体之后, 使用pwnchip_add进行注册
1 &pwm3 {
2 pinctrl-names ="default";
3 pinctrl-0=<&pinctrl_pwm3>;
4 clocks =<&clks IMX6UL_CLK_PWM3>,
5 <&clks IMX6UL_CLK_PWM3>;
6 status ="okay";
7 };
设备树
-> Device Drivers -> Pulse-Width Modulation (PWM) Support -> <*> i.MX PWM support
图形化界面
直接看linux内核里面关于backlight(背光)的绑定文档,路径为Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt