On 29/03/2024 04:56, Xingyu Wu wrote:
I want to keep the original IP compatible which can distinguish from the JH8100
SoC.
Can I write it like this: compatible: enum: - starfive,jh8100-i2s const: cdns,i2s-mc
and I write this in the DTS: compatible = "starfive,jh8100-i2s", "cdns,i2s-mc";
Can you provide any rationale for this? I asked "unless you have other arguments", so where are the arguments?
Nothing was explained in patch changelog. Nothing was provided in this email thread.
I don't know if I understood what mark said[1]. Is it to keep the original IP and add other compatible?
[1] https://lore.kernel.org/all/27155281-573c-493d-96fe-1f28ebb0ce5e@sirena.org....
I stated and I keep my statement that such block is usually not usable on its own and always needs some sort of quirks or SoC-specific implementation. At least this is what I saw in other similar cases, but not exactly I2S.
Therefore I think fallback is not usable here, thus please use only starfive compatible. Drop the fallback. It could be added in the future if I am proven wrong. If you think that fallback is usable alone, please bring some real life case.
Or should I only keep the compatible 'starfive,jh8110-i2s' and change the bindings name to same to this compatible?
Filename could be cdns,i2s-mc.yaml, assuming that's the name of original IP block.
...
But this I2S can only use either DMA or interrupts.
Just like many other components. DTS should reflect hardware. Hardware has interrupts and DMA, right?
Yes. The hardware can use interrupts and provide the handshake interface of DMA to DMA controller. In software, we can choose only one between them. Do I keep them both in the bindings and provide the selection in the driver?
Yes.
Best regards, Krzysztof