AnsweredAssumed Answered

VDMA Drivers with Zedboard

Question asked by shakith on Dec 11, 2012
Latest reply on Jan 25, 2013 by shakith

Hi all,

 

Maybe you guys can shed some light on this problem as the working Xilinx VDMA driver was modified by Analog Devices to work with the adv7511 example.

. I am migrating the Xilinx BASE TRD(http://wiki.xilinx.com/zynq-base-trd-14-3) to the zedboard. This design (http://wiki.analog.com/resources/fpga/xilinx/kc705/adv7511) was extended with additional VDMA and a sobel filter engine. The design contains two VDMA now: VDMA_filter, and VDMA_HDMI. The design was tested using a bare metal application and that works fine.

 

The next step is to get the device drivers working on the extended hardware design to boot up linux. This base TRD design has a new driver wrapper on the original (xilinx_dma.c) driver for the VDMA_filter IP. soble filter engine driver has no issue so far.

 

When this new driver wrapper is included in the defconfig is crashes at bootup even though though the device tree (dts) file doesn't contain any entries for the new VDMA_filter and filter ip. VDMA driver and wrapper seems to be getting added for the VDMA IP for the HDMI. First thing I tried to add was a compatibility string to disallow the wrapper driver getting loaded for the VDMA_HDMI. That didn't work.

 

Next thing I tried was to see whether VDMA IP for HDMI can use the new wrapper driver. All the dts settings from VDMA_filter

Xilinx BASE TRD (http://wiki.xilinx.com/zynq-base-trd-14-3) was added to the dts settings for the VDMA_hdmi.

 

I guess this xvdma_filter function below is way of detecting the dma channels and it assume two channels (both ways) and find only one in the VDMA_hdmi.

 

Also note that I am using this https://github.com/analogdevicesinc/linux/tree/xcomm_zynq. There is significant differences in the https://github.com/analogdevicesinc/linux/blob/xcomm_zynq/drivers/dma/xilinx_dma.c   and same file from this repo http://git.xilinx.com/?p=linux-xlnx.git;a=summar

. Both gives the same bootup error though.

 

The error output is this. (xvdma_filter is a function from the wrapper driver attached as xvdma.c)

PC is at xvdma_filter+0x8/0x1c

LR is at __dma_request_channel+0xb0/0x188

pc : [<c01860f8>]    lr : [<c018a33c>]    psr: a0000013

sp : dd059eb8  ip : 00400001  fp : 00000000

r10: 00000000  r9 : dd059ee0  r8 : c04fff84

r7 : dd00ecc0  r6 : dd1fccd8  r5 : dd059edc  r4 : c01860f0

r3 : 00000000  r2 : dd00ecd4  r1 : 00400001  r0 : dd00ecc0

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

Control: 18c5387d  Table: 0000404a  DAC: 00000015

Process swapper/0 (pid: 1, stack limit = 0xdd0582f0)

Stack: (0xdd059eb8 to 0xdd05a000)

9ea0:                                                       00000000 c04ffc20

9ec0: 00400000 dd3e5944 c04cf5f4 00000000 00000000 c01867cc 00000000 00000400

9ee0: 00400001 00000000 dd3e5940 c04ffc20 00000000 c033c5c8 c033c534 c04ffc20

9f00: c0a23560 c04ffe34 c04ffe34 c01c8b7c c01c8b68 c01c7c5c 00000000 c04ffc20

9f20: c04ffc54 c04ffe34 00000000 c01c7dfc c04ffe34 c01c7d94 00000000 c01c664c

9f40: dd0496a8 dd3e5a90 c04ffe34 dd3e59c0 c0505710 c01c73d0 c0430846 00000001

9f60: 00000000 c04ffe34 c04bc274 00000000 0000007f c04cf5f4 00000000 c01c8274

9f80: dd059fa0 c04bc274 00000000 0000007f c04cf5f4 00000000 00000000 c0008544

9fa0: 00000006 00000006 00000000 00000006 c04c8418 00000006 c04c841c c04c83fc

9fc0: 0000007f c04cf5f4 00000000 c04ab8e0 00000006 00000006 c04ab1bc dd0571c0

9fe0: 00000000 c04ab7e8 c000e308 00000013 00000000 c000e308 50414804 10c09306

[<c01860f8>] (xvdma_filter+0x8/0x1c) from [<c018a33c>] (__dma_request_channel+0xb0/0x188)

[<c018a33c>] (__dma_request_channel+0xb0/0x188) from [<c01867cc>] (xvdma_scan_channels+0x38/0x7c)

[<c01867cc>] (xvdma_scan_channels+0x38/0x7c) from [<c033c5c8>] (xvdma_probe+0x94/0xcc)

[<c033c5c8>] (xvdma_probe+0x94/0xcc) from [<c01c8b7c>] (platform_drv_probe+0x14/0x18)

[<c01c8b7c>] (platform_drv_probe+0x14/0x18) from [<c01c7c5c>] (driver_probe_device+0xb4/0x1ec)

[<c01c7c5c>] (driver_probe_device+0xb4/0x1ec) from [<c01c7dfc>] (__driver_attach+0x68/0x8c)

[<c01c7dfc>] (__driver_attach+0x68/0x8c) from [<c01c664c>] (bus_for_each_dev+0x48/0x74)

[<c01c664c>] (bus_for_each_dev+0x48/0x74) from [<c01c73d0>] (bus_add_driver+0x98/0x220)

[<c01c73d0>] (bus_add_driver+0x98/0x220) from [<c01c8274>] (driver_register+0x9c/0x13c)

[<c01c8274>] (driver_register+0x9c/0x13c) from [<c0008544>] (do_one_initcall+0x90/0x164)

[<c0008544>] (do_one_initcall+0x90/0x164) from [<c04ab8e0>] (kernel_init+0xf8/0x1b8)

[<c04ab8e0>] (kernel_init+0xf8/0x1b8) from [<c000e308>] (kernel_thread_exit+0x0/0x8)

Code: e3a00000 e12fff1e e590c028 e5911000 (e59c2000)

 

Thanks..)

Attachments

Outcomes