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

                d...@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-chan...@0 {
                                compatible = "fsl,elo-dma-channel";
                                reg = <0 0x80>;
                                interrupt-parent = <&ipic>;
                                interrupts = <0x47 8>;
                        };
                        dma-chan...@80 {
                                compatible = "fsl,elo-dma-channel";
                                reg = <0x80 0x80>;
                                interrupt-parent = <&ipic>;
                                interrupts = <0x47 8>;
                        };
                        dma-chan...@100 {
                                compatible = "fsl,elo-dma-channel";
                                reg = <0x100 0x80>;
                                interrupt-parent = <&ipic>;
                                interrupts = <0x47 8>;
                        };
                        dma-chan...@180 {
                                compatible = "fsl,elo-dma-channel";
                                reg = <0x180 0x28>;
                                interrupt-parent = <&ipic>;
                                interrupts = <0x47 8>;
                        };
                }; /* d...@82a8 */

                /* CS2 = Compact FLash in PATA/IDE connection */
                p...@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


_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to