zoukankan      html  css  js  c++  java
  • linux内核SPI总线驱动分析(二)(转)

    简而言之,SPI驱动的编写分为:

    1.spi_device就构建并注册 

     在板文件中添加spi_board_info,并在板文件的init函数中调用spi_register_board_info(s3c_spi_devs,ARRAY_SIZE(s3c_spi_devs));

    spi_register_board_info(s3c_spi_devs,ARRAY_SIZE(s3c_spi_devs));//注册spi_board_info。这个代码会把spi_board_info注册到链表board_list上。spi_device封装了一个spi_master结构体,事实上spi_master的注册会在spi_register_board_info之后,spi_master注册的过程中会调用scan_boardinfo扫描board_list,找到挂接在它上面的spi设备,然后创建并注册spi_device。

    2. spi_driver的构建与注册

    (1)

    static struct spi_driver   m25p80_driver = { 
    
     
    
    .driver = {
    
            .name   ="m25p80",
    
            .bus    =&spi_bus_type,
    
            .owner  = THIS_MODULE,
    
        },
    
        .probe  = m25p_probe,
    
        .remove =__devexit_p(m25p_remove),
    
    };

    (2)//spi_driver的注册

    spi_register_driver(&m25p80_driver);当匹配了spi_device以后调用probe

    (3)实现probe操作:

     

    spi_transfer(里面集成了数据buf空间地址等信息)
    
     
    
    spi_message(是spi_transfer的集合)的构建;
    
     
    
    spi_message_init(初始化spi_message)
    
     
    
    spi_message_add_tail(将新的spi_transfer添加到spi_message队列尾部)
    
     
    
     
    
    spi_sync函数的调用(调用spi_master发送spi_message)
    
     
    
    例如:
    
     
    
    struct spi_transfer st={
    
     
    
     
    
     
    
    。。。。。。。。。
    
     
    
     
    
    };
    
     
    
    //填充spi_transfer  
    
     
    
     
    
    struct spi_message meg;
    
     
    
     
    
    //定义message
    
     
    
     
    
    spi_init_message(&meg);
    
     
    
    //初始化meg
    
     
    
     
    
    spi_message_add_tail(&st,&meg);
    
     
    
     
    
    //将st放在message队列尾部
    
     
    
     
    
    Spi_sync(spi_device,&meg);
    
     
    
     
    
    //将message与spi_device关联,发送meg
    
     
  • 相关阅读:
    MFC对话框编程详细学习笔记
    VS2013 MFC基于对话框编程
    Java学到什么程度可以找到第一份工作
    搞定操作系统面试,看这篇就够了
    搞定计算机网络面试,看这篇就够了
    一千行 MySQL 学习笔记
    后端工程师技术面试复习大纲
    爬虫功能
    昨天的一卦,真的太形象,可惜我就是不敢断
    基于maven+ssm的增删改查之批量删除
  • 原文地址:https://www.cnblogs.com/chd-zhangbo/p/5248762.html
Copyright © 2011-2022 走看看