Hi Andy,
Thanks for the feedback!
On Sat, Dec 25, 2021 at 06:43:22PM +0200, Andy Shevchenko wrote:
On Wed, Dec 15, 2021 at 10:00 PM Gabriel Somlo [off-list ref] wrote:
quoted
LiteX (https://github.com/enjoy-digital/litex) is a SoC framework
that targets FPGAs. LiteSDCard is a small footprint, configurable
SDCard core commonly used in LiteX designs.
The driver was first written in May 2020 and has been maintained
cooperatively by the LiteX community. Thanks to all contributors!
...
quoted
+ int ret;
+
+ host->irq = platform_get_irq_optional(host->dev, 0);
+ if (host->irq <= 0) {
+ dev_warn(dev, "Failed to get IRQ, using polling\n");
+ goto use_polling;
+ }
[Same comment as per v3.]
This is wrong. It missed the deferred probe, for example.
The best approach is
ret = platform_get_irq_optional(...);
if (ret < 0 && ret != -ENXIO)
return ret;
if (ret > 0)
...we got it...
It will allow the future API fix of platform_get_irq_optional() to be
really optional.
Thanks for the example. I still need to work in a decision to use
polling, though. How about something like this instead:
ret = platform_get_irq_optional(...);
if (ret == -ENXIO)
goto use_polling;
if (ret < 0)
return ret; // deferred probe (-EAGAIN likely?)
if (ret > 0)
...we got it, keep going...
...
quoted
+#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
Why under ifdeffery?
Because I only want to do it on 64-bit capable architectures.
The alternative would be to call
dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
on *all* architectures, but ignore the returned error (-EIO,
presumably on architetures that only support 32-bit DMA).
Do you think that would be cleaner?
Thanks,
--Gabriel
quoted
+ /* increase from default 32 on 64-bit-DMA capable architectures */
+ ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
+ if (ret)
+ goto err;
+#endif
With Best Regards,
Andy Shevchenko