linux 2.6.x spi驅動,spidev,使用從裝置

來源:互聯網
上載者:User

Links:  blog.csdn.net/lanmanck/archive/2009/08/18/4459699.aspx
基於atmel的spi模型,大家可以先看下這篇文章的分析:

http://blog.chinaunix.net/u3/96265/showart_1925533.html

【轉帖註明出處】http://blog.csdn.net/lanmanck
但是有的細節沒有提到,我補充一下,不對請指出:
1、驅動中有匯流排和裝置的概念。
spi控制器就是匯流排(spi匯流排),對應atmel_spi.c
spi控制器上外接的晶片,比如串列flash、can收發器、時鐘晶片等,就是裝置。這就涉及到裝置驅動的問題.
2、這些spi裝置可以對應spidev.c,或者具體的檔案.
比如說,我接的是flash晶片,那麼可以定義spi_board_info 數組的時候指定:
static struct spi_board_info at_spi_board_info_all_devices[] =
{
{ /* DataFlash chip mc13783*/
.modalias = "mtd_dataflash",
.chip_select = 0, //表示bus_num spi裝置的片選號
.max_speed_hz = 20000000,
.bus_num = 0, //表示用第幾個spi
.irq = INT_NUM_MIX1,
},
}
注意這個modalias,這裡定義為"mtd_dataflash",是因為mtd_dataflash.c這個驅動檔案中定義的驅動名稱為"mtd_dataflash",這兩個名稱也保持一致。
static struct spi_driver dataflash_driver = {
.driver = {
.name = "mtd_dataflash",
.bus = &spi_bus_type,
.owner = THIS_MODULE,
},
.probe = dataflash_probe,
.remove = __devexit_p(dataflash_remove),
/* FIXME: investigate suspend and resume... */
};
static int __init dataflash_init(void)
{
return spi_register_driver(&dataflash_driver);
}

又比如說我接的的ads7846觸控螢幕晶片,可以這樣定義:
{
.modalias = "ads7846",
.chip_select = 2,
.max_speed_hz = 125000 * 26, /* (max sample rate @ 3V) * (cmd + data + overhead) */
.bus_num = 0,
.platform_data = &ads_info,
.irq = AT91SAM9261_ID_IRQ0,
},
這裡的.modalias = "ads7846",也因為有了ads7846.c這個檔案,否則裝置驅動無法probe成功,這樣/dev下面就看不到裝置了.
3、那如果我不想寫具體的晶片驅動,就用內建的spi匯流排驅動怎麼辦呢?比如我接了一個can收發器。這就要用到spidev.c了.
開啟spidev.c就可以發現標準的ioctl/read/write函數,這就是對應使用者層的read write函數了,那麼 spi_board_info的modalias需要這樣定義:
.modalias = "spidev",
//不想寫從裝置驅動的話,就必須指定為"spidev",因為spidev.c就是這個裝置的probe函數,裡面有read/write/ioctl 函數這樣裝置啟動後就可以在/dev看到spidev0.0字樣. 0.0 就是bus_num.chip_select.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.