Silabs Si5340: как определить часы для одного из выходов микросхемы

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

Оборудование основано на Xilinx Zynq Ultrascale, а выбранная ОС - Petalinux 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 ГГц для микросхем АЦП
  • 250 МГц для микросхем ЦАП

Я хотел бы создать два тактовых узла, которые описывают тактовые выходы, на которые затем будут ссылаться узлы микросхем АЦП и ЦАП.

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>;
};

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

Подскажите, пожалуйста, как правильно описывать выходы si5340 как источники синхронизации?

0 ответов

Другие вопросы по тегам