Subject: [RFC PATCH dtc] C-based DT schema checker integrated into dtc

From: [email-masked] (Stephen Warren)
Date: Mon, 04 Nov 2013 14:43:00 -0700

On 11/04/2013 02:29 PM, Jason Gunthorpe wrote:
> On Mon, Nov 04, 2013 at 09:43:22PM +0100, Arnd Bergmann wrote:
> 
>> /*
>>  * this lists all properties we access from the driver. The list
>>  * is interpreted by devm_probe() and can be programmatically
>>  * verified to match the binding.
>>  */
>> static const struct devm_probe foo_probe_list[] = {
>> 	DEVM_ALLOC(foo_priv),
>> 	DEVM_IOMAP(foo_priv, regs, 0, 0),
>> 	DEVM_PROP_BOOL(foo_priv, oldstyle_dma, "foo,oldstyle-dma"),
>> 	DEVM_DMA_SLAVE(foo_priv, rxdma, "rx");
>> 	DEVM_DMA_SLAVE(foo_priv, txdma, "tx");
>> 	DEVM_GPIO(foo_priv, gpio, 0);
>> 	DEVM_IRQ_NAMED(foo_priv, irq, foo_irq_handler, "fifo", IRQF_SHARED),
>> 	{},
>> };
> 
> Drivers are required to gain control of, and disable the device before
> they bind and enable things like DMA or interrupts.
> 
> At the very least the action list above needs an explicit callback to
> do that step..

For IRQs, it looks like Arnd's code was simply parsing the IRQ
specifier, and converting it to the Linux-internal number. The actual
request of the IRQ was presumably left to probe(). I think theren's no
issue here.

For DMA, it does look like Arnd's code was requesting it too, but that
should also be fine; as long as no transactions are actually issued
against that DMA slave channel, then the HW state shouldn't matter?