无法生成spi设备
本帖最后由 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[] = {
= {
//.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,
};
在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时没有这一选项呢,不知道问题出在哪。
请高手指教。多谢 实在不行,把.ko放到文件系统中,然后在/etc/profile加一句insmod *.ko自动加载 我现在调试时通过nfs挂载,将..ko考到文件系统中再insmod 回复 3# thzhr2009
这样不能达到你的要求吗
回复 3# thzhr2009
你是说/sys下没有是吧
我之前是用misc驱动写的没有platform,不是太清楚
不过你说要spi-bitbang,那你可以把它单独编译加载
或轨矩一点就看看Kconfig和Makefile的依赖关系
spi-bitbang已经是单独加载成功,貌似我这里没有spidev.ko,有网友说需要该文件,不知道是否该原因引起。
有没有做过的朋友说下 在板子/sys/devices/platform/中有看到设备s3c2410-spi.0,这个应该就是我注册的设备。我是菜鸟,请教下此文件下设备如何操作。
比如我现在想验证SPI的读写功能。 回复 7# thzhr2009
我这几天正在写关于设备模型
你可一看看我的blog,有关于/sys下的文件的应用
http://blog.csdn.net/xxxxxlllllxl
但/sys/bus/spi/devices/及/sys/bus/spi/drivers/文件下都为空,是否说明我的设备没有注册成功。 现在主要的需求是测试SPI读写是否正常,请问如何测试,2.6.21也不到SPI测试程序,好像高点版本有。
页:
[1]
2