Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/sound/soc/generic/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 11 kB image not shown  

Quelle  audio-graph-card2-custom-sample1.dtsi   Sprache: unbekannt

 
// SPDX-License-Identifier: GPL-2.0
/*
 * audio-graph-card2-custom-sample1.dtsi
 *
 * Copyright (C) 2020 Renesas Electronics Corp.
 * Copyright (C) 2020 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
 *
 * This sample indicates how to use audio-graph-card2 and its
 * custom driver. "audio-graph-card2-custom-sample" is the custome driver
 * which is using audio-graph-card2.
 *
 * You can easily use this sample by adding below line on your DT file,
 * and add new CONFIG to your .config.
 *
 * #include "../../../../../sound/soc/generic/audio-graph-card2-custom-sample1.dtsi"
 *
 * CONFIG_SND_AUDIO_GRAPH_CARD2
 * CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE
 * CONFIG_SND_TEST_COMPONENT
 *
 *
 * You can indicate more detail each device behavior as debug if you modify
 * "compatible" on each test-component. see below
 *
 * test_cpu {
 * - compatible = "test-cpu";
 * + compatible = "test-cpu-verbose";
 *  ...
 * };
 *
 * test_codec {
 * - compatible = "test-codec";
 * + compatible = "test-codec-verbose";
 *  ...
 * };
 *
 *
 * Below sample doesn't use "format" property,
 * because test-component driver (test-cpu/test-codec) is supporting
 * snd_soc_dai_ops :: .auto_selectable_formats.
 * see
 * snd_soc_runtime_get_dai_fmt()
 * linux/sound/soc/generic/test-component.c :: test_dai_formats
 */
/ {
 audio-graph-card2-custom-sample-1 {
  /*
   * You can use audio-graph-card2 directly by using
   *
   * compatible = "audio-graph-card2";
   */
  compatible = "audio-graph-card2-custom-sample";
  label = "card2-custom-sample-1";

  /*
   * @ : used at links
   */
  links = <
   /*
    *
    * [Normal]
    *
    *      <cpu1_0>
    * cpu1_0 <-@-----> codec1_0
    */
    &cpu1_0 /* CPU side only */

   /*
    * [Semi-Multi]
    *
    * CPU:Codec = 1:N
    *
    *  <sm> +-+
    * cpu1_1 <--@---->| |-> codec1_1
    *   | |-> codec1_2
    *   +-+
    */
   &sm /* CPU side only */

   /*
    * [Multi-CPU/Codec-A]
    *
    *   +-+ <mcpuA> +-+
    * cpu1_2 <-| |<---@------>| |-> codec1_3
    * cpu1_3 <-| |  | |-> codec1_4
    *   +-+  +-+
    */
   &mcpuA /* CPU side only */

   /*
    * [Multi-CPU/Codec-B]
    *
    *   +-+ <mcpuB> +-+
    *   | |<---@------>| |
    *   | |  | |
    * cpu1_4 <-| |<---------->| |-> codec1_5
    * cpu1_5 <-| |<---+------>| |-> codec1_6
    *   +-+  \----->| |-> codec1_7
    *    +-+
    */
   &mcpuB /* CPU side only */

   /*
    * [Multi-CPU/Codec-C]
    *
    *   +-+ <mcpuC> +-+
    *   | |<---@------>| |
    *   | |  | |
    * cpu1_6 <-| |<---------->| |-> codec1_8
    * cpu1_7 <-| |<-----+---->| |-> codec1_9
    * cpu1_8 <-| |<----/ +-+
    *   +-+
    */
   &mcpuC /* CPU side only */
  >;

  multi {
   #address-cells = <1>;
   #size-cells = <0>;

   /*
    * [Semi-Multi]
    *
    *  <sm> +---+
    * cpu1_1 <---@--->|X A|-> codec1_1
    *   |  B|-> codec1_2
    *   +---+
    */
   ports@0 {
    reg = <0>;
    #address-cells = <1>;
    #size-cells = <0>;
    port@0 { reg = <0>; smcodec_ep:   endpoint { remote-endpoint = <&cpu1_1_ep>;   };};/* (X) to pair */
    port@1 { reg = <1>; smcodec_A_ep: endpoint { remote-endpoint = <&codec1_1_ep>; };};/* (A) Multi Element */
    port@2 { reg = <2>; smcodec_B_ep: endpoint { remote-endpoint = <&codec1_2_ep>; };};/* (B) Multi Element */
   };

   /*
    * [Multi-CPU-A]
    *
    *   +---+ <mcpuA> +---+
    * cpu1_2 <-|A X|<---@---->|x a|-> codec1_3
    * cpu1_3 <-|B  |  |  b|-> codec1_4
    *   +---+  +---+
    */
   ports@1 {
    reg = <1>;
    #address-cells = <1>;
    #size-cells = <0>;
   mcpuA: port@0 { reg = <0>; mcpu_A_ep:  endpoint { remote-endpoint = <&mcodec_A_ep>; };}; /* (X) to pair */
    port@1 { reg = <1>; mcpu_AA_ep: endpoint { remote-endpoint = <&cpu1_2_ep>;   };}; /* (A) Multi Element */
    port@2 { reg = <2>; mcpu_AB_ep: endpoint { remote-endpoint = <&cpu1_3_ep>;   };}; /* (B) Multi Element */
   };

   /*
    * [Multi-Codec-A]
    *
    *   +---+ <mcpuA> +---+
    * cpu1_2 <-|A X|<-@------>|x a|-> codec1_3
    * cpu1_3 <-|B  |  |  b|-> codec1_4
    *   +---+  +---+
    */
   ports@2 {
    reg = <2>;
    #address-cells = <1>;
    #size-cells = <0>;
    port@0 { reg = <0>; mcodec_A_ep:  endpoint { remote-endpoint = <&mcpu_A_ep>;   };}; /* (x) to pair */
    port@1 { reg = <1>; mcodec_Aa_ep: endpoint { remote-endpoint = <&codec1_3_ep>; };}; /* (a) Multi Element */
    port@2 { reg = <2>; mcodec_Ab_ep: endpoint { remote-endpoint = <&codec1_4_ep>; };}; /* (b) Multi Element */
   };

   /*
    * [Multi-CPU-B]
    *
    *   +---+ <mcpuB> +---+
    *   |  X|<---@---->|x  |
    *   |   |  |   |
    * cpu1_4 <-|A 1|<-------->|3 a|-> codec1_5
    * cpu1_5 <-|B 2|<---+---->|4 b|-> codec1_6
    *   +---+    \--->|5 c|-> codec1_7
    *    +---+
    */
   ports@3 {
    reg = <3>;
    #address-cells = <1>;
    #size-cells = <0>;
   mcpuB: port@0 {
     reg = <0>;
     mcpu_BX_ep:     endpoint { remote-endpoint = <&mcodec_Bx_ep>; }; /* (X) to pair */
    };
    port@1 {
     #address-cells = <1>;
     #size-cells = <0>;
     reg = <1>;
     mcpu_BA_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&cpu1_4_ep>;    }; /* (A) Multi Element */
     mcpu_B1_ep:   endpoint@1 { reg = <1>; remote-endpoint = <&mcodec_B3_ep>; }; /* (1) connected Codec */
    };
    port@2 {
     #address-cells = <1>;
     #size-cells = <0>;
     reg = <2>;
     mcpu_BB_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&cpu1_5_ep>;    }; /* (B) Multi Element */
     mcpu_B2_0_ep: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec_B4_ep>; }; /* (2) connected Codec */
     mcpu_B2_1_ep: endpoint@2 { reg = <2>; remote-endpoint = <&mcodec_B5_ep>; }; /* (2) connected Codec */
    };
   };

   /*
    * [Multi-Codec-B]
    *
    *   +---+ <mcpuB> +---+
    *   |  X|<-@------>|x  |
    *   |   |  |   |
    * cpu1_4 <-|A 1|<-------->|3 a|-> codec1_5
    * cpu1_5 <-|B 2|<---+---->|4 b|-> codec1_6
    *   +---+    \--->|5 c|-> codec1_7
    *    +---+
    */
   ports@4 {
    reg = <4>;
    #address-cells = <1>;
    #size-cells = <0>;
    port@0 {
     reg = <0>;
     mcodec_Bx_ep:   endpoint { remote-endpoint = <&mcpu_BX_ep>;  }; /* (x) to pair */
    };
    port@1 {
     #address-cells = <1>;
     #size-cells = <0>;
     reg = <1>;
     mcodec_Ba_ep: endpoint@0 { reg = <0>; remote-endpoint = <&codec1_5_ep>;}; /* (a) Multi Element */
     mcodec_B3_ep: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu_B1_ep>; }; /* (3) connected CPU */
    };
    port@2 {
     #address-cells = <1>;
     #size-cells = <0>;
     reg = <2>;
     mcodec_Bb_ep: endpoint@0 { reg = <0>; remote-endpoint = <&codec1_6_ep>; }; /* (b) Multi Element */
     mcodec_B4_ep: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu_B2_0_ep>;}; /* (4) connected CPU */
    };
    port@3 {
     #address-cells = <1>;
     #size-cells = <0>;
     reg = <3>;
     mcodec_Bc_ep: endpoint@0 { reg = <0>; remote-endpoint = <&codec1_7_ep>; }; /* (c) Multi Element */
     mcodec_B5_ep: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu_B2_1_ep>;}; /* (5) connected CPU */
    };
   };

   /*
    * [Multi-CPU-C]
    *
    *   +---+ <mcpuC> +---+
    *   |  X|<-@------>|x  |
    *   |   |  |   |
    * cpu1_6 <-|A 1|<-------->|4 a|-> codec1_8
    * cpu1_7 <-|B 2|<-----+-->|5 b|-> codec1_9
    * cpu1_8 <-|C 3|<----/ +---+
    *   +---+
    */
   ports@5 {
    reg = <5>;
    #address-cells = <1>;
    #size-cells = <0>;
   mcpuC: port@0 {
     reg = <0>;
     mcpu_CX_ep:   endpoint { remote-endpoint = <&mcodec_Cx_ep>; }; /* (X) to pair */
    };
    port@1 {
     #address-cells = <1>;
     #size-cells = <0>;
     reg = <1>;
     mcpu_CA_ep: endpoint@0 { reg = <0>; remote-endpoint = <&cpu1_6_ep>;    }; /* (A) Multi Element */
     mcpu_C1_ep: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec_C4_ep>; }; /* (1) connected Codec */
    };
    port@2 {
     #address-cells = <1>;
     #size-cells = <0>;
     reg = <2>;
     mcpu_CB_ep: endpoint@0 { reg = <0>; remote-endpoint = <&cpu1_7_ep>;      }; /* (B) Multi Element */
     mcpu_C2_ep: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec_C5_0_ep>; }; /* (2) connected Codec */
    };
    port@3 {
     #address-cells = <1>;
     #size-cells = <0>;
     reg = <3>;
     mcpu_CC_ep: endpoint@0 { reg = <0>; remote-endpoint = <&cpu1_8_ep>;      }; /* (C) Multi Element */
     mcpu_C3_ep: endpoint@1 { reg = <1>; remote-endpoint = <&mcodec_C5_1_ep>; }; /* (3) connected Codec */
    };
   };

   /*
    * [Multi-Codec-C]
    *
    *   +---+ <mcpuC> +---+
    *   |  X|<-@------>|x  |
    *   |   |  |   |
    * cpu1_6 <-|A 1|<-------->|4 a|-> codec1_8
    * cpu1_7 <-|B 2|<-----+-->|5 b|-> codec1_9
    * cpu1_8 <-|C 3|<----/ +---+
    *   +---+
    */
   ports@6 {
    reg = <6>;
    #address-cells = <1>;
    #size-cells = <0>;
    port@0 {
     reg = <0>;
     mcodec_Cx_ep: endpoint { remote-endpoint = <&mcpu_CX_ep>;  }; /* (x) to pair */
    };
    port@1 {
     #address-cells = <1>;
     #size-cells = <0>;
     reg = <1>;
     mcodec_Ca_ep: endpoint@0 { reg = <0>; remote-endpoint = <&codec1_8_ep>;}; /* (a) Multi Element */
     mcodec_C4_ep: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu_C1_ep>; }; /* (4) connected CPU */
    };
    port@2 {
     #address-cells = <1>;
     #size-cells = <0>;
     reg = <2>;
     mcodec_Cb_ep:   endpoint@0 { reg = <0>; remote-endpoint = <&codec1_9_ep>;}; /* (b) Multi Element */
     mcodec_C5_0_ep: endpoint@1 { reg = <1>; remote-endpoint = <&mcpu_C2_ep>; }; /* (5) connected CPU */
     mcodec_C5_1_ep: endpoint@2 { reg = <2>; remote-endpoint = <&mcpu_C3_ep>; }; /* (5) connected CPU */
    };
   };
  };
 };

 test_cpu_1 {
  /*
   * update compatible to indicate more detail behaviour
   * if you want. see test-compatible for more detail.
   *
   * ex)
   * - compatible = "test-cpu";
   * + compatible = "test-cpu-verbose";
   */
  compatible = "test-cpu";
  ports {
   #address-cells = <1>;
   #size-cells = <0>;

   bitclock-master;
   frame-master;

    /* [Normal] */
   cpu1_0: port@0 { reg = <0>; cpu1_0_ep: endpoint { remote-endpoint = <&codec1_0_ep>;}; };
    /* [Semi-Multi] */
   sm: port@1 { reg = <1>; cpu1_1_ep: endpoint { remote-endpoint = <&smcodec_ep>; }; };
    /* [Multi-CPU-A] */
    port@2 { reg = <2>; cpu1_2_ep: endpoint { remote-endpoint = <&mcpu_AA_ep>; }; };
    port@3 { reg = <3>; cpu1_3_ep: endpoint { remote-endpoint = <&mcpu_AB_ep>; }; };
    /* [Multi-CPU-B] */
    port@4 { reg = <4>; cpu1_4_ep: endpoint { remote-endpoint = <&mcpu_BA_ep>; }; };
    port@5 { reg = <5>; cpu1_5_ep: endpoint { remote-endpoint = <&mcpu_BB_ep>; }; };
    /* [Multi-CPU-C] */
    port@6 { reg = <6>; cpu1_6_ep: endpoint { remote-endpoint = <&mcpu_CA_ep>; }; };
    port@7 { reg = <7>; cpu1_7_ep: endpoint { remote-endpoint = <&mcpu_CB_ep>; }; };
    port@8 { reg = <8>; cpu1_8_ep: endpoint { remote-endpoint = <&mcpu_CC_ep>; }; };
  };
 };

 test_codec_1 {
  /*
   * update compatible to indicate more detail behaviour
   * if you want. see test-compatible for more detail.
   *
   * ex)
   * - compatible = "test-codec";
   * + compatible = "test-codec-verbose";
   */
  compatible = "test-codec";

  ports {
   #address-cells = <1>;
   #size-cells = <0>;

   /* [Normal] */
   port@0 { reg = <0>; codec1_0_ep: endpoint { remote-endpoint = <&cpu1_0_ep>;    }; };
   /* [Semi-Multi] */
   port@1 { reg = <1>; codec1_1_ep: endpoint { remote-endpoint = <&smcodec_A_ep>; }; };
   port@2 { reg = <2>; codec1_2_ep: endpoint { remote-endpoint = <&smcodec_B_ep>; }; };
   /* [Multi-Codec-0] */
   port@3 { reg = <3>; codec1_3_ep: endpoint { remote-endpoint = <&mcodec_Aa_ep>; }; };
   port@4 { reg = <4>; codec1_4_ep: endpoint { remote-endpoint = <&mcodec_Ab_ep>; }; };
   /* [Multi-Codec-1] */
   port@5 { reg = <5>; codec1_5_ep: endpoint { remote-endpoint = <&mcodec_Ba_ep>; }; };
   port@6 { reg = <6>; codec1_6_ep: endpoint { remote-endpoint = <&mcodec_Bb_ep>; }; };
   port@7 { reg = <7>; codec1_7_ep: endpoint { remote-endpoint = <&mcodec_Bc_ep>; }; };
   /* [Multi-Codec-2] */
   port@8 { reg = <8>; codec1_8_ep: endpoint { remote-endpoint = <&mcodec_Ca_ep>; }; };
   port@9 { reg = <9>; codec1_9_ep: endpoint { remote-endpoint = <&mcodec_Cb_ep>; }; };
  };
 };
};

[ Dauer der Verarbeitung: 0.3 Sekunden  (vorverarbeitet)  ]