
Сообщение от
vladsan75
А мне вот больше интересно, как образуется slave:
slave = of_property_read_bool(pdev->dev.of_node,
"hifiberry-dacplus,slave");
В файле config/volumioconfig есть настройка dtoverlay - она подключает к DeviceTree указанный оверлей.
А еще есть настройка dtparam - она позволяет задать значение параметра для использования в DeviceTree и в оверлеях. Имена этих параметров задаются в секции __overrides__, например параметры в hifiberry-dacplus-overlay.dts:
Код:
__overrides__ {
slave = <&hifiberry_dacplus>,"hifiberry-dacplus,slave?",
<&frag1>,"target:0=",<&i2s_clk_producer>,
<&hifiberry_dacplus>,"i2s-controller:0=",<&i2s_clk_producer>;
...
};
Если мы напишем dtparam=slave, то к DeviceTree (и загруженным в него оверлеям) будут применены изменения: в узел с именем hifiberry_dacplus будет добавлено значение "hifiberry-dacplus,slave", а потом это значение сможет прочитать of_property_read_bool.

Сообщение от
vladsan75
ведь опять же, если ЦАП возвращает неправильные значения, или неправильно настраивается периферия - он неисправен, а это малая вероятность, скорее всего где-то надо включать режим slave, или изначально программно не реализован режим slave для конкретного ЦАПа.
У HiFiBerry есть ЦАПы нескольких разновидностей, как с двумя генераторами, так и с одним генератором (от которого работает PLL), так и совсем без генераторов. Поэтому такие драйвера.
Плюс есть возможность даже ЦАП с генераторами перевести в режим slave.
Социальные закладки