第三十一讲 Linux WIFI驱动实验
一、 WIFI驱动添加
1.1、USB WIFI和SDIO WIFI
1.2、向内核添加WIFI驱动
1.3、配置Linbux内核
1.4、编译驱动
1.5、驱动加载测试
二、wireless tools工具移植与测试
三、wpa_supplicant移植
第三十二讲 Linux 4G驱动实验
第三十三讲 Linux RGB转HDMI驱动实验
RGB转HDMI模块驱动分两部分:
1、RGB驱动,io、lcdif接口
2、sii9022A,通过IIC接口配置,IIC器件,IIC驱动
第三十四讲 Linux PWM驱动实验
struct imx_chip->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);
static struct imx_pwm_data imx_pwm_data_v2 = {
.config = imx_pwm_config_v2,
.set_enable = imx_pwm_set_enable_v2,
};
最终,imx_chip-》config= imx_pwm_config_v2
imx_chip-》set_enabl = imx_pwm_set_enable_v2
struct pwm_chip-> const struct pwm_ops *ops;
注意pwm_ops需要驱动编写人员编写,实现
pwm_ops-> int (*config)(struct pwm_chip *chip,
struct pwm_device *pwm,
int duty_ns, int period_ns);
pwm_ops-> int (*enable)(struct pwm_chip *chip,
struct pwm_device *pwm);
PWM驱动流程
1、pwm_chip初始化,
2、向内核注册pwm_chip,使用函数pwmchip_add
6ULL的PWM驱动
1、在probe函数:
imx->chip.ops = &imx_pwm_ops; -》pwm_chip->ops
imx->chip.dev = &pdev->dev;
imx->chip.base = -1;
imx->chip.npwm = 1;
imx->chip.can_sleep = true;
2、imx->mmio_base保存PWM控制器的起始地址,
3、imx_pwm_data *data= of_id->data= imx_pwm_data_v2
4、struct imx_chip *imx.->config = imx_pwm_config_v2
5、struct imx_chip *imx.> set_enable = imx_pwm_set_enable_v2
可以得到,pwm_ops为:
static struct pwm_ops imx_pwm_ops = {
.enable = imx_pwm_enable,
.disable = imx_pwm_disable,
.config = imx_pwm_config,
.owner = THIS_MODULE,
};
经过分析,可知:imx_pwm_enable,最终调用imx_pwm_set_enable_v2
imx_pwm_disable也调用imx_pwm_set_enable_v2
imx_pwm_config最终调用的是imx_pwm_config_v2