基于S3C2440的嵌入式Linux驱动——SPI子系统解读(二)

2014-11-24 10:44:18 ? 作者: ? 浏览: 0

该系列文章将分为四个部分:


第二部分,即本篇文章,该文将对SPI的主控制器(master)驱动进行描述。


本文属于第二部分。


4. 主控制器驱动程序


4.1 定义 platform device


下列数据结构位于arch/arm/plat-s3c24XX/devs.c


platform设备给出了spi0接口的寄存器地址资源以及IRQ资源。注意其设备名为s3c2410-spi。


4.2 定义platform driver


下列函数位于deivers/spi/s3c24xx.c。


调用了platform_driver_probe注册platform驱动,注册完成以后将会调用platform的s3c24xx_spi_probe函数。


NOTE:platform驱动的name和platform device的name是相同的。


4.2.1 s3c24xx_spi_probe函数


下列函数位于deivers/spi/s3c24xx.c。


该函数首先为spi_master结构体以及s3c24xx_spi结构体分配了空间,同时,spi_master.dev.driver_data指向了s3c24xx_spi。


s3c24xx_spi结构如下:


接着执行了该条语句:


hw->pdata = pdata = pdev->dev.platform_data; /*获取s3c2410_spi_info结构体指针*/


NOTE:在这里获取platform_device.dev.platform_data,也就是平台设备的相关数据,而在4.1小结中的arch/arm/plat-s3c24XX/devs.c文件中并没有发现platform_data的身影,因此这正式需要我们移植的地方。


-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: