[alsa-devel] ASoC: new ac97 bus and codec clock

Rob Herring robh+dt at kernel.org
Wed Jun 20 17:10:49 CEST 2018


On Wed, Jun 20, 2018 at 8:52 AM, Robert Jarzmik <robert.jarzmik at free.fr> wrote:
> Rob Herring <robh+dt at kernel.org> writes:
>
>> Like PCI, USB, SDIO, etc., you need to define an AC97 bus binding
>> which defines child node structure, compatible formatting (if you can
>> base compatibles on something like VID/PID), and addressing (reg and
>> unit-address formats). Then once you define child nodes, you can add
>> whatever sideband connections you need. The AC97 core should be able
>> to populate struct device_node if there are any matching child
>> devices.
> Ok, I thing I understand.
>
> So the device-tree will look like :
> ac97: sound at 40500000 {
>         compatible = "marvell,pxa270-ac97";
>         reg = < 0x40500000 0x1000 >;
>         interrupts = <14>;
>         reset-gpios = <&gpio 95 GPIO_ACTIVE_HIGH>;
>         #sound-dai-cells = <1>;
>         pinctrl-names = "default";
>         pinctrl-0 = < &pinctrl_ac97_default >;
>         clocks = <&clks CLK_AC97>, <&clks CLK_AC97CONF>;
>         clock-names = "AC97CLK", "AC97CONFCLK";
>
>         wm9713 at 0 {

audio-codec at 0

>                 reg = <0>; /* Codex index (between 0 and 3) */
>                 compatible = "ac97-codec";

This should be something with 'wm9713' in it or if there are ID
registers you can base it on that.

>                 clocks = <&fixed_wm9713_clock>;
>                 clock-names = "ac97_clk";

This is the standard 12MHz clock?

>         }
> };
>
> And the function ac97_codec_add() will :
>  - scan the device-tree ac97 controller childs
>  - match one if its reg equals (in our case wm9713 at 0)
>  - set codec->dev.of_node to the matched one

Not familiar with that function, but that sounds about right.

Rob


More information about the Alsa-devel mailing list