主题 : linux2.6.29的SPI求救 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 8904
精华: 0
发帖: 54
金钱: 400 两
威望: 155 点
贡献值: 0 点
综合积分: 108 分
注册时间: 2009-09-10
最后登录: 2017-09-13
楼主  发表于: 2009-11-10 17:04

 linux2.6.29的SPI求救

参考论坛里的2.6.24的来驱动2.6.29的SPI没有成功,主要是s3c2410_spi_info结构怎么用?有的文章说它的bus_num和spi_board_info的bus_num一样就可以,但是这样做以后,仍然不起作用,有把2.6.29里SPI使用起来的吗?请帮帮忙,谢谢。
级别: 新手上路
UID: 10025
精华: 0
发帖: 3
金钱: 30 两
威望: 15 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2009-10-22
最后登录: 2011-06-01
1楼  发表于: 2009-11-21 16:11
同样期待...
级别: 新手上路
UID: 10025
精华: 0
发帖: 3
金钱: 30 两
威望: 15 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2009-10-22
最后登录: 2011-06-01
2楼  发表于: 2009-11-30 18:07
自己搞定了
arch/arm/mach-s3c2440/mach-mini2440.c文件:
添加
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,
        .num_cs = 1,
        .bus_num = 0,
};
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。
[ 此帖被wbweb在2009-11-30 18:14重新编辑 ]