Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4183706
  • 博文数量: 776
  • 博客积分: 13014
  • 博客等级: 上将
  • 技术积分: 10391
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-22 17:00
文章分类

全部博文(776)

文章存档

2015年(55)

2014年(43)

2013年(147)

2012年(20)

2011年(82)

2010年(429)

分类: LINUX

2011-01-04 11:23:08

内核只带了spi协议的核心层和具体的spi控制器(例如s3c2410)的驱动,当然你要设置必要的配置这个spi控制器的驱动才能正常运行。
spi核心层导出了一些接口函数供外部设备调用,具体怎么去调用可以查看spi协议层的代码和内核自带的使用到spi的驱动(例如触摸屏等)。
这里给出我以前所搜集的一些资料:
1、针对s3c2410的spi控制器的配置信息(dev.c文件中):
/* add by lfc */
static struct spi_board_info s3c2410_spi_board[] =
{
    [0] = {
        .modalias = "spi-test",
        .platform_data = NULL,
        .irq = IRQ_EINT1,
        .chip_select = 1,
        .max_speed_hz = 500 * 1000,
    },
};
 
static struct s3c2410_spi_info s3c2410_spi_platdata =
{
    .pin_cs = S3C2410_GPG2,
    .board_info = s3c2410_spi_board,
    .board_size = ARRAY_SIZE ( s3c2410_spi_board ),
};

/* end add */
static struct resource s3c_spi0_resource[] =
{
    [0] = {
        .start = S3C24XX_PA_SPI,
        .end = S3C24XX_PA_SPI + 0x1f,
        .flags = IORESOURCE_MEM,
    },
    [1] = {
        .start = IRQ_SPI0,
        .end = IRQ_SPI0,
        .flags = IORESOURCE_IRQ,
    }
};
 
static u64 s3c_device_spi0_dmamask = 0xffffffffUL;
struct platform_device s3c_device_spi0 =
{
    .name = "s3c2410-spi",
    .id = 0,
    .num_resources = ARRAY_SIZE ( s3c_spi0_resource ),
    .resource = s3c_spi0_resource,
    .dev = {
        .dma_mask = &s3c_device_spi0_dmamask,
        .coherent_dma_mask = 0xffffffffUL,
        .platform_data = &s3c2410_spi_platdata,//add by lfc
    }
};

2、spi核心层接口函数的使用,请参考:
http://blog168.chinaunix.net/space.php?uid=23381466&do=blog&id=65023
阅读(3351) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~