This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

I want to use SPI I/F of DM6467T DVEVM

Other Parts Discussed in Thread: TMS320DM6467T

[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;
          |}