mirror of https://gitee.com/openkylin/linux.git
Merge remote-tracking branches 'asoc/topic/dmaengine', 'asoc/topic/fsi', 'asoc/topic/fsl' and 'asoc/topic/fsl-ssi' into asoc-next
This commit is contained in:
commit
b7af54a992
|
@ -194,6 +194,7 @@ struct dma_chan *of_dma_request_slave_channel(struct device_node *np,
|
|||
|
||||
return ERR_PTR(ret_no_channel);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(of_dma_request_slave_channel);
|
||||
|
||||
/**
|
||||
* of_dma_simple_xlate - Simple DMA engine translation function
|
||||
|
|
|
@ -24,7 +24,7 @@ config SND_SOC_FSL_SAI
|
|||
in-tree drivers select it automatically.
|
||||
|
||||
config SND_SOC_FSL_SSI
|
||||
tristate "Synchronous Serial Interface module support"
|
||||
tristate "Synchronous Serial Interface module (SSI) support"
|
||||
select SND_SOC_IMX_PCM_DMA if SND_IMX_SOC != n
|
||||
select SND_SOC_IMX_PCM_FIQ if SND_IMX_SOC != n && (MXC_TZIC || MXC_AVIC)
|
||||
select REGMAP_MMIO
|
||||
|
@ -35,7 +35,7 @@ config SND_SOC_FSL_SSI
|
|||
in-tree drivers select it automatically.
|
||||
|
||||
config SND_SOC_FSL_SPDIF
|
||||
tristate "Sony/Philips Digital Interface module support"
|
||||
tristate "Sony/Philips Digital Interface (S/PDIF) module support"
|
||||
select REGMAP_MMIO
|
||||
select SND_SOC_IMX_PCM_DMA if SND_IMX_SOC != n
|
||||
select SND_SOC_IMX_PCM_FIQ if SND_IMX_SOC != n && (MXC_TZIC || MXC_AVIC)
|
||||
|
|
|
@ -1288,7 +1288,7 @@ static int fsl_ssi_probe(struct platform_device *pdev)
|
|||
const struct of_device_id *of_id;
|
||||
const char *p, *sprop;
|
||||
const uint32_t *iprop;
|
||||
struct resource res;
|
||||
struct resource *res;
|
||||
void __iomem *iomem;
|
||||
char name[64];
|
||||
|
||||
|
@ -1335,19 +1335,11 @@ static int fsl_ssi_probe(struct platform_device *pdev)
|
|||
}
|
||||
ssi_private->cpu_dai_drv.name = dev_name(&pdev->dev);
|
||||
|
||||
/* Get the addresses and IRQ */
|
||||
ret = of_address_to_resource(np, 0, &res);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "could not determine device resources\n");
|
||||
return ret;
|
||||
}
|
||||
ssi_private->ssi_phys = res.start;
|
||||
|
||||
iomem = devm_ioremap(&pdev->dev, res.start, resource_size(&res));
|
||||
if (!iomem) {
|
||||
dev_err(&pdev->dev, "could not map device resources\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
iomem = devm_ioremap_resource(&pdev->dev, res);
|
||||
if (IS_ERR(iomem))
|
||||
return PTR_ERR(iomem);
|
||||
ssi_private->ssi_phys = res->start;
|
||||
|
||||
ret = of_property_match_string(np, "clock-names", "ipg");
|
||||
if (ret < 0) {
|
||||
|
@ -1393,8 +1385,8 @@ static int fsl_ssi_probe(struct platform_device *pdev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
ret = snd_soc_register_component(&pdev->dev, &fsl_ssi_component,
|
||||
&ssi_private->cpu_dai_drv, 1);
|
||||
ret = devm_snd_soc_register_component(&pdev->dev, &fsl_ssi_component,
|
||||
&ssi_private->cpu_dai_drv, 1);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "failed to register DAI: %d\n", ret);
|
||||
goto error_asoc_register;
|
||||
|
@ -1407,13 +1399,13 @@ static int fsl_ssi_probe(struct platform_device *pdev)
|
|||
if (ret < 0) {
|
||||
dev_err(&pdev->dev, "could not claim irq %u\n",
|
||||
ssi_private->irq);
|
||||
goto error_irq;
|
||||
goto error_asoc_register;
|
||||
}
|
||||
}
|
||||
|
||||
ret = fsl_ssi_debugfs_create(&ssi_private->dbg_stats, &pdev->dev);
|
||||
if (ret)
|
||||
goto error_irq;
|
||||
goto error_asoc_register;
|
||||
|
||||
/*
|
||||
* If codec-handle property is missing from SSI node, we assume
|
||||
|
@ -1454,9 +1446,6 @@ static int fsl_ssi_probe(struct platform_device *pdev)
|
|||
error_sound_card:
|
||||
fsl_ssi_debugfs_remove(&ssi_private->dbg_stats);
|
||||
|
||||
error_irq:
|
||||
snd_soc_unregister_component(&pdev->dev);
|
||||
|
||||
error_asoc_register:
|
||||
if (ssi_private->soc->imx)
|
||||
fsl_ssi_imx_clean(pdev, ssi_private);
|
||||
|
@ -1472,7 +1461,6 @@ static int fsl_ssi_remove(struct platform_device *pdev)
|
|||
|
||||
if (ssi_private->pdev)
|
||||
platform_device_unregister(ssi_private->pdev);
|
||||
snd_soc_unregister_component(&pdev->dev);
|
||||
|
||||
if (ssi_private->soc->imx)
|
||||
fsl_ssi_imx_clean(pdev, ssi_private);
|
||||
|
|
|
@ -326,7 +326,7 @@ static int psc_ac97_of_remove(struct platform_device *op)
|
|||
}
|
||||
|
||||
/* Match table for of_platform binding */
|
||||
static struct of_device_id psc_ac97_match[] = {
|
||||
static const struct of_device_id psc_ac97_match[] = {
|
||||
{ .compatible = "fsl,mpc5200-psc-ac97", },
|
||||
{ .compatible = "fsl,mpc5200b-psc-ac97", },
|
||||
{}
|
||||
|
|
|
@ -217,7 +217,7 @@ static int psc_i2s_of_remove(struct platform_device *op)
|
|||
}
|
||||
|
||||
/* Match table for of_platform binding */
|
||||
static struct of_device_id psc_i2s_match[] = {
|
||||
static const struct of_device_id psc_i2s_match[] = {
|
||||
{ .compatible = "fsl,mpc5200-psc-i2s", },
|
||||
{ .compatible = "fsl,mpc5200b-psc-i2s", },
|
||||
{}
|
||||
|
|
|
@ -113,7 +113,7 @@ static int pcm030_fabric_remove(struct platform_device *op)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static struct of_device_id pcm030_audio_match[] = {
|
||||
static const struct of_device_id pcm030_audio_match[] = {
|
||||
{ .compatible = "phytec,pcm030-audio-fabric", },
|
||||
{}
|
||||
};
|
||||
|
|
|
@ -1876,7 +1876,40 @@ static void fsi_handler_init(struct fsi_priv *fsi,
|
|||
}
|
||||
}
|
||||
|
||||
static struct of_device_id fsi_of_match[];
|
||||
static const struct fsi_core fsi1_core = {
|
||||
.ver = 1,
|
||||
|
||||
/* Interrupt */
|
||||
.int_st = INT_ST,
|
||||
.iemsk = IEMSK,
|
||||
.imsk = IMSK,
|
||||
};
|
||||
|
||||
static const struct fsi_core fsi2_core = {
|
||||
.ver = 2,
|
||||
|
||||
/* Interrupt */
|
||||
.int_st = CPU_INT_ST,
|
||||
.iemsk = CPU_IEMSK,
|
||||
.imsk = CPU_IMSK,
|
||||
.a_mclk = A_MST_CTLR,
|
||||
.b_mclk = B_MST_CTLR,
|
||||
};
|
||||
|
||||
static const struct of_device_id fsi_of_match[] = {
|
||||
{ .compatible = "renesas,sh_fsi", .data = &fsi1_core},
|
||||
{ .compatible = "renesas,sh_fsi2", .data = &fsi2_core},
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, fsi_of_match);
|
||||
|
||||
static const struct platform_device_id fsi_id_table[] = {
|
||||
{ "sh_fsi", (kernel_ulong_t)&fsi1_core },
|
||||
{ "sh_fsi2", (kernel_ulong_t)&fsi2_core },
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(platform, fsi_id_table);
|
||||
|
||||
static int fsi_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct fsi_master *master;
|
||||
|
@ -2072,40 +2105,6 @@ static struct dev_pm_ops fsi_pm_ops = {
|
|||
.resume = fsi_resume,
|
||||
};
|
||||
|
||||
static struct fsi_core fsi1_core = {
|
||||
.ver = 1,
|
||||
|
||||
/* Interrupt */
|
||||
.int_st = INT_ST,
|
||||
.iemsk = IEMSK,
|
||||
.imsk = IMSK,
|
||||
};
|
||||
|
||||
static struct fsi_core fsi2_core = {
|
||||
.ver = 2,
|
||||
|
||||
/* Interrupt */
|
||||
.int_st = CPU_INT_ST,
|
||||
.iemsk = CPU_IEMSK,
|
||||
.imsk = CPU_IMSK,
|
||||
.a_mclk = A_MST_CTLR,
|
||||
.b_mclk = B_MST_CTLR,
|
||||
};
|
||||
|
||||
static struct of_device_id fsi_of_match[] = {
|
||||
{ .compatible = "renesas,sh_fsi", .data = &fsi1_core},
|
||||
{ .compatible = "renesas,sh_fsi2", .data = &fsi2_core},
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, fsi_of_match);
|
||||
|
||||
static struct platform_device_id fsi_id_table[] = {
|
||||
{ "sh_fsi", (kernel_ulong_t)&fsi1_core },
|
||||
{ "sh_fsi2", (kernel_ulong_t)&fsi2_core },
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(platform, fsi_id_table);
|
||||
|
||||
static struct platform_driver fsi_driver = {
|
||||
.driver = {
|
||||
.name = "fsi-pcm-audio",
|
||||
|
@ -2119,7 +2118,7 @@ static struct platform_driver fsi_driver = {
|
|||
|
||||
module_platform_driver(fsi_driver);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
MODULE_DESCRIPTION("SuperH onchip FSI audio driver");
|
||||
MODULE_AUTHOR("Kuninori Morimoto <morimoto.kuninori@renesas.com>");
|
||||
MODULE_ALIAS("platform:fsi-pcm-audio");
|
||||
|
|
Loading…
Reference in New Issue