Lines Matching full:mca
3 // Apple SoCs MCA driver
7 // The MCA peripheral is made up of a number of identical units called clusters.
181 struct mca_data *mca = snd_soc_dai_get_drvdata(dai); in mca_dai_to_cluster() local
186 int cluster_no = dai->id % mca->nclusters; in mca_dai_to_cluster()
188 return &mca->clusters[cluster_no]; in mca_dai_to_cluster()
261 struct mca_data *mca = cl->host; in mca_fe_enable_clocks() local
266 dev_err(mca->dev, in mca_fe_enable_clocks()
277 cl->pd_link = device_link_add(mca->dev, cl->pd_dev, in mca_fe_enable_clocks()
281 dev_err(mca->dev, in mca_fe_enable_clocks()
306 struct mca_data *mca = cl->host; in mca_fe_clocks_in_use() local
310 mutex_lock(&mca->port_mutex); in mca_fe_clocks_in_use()
311 for (i = 0; i < mca->nclusters; i++) { in mca_fe_clocks_in_use()
312 be_cl = &mca->clusters[i]; in mca_fe_clocks_in_use()
319 mutex_unlock(&mca->port_mutex); in mca_fe_clocks_in_use()
324 mutex_unlock(&mca->port_mutex); in mca_fe_clocks_in_use()
332 struct mca_data *mca = cl->host; in mca_be_prepare() local
339 fe_cl = &mca->clusters[cl->port_driver]; in mca_be_prepare()
362 struct mca_data *mca = cl->host; in mca_be_hw_free() local
373 fe_cl = &mca->clusters[cl->port_driver]; in mca_be_hw_free()
505 struct mca_data *mca = cl->host; in mca_fe_set_fmt() local
556 dev_err(mca->dev, "unsupported DAI format (0x%x) requested\n", fmt); in mca_fe_set_fmt()
592 struct mca_data *mca = cl->host; in mca_fe_hw_params() local
593 struct device *dev = mca->dev; in mca_fe_hw_params()
672 writel_relaxed(regval, mca->switch_base + REG_DMA_ADAPTER_A(cl->no)); in mca_fe_hw_params()
676 mca->switch_base + REG_DMA_ADAPTER_A(cl->no)); in mca_fe_hw_params()
679 mca->switch_base + REG_DMA_ADAPTER_B(cl->no)); in mca_fe_hw_params()
695 dev_err(mca->dev, "cluster %d: unable to set clock parent: %d\n", in mca_fe_hw_params()
730 struct mca_data *mca = cl->host; in mca_be_startup() local
737 dev_err(mca->dev, "many FE per one BE unsupported\n"); in mca_be_startup()
768 mutex_lock(&mca->port_mutex); in mca_be_startup()
770 mutex_unlock(&mca->port_mutex); in mca_be_startup()
780 struct mca_data *mca = cl->host; in mca_be_shutdown() local
791 mutex_lock(&mca->port_mutex); in mca_be_shutdown()
793 mutex_unlock(&mca->port_mutex); in mca_be_shutdown()
999 .name = "apple-mca",
1009 static void apple_mca_release(struct mca_data *mca) in apple_mca_release() argument
1013 for (i = 0; i < mca->nclusters; i++) { in apple_mca_release()
1014 struct mca_cluster *cl = &mca->clusters[i]; in apple_mca_release()
1023 if (mca->pd_link) in apple_mca_release()
1024 device_link_del(mca->pd_link); in apple_mca_release()
1026 if (!IS_ERR_OR_NULL(mca->pd_dev)) in apple_mca_release()
1027 dev_pm_domain_detach(mca->pd_dev, true); in apple_mca_release()
1029 reset_control_rearm(mca->rstc); in apple_mca_release()
1034 struct mca_data *mca; in apple_mca_probe() local
1050 mca = devm_kzalloc(&pdev->dev, struct_size(mca, clusters, nclusters), in apple_mca_probe()
1052 if (!mca) in apple_mca_probe()
1054 mca->dev = &pdev->dev; in apple_mca_probe()
1055 mca->nclusters = nclusters; in apple_mca_probe()
1056 mutex_init(&mca->port_mutex); in apple_mca_probe()
1057 platform_set_drvdata(pdev, mca); in apple_mca_probe()
1058 clusters = mca->clusters; in apple_mca_probe()
1060 mca->switch_base = in apple_mca_probe()
1062 if (IS_ERR(mca->switch_base)) in apple_mca_probe()
1063 return PTR_ERR(mca->switch_base); in apple_mca_probe()
1065 mca->rstc = devm_reset_control_get_optional_shared(&pdev->dev, NULL); in apple_mca_probe()
1066 if (IS_ERR(mca->rstc)) in apple_mca_probe()
1067 return PTR_ERR(mca->rstc); in apple_mca_probe()
1074 mca->pd_dev = dev_pm_domain_attach_by_id(&pdev->dev, 0); in apple_mca_probe()
1075 if (IS_ERR(mca->pd_dev)) in apple_mca_probe()
1078 mca->pd_link = device_link_add(&pdev->dev, mca->pd_dev, in apple_mca_probe()
1081 if (!mca->pd_link) { in apple_mca_probe()
1084 mca->rstc = NULL; in apple_mca_probe()
1088 reset_control_reset(mca->rstc); in apple_mca_probe()
1093 &dai_drivers[mca->nclusters + i]; in apple_mca_probe()
1096 cl->host = mca; in apple_mca_probe()
1118 devm_kasprintf(&pdev->dev, GFP_KERNEL, "mca-pcm-%d", i); in apple_mca_probe()
1145 be->name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "mca-i2s-%d", i); in apple_mca_probe()
1181 apple_mca_release(mca); in apple_mca_probe()
1187 struct mca_data *mca = platform_get_drvdata(pdev); in apple_mca_remove() local
1190 apple_mca_release(mca); in apple_mca_remove()
1194 { .compatible = "apple,mca", },
1201 .name = "apple-mca",
1210 MODULE_DESCRIPTION("ASoC Apple MCA driver");