Hi Rob Thank you for your feedback > > SoC.0 Codec0 > > SoC.1 <-> Card <-> Codec1 > > SoC.2 Codec2 (snip) > The card should only have the entry (or exit) points of the graph. > That may not even need to be graph nodes. It could just be a list of > CPU DAI phandles (which then have graph nodes). > > Look at the display side use of OF graph. We have display subsystem > nodes (like a card) with a poorly named ports property (nothing to do > with OF graph) listing display channels. Each phandle there is the > entry point to the graph and is typically the front end display > controller (perhaps a CSC and scaling unit). The graph then goes to a > backend controller (for display timing), then to interface PHY > (DSI/HDMI), then possibly and external bridge chip, then to a > connector or panel node. That's a complex example. In simple cases, we > just have a display controller connected to a panel. If my understanding here was correct, do you mean like this ? sound_dai0 { ports { port { /* Card.0 */ } port { /* SoC.0 */ } port { /* Codec0 */ } }; }; sound_dai1 { ports { port { /* Card.1 */ } port { /* SoC.1 */ } port { /* Codec1 */ } }; }; sound_dai2 { ports { port { /* Card.2 */ } port { /* SoC.2 */ } port { /* Codec2 */ } }; }; card { ports { port { /* sound_dai0 */ } port { /* sound_dai1 */ } port { /* sound_dai2 */ } }; }; Or this ? sound_dai0 { ports { port { /* SoC.0 */ } port { /* Codec0 */ } }; }; sound_dai1 { ports { port { /* SoC.1 */ } port { /* Codec1 */ } }; }; sound_dai2 { ports { port { /* SoC.2 */ } port { /* Codec2 */ } }; }; card { dais = <&sound_dai0 &sound_dai1 &sound_dai2>; }; Best regards --- Kuninori Morimoto -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html