Hi Finn,
Am 19.12.2017 um 16:35 schrieb Finn Thain:
> On Tue, 19 Dec 2017, Michael Schmitz wrote:
>
>> Contrary to the Mac driver, esp->command_block and
>> esp->command_block_dma are not identical addresses on Amiga.
>
> Why not make them identical, depending on the length of the tranfer? (Then
> choose PIO or DMA by testing for the same threshold.)
esp->command_block_dma is mapped at driver init time so we don't get to
chose at command submission time. I suspect it's due to a different
memory layout on Amiga (no 1:1 correspondence of physical and kernel
virtual addresses). But Geert ought to be able to answer that.
>> Is there a generic way to map a DMA address (i.e., physical address
>> AFAIK) to a kernel virtual one?
>>
>
> I don't know of a good way to do that.
>
>> (I can use esp->command_block in the reconnect message special case but
>> not otherwise ...)
>
> Maybe something like this...
>
> struct esp_cmd_entry *ent = esp->active_cmd;
> struct esp_cmd_priv *spriv = ESP_CMD_PRIV(ent->cmd);
> struct scatterlist *sg = spriv->cur_sg;
> unsigned long addr = sg_page(sg) + sg->offset;
>
> but that doesn't work for the esp_autosense() case, which doesn't involve
> esp->ops->map_sg...
>
> HTH
I'll give that a try to see if this works for regular transfers. Will
look at ways to identify autosense as well (do sense data fit into the
ESP FIFO usually?)
Cheers,
Michael
--
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html