switch (cmd) { case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_RESUME: case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
aiu_encoder_spdif_hold(component, false); return 0;
case SNDRV_PCM_TRIGGER_STOP: case SNDRV_PCM_TRIGGER_SUSPEND: case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
aiu_encoder_spdif_hold(component, true); return 0;
/* Set the stream channel status word */
ret = aiu_encoder_spdif_setup_cs_word(component, params); if (ret) {
dev_err(dai->dev, "failed to set channel status word\n"); return ret;
}
/* * NOTE: Make sure the spdif block is on its own divider. * * The spdif can be clocked by the i2s master clock or its own * clock. We should (in theory) change the source depending on the * origin of the data. * * However, considering the clocking scheme used on these platforms, * the master clocks will pick the same PLL source when they are * playing from the same FIFO. The clock should be in sync so, it * should not be necessary to reparent the spdif master clock.
*/
ret = clk_set_parent(aiu->spdif.clks[MCLK].clk,
aiu->spdif_mclk); if (ret) return ret;
ret = clk_bulk_prepare_enable(aiu->spdif.clk_num, aiu->spdif.clks); if (ret)
dev_err(dai->dev, "failed to enable spdif clocks\n");
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.