`
dazhilao
  • 浏览: 239698 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

【转】micro2440-linux-spi驱动

阅读更多
在arch/arm/mach-s3c2440/mach-mini2440.c中:
1:加入头文件:
#include <linux/spi/spi.h>
#include <linux/spi/spidev.h>
 
 
2:----------------------------------------

static struct spi_board_info s3c2410_spi0_board[] = {
        [0] = {
                 .modalias = "spidev",
                .bus_num        = 0,  
                .chip_select        = 0,
                .irq = IRQ_EINT9,
                .max_speed_hz         = 500*1000,
        },
};

static struct s3c2410_spi_info s3c2410_spi0_platdata = {
        .pin_cs = S3C2410_GPB1,//此处根据内核不同略有不同,在2.6.32                  
        .num_cs = 1,           //#include <mach/regs-gpio.h>有不同定义
        .bus_num = 0,
};
 
 

3:-------------------------------
mini2440_devices平台设备数组中添加
&s3c_device_spi0

mini2440_machine_init函数中添加
s3c_device_spi0.dev.platform_data= &s3c2410_spi0_platdata;
spi_register_board_info(s3c2410_spi0_board, ARRAY_SIZE(s3c2410_spi0_board));

说明:
spi_register_board_info函数将spi_board_info结构体信息添加到内核board_list链表中,在加载s3c2410-spi模块时依次调用关系是:s3c24xx_spi_probe-->spi_bitbang_start-->spi_register_master-->scan_boardinfo,在scan_boardinfo时遍历整个board_list链表,根据bus_num找到我们添加进去的spi_board_info。
 
 
4:-----------------------------
内核编译完成后进入/root/linux-2.6.32.2/Documentation/spi
执行:arm-linux-gcc -I/root/linux-2.6.32.2/include  spidev_test.c
后会生成a.out的spi测试程序;
拷入文件系统运行可看到结果。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics