版主你好,我按照
http://www.aiothome.net/read.php?tid-10788.html 的步骤,做了如下操作:
步骤1 增加头文件
#include <plat/s3c64xx-spi.h> //gzj++
#include <linux/spi/spi.h> //gjz++
步骤2 配置内核选项
Device Drivers ---> [*] SPI support ---> <M> Samsung S3C24XX series SPI
<M> User mode SPI device driver support
步骤三:
增加 &s3c64xx_device_spi0, 到 --->>> [static struct platform_device *mini6410_devices[]] 的末尾
增加 add [obj-y +=dev-spi.o] 到 arch/arm/mach-s3c64xx/Makefile
在头文件语句的下面增加
static void cs_set_level(unsigned line_id, int lvl) {
gpio_direction_output(line_id, lvl);
};
static struct s3c64xx_spi_csinfo s3c64xx_spi0_csinfo = {
.fb_delay=100,
.line=S3C64XX_GPC(3),
.set_level=cs_set_level,
};
static struct spi_board_info s3c6410_spi0_board[] = {
[0] = {
.modalias = "spidev",
.bus_num= 0,
.chip_select= 0, //必须小于s3c6410_spi0_platdata.num_cs
.irq =IRQ_SPI0,
.max_speed_hz= 500*1000,
.mode=SPI_MODE_0,
.controller_data=&s3c64xx_spi0_csinfo,
},
};
在mini6410_machine_init(before platform_add_devices)中增加
[ s3c64xx_spi_set_info(0,0,1); //gzj++
//s3c64xx_spi_set_info(1,0,1);
spi_register_board_info(s3c6410_spi0_board, ARRAY_SIZE(s3c6410_spi0_board));
// spi_register_board_info(s3c6410_spi1_board, ARRAY_SIZE(s3c6410_spi1_board));
]
步骤四:
do make zImage
do make
然后再6410的板子上执行:
insmod spi_s3c64xx.ko
insmod spidev.ko
结果打印的信息是这样的:
[root@FriendlyARM plg]# insmod spi_s3c64xx.ko
:99 gpio_ensure_requested+0x48/0xf4()
autorequest GPIO-20
Modules linked in: spi_s3c64xx(+)
[<c0173c44>] (unwind_backtrace+0x0/0xe4) from [<c0182ea0>] (warn_slowpath_common
+0x4c/0x64)
[<c0182ea0>] (warn_slowpath_common+0x4c/0x64) from [<c0182f38>] (warn_slowpath_f
mt+0x2c/0x3c)
[<c0182f38>] (warn_slowpath_fmt+0x2c/0x3c) from [<c02df5ac>] (gpio_ensure_reques
ted+0x48/0xf4)
[<c02df5ac>] (gpio_ensure_requested+0x48/0xf4) from [<c02df79c>] (gpio_direction
_output+0x68/0x120)
[<c02df79c>] (gpio_direction_output+0x68/0x120) from [<bf00061c>] (s3c64xx_spi_s
etup+0x1f4/0x210 [spi_s3c64xx])
[<bf00061c>] (s3c64xx_spi_setup+0x1f4/0x210 [spi_s3c64xx]) from [<c0330914>] (sp
i_setup+0x40/0x48)
[<c0330914>] (spi_setup+0x40/0x48) from [<c0330b9c>] (spi_add_device+0xa0/0x118)
[<c0330b9c>] (spi_add_device+0xa0/0x118) from [<c0330c94>] (spi_new_device+0x80/
0xa4)
[<c0330c94>] (spi_new_device+0x80/0xa4) from [<c0330cd8>] (spi_match_master_to_b
oardinfo+0x20/0x40)
[<c0330cd8>] (spi_match_master_to_boardinfo+0x20/0x40) from [<c0330dcc>] (spi_re
gister_master+0xd4/0x118)
[<c0330dcc>] (spi_register_master+0xd4/0x118) from [<bf0043d4>] (s3c64xx_spi_pro
be+0x3d4/0x4a8 [spi_s3c64xx])
[<bf0043d4>] (s3c64xx_spi_probe+0x3d4/0x4a8 [spi_s3c64xx]) from [<c0300b40>] (pl
atform_drv_probe+0x14/0x18)
[<c0300b40>] (platform_drv_probe+0x14/0x18) from [<c02ffd34>] (driver_probe_devi
ce+0xa8/0x158)
[<c02ffd34>] (driver_probe_device+0xa8/0x158) from [<c02ffe44>] (__driver_attach
+0x60/0x84)
[<c02ffe44>] (__driver_attach+0x60/0x84) from [<c02ff01c>] (bus_for_each_dev+0x4
c/0x78)
[<c02ff01c>] (bus_for_each_dev+0x4c/0x78) from [<c02ff6b8>] (bus_add_driver+0xa8
/0x224)
[<c02ff6b8>] (bus_add_driver+0xa8/0x224) from [<c0300090>] (driver_register+0xa8
/0x12c)
[<c0300090>] (driver_register+0xa8/0x12c) from [<c0300da4>] (platform_driver_pro
be+0x18/0x8c)
[<c0300da4>] (platform_driver_probe+0x18/0x8c) from [<c01644d8>] (do_one_initcal
l+0xbc/0x190)
[<c01644d8>] (do_one_initcall+0xbc/0x190) from [<c01aa098>] (sys_init_module+0x1
58c/0x1754)
[<c01aa098>] (sys_init_module+0x158c/0x1754) from [<c016e5e0>] (ret_fast_syscall
+0x0/0x30)
---[ end trace 3539e128fcc177dd ]---
请问下为什么,是不是spi的7F00B000这个地址让别的给占用了,我没有发现那个驱动占用这个地址啊!!!
请教一下