staticint cs42l43_sdw_interrupt(struct sdw_slave *sdw, struct sdw_slave_intr_status *status)
{ /* * The IRQ itself was handled through the regmap_irq handler, this is * just clearing up the additional Cirrus SoundWire registers that are * not covered by the SoundWire framework or the IRQ handler itself. * There is only a single bit in GEN_INT_STAT_1 and it doesn't clear if * IRQs are still pending so doing a read/write here after handling the * IRQ is fine.
*/
sdw_read_no_pm(sdw, CS42L43_GEN_INT_STAT_1);
sdw_write_no_pm(sdw, CS42L43_GEN_INT_STAT_1, CS42L43_INT_STAT_GEN1_MASK);
return 0;
}
staticint cs42l43_sdw_bus_config(struct sdw_slave *sdw, struct sdw_bus_params *params)
{ struct cs42l43 *cs42l43 = dev_get_drvdata(&sdw->dev); int ret = 0;
mutex_lock(&cs42l43->pll_lock);
if (cs42l43->sdw_freq != params->curr_dr_freq / 2) { if (cs42l43->sdw_pll_active) {
dev_err(cs42l43->dev, "PLL active can't change SoundWire bus clock\n");
ret = -EBUSY;
} else {
cs42l43->sdw_freq = params->curr_dr_freq / 2;
}
}
¤ 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.0.9Bemerkung:
(vorverarbeitet)
¤
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.