On Tue, 13 Jan 2015 12:27:15 +0000 Russell King - ARM Linux linux@arm.linux.org.uk wrote:
On Tue, Jan 13, 2015 at 01:21:58PM +0100, Philipp Zabel wrote:
I wonder if it wouldn't be nicer to have the AP# and type in the device tree and then calculate the register value from that in the driver.
port@1 { reg = <1>; /* AP1 */ nxp,audio-port = "i2s"; tda998x_i2s: endpoint { remote-endpoint = <&audio1_i2s>; }; };
What about the case where we have 4 I2S streams being supplied to the device on four separate AP inputs?
4 streams on 4 different APs (sources) should work, but 4 streams from a same source should be detailed.
In an other way, the unit address (== first reg) does not need to be a sequence number. It is the I/O base in most DTs. So, it could be the port value:
port@230145 { port-type = "rgb"; reg = <0x230145>; hdmi_0: endpoint { remote-endpoint = <&lcd0_0>; }; }; port@3 { /* AP1 = I2S */ port-type = "i2s"; reg = <0x03>; tda998x_i2s: endpoint { remote-endpoint = <&audio1_i2s>; }; }; port@4 { /* AP2 = S/PDIF */ port-type = "spdif"; reg = <0x04>; tda998x_spdif: endpoint { remote-endpoint = <&audio1_spdif1>; }; };