[PATCH] ep93xx: Implement double buffering for M2M DMA channels
H Hartley Sweeten
hartleys at visionengravers.com
Mon Apr 16 14:59:08 EDT 2012
On Wednesday, April 11, 2012 12:19 AM, Rafal Prylowski wrote:
> On 2012-04-10 19:55, H Hartley Sweeten wrote:
>> On Tuesday, April 10, 2012 10:29 AM, Mika Westerberg wrote:
>>> On Fri, Mar 23, 2012 at 11:09:50AM -0500, H Hartley Sweeten wrote:
>>>
>>> Now that the spurious interrupts thing with VIC has been sorted out, should we
>>> revisit this patch? Hartley, do you have any objections merging this?
> >
>> I have not had a chance to look at this with the VIC issue fixed.
>>
>> Last time I tried testing the double buffering patch my system would not boot
>> correctly. I'll try to test this again shortly.
>>
>> Rafal,
>>
>> Could you repost the latest version of the patch?
>>
>
> Hi,
>
> Here is the patch. It applies to current mainline (3.4rc2). The only thing that
> has changed is additional call to ep93xx_dma_advance_active(..) before disabling
> the channel.
Rafal,
This patch still doesn't work on my ep93xx system.
FWIW, I have two devices on my SPI bus:
static struct spi_board_info vision_spi_board_info[] __initdata = {
{
.modalias = "sst25l",
.platform_data = &vision_spi_flash_data,
.controller_data = &vision_spi_flash_hw,
.max_speed_hz = 20000000,
.bus_num = 0,
.chip_select = 0,
.mode = SPI_MODE_3,
}, {
.modalias = "mmc_spi",
.platform_data = &vision_spi_mmc_data,
.controller_data = &vision_spi_mmc_hw,
.max_speed_hz = 20000000,
.bus_num = 0,
.chip_select = 1,
.mode = SPI_MODE_3,
},
};
static struct ep93xx_spi_info vision_spi_master __initdata = {
.num_chipselect = ARRAY_SIZE(vision_spi_board_info),
.use_dma = true,
};
With your patch applied I get these relevant messages during boot:
sst25l spi0.0: sst25lf040a (512 KiB)
Creating 3 MTD partitions on "SPI Flash":
0x000000000000-0x000000001000 : "SPI bootstrap"
0x000000001000-0x000000002000 : "Bootstrap config"
0x000000002000-0x000000080000 : "System config"
ep93xx-spi ep93xx-spi.0: EP93xx SPI Controller at 0x808a0000 irq 53
mmc_spi spi0.1: SD/MMC host mmc0, no poweroff
And /proc/interrupts shows this right after boot:
# cat /proc/interrupts
CPU0
4: 4519 VIC ep93xx timer
17: 1268725 VIC ep93xx-spi-rx
18: 1277244 VIC ep93xx-spi-tx
29: 0 VIC ep93xx-keypad
33: 0 VIC rtc-isl1208
39: 176 VIC eth0
52: 112 VIC uart-pl010
53: 1 VIC ep93xx-spi
56: 0 VIC ohci_hcd:usb1
79: 0 GPIO mmc_spi:cd
87: 0 GPIO 0-0074
Without your patch I get this:
sst25l spi0.0: sst25lf040a (512 KiB)
Creating 3 MTD partitions on "SPI Flash":
0x000000000000-0x000000001000 : "SPI bootstrap"
0x000000001000-0x000000002000 : "Bootstrap config"
0x000000002000-0x000000080000 : "System config"
ep93xx-spi ep93xx-spi.0: EP93xx SPI Controller at 0x808a0000 irq 53
mmc_spi spi0.1: SD/MMC host mmc0, no poweroff
mmc0: new SD card on SPI
mmcblk0: mmc0:0000 S064B 60.6 MiB
mmcblk0: p1
# cat /proc/interrupts
CPU0
4: 1794 VIC ep93xx timer
17: 141 VIC ep93xx-spi-rx
18: 141 VIC ep93xx-spi-tx
29: 0 VIC ep93xx-keypad
33: 0 VIC rtc-isl1208
39: 100 VIC eth0
52: 109 VIC uart-pl010
53: 418 VIC ep93xx-spi
56: 0 VIC ohci_hcd:usb1
79: 0 GPIO mmc_spi:cd
87: 0 GPIO 0-0074
Err: 0
It appears your patch is causing an interrupt storm on my system.
Regards,
Hartley
More information about the linux-arm-kernel
mailing list