spi驱动开发

本文详细介绍了如何在S3C64XX平台上移植SPI驱动,并针对SPI0和SPI1进行了设备配置,包括控制寄存器设置、中断处理和资源注册。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于64xx spi驱动移植

1:mach-tiny4412.c 中添加

#ifdef CONFIG_S3C64XX_DEV_SPI0
static struct s3c64xx_spi_csinfo spi0_csi[] = {
[0] = {
.line = EXYNOS4_GPB(1), //cs port
.fb_delay = 0x0,
},
};


static struct spi_board_info spi0_board_info[] __initdata = {
{
.modalias = "spidev",
.platform_data = NULL,
.max_speed_hz = 10*1000*1000,
.bus_num = 0,
.chip_select = 0,
.mode = SPI_MODE_0,
.controller_data = &spi0_csi[0],
}
};
#endif


#ifdef CONFIG_S3C64XX_DEV_SPI1
static struct s3c64xx_spi_csinfo spi1_csi[] = {
[0] = {
.line = EXYNOS4_GPB(5),
.fb_delay = 0x0,
},
};


static struct spi_board_info spi1_board_info[] __initdata = {
{
.modalias = "spidev",
.platform_data = NULL,
.max_speed_hz = 10*1000*1000,
.bus_num = 1,
.chip_select = 0,
.mode = SPI_MODE_0,
.controller_data = &spi1_csi[0],
}
};
#endif


MACHINE_START.init_machine启动代码中添加


spi_register_board_info(spi0_board_info, ARRAY_SIZE(spi0_board_info));
spi_register_board_info(spi1_board_info, ARRAY_SIZE(spi1_board_info));



static struct resource s3c64xx_spi0_resource[] = {
[0] = DEFINE_RES_MEM(S3C_PA_SPI0, SZ_256),
[1] = DEFINE_RES_DMA(DMACH_SPI0_TX),
[2] = DEFINE_RES_DMA(DMACH_SPI0_RX),
[3] = DEFINE_RES_IRQ(IRQ_SPI0),
};

struct platform_device s3c64xx_device_spi0 = {
.name = "exynos4210-spi",   //usually device_spi0.name=driver_spi0.name
.id = 0,
.num_resources = ARRAY_SIZE(s3c64xx_spi0_resource),
.resource = s3c64xx_spi0_resource,
.dev = {
.dma_mask = &samsung_device_dma_mask,
.coherent_dma_mask = DMA_BIT_MASK(32),
},
};


static struct resource s3c64xx_spi1_resource[] = {
[0] = DEFINE_RES_MEM(S3C_PA_SPI1, SZ_256),
[1] = DEFINE_RES_DMA(DMACH_SPI1_TX),
[2] = DEFINE_RES_DMA(DMACH_SPI1_RX),
[3] = DEFINE_RES_IRQ(IRQ_SPI1),//IRQ_SPI1 is interrput num, is decided by hardware
};


struct platform_device s3c64xx_device_spi1 = {
.name = "exynos4210-spi",
.id = 1,
.num_resources = ARRAY_SIZE(s3c64xx_spi1_resource),
.resource = s3c64xx_spi1_resource,
.dev = {
.dma_mask = &samsung_device_dma_mask,
.coherent_dma_mask = DMA_BIT_MASK(32),
},
};

s3c64xx_spi0_set_platdata(NULL, 0, 1);  //init s3c64xx_spi_info and cfg_gpio math  ,copy to (platform_device  *)pdev->dev.platform_data
s3c64xx_spi1_set_platdata(NULL, 0, 1);


smdk4x12_devices中添加

&s3c64xx_device_spi0,
&s3c64xx_device_spi1,
&s3c64xx_device_spi2,




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值