[Question]
I want to use SPI I/F of DM6467T DVEVM.
It doesn't work well.
Please help.
I use spidev source code.
[Environment]
<target board>
+TMS320DM6467T Digital Video Evaluation Module
(NAND BOOT/factory default)
<develop emvironment>
+DVSDK3.10(following revision)
arago-demo-image-dm6467t-evm.tar.gz
arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
cs2dm6467_1_00_00_10_Setup.bin
dvsdk_3_10_00_19_Setup.bin
dvsdk_3_10_00_19_overlay_dm6467.tar.gz
linux-davinci-staging.tar.gz
linuxlibs-2009.11-armv5te.tar.gz
[Procedure]
1:make spidev.ko
use '~/dvsdk/git/drivers/spi/spidev.c'
2:copy spidev.ko to DVEVM
3:type as follow
(target) # insmod spidev.ko
(target) # mknod /dev/spi c 153 0
4:copy test application to DVEVM
(/dvsdk/git/Documentation/spi/spidev_test.c)
5:When I executed test application, I met following error.
spidev.ko(spidev.c:)
-----------------
|
|static int spidev_open(struct inode *inode, struct file *filp)
|{
| struct spidev_data *spidev;
| int status = -ENXIO;
|
| lock_kernel();
| mutex_lock(&device_list_lock);
|
| list_for_each_entry(spidev, &device_list, device_entry) {
| if (spidev->devt == inode->i_rdev) {
| status = 0;
| break;
| }
| }
| if (status == 0) {
| if (!spidev->buffer) {
| spidev->buffer = kmalloc(bufsiz, GFP_KERNEL);
| if (!spidev->buffer) {
| dev_dbg(&spidev->spi->dev, "open/ENOMEM\n");
| status = -ENOMEM;
| }
| }
| if (status == 0) {
| spidev->users++;
| filp->private_data = spidev;
| nonseekable_open(inode, filp);
| }
| } else
<error> | pr_debug("spidev: nothing for minor %d\n", iminor(inode));
|
| mutex_unlock(&device_list_lock);
| unlock_kernel();
| return status;
|}