static int asoc_idma_platform_probe(struct platform_device *pdev) { idma_irq = platform_get_irq(pdev, 0); if (idma_irq < 0) return idma_irq; return devm_snd_soc_register_platform(&pdev->dev, &asoc_idma_platform); }
int asoc_qcom_lpass_platform_register(struct platform_device *pdev) { struct lpass_data *drvdata = platform_get_drvdata(pdev); drvdata->lpaif_irq = platform_get_irq_byname(pdev, "lpass-irq-lpaif"); if (drvdata->lpaif_irq < 0) { dev_err(&pdev->dev, "%s() error getting irq handle: %d\n", __func__, drvdata->lpaif_irq); return -ENODEV; } return devm_snd_soc_register_platform(&pdev->dev, &lpass_platform_driver); }
int dw_pcm_register(struct platform_device *pdev) { return devm_snd_soc_register_platform(&pdev->dev, &dw_pcm_platform); }
int davinci_soc_platform_register(struct device *dev) { return devm_snd_soc_register_platform(dev, &davinci_soc_platform); }
static int bfin_i2s_soc_platform_probe(struct platform_device *pdev) { return devm_snd_soc_register_platform(&pdev->dev, &bf5xx_i2s_soc_platform); }
static int nuc900_soc_platform_probe(struct platform_device *pdev) { return devm_snd_soc_register_platform(&pdev->dev, &nuc900_soc_platform); }
int omap_pcm_platform_register(struct device *dev) { omap_pcm_limit_supported_formats(); return devm_snd_soc_register_platform(dev, &omap_soc_platform); }
int omap_pcm_platform_register(struct device *dev) { return devm_snd_soc_register_platform(dev, &omap_soc_platform); }
static int fsl_asrc_probe(struct platform_device *pdev) { struct device_node *np = pdev->dev.of_node; struct fsl_asrc *asrc_priv; struct resource *res; void __iomem *regs; int irq, ret, i; char tmp[16]; asrc_priv = devm_kzalloc(&pdev->dev, sizeof(*asrc_priv), GFP_KERNEL); if (!asrc_priv) return -ENOMEM; asrc_priv->pdev = pdev; strncpy(asrc_priv->name, np->name, sizeof(asrc_priv->name) - 1); /* Get the addresses and IRQ */ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); regs = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(regs)) return PTR_ERR(regs); asrc_priv->paddr = res->start; asrc_priv->regmap = devm_regmap_init_mmio_clk(&pdev->dev, "mem", regs, &fsl_asrc_regmap_config); if (IS_ERR(asrc_priv->regmap)) { dev_err(&pdev->dev, "failed to init regmap\n"); return PTR_ERR(asrc_priv->regmap); } irq = platform_get_irq(pdev, 0); if (irq < 0) { dev_err(&pdev->dev, "no irq for node %s\n", np->full_name); return irq; } ret = devm_request_irq(&pdev->dev, irq, fsl_asrc_isr, 0, asrc_priv->name, asrc_priv); if (ret) { dev_err(&pdev->dev, "failed to claim irq %u: %d\n", irq, ret); return ret; } asrc_priv->mem_clk = devm_clk_get(&pdev->dev, "mem"); if (IS_ERR(asrc_priv->mem_clk)) { dev_err(&pdev->dev, "failed to get mem clock\n"); return PTR_ERR(asrc_priv->mem_clk); } asrc_priv->ipg_clk = devm_clk_get(&pdev->dev, "ipg"); if (IS_ERR(asrc_priv->ipg_clk)) { dev_err(&pdev->dev, "failed to get ipg clock\n"); return PTR_ERR(asrc_priv->ipg_clk); } for (i = 0; i < ASRC_CLK_MAX_NUM; i++) { sprintf(tmp, "asrck_%x", i); asrc_priv->asrck_clk[i] = devm_clk_get(&pdev->dev, tmp); if (IS_ERR(asrc_priv->asrck_clk[i])) { dev_err(&pdev->dev, "failed to get %s clock\n", tmp); return PTR_ERR(asrc_priv->asrck_clk[i]); } } if (of_device_is_compatible(pdev->dev.of_node, "fsl,imx35-asrc")) { asrc_priv->channel_bits = 3; clk_map[IN] = input_clk_map_imx35; clk_map[OUT] = output_clk_map_imx35; } else { asrc_priv->channel_bits = 4; clk_map[IN] = input_clk_map_imx53; clk_map[OUT] = output_clk_map_imx53; } ret = fsl_asrc_init(asrc_priv); if (ret) { dev_err(&pdev->dev, "failed to init asrc %d\n", ret); return -EINVAL; } asrc_priv->channel_avail = 10; ret = of_property_read_u32(np, "fsl,asrc-rate", &asrc_priv->asrc_rate); if (ret) { dev_err(&pdev->dev, "failed to get output rate\n"); return -EINVAL; } ret = of_property_read_u32(np, "fsl,asrc-width", &asrc_priv->asrc_width); if (ret) { dev_err(&pdev->dev, "failed to get output width\n"); return -EINVAL; } if (asrc_priv->asrc_width != 16 && asrc_priv->asrc_width != 24) { dev_warn(&pdev->dev, "unsupported width, switching to 24bit\n"); asrc_priv->asrc_width = 24; } platform_set_drvdata(pdev, asrc_priv); pm_runtime_enable(&pdev->dev); spin_lock_init(&asrc_priv->lock); ret = devm_snd_soc_register_component(&pdev->dev, &fsl_asrc_component, &fsl_asrc_dai, 1); if (ret) { dev_err(&pdev->dev, "failed to register ASoC DAI\n"); return ret; } ret = devm_snd_soc_register_platform(&pdev->dev, &fsl_asrc_platform); if (ret) { dev_err(&pdev->dev, "failed to register ASoC platform\n"); return ret; } dev_info(&pdev->dev, "driver registered\n"); return 0; }