All of lore.kernel.org
 help / color / mirror / Atom feed
* [Question] MPC8360: Enabling DMA for CompactFlash in IDE mode
@ 2009-07-01 22:31 Richard Retanubun
  0 siblings, 0 replies; only message in thread
From: Richard Retanubun @ 2009-07-01 22:31 UTC (permalink / raw)
  To: Linuxppc-dev-mList

Hello,

I am running on an MPC8360 board with u-boot-2009.06 and linux-2.6.26-13.
The board is booting from nor flash and then u-boot configures UPM-A for compact flash in true-IDE mode
(based on the design of the MPC8349ITX eval board). The IRQ used is IRQ6.

I got this setup going fine, but now I wish to enable DMA support to the compact flash to speed it up.

The HW wired the compact flash's DMA_DREQ and DMA_DACK to the CPUs DMA_DREQ3 (PC[17]) and DMA_DACK3 (PC[0]).

I added this in u-boot to configure the pins to their DMA functions:

	/* DMA Controller, channel 3 for compact flash */
  	{2, 0,  1, 0, 1},	/* DMA_DACK3n / PTP_ALARM1 */
	{2, 17, 2, 0, 2},	/* DMA_DREQ3n / PTP_PPS2 */

In the dtb, I added the following for dma and compact flash

		dma@82a8 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "fsl,elo-dma";
			reg = <0x82a8 4>;
			ranges = <0 0x8100 0x1a8>;
			interrupt-parent = <&ipic>;
			interrupts = <0x47 8>;
			cell-index = <0>;
			
			/* The dma-channels are offset from 0x8100 */
			dma-channel@0 {
				compatible = "fsl,elo-dma-channel";
				reg = <0 0x80>;
				interrupt-parent = <&ipic>;
				interrupts = <0x47 8>;
			};
			dma-channel@80 {
				compatible = "fsl,elo-dma-channel";
				reg = <0x80 0x80>;
				interrupt-parent = <&ipic>;
				interrupts = <0x47 8>;
			};
			dma-channel@100 {
				compatible = "fsl,elo-dma-channel";
				reg = <0x100 0x80>;
				interrupt-parent = <&ipic>;
				interrupts = <0x47 8>;
			};
			dma-channel@180 {
				compatible = "fsl,elo-dma-channel";
				reg = <0x180 0x28>;
				interrupt-parent = <&ipic>;
				interrupts = <0x47 8>;
			};
		}; /* dma@82a8 */

		/* CS2 = Compact FLash in PATA/IDE connection */
		pata@2,0 {
			device_type = "ata";
			compatible = "ata-generic";
			reg = <0x2 0x0 0x10 0x2 0x20c 0x4>;
			reg-shift = <0x1>;
			pio-mode = <0x6>;
			interrupts = <0x16 0x8>;
			interrupt-parent = <&ipic>;
		};

I enabled the kernel's CONFIG_ATA, CONFIG_ATA_SFF, CONFIG_PATA_PLATFORM, CONFIG_PATA_OF_PLATFORM for the CF
I also enabled CONFIG_DMADEVICES and CONFIG_FSL_DMA

with all this in place, I got this on boot:

of-fsl-dma e00082a8.dma: Probe the Freescale DMA driver for fsl,elo-dma controller at e00082a8...
of-fsl-dma-channel e0008100.dma-channe: #0 (fsl,elo-dma-channel), irq 71
of-fsl-dma-channel e0008180.dma-channe: #1 (fsl,elo-dma-channel), irq 71
of-fsl-dma-channel e0008200.dma-channe: #2 (fsl,elo-dma-channel), irq 71
of-fsl-dma-channel e0008280.dma-channe: #3 (fsl,elo-dma-channel), irq 71
[snip]
scsi0 : pata_platform
ata1: PATA max PIO6 mmio cmd 0xf8008000 ctl 0xf800820c irq 27
ata1.00: ATA-4: SG9CF1GSME4IRUG, 20071016, max UDMA/100
ata1.00: 1989792 sectors, multi 0: LBA
ata1.00: configured for PIO
scsi 0:0:0:0: Direct-Access     ATA      SG9CF1GSME4IRUG  2007 PQ: 0 ANSI: 5
sd 0:0:0:0: [sda] 1989792 512-byte hardware sectors (1019 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
sd 0:0:0:0: [sda] 1989792 512-byte hardware sectors (1019 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
  sda: sda1 sda2 sda3 sda4 sda5 sda6 sda7
sd 0:0:0:0: [sda] Attached SCSI disk
[snip]

However, I don't think the CPU is using DMA channel 3 to speed up CF access

I tried doing "dd if=/dev/sda5 of=/dev/sda7 bs=4KB"
which copied 493MB at 2.5 MB/s with top showing about 75% CPU usage.

So, what am I missing?
(my guess is the glue between the DMA engine and the Compact flash,
  but I'm not sure how to hook it up).

Thank you very much for everyone's time.


Richard Retanubun
-----------------
RuggedCom
30 Whitmore Road,Woodbdrige
Ontario, Canada

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-07-01 22:43 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-01 22:31 [Question] MPC8360: Enabling DMA for CompactFlash in IDE mode Richard Retanubun

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.