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.

OMAP-L138 SPI Kernel panic

Other Parts Discussed in Thread: OMAP-L138

Hi everyone,

I got the ZOOM OMAP-L138 EVM DEVELOPMENT KIT and DaVinci-PSP-SDK-03.20.00.06 with Arago distribution developed by TI for OMAP processor. 

I'm trying to communicate with an external spi device. I configured my kernel to support spi and modified arch source file to add "spidev" to /dev directory.

 

Here’s what I changed in board-da850-evm.c :

static struct spi_board_info da850_spi_board_info[] = {

        [0] = {

        //      .modalias = "m25p80",

                .modalias = "spidev",

        //      .platform_data = &spi_flash_data,

        //      .controller_data = &m25p64_spi_cfg,

                .mode = SPI_MODE_0,

                .max_speed_hz = 30000000,       /* max sample rate at 3V */

                .bus_num = 1,

                .chip_select = 0,

        },

};

 

Also, in the menuconfig I added support for SPI and Device Drivers  ---> SPI support  ---> User mode SPI device driver support.

I currently have spidev1.0 in /dev directory. There are a lot of ioctl command with the SPI, I successfully executed few of them: SPI_IOC_RD_MODE, SPI_IOC_RD_BITS_PER_WORD, SPI_IOC_RD_MAX_SPEED_HZ.

The problem is when I execute ioctl(.., SPI_IOC_MESSAGE(1), ..) the board crash.

 

Here’s what happens when I execute SPI_IOC_MESSAGE:

Unable to handle kernel NULL pointer dereference at virtual address 00000010

pgd = c0004000

[00000010] *pgd=00000000

Internal error: Oops: 17 [#1] PREEMPT

CPU: 0    Not tainted  (2.6.31-rc7-davinci1 #2)

PC is at davinci_spi_bufs_prep+0xc/0x47c

LR is at davinci_spi_bufs_pio+0x68/0x2b4

pc : [<c01ab0f4>]    lr : [<c01abb7c>]    psr: 60000013

sp : c1dcbf04  ip : c1dcbf18  fp : c1dcbf14

r10: c1d042b8  r9 : 00000001  r8 : c1ddbf00

r7 : 00000000  r6 : c02a06dc  r5 : c1ce7300  r4 : c1d042b8

r3 : 00000000  r2 : 00000000  r1 : c1d042b8  r0 : c1ce7300

Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel

Control: 0005317f  Table: c1e30000  DAC: 00000017

Process dm_spi.1 (pid: 236, stack limit = 0xc1dca270)

Stack: (0xc1dcbf04 to 0xc1dcc000)

bf00:          c1d042b8 c1dcbf44 c1dcbf18 c01abb7c c01ab0f8 00000000 c1ddbf00

bf20: 00000000 c1c6de9c c1c6debc c1dca000 00000000 c1d042b8 c1dcbf84 c1dcbf48

bf40: c01aacfc c01abb24 c1d042cc ffffffff c01ac3b0 c1ce7300 00000000 c1d042c0

bf60: c1d042bc c1dca000 c1dcdf80 c01aab74 00000000 c1dcdf88 c1dcbfc4 c1dcbf88

bf80: c0049b30 c01aab84 c0234400 00000000 c1cd4000 c004d750 c1dcbf98 c1dcbf98

bfa0: c1dcbfcc c1c21d78 c1dcdf80 c00499e8 00000000 00000000 c1dcbff4 c1dcbfc8

bfc0: c004d4e0 c00499f8 00000000 00000000 c1dcbfd0 c1dcbfd0 00000000 00000000

bfe0: 00000000 00000000 00000000 c1dcbff8 c003ac50 c004d468 00000000 00000000

Backtrace:

[<c01ab0e8>] (davinci_spi_bufs_prep+0x0/0x47c) from [<c01abb7c>] (davinci_spi_bufs_pio+0x68/0x2b4)

 r4:c1d042b8

[<c01abb14>] (davinci_spi_bufs_pio+0x0/0x2b4) from [<c01aacfc>] (bitbang_work+0x188/0x2ec)

[<c01aab74>] (bitbang_work+0x0/0x2ec) from [<c0049b30>] (worker_thread+0x148/0x20c)

[<c00499e8>] (worker_thread+0x0/0x20c) from [<c004d4e0>] (kthread+0x88/0x90)

[<c004d458>] (kthread+0x0/0x90) from [<c003ac50>] (do_exit+0x0/0x650)

 r7:00000000 r6:00000000 r5:00000000 r4:00000000

Code: e89da800 e1a0c00d e92dd810 e24cb004 (e5923010)

---[ end trace 4f0e16f9f2f85b61 ]---

 

Do you have any idea why the board is crashing?

Thanks