Silabs Si5340: как определить тактовую частоту для одного из выходов чипа - PullRequest
1 голос
/ 24 января 2020

Мы разрабатываем аппаратное обеспечение, которое использует Si5340 для предоставления тактовых импульсов для различных микросхем (AD C, DA C).

Аппаратное обеспечение основано на Xilinx Zynq Ultrascale, а выбор ОС - Peta linux 2018.3. .

Драйвер, который мы используем, это clk-5341 (https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/clock/silabs, si5341.txt ).

Документация по тактовой микросхеме содержит два фрагмента использования выходных данных.

some-video-node {
    /* Standard clock bindings */
    clock-names = "pixel";
    clocks = <&si5341 0 7>; /* Output 7 */

    /* Set output 7 to use syntesizer 3 as its parent */
    assigned-clocks = <&si5341 0 7>, <&si5341 1 3>;
    assigned-clock-parents = <&si5341 1 3>;
    /* Set output 7 to 148.5 MHz using a synth frequency of 594 MHz */
    assigned-clock-rates = <148500000>, <594000000>;
};

some-audio-node {
    clock-names = "i2s-clk";
    clocks = <&si5341 0 0>;
    /*
     * since output 0 is a synth-master, the synth will be automatically set
     * to an appropriate frequency when the audio driver requests another
     * frequency. We give control over synth 2 to this output here.
     */
    assigned-clocks = <&si5341 0 0>;
    assigned-clock-parents = <&si5341 1 2>;
};

Используются два выхода от si5340:

  • 1 ГГц для AD C микросхемы
  • 250 МГц для DA C микросхемы

Я хотел бы создать два узла синхронизации, которые описывают выходные сигналы синхронизации, на которые затем будут ссылаться в узлах микросхемы AD C и DA C.

the_adc_clock: silabs-clock {
    compatible = "fixed-clock"

    /* Standard clock bindings */
    clock-names = "silabs-out-1";
    clocks = <&si5340 0 1>; /* Output 1 */

    clock-output-names = "the-adc-clock";

    /* Set output 1 to use syntesizer 3 as its parent */
    assigned-clocks = <&si5340 0 1>, <&si5340 1 3>;
    /* Set output 1 to 148.5 MHz using a synth frequency of 594 MHz */
    assigned-clock-rates = <148500000>, <594000000>;

    assigned-clock-parents = <&si5340 1 3>;
};

hmcad1510: the-hmcad1520@1 {
    compatible = "adi,hmcad1520";
    reg = <1>;
    clocks = <&the_adc_clock>;
};

Это не работает как и ожидалось. Я вполне свободен sh с деревьями устройств. К сожалению, я не нашел пример, который был бы полезен.

Не могли бы вы посоветовать, как правильно описать выходы si5340 как источники синхронизации?

...