da9034驱动程序阅读笔记(1)

da9034驱动程序阅读笔记(1)

ID:17486861

大小:26.00 KB

页数:3页

时间:2018-09-02

da9034驱动程序阅读笔记(1)_第1页
da9034驱动程序阅读笔记(1)_第2页
da9034驱动程序阅读笔记(1)_第3页
资源描述:

《da9034驱动程序阅读笔记(1)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、DA9034驱动程序阅读笔记(1)DA9034驱动程序阅读笔记(1)DA9034驱动程序阅读笔记(1)转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静DA9034是一个集成了电源管理、音频设备、触摸屏控制器和能用A/D

2、D/A转换的多功能芯片。最近读了一下相关驱动程序,这里记些笔记,不成体系,作为备忘而已。有兴趣的朋友可以一起讨论。在BronchoA1中DA9034与CPUPXA3

3、00/PXA310之间用I2C连接。o在littleton.c里定义了DA9034的设备信息:#ifdefined(CONFIG_I2C_BOARDINFO)staticstructi2c_board_infolittleton_i2c_board_info[]={#ifdefined(CONFIG_PXA3xx_MICCO)

4、

5、defined(CONFIG_PXA3xx_MICCO_MODULE){.type="micco",.addr=0x34,.platform_data=&micco_d

6、ata,.irq=IRQ_GPIO(mfp_to_gpio(MFP_CFG_PIN(MFP_PMIC_INT))),},#endifDA9034的nIRQ引脚连接到CPU的GPIOMFP_PMIC_INT上,DA9034有事件发生时,会通过这个引脚上报给CPU。o驱动程序在i2c/chips/micco.c里。staticconststructi2c_device_idmicco_id[]={{"micco",0},{}};staticstructi2c_drivermicco_driver={

7、.driver={.name="micco",},.probe=micco_probe,.remove=micco_remove,.id_table=micco_id,.suspend=micco_suspend,.resume=micco_resume,};id_table主要用来匹配设备与驱动程序的。对于I2C驱动程序来说,只是比较它们的名字是否相同。staticconststructi2c_device_id*i2c_match_id(conststructi2c_device_id*id

8、,conststructi2c_client*client){while(id->name[0]){if(strcmp(client->name,id->name)==0)returnid;id++;}returnNULL;}staticinti2c_device_match(structdevice*dev,structdevice_driver*drv){structi2c_client*client=to_i2c_client(dev);structi2c_driver*driver=to

9、_i2c_driver(drv);/*makelegacyi2cdriversbypassdrivermodelprobingentirely;*suchdriversscaneachi2cadapter/busthemselves.*/if(!is_newstyle_driver(driver))return0;/*matchonanidtableifthereisone*/if(driver->id_table)returni2c_match_id(driver->id_table,clie

10、nt)!=NULL;return0;}一旦匹配上之后,就会调用micco_probe。在micco_probe函数中。这个函数:初始化:ret=micco_initchip();pdata->init_irq();micco_initchip主要是初始驱动程序的一些全局变量和寄存器MICCO_SYSCTRL_A。init_irq是在micco_data里定义,即函数micco_init_irq,里面把GPIOMFP_PMIC_INT设置为输入模式。注册GPIO的中断:ret=request_ir

11、q(client->irq,micco_irq_handler,IRQF_TRIGGER_FALLING,"Micco",client);micco_irq_handler是比较重要的,它先调用pdata->ack_irq(即micco_ack_irq),其实什么都没有做。然后调用schedule_work(&pdata->work);,导步去处理中断事件。这个work会执行函数micco_worker,micco_worker做了两件事:1.调用micco_event_change去查询MIC

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。