国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

spi_device的注冊和創建(引入DTS之前)

2019-11-09 17:10:49
字體:
來源:轉載
供稿:網友

SPI通用接口層用spi_device結構來表示一個spi設備,它的各個字段的意義如下:

struct device           dev代表該spi設備的device結構
struct spi_master       *master指向該spi設備所使用的控制器
u32     max_speed_hz該設備的最大工作時鐘頻率
u8      chip_select在控制器中的片選引腳編號索引
u16     mode設備的工作模式,包括時鐘格式,片選信號的有效電平等等
u8      bits_per_Word設備每個單位數據所需要的比特數
int     irq設備使用的irq編號
char    modalias[SPI_NAME_SIZE]該設備的名字,用于spi總線和驅動進行配對
int     cs_gpio片選信號的gpio編號,通常不用我們自己設置,接口層會根據上面的chip_select字段在spi_master結構中進行查找并賦值

要完成向系統增加并注冊一個SPI設備,我們還需要另一個數據結構:

/* include/linux/spi/spi.h */struct spi board_info {char modalias[32] ;/*用于初始化spi_device.modalias */const void *platform_data ;/*用于初始化spi_device.dev.platform_data */void *controller data;/ * 用于初始化spi_device.controller_data */int irq;/*用于初始化spi_device.irq */u32 max speed h z ;/*用于初始化spi_device.max_speed_hz */ul6 b us num;/*用于初始化spi_device.bus_num */ul6 chip_select ;/*用于初始化spi_device.chip select */u8 mode ;/*用于初始化spi_device.mode */};

       spi_board_info對象用于描述 SPI設備信息,其大部分字段和spi_device結構相對應,bus_num字段則用來指定所屬的控制器編號,通過spi_board_info結構,我們可以有兩種方式向系統增加spi設備。第一種方式是在SPI控制器驅動已經被加載后,我們使用通用接口層提供的如下API來完成:

             struct spi_device *spi_new_device(struct spi_master *master, struct spi_board_info *chip);

第二種方式是在板子的初始化代碼中,定義一個spi_board_info數組,然后通過以下API注冊spi_board_info:

            int spi_register_board_info(struct spi_board_info const *info, unsigned n);

上面這個API會把每個spi_board_info掛在全局鏈表變量board_list上,并且遍歷已經在系統中注冊了的控制器,匹配上相應的控制器并取得它們的spi_master結構指針,最終也會通過spi_new_device函數添加SPI設備。因為spi_register_board_info可以在板子的初始化代碼中調用,可能這時控制器驅動尚未加載,此刻無法取得相應的spi_master指針,不過不要擔心,控制器驅動被加載時,一定會調用spi_register_master函數來注冊spi_master結構,而spi_register_master函數會反過來遍歷全局鏈表board_list上的spi_board_info,然后通過spi_new_device函數添加SPI設備。
上一篇:CAKeyframeAnimation

下一篇:Adoptable Storage

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 香河县| 昂仁县| 临邑县| 靖宇县| 沈阳市| 宜良县| 耿马| 曲麻莱县| 思茅市| 和林格尔县| 克什克腾旗| 蓬溪县| 金川县| 凯里市| 海丰县| 鹰潭市| 五莲县| 宜章县| 原平市| 赣榆县| 丰台区| 资溪县| 碌曲县| 岱山县| 积石山| 丰原市| 峡江县| 汉寿县| 通州市| 泸定县| 镇坪县| 三江| 乃东县| 钦州市| 寿宁县| 基隆市| 嘉义县| 玉门市| 秀山| 富裕县| 北安市|