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@xxxxxxxxxxxxx/ > 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