Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1254441
  • 博文数量: 160
  • 博客积分: 4132
  • 博客等级: 中校
  • 技术积分: 2086
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-06 21:56
文章分类

全部博文(160)

文章存档

2012年(25)

2011年(120)

2010年(15)

分类: LINUX

2010-11-10 17:44:32

micro2440-linux-spi驱动
摘自http://blog.chinaunix.net/u3/98807/showart_2185464.html
 
在arch/arm/mach-s3c2440/mach-mini2440.c中:
1:加入头文件:
#include
#include
 
 
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 有不同定义
        .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测试程序;
拷入文件系统运行可看到结果。
阅读(1822) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~