[RFC PATCH v3 00/16] DMA Engine support for AM33XX

Bedia, Vaibhav vaibhav.bedia at ti.com
Fri Oct 19 06:26:20 EDT 2012


Hi Matt,

On Thu, Oct 18, 2012 at 18:56:39, Porter, Matt wrote:
> Changes since v2:
> 	- Rebased on 3.7-rc1
> 	- Fixed bug in DT/pdata parsing first found by Gururaja
> 	  that turned out to be masked by some toolchains
> 	- Dropped unused mach-omap2/devices.c hsmmc patch
> 	- Added AM33XX crossbar DMA event mux support
> 	- Added am335x-evm support
> 
> Changes since v1:
> 	- Rebased on top of mainline from 12250d8
> 	- Dropped the feature removal schedule patch
> 	- Implemented dma_request_slave_channel_compat() and
> 	  converted the mmc and spi drivers to use it
> 	- Dropped unneeded #address-cells and #size-cells from
> 	  EDMA DT support
> 	- Moved private EDMA header to linux/platform_data/ and
> 	  removed some unneeded definitions
> 	- Fixed parsing of optional properties
> 
> TODO:
> 	- Add dmaengine support for per-channel caps so the
> 	  hack to set the maximum segments can be replaced with
> 	  a query to the dmaengine driver
> 
> This series adds DMA Engine support for AM33xx, which uses
> an EDMA DMAC. The EDMA DMAC has been previously supported by only
> a private API implementation (much like the situation with OMAP
> DMA) found on the DaVinci family of SoCs.
> 
> The series applies on top of 3.7-rc1 and the following patches:
> 
> 	- GPMC fails to reserve memory fix:
> 	  http://www.spinics.net/lists/linux-omap/msg79675.html
> 	- TPS65910 regulator fix:
> 	  https://patchwork.kernel.org/patch/1593651/
> 	- dmaengine DT support from Vinod's dmaengine_dt branch in
> 	  git://git.infradead.org/users/vkoul/slave-dma.git since
> 	  027478851791df751176398be02a3b1c5f6aa824
> 
> The approach taken is similar to how OMAP DMA is being converted to
> DMA Engine support. With the functional EDMA private API already
> existing in mach-davinci/dma.c, we first move that to an ARM common
> area so it can be shared. Adding DT and runtime PM support to the
> private EDMA API implementation allows it to run on AM33xx. AM33xx
> *only* boots using DT so we leverage Jon's generic DT DMA helpers to
> register EDMA DMAC with the of_dma framework and then add support
> for calling the dma_request_slave_channel() API to both the mmc
> and spi drivers.
> 
> With this series both BeagleBone and the AM335x EVM have working
> MMC and SPI support.
> 
> This is tested on BeagleBone with a SPI framebuffer driver and MMC
> rootfs. A trivial gpio DMA event misc driver was used to test the
> crossbar DMA event support. It is also tested on the AM335x EVM
> with the onboard SPI flash and MMC rootfs. The branch at
> https://github.com/ohporter/linux/tree/edma-dmaengine-v3 has the
> complete series, dependencies, and some test drivers/defconfigs.
> 

I didn't see all the patches that you posted on edma-dmaengine-v3
but I do seem them on edma-dmaengine-am33xx-v3 branch.

I added a couple of patches to enable earlyprintk and build the DTB
appended kernel image uImage-dtb.am335x-evm

Here's what i see

[...]
[    0.128831] regulator-dummy: no parameters
[    0.130793] NET: Registered protocol family 16
[    0.131694] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.133030] omap-gpmc omap-gpmc: GPMC revision 6.0
[    0.153136] platform 49000000.edma: alias fck already exists
[    0.153176] platform 49000000.edma: alias fck already exists
[    0.153199] platform 49000000.edma: alias fck already exists
[    0.158184] OMAP GPIO hardware version 0.1
[    0.172844] No ATAGs?
[    0.172868] hw-breakpoint: debug architecture 0x4 unsupported.
[    0.174282] genirq: Flags mismatch irq 28. 00000000 (edma) vs. 00000000 (edma)
[    0.174536] ------------[ cut here ]------------
[    0.174576] WARNING: at kernel/irq/manage.c:1211 __free_irq+0x9c/0x1c0()
[    0.174586] Trying to free already-free IRQ 28
[    0.174596] Modules linked in:
[    0.174645] [<c001b0e0>] (unwind_backtrace+0x0/0xf0) from [<c0042900>] (warn_slowpath_common+0x4c/0x64)
[    0.174668] [<c0042900>] (warn_slowpath_common+0x4c/0x64) from [<c00429ac>] (warn_slowpath_fmt+0x30/0x40)
[    0.174688] [<c00429ac>] (warn_slowpath_fmt+0x30/0x40) from [<c00a8298>] (__free_irq+0x9c/0x1c0)
[    0.174708] [<c00a8298>] (__free_irq+0x9c/0x1c0) from [<c00a8408>] (free_irq+0x4c/0xa8)
[    0.174739] [<c00a8408>] (free_irq+0x4c/0xa8) from [<c07976ec>] (edma_probe+0x93c/0xa24)
[    0.174770] [<c07976ec>] (edma_probe+0x93c/0xa24) from [<c03226d4>] (platform_drv_probe+0x18/0x1c)
[    0.174793] [<c03226d4>] (platform_drv_probe+0x18/0x1c) from [<c0321494>] (driver_probe_device+0x84/0x224)
[    0.174814] [<c0321494>] (driver_probe_device+0x84/0x224) from [<c03216c8>] (__driver_attach+0x94/0x98)
[    0.174834] [<c03216c8>] (__driver_attach+0x94/0x98) from [<c031fd60>] (bus_for_each_dev+0x50/0x7c)
[    0.174854] [<c031fd60>] (bus_for_each_dev+0x50/0x7c) from [<c0320bc4>] (bus_add_driver+0xa0/0x240)
[    0.174874] [<c0320bc4>] (bus_add_driver+0xa0/0x240) from [<c0321bfc>] (driver_register+0x78/0x144)
[    0.174896] [<c0321bfc>] (driver_register+0x78/0x144) from [<c03229a4>] (platform_driver_probe+0x18/0x9c)
[    0.174918] [<c03229a4>] (platform_driver_probe+0x18/0x9c) from [<c0008874>] (do_one_initcall+0x34/0x180)
[    0.174947] [<c0008874>] (do_one_initcall+0x34/0x180) from [<c055ad14>] (kernel_init+0x104/0x2b0)
[    0.174978] [<c055ad14>] (kernel_init+0x104/0x2b0) from [<c0013590>] (ret_from_fork+0x14/0x24)
[    0.175249] ---[ end trace 1b75b31a2719ed1c ]---
[    0.175354] edma: probe of 49000000.edma failed with error -16
[    0.253165] bio: create slab <bio-0> at 0
[    0.257894] edma-dma-engine edma-dma-engine.0: Can't allocate PaRAM dummy slot
[    0.257954] edma-dma-engine: probe of edma-dma-engine.0 failed with error -5
[    0.341189] omap-dma-engine omap-dma-engine: OMAP DMA engine driver
[    0.343155] vbat: 5000 mV
[    0.352193] SCSI subsystem initialized
[    0.354571] usbcore: registered new interface driver usbfs
[    0.355085] usbcore: registered new interface driver hub
[    0.355944] usbcore: registered new device driver usb
[    0.376170] omap_i2c 44e0b000.i2c: bus 0 rev2.4.0 at 400 kHz
[    0.384465] vrtc: 1800 mV
[    0.384897] vrtc: supplied by vbat
[    0.388130] vio: at 1800 mV
[    0.388284] vio: supplied by vbat
[    0.391570] vdd_mpu: 912 <--> 1312 mV at 1262 mV
[    0.391727] vdd_mpu: supplied by vbat
[    0.394747] vdd_core: 912 <--> 1150 mV at 1137 mV
[    0.394898] vdd_core: supplied by vbat
[    0.398155] vdd3: 5000 mV
[    0.400791] vdig1: at 1800 mV
[    0.400943] vdig1: supplied by vbat
[    0.403675] vdig2: at 1800 mV
[    0.403817] vdig2: supplied by vbat
[    0.407001] vpll: at 1800 mV
[    0.407151] vpll: supplied by vbat
[    0.410187] vdac: at 1800 mV
[    0.410352] vdac: supplied by vbat
[    0.413275] vaux1: at 1800 mV
[    0.413414] vaux1: supplied by vbat
[    0.416325] vaux2: at 3300 mV
[    0.416467] vaux2: supplied by vbat
[    0.419280] vaux33: at 3300 mV
[    0.419419] vaux33: supplied by vbat
[    0.422440] vmmc: 1800 <--> 3300 mV at 3300 mV
[    0.422583] vmmc: supplied by vbat
[    0.424630] tps65910 0-002d: No interrupt support, no core IRQ
[    0.432157] Bluetooth: Core ver 2.16
[    0.432767] NET: Registered protocol family 31
[    0.432785] Bluetooth: HCI device and connection manager initialized
[    0.432928] Bluetooth: HCI socket layer initialized
[    0.432965] Bluetooth: L2CAP socket layer initialized
[    0.433071] Bluetooth: SCO socket layer initialized
[    0.435116] cfg80211: Calling CRDA to update world regulatory domain
[    0.437286] Switching to clocksource gp_timer
[    0.585766] NET: Registered protocol family 2
[    0.587934] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[    0.588322] TCP bind hash table entries: 8192 (order: 6, 294912 bytes)
[    0.592077] TCP: Hash tables configured (established 8192 bind 8192)
[    0.592331] TCP: reno registered
[    0.592369] UDP hash table entries: 256 (order: 2, 20480 bytes)
[    0.592634] UDP-Lite hash table entries: 256 (order: 2, 20480 bytes)
[    0.593454] NET: Registered protocol family 1
[    0.595290] RPC: Registered named UNIX socket transport module.
[    0.595315] RPC: Registered udp transport module.
[    0.595328] RPC: Registered tcp transport module.
[    0.595340] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.596399] NetWinder Floating Point Emulator V0.97 (double precision)
[    0.596917] CPU PMU: probing PMU on CPU 0
[    0.597083] hw perfevents: enabled with ARMv7 Cortex-A8 PMU driver, 5 counters available
[    0.770294] VFS: Disk quotas dquot_6.5.2
[    0.770539] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.773244] NFS: Registering the id_resolver key type
[    0.773873] Key type id_resolver registered
[    0.773897] Key type id_legacy registered
[    0.774046] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
[    0.776552] msgmni has been set to 477
[    0.780591] io scheduler noop registered
[    0.780618] io scheduler deadline registered
[    0.780721] io scheduler cfq registered (default)
[    0.783750] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
[    0.788066] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.795200] omap_uart 44e09000.serial: did not get pins for uart0 error: -19
[    0.795696] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 88) is a OMAP UART0
[    1.728556] console [ttyO0] enabled
[    1.769162] brd: module loaded
[    1.793083] loop: module loaded
[    1.802779] mtdoops: mtd device (mtddev=name/number) must be supplied
[    1.811045] OneNAND driver initializing
[    1.816279] omap2_mcspi 48030000.spi: pins are not configured from the driver
[   61.836153] INFO: rcu_sched detected stalls on CPUs/tasks: {} (detected by 0, t=7682 jiffies)
[   61.845144] INFO: Stall ended before state dump start
[  241.875170] INFO: rcu_sched detected stalls on CPUs/tasks: {} (detected by 0, t=30727 jiffies)
[  241.884226] INFO: Stall ended before state dump start
[  421.914230] INFO: rcu_sched detected stalls on CPUs/tasks: {} (detected by 0, t=53772 jiffies)
[...]

Let me know if I missed something.

Regards,
Vaibhav



More information about the linux-arm-kernel mailing list