第四期 第三十一讲 Linux WIFI驱动实验 第三十二讲 Linux 4G驱动实验 第三十三讲 Linux RGB转HDMI驱动实验 第三十四讲 Linux PWM驱动实验

第三十一讲 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值