Re: [PATCH v5 05/10] dt-bindings: irqchip: Introduce TISCI Interrupt router bindings

From: Lokesh Vutla
Date: Thu Feb 14 2019 - 13:03:14 EST


Hi Tony,

On 2/14/2019 11:16 PM, Tony Lindgren wrote:
> * Lokesh Vutla <lokeshvutla@xxxxxx> [190214 17:32]:
>> Hi Tony,
>> Please do not snip the on going discussion.
>>
>> On 2/14/2019 9:11 PM, Tony Lindgren wrote:
>>> * Lokesh Vutla <lokeshvutla@xxxxxx> [190214 08:39]:
>>>> IMHO, device ids are something which can be used in DT. There are many other
>>>> things like the interrupt ranges etc.. which are discoverable from sysfw and we
>>>> are implementing it.
>>>
>>> We need to describe hardware in the device tree, not firmware.
>>>
>>> If you have something discoverable from the firmware, you should
>>> have the device driver query it from sysfw based on a hardware
>>> property, not based on some invented enumeration in the firmware.
>>
>> Yes we are already querying sysfw for all the irq ranges that can be
>> discoverable. The topic of discussion here is about the parent interrupt
>> controller id. I am not sure how you are expecting an id be discoverable
>> from system firmware especially with a name.
>
> Well names are quite standard in dts (but should be used with
> the phandle + offset). Think for example interrupt-names and
> reg-names :)
>
>>> If there is some device to firmware translation needed, hide that
>>> into the device driver and keep it out of the device tree.
>>
>> If preferred this can be moved to of_match_data attached to each
>> compatible property. Then for each SoC a new compatible needs to be created.
>
> Hiding the ID into the device driver and compatible property
> makes sense to me if the id is based on SoC + firmware.
>
> But I'd rather have a proper hardware based phandle + index
> type mapping in the dts if possible though.

The idea about sysfw here is that Linux is not aware of anything about
this device(Interrupt Router). It cannot even access any of its
registers. As a user Linux should know who is the parent to which the
Interrut router output should be configured. Then query sysfw about the
range of gic irqs allocated to it. Now for configuration, Linux should
pass the the input to interrupt router, gic irq no, and gic id(by which
sysfw uniquely identifies GIC interrupt controller with the SoC). Based
on these parameters Interrupt Router registers gets configured.

So for the above configuration we need the gic_id for which the dt
property "ti,sci-dst-id" is used.

Thanks and regards,
Lokesh

>
> What does this id really consist of?
>
> Regards,
>
> Tony
>