On 04/22/2013 04:00 PM, Lars-Peter Clausen wrote: > On 04/22/2013 10:52 PM, Jon Hunter wrote: >> >> On 04/22/2013 03:33 AM, Lars-Peter Clausen wrote: >>> Both of_dma_nbcells field of the of_dma_controller and the args_count field >>> of >>> the dma_spec are initialized by parsing the #dma-cells attribute of their >>> device >>> tree node. So if the device tree nodes of a DMA controller and the dma_spec >>> match this means that of_dma_nbcells and args_count will also match. So the >>> second test in the of_dma_find_controller loop is redundant because given >>> the >>> first test yields true the second test will also yield true. So we can >>> safely >>> remove the test whether of_dma_nbcells matches args_count. Since this was >>> the >>> last user of the of_dma_nbcells field we can remove it altogether. >> >> This assumes that someone has correctly added the dma information to the >> dma slave binding. I could see systems where different dma controllers >> have different of_dma_nbcells and so someone could put the enter wrong >> number of cells for a dma slave binding. Its really to catch user error. > > No, this assumes nothing. The condition will _always_ be true. > > dma_spec->args_count is initialized by parsing the #dma-cells attribute of > dma_sepc->np. of_dma->of_dma_nbcells is initialized by parsing the #dma-cells > attribute of of_dma->of_node. If ofdma->of_node equals dma_spec->np then > dma_spec->args_count will also equal of_dma->of_dma_nbcells.
Thanks for the clarification. I should have looked more closely at of_parse_phandle_with_args(). Yes I agree it will always be true if count is less than or equal to MAX_PHANDLE_ARGS (which defaults to 8). It is very unlikely that someone would use more than 8 and I guess it does warn on this condition. if (out_args) { int i; if (WARN_ON(count > MAX_PHANDLE_ARGS)) count = MAX_PHANDLE_ARGS; out_args->np = node; out_args->args_count = count; for (i = 0; i < count; i++) out_args->args[i] = be32_to_cpup(list++); } Cheers Jon -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/