- 论坛徽章:
- 0
|
本帖最后由 thzhr2009 于 2013-07-08 19:15 编辑
内核版本:2.6.21
cpu:s3c2416
代码修改过程如下:
在/arch/arm/mach-s3c2416/mach-s3c2416.c中增加spi_board_info及spi_board_info:
static struct spi_board_info s3c2416_spi0_board[] = {
[0] = {
//.modalias = "PN512",
.modalias = "s3c2416-spi",
.bus_num = 0,
.chip_select = 0,
//.irq = IRQ_SPI0 , //中断号暂时不知
.max_speed_hz = 500*1000,
},
};
static struct s3c2410_spi_info s3c2416_spi0_platdata = {
.pin_cs = S3C2410_GPL13,
.board_info = &s3c2416_spi0_board[0],
};
在platform_device中增加此设备:
static struct platform_device *smdk2416_devices[] __initdata = {
//&s3c_device_wdt,
&s3c_device_i2c,
&s3c_device_lcd,
&s3c_device_rtc,
&s3c_device_adc,
&s3c_device_iis,
&s3c_device_usbgadget,
&s3c_device_usb,
//&s3c_device_hsmmc0, //mmc0 未启用 ,已用作ic卡
&s3c_device_hsmmc1,
//&s3c_device_smc911x
&s3c_device_dm9000,
&s3c_device_spi0,
};
最后在smdk2416_machine_init中注册:
static void __init smdk2416_machine_init(void)
{
/* SROM init for NFS */
smdk2416_cs89x0_set();
hsspi_set_gpio();
smdk_machine_init();
s3c_device_spi0.dev.platform_data= &s3c2416_spi0_platdata;
spi_register_board_info(s3c2416_spi0_board, ARRAY_SIZE(s3c2416_spi0_board));
}
驱动程序直接使用内核自带的SPI驱动/driver/spi/hspi-s3c2416.c,编译成ko加载。
现在问题是加载驱动后/dev目录下无spi设备,/sys/bus/spi/devices/及/sys/bus/spi/drivers/文件下也为空。
请问问题在哪?
网上查了下,在make menuconfig时需要加入spi基础驱动spi_bitbang,这个以ko形式加入了。还需加入"User mode SPI device driver support",但为何我的内核menuconfig时没有这一选项呢,不知道问题出在哪。
请高手指教。多谢 |
|