(2)struct pwm_ops结构体,包括PWM控制器的操作函数。其中应该由驱动开发者实现的2个基础函数为apply函数和get_state函数;apply函数用于配置PWM控制器,包括配置PWM信号的使能状态、周期、占空比、极性等;get_state函数用于在注册PWM控制器时获取指定PWM通道信号的初始状态,包括使能状态、周期、占空比、极性等。 (3)struc...
在驱动开发过程,阅读pwm内核源码,我们发现,pwm的控制接口pwm_apply_state所需要的句柄为:pwm_device,那么我们的核心目的是不是就是如何获取 pwm_device,如果我们拿到了 pwm_device,那么也就掌握了 内核中的pwm外设。 内核中获取 pwm_device的标准接口为: structpwm_device*pwm_request(intpwm_id,constchar*label) ...
we will need two functions for applying pwm changes: int pwm_apply_might_sleep(struct pwm *, struct pwm_state *); int pwm_apply_atomic(struct pwm *, struct pwm_state *); This commit just deals with renaming pwm_apply_state(), a following commit will introduce the pwm_apply_atomic() ...
其中应该由驱动开发者实现的2个基础函数为apply函数和get_state函数; apply函数用于配置PWM控制器,包括配置PWM信号的使能状态、周期、占空比、极性等; get_state函数用于在注册PWM控制器时获取指定PWM通道信号的初始状态,包括使能状态、周期、占空比、极性等。 (3)struct pwm_device结构体,表示PWM控制器输出的PWM信号。
->pwm_apply_state--设置struct pwm_state。 4 pwm数据结构和API 4.1 pwm数据结构 struct pwm_chip是pwm子系统核心,是对一个pwm控制器的抽象: structpwm_chip {structdevice *dev;conststructpwm_ops *ops;--pwm控制器回调函数。intbase; unsignedintnpwm;--pwm控制器的pwm数量。structpwm_device * (*of_...
intpwm_apply_state(structpwm_device *pwm,structpwm_state *state); 此API控制PWM周期/占空比配置以及启用/禁用状态。 作为消费者,不要依赖于已禁用的PWM的输出状态。如果可能的话,驱动程序应该发出非活动状态,但有些驱动程序可能无法这样做。如果您依赖于获取非活动状态,请使用.duty_cycle=0, .enabled=true。
pwm_apply_state:将PWM通道的配置应用到硬件上,定义在drivers/pwm/core.c文件中。 这些函数和结构体的实现可能会因为Linux内核版本不同而有所变化,因此在编写设备驱动程序时需要仔细阅读对应内核版本的源代码和文档。 在上述代码中我们已经完成了标注的PWM驱动编写,接下来要对其进行调用。
The main useful user API are the following: devm_pwm_get() or pwm_get() / pwm_put(): this API is used to look up, request, then free a PWM device. pwm_init_state(),pwm_get_state(), pwm_apply_state(): this API is used to initialize, retrieve and apply the current PWM device...
#define APPLY_PWM_STATE(pwm, pwm_state) pwm_apply_might_sleep(pwm, pwm_state) #endif#if IS_ENABLED(CONFIG_BACKLIGHT_CLASS_DEVICE) int intel_backlight_device_register(struct intel_connector *connector); void intel_backlight_device_unregister(struct intel_connector *connector);0...
(2)struct pwm_ops结构体,包括PWM控制器的操作函数。其中应该由驱动开发者实现的2个基础函数为apply函数和get_state函数;apply函数用于配置PWM控制器,包括配置PWM信号的使能状态、周期、占空比、极性等;get_state函数用于在注册PWM控制器时获取指定PWM通道信号的初始状态,包括使能状态、周期、占空比、极性等。