On 05.01.2014 15:06, Arnd Bergmann wrote: > On Saturday 04 January 2014, Florian Meier wrote: >> On 02.01.2014 19:03, Arnd Bergmann wrote: >>> On Thursday 02 January 2014 18:49:23 Florian Meier wrote: >>>> Add support for DMA controller of BCM2835 as used in the Raspberry Pi. >>>> Currently it only supports cyclic DMA. >>> >>> Looks very nice. Just a few details I noticed: >>> >>>> +#if defined(CONFIG_OF) >>>> +static const struct of_device_id bcm2835_dma_of_match[] = { >>>> + { .compatible = "brcm,bcm2835-dma", }, >>>> + {}, >>>> +}; >>>> +MODULE_DEVICE_TABLE(of, bcm2835_dma_of_match); >>>> +#endif >>> >>> I doubt we are going to see non-DT versions of this driver, so the #ifdef >>> can just get removed here. >> >> As already explained in previous versions of this patch thread, there is >> a non-DT version in a downstream kernel and the more I make this patch >> incompatible with non-DT, the harder it gets to upstream the remaining >> stuff. I hope this is not something that blocks this driver from getting >> accepted. > > In this case, that's certainly not an excuse unless you are worried about > 400 bytes of .rodata in one driver and there are no side-effects of having > the device ID listed when it's not used. You are right! I forgot that having these lines doesn't prevent non-DT initialization. I will change that. > Even if it made a real difference > to another project, you'd need a much better excuse -- if you are worried > about compatibility between mainline and some downstream kernel, how about > changing that downstream kernel to use DT? That is the future plan. Although, the current state is that there is a downstream kernel with lots of devicetree incompatible drivers and an upstream kernel with some missing important drivers. Therefore, since I want my drivers being tested by the community, they have to be non-DT compatible (or at least it should be easy to bring changes from the non-DT version to the DT version and vice versa). Anyway, in this case this introduces no problem as you have mentioned before. >>> [...] >>> This can now be simplified using the dma_get_any_slave_channel() interface >>> taht Stephen Warren introduced. >>> [...] >>> dma_set_mask_and_coherent() >> >> Sigh, the API is developing faster than I can keep track with updating >> this patch. I hope some day I will be faster.... >> When Russell told me about the second one before, it hoped that I can >> avoid merging different trees on my own, but it seems that you want me >> to do that ;-) > > The dma_get_any_slave_channel() change is probably my fault. I suggested > both the initial dma_get_slave_channel() API and this one because the > original approach turned out too complicated. If dma_set_mask_and_coherent(). > > I don't think you have to merge other trees, to get both APIs, they should > already be part of the dma-slave tree that your patch would get merged > into. If not, we can probably come up with a different solution. The > dma_set_mask_and_coherent() suggestion is not as important as the > dma_get_any_slave_channel() one, if you have to choose between them. Both changes are in the slave-dma tree, but I need patches from the bcm2835 tree and the asoc tree, too. Although, it shouldn't be too complicated to merge them, I hope. >>>> + if (pdev->dev.of_node) { >>>> + /* Device-tree DMA controller registration */ >>>> + rc = of_dma_controller_register(pdev->dev.of_node, >>>> + bcm2835_dma_xlate, od); >>>> + if (rc) { >>>> + dev_err(&pdev->dev, "Failed to register DMA controller\n"); >>>> + goto err_no_dma; >>>> + } >>>> + } >>> >>> If pdev->dev.of_node isn't set, you didn't get here, so the if() can be removed. >> >> Why not? (In the case of non-DT initialization) > > The code I quoted is right after these lines: > > + /* Request DMA channel mask from device tree */ > + if (of_property_read_u32(pdev->dev.of_node, > + "brcm,dma-channel-mask", > + &chans_available)) { > + dev_err(&pdev->dev, "Failed to get channel mask\n"); > + rc = -EINVAL; > + goto err_no_dma; > + } > > If DT is disabled or not used, you return -EINVAL here. Stupid me, thank you! Greetings, Florian -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html