On Tue, Mar 8, 2016 at 8:59 AM, Timur Tabi <ti...@codeaurora.org> wrote:
>> +       /* Try setting the coherent_dma_mask to 64 bits, then try 32 bits
>> */
>> +       ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
>> +       if (ret) {
>> +               ret = dma_set_mask_and_coherent(&pdev->dev,
>> DMA_BIT_MASK(32));
>> +               if (ret)
>> +                       return ret;
>> +       }
>
>
> I still do not understand what situation would cause a 64-bit mask to fail,
> but a 32-bit mask to succeed.  If the driver says that the device can
> support 64-bit DMA, why would that ever fail?  That means that the device
> can DMA anywhere, so there are no restrictions.

Can anyone help me understand this?  It's been a month since I posted
this question, and I haven't gotten an answer.  I see the whole
try-64-and-then-32-bit-masks code in a number of places, but I've
never understood why it's necessary.
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to