Lines Matching refs:qmc_audio
39 struct qmc_audio { struct
320 struct qmc_audio *qmc_audio = dev_get_drvdata(component->dev); in qmc_audio_of_xlate_dai_name() local
325 for (i = 0; i < qmc_audio->num_dais; i++) { in qmc_audio_of_xlate_dai_name()
326 dai_driver = qmc_audio->dai_drivers + i; in qmc_audio_of_xlate_dai_name()
393 struct qmc_audio *qmc_audio = snd_soc_dai_get_drvdata(dai); in qmc_dai_get_index() local
395 return dai->driver - qmc_audio->dai_drivers; in qmc_dai_get_index()
400 struct qmc_audio *qmc_audio = snd_soc_dai_get_drvdata(dai); in qmc_dai_get_data() local
404 if (index > qmc_audio->num_dais) in qmc_dai_get_data()
407 return qmc_audio->dais + index; in qmc_dai_get_data()
787 static int qmc_audio_dai_parse(struct qmc_audio *qmc_audio, struct device_node *np, in qmc_audio_dai_parse() argument
801 qmc_dai->dev = qmc_audio->dev; in qmc_audio_dai_parse()
805 dev_err(qmc_audio->dev, "%pOF: failed to read reg\n", np); in qmc_audio_dai_parse()
810 qmc_dai->name = devm_kasprintf(qmc_audio->dev, GFP_KERNEL, "%s.%d", in qmc_audio_dai_parse()
817 return dev_err_probe(qmc_audio->dev, count, in qmc_audio_dai_parse()
820 return dev_err_probe(qmc_audio->dev, -EINVAL, in qmc_audio_dai_parse()
823 qmc_dai->chans = devm_kcalloc(qmc_audio->dev, count, sizeof(*qmc_dai->chans), GFP_KERNEL); in qmc_audio_dai_parse()
828 qmc_dai->chans[i].qmc_chan = devm_qmc_chan_get_byphandles_index(qmc_audio->dev, np, in qmc_audio_dai_parse()
831 return dev_err_probe(qmc_audio->dev, PTR_ERR(qmc_dai->chans[i].qmc_chan), in qmc_audio_dai_parse()
837 dev_err(qmc_audio->dev, "dai %d get QMC %d channel info failed %d\n", in qmc_audio_dai_parse()
841 dev_info(qmc_audio->dev, "dai %d QMC channel %d mode %d, nb_tx_ts %u, nb_rx_ts %u\n", in qmc_audio_dai_parse()
845 dev_err(qmc_audio->dev, "dai %d QMC chan %d mode %d is not QMC_TRANSPARENT\n", in qmc_audio_dai_parse()
861 …dev_err(qmc_audio->dev, "dai %d QMC chan %d inconsistent number of Tx timeslots (%u instead of %u)… in qmc_audio_dai_parse()
866 …dev_err(qmc_audio->dev, "dai %d QMC chan %d inconsistent number of Rx timeslots (%u instead of %u)… in qmc_audio_dai_parse()
871 …dev_err(qmc_audio->dev, "dai %d QMC chan %d inconsistent Tx frame sample rate (%lu instead of %lu)… in qmc_audio_dai_parse()
876 …dev_err(qmc_audio->dev, "dai %d QMC chan %d inconsistent Rx frame sample rate (%lu instead of %lu)… in qmc_audio_dai_parse()
923 struct qmc_audio *qmc_audio; in qmc_audio_probe() local
928 qmc_audio = devm_kzalloc(&pdev->dev, sizeof(*qmc_audio), GFP_KERNEL); in qmc_audio_probe()
929 if (!qmc_audio) in qmc_audio_probe()
932 qmc_audio->dev = &pdev->dev; in qmc_audio_probe()
934 qmc_audio->num_dais = of_get_available_child_count(np); in qmc_audio_probe()
935 if (qmc_audio->num_dais) { in qmc_audio_probe()
936 qmc_audio->dais = devm_kcalloc(&pdev->dev, qmc_audio->num_dais, in qmc_audio_probe()
937 sizeof(*qmc_audio->dais), in qmc_audio_probe()
939 if (!qmc_audio->dais) in qmc_audio_probe()
942 qmc_audio->dai_drivers = devm_kcalloc(&pdev->dev, qmc_audio->num_dais, in qmc_audio_probe()
943 sizeof(*qmc_audio->dai_drivers), in qmc_audio_probe()
945 if (!qmc_audio->dai_drivers) in qmc_audio_probe()
951 ret = qmc_audio_dai_parse(qmc_audio, child, in qmc_audio_probe()
952 qmc_audio->dais + i, in qmc_audio_probe()
953 qmc_audio->dai_drivers + i); in qmc_audio_probe()
961 platform_set_drvdata(pdev, qmc_audio); in qmc_audio_probe()
963 ret = devm_snd_soc_register_component(qmc_audio->dev, in qmc_audio_probe()
965 qmc_audio->dai_drivers, in qmc_audio_probe()
966 qmc_audio->num_dais); in qmc_audio_probe()