2014-03-28 41 views
1

我需要從頭開始編寫omap4的spi驅動程序。 我指的是http://lxr.free-electrons.com/source/drivers/spi/spi-omap2-mcspi.c驅動程序代碼。 但是,我無法理解在這個驅動代碼中如何處理基本的設備操作。 例如一個字符設備驅動程序具有包含spi驅動程序中的基本設備操作

struct file_operations scull_fops = { 
.owner = THIS_MODULE, 
.llseek = scull_llseek, 
.read = scull_read, 
.write = scull_write, 
.ioctl = scull_ioctl, 
.open = scull_open, 
.release = scull_release, 
}; 

指針像開放的基本功能,讀,寫等方面的結構......

我不覺得 HTTP這些功能:// lxr.free-electrons.com/source/drivers/spi/spi-omap2-mcspi.c

有人請幫我確定如何打開設備,讀取&寫在spi-omap2-mcspi.c代碼中提供。

+0

你有沒有嘗試使用交叉引用工具? –

+1

有兩種類型的SPI驅動程序:主驅動程序和從(或目標)協議驅動程序。 'drivers/spi'是主驅動程序的目錄,即SPI主控制器的目錄。你正在寫主驅動器還是從驅動器? – sawdust

+0

@sawdust主驅動程序 –

回答

1

如果您查看您在文章中鏈接的文件的底部,您將看到基本平臺驅動程序操作的處理。

static const struct dev_pm_ops omap2_mcspi_pm_ops = { 
     .resume = omap2_mcspi_resume, 
     .runtime_resume = omap_mcspi_runtime_resume, 
}; 

static struct platform_driver omap2_mcspi_driver = { 
     .driver = { 
       .name =   "omap2_mcspi", 
       .owner =  THIS_MODULE, 
       .pm =   &omap2_mcspi_pm_ops, 
       .of_match_table = omap_mcspi_of_match, 
     }, 
     .probe =  omap2_mcspi_probe, 
     .remove =  omap2_mcspi_remove, 
}; 

probe操作那裏你可以看到SPI具體操作的設置此驅動程序:

 /* the spi->mode bits understood by this driver: */ 
    master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; 
    master->bits_per_word_mask = SPI_BPW_RANGE_MASK(4, 32); 
    master->setup = omap2_mcspi_setup; 
    master->auto_runtime_pm = true; 
    master->transfer_one_message = omap2_mcspi_transfer_one_message; 
    master->cleanup = omap2_mcspi_cleanup; 
    master->dev.of_node = node; 
+0

謝謝你的回答。但是開放,讀寫功能在哪裏? –

+1

我知道;)。我認爲這個提示是在/include/linux/spi/spi.h頭文件中。控制器驅動程序需要一個協議驅動程序來完成實際的文件操作。然後將操作映射到控制器驅動程序中提到的操作。 – krase

+0

該協議驅動程序在哪裏? 你知道文件操作如何映射到上述操作嗎? –