您的位置:首页 > 其它

Exynos4412 SPI驱动配置

2015-05-15 17:53 323 查看
Exynos4412 SPI配置

Linux内核层就不说了,可以参考资料:

http://www.embedu.org/Column/Column367.htm

要说的时关于4412特别的部分,在4412板级文件mach-**4412.c中,需要配置的相关内容:

1. CS管脚信息结构体:

static struct s3c64xx_spi_csinfo spi0_csi[] = {

[0] = {

.line = EXYNOS4_GPB(1),

.set_level = gpio_set_value,

.fb_delay = 0x2,

},

};

2. 定义板级信息结构体:

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],

}

};

3. 配置GPIO功能:

if (!gpio_request(EXYNOS4_GPB(1), “SPI_CS0”)) {

gpio_direction_output(EXYNOS4_GPB(1), 1);

s3c_gpio_cfgpin(EXYNOS4_GPB(1), S3C_GPIO_SFN(1));

s3c_gpio_setpull(EXYNOS4_GPB(1), S3C_GPIO_PULL_UP);

exynos_spi_set_info(0, EXYNOS_SPI_SRCCLK_SCLK,

ARRAY_SIZE(spi0_csi));

}

gpio_direction_output(EXYNOS4_GPB(1),1);//配置CS(GPB(1))为输出,才能正确输出波形

void *gpio_base;

unsigned int *cs_cfg;

gpio_base = ioremap(0x1392000c,4);

cs_cfg = (unsigned int *)gpio_base;

*cs_cfg |= 0x10;//配置cs为自动模式,参照4412Datasheet1439页

4. 注册板级信息:

spi_register_board_info(spi0_board_info, ARRAY_SIZE(spi0_board_info));

OK,完成。本次写的不好,但是都是自己看了很多源代码之后的成果,如有疑问,欢迎讨论。guq@microarray.com.cn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息