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

Reply via email to