On 27/03/2024 13:12, Krzysztof Kozlowski wrote:
On 26/03/2024 14:43, Xingyu Wu wrote:
+properties:
- compatible:
- enum:
- cdns,i2s-mc
Why did this appear? Who asked for this? Usually these blocks are not usable on their own.
I wonder if I should keep the original IP compatible. Do I not need it?
As I said, it is not usable on its own, so unless you have other arguments then
no.
But my point was that no one asked for this.
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....
Or should I only keep the compatible 'starfive,jh8110-i2s' and change the bindings name to same to this compatible?
- starfive,jh8100-i2s
- reg:
- maxItems: 1
- interrupts:
- description:
The interrupt line number for the I2S controller. Add this
parameter if the I2S controller that you are using does not
using DMA.
That's still wrong. You already got comment on this. Either you have interrupt
or not.
You do not add interrupts, based on your choice or not of having DMA. Drop the comment.
Do I keep this property and drop this description?
Drop description. Keep property, if your hardware has interrupts.
Will drop.
...
- compatible
- reg
- clocks
- clock-names
- resets
+oneOf:
- required:
- dmas
- dma-names
- required:
- interrupts
This won't work. Provide both interrupts and dmas, and then test your DTS.
I provided both properties in the DTS and test by dtbs_check. Then it printed
that:
'More than one condition true in one of shema: ...'
Exactly. Having both properties is a correct DTS. Interrupts do not disappear just because you decide to describe DMA. It is OS choice what to use if both are provided.
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?
Can I use the config (like SND_SOC_CADENCE_I2S_MC_PCM) to choose DMA or interrupt if having both them in DTS?
Don't know, I tend to focus here on bindings.
Best regards, Xingyu Wu