Re: [PATCH 0/2] Experimental Amiga Zorro ESP driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/19/2013 11:48 AM, Michael Schmitz wrote:
Geert,
On Sun, Aug 18, 2013 at 10:58 AM, Michael Schmitz <schmitzmic@xxxxxxxxx> wrote:
I'll also need to check the command_block and command_block_dma addresses -
does the DMA require virtual or physical addresses?

Physical, of course.

:-) VDMA was invented a bit later ...


I'll go check the usage of the DMA API calls again, but as the driver seems to do DMA fine until the short transfer, that seems the most likely cause. PIO for dma_count < 7 might be an option.

I see transfers with esp_count=1 and dma_count=7 in the log - wonder why that works but the short 2/2 byte case does not.

Cheers,

   Michael

I guess those two bytes have something to do with target (re)selection... There are two different ways of attempting to read these bytes in the code, one is reading them from the FIFO byte by byte, and the other way is to setup a DMA read (write from device). The two different schemes are used in two different functions, and I do not understand why one method would be preferred over the other when comparing these functions.

I think I managed to find these two bytes; They are not ready for DMA, but are sitting in the FIFO waiting to be read. So the loop before the "IRQ2 timeout" is waiting for an interrupt that would tell that the DMA transfer has finished.
...

[13433.390000] ESP: Disconnecting tgt[1] tag[20:0]
[13433.400000] zorro_esp_irq_pending(): ESP_STATUS = 0x97, 2 bytes in FIFO.
[13433.400000] ESP: intr sreg[97] seqreg[04] sreg2[00] ireg[0c]
[13433.400000] ESP: reconnect tag, zorro_esp_irq_pending(): ESP_STATUS = 0x97, 0 bytes in FIFO. [13433.400000] IRQ(0:10:97), zorro_esp: esp_count = 2, dma_count = 2, addr = 0x7fa59000. Writing.
[13433.400000] zorro_esp_irq_pending(): ESP_STATUS = 0x17, 2 bytes in FIFO.
[13433.400000] zorro_esp_irq_pending(): ESP_STATUS = 0x17, 2 bytes in FIFO.
[13433.400000] zorro_esp_irq_pending(): ESP_STATUS = 0x17, 2 bytes in FIFO.
[13433.400000] zorro_esp_irq_pending(): ESP_STATUS = 0x17, 2 bytes in FIFO.
[13433.400000] zorro_esp_irq_pending(): ESP_STATUS = 0x17, 2 bytes in FIFO.
[13433.400000] zorro_esp_irq_pending(): ESP_STATUS = 0x17, 2 bytes in FIFO.
[13433.400000] zorro_esp_irq_pending(): ESP_STATUS = 0x17, 2 bytes in FIFO.
[13433.400000] zorro_esp_irq_pending(): ESP_STATUS = 0x17, 2 bytes in FIFO.
[13433.400000] zorro_esp_irq_pending(): ESP_STATUS = 0x17, 2 bytes in FIFO.
[13433.400000] zorro_esp_irq_pending(): ESP_STATUS = 0x17, 2 bytes in FIFO.
[13433.400000] zorro_esp_irq_pending(): ESP_STATUS = 0x17, 2 bytes in FIFO.
[13433.400000] zorro_esp_irq_pending(): ESP_STATUS = 0x17, 2 bytes in FIFO.
[13433.400000] zorro_esp_irq_pending(): ESP_STATUS = 0x17, 2 bytes in FIFO.
[13433.400000] zorro_esp_irq_pending(): ESP_STATUS = 0x17, 2 bytes in FIFO.
[13433.400000] zorro_esp_irq_pending(): ESP_STATUS = 0x17, 2 bytes in FIFO.
...
Remember that write is read :)

Now, I guess, I have to check whether those two bytes contain the right information...

-Tuomas

Attachment: zesp014.cap.gz
Description: GNU Zip compressed data


[Index of Archives]     [Video for Linux]     [Yosemite News]     [Linux S/390]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux