提交 552d1ef6 编写于 作者: L Liam Girdwood 提交者: Mark Brown

ASoC: core - Optimise and refactor pcm_new() to pass only rtd

Currently pcm_new() passes in 3 arguments :- card, pcm and DAI.

Refactor this to only pass in 1 argument (i.e. the rtd) since struct rtd contains
card, pcm and DAI along with other members too that are useful too.
Signed-off-by: NLiam Girdwood <lrg@ti.com>
Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
上级 cf3383fb
...@@ -624,8 +624,7 @@ struct snd_soc_platform_driver { ...@@ -624,8 +624,7 @@ struct snd_soc_platform_driver {
int (*resume)(struct snd_soc_dai *dai); int (*resume)(struct snd_soc_dai *dai);
/* pcm creation and destruction */ /* pcm creation and destruction */
int (*pcm_new)(struct snd_card *, struct snd_soc_dai *, int (*pcm_new)(struct snd_soc_pcm_runtime *);
struct snd_pcm *);
void (*pcm_free)(struct snd_pcm *); void (*pcm_free)(struct snd_pcm *);
/* /*
......
...@@ -364,9 +364,11 @@ static struct snd_pcm_ops atmel_pcm_ops = { ...@@ -364,9 +364,11 @@ static struct snd_pcm_ops atmel_pcm_ops = {
\*--------------------------------------------------------------------------*/ \*--------------------------------------------------------------------------*/
static u64 atmel_pcm_dmamask = 0xffffffff; static u64 atmel_pcm_dmamask = 0xffffffff;
static int atmel_pcm_new(struct snd_card *card, static int atmel_pcm_new(struct snd_soc_pcm_runtime *rtd)
struct snd_soc_dai *dai, struct snd_pcm *pcm)
{ {
struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
int ret = 0; int ret = 0;
if (!card->dev->dma_mask) if (!card->dev->dma_mask)
......
...@@ -319,10 +319,11 @@ static void au1xpsc_pcm_free_dma_buffers(struct snd_pcm *pcm) ...@@ -319,10 +319,11 @@ static void au1xpsc_pcm_free_dma_buffers(struct snd_pcm *pcm)
snd_pcm_lib_preallocate_free_for_all(pcm); snd_pcm_lib_preallocate_free_for_all(pcm);
} }
static int au1xpsc_pcm_new(struct snd_card *card, static int au1xpsc_pcm_new(struct snd_soc_pcm_runtime *rtd)
struct snd_soc_dai *dai,
struct snd_pcm *pcm)
{ {
struct snd_card *card = rtd->card->snd_card;
struct snd_pcm *pcm = rtd->pcm;
snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV, snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
card->dev, AU1XPSC_BUFFER_MIN_BYTES, (4096 * 1024) - 1); card->dev, AU1XPSC_BUFFER_MIN_BYTES, (4096 * 1024) - 1);
......
...@@ -418,9 +418,11 @@ static void bf5xx_pcm_free_dma_buffers(struct snd_pcm *pcm) ...@@ -418,9 +418,11 @@ static void bf5xx_pcm_free_dma_buffers(struct snd_pcm *pcm)
static u64 bf5xx_pcm_dmamask = DMA_BIT_MASK(32); static u64 bf5xx_pcm_dmamask = DMA_BIT_MASK(32);
int bf5xx_pcm_ac97_new(struct snd_card *card, struct snd_soc_dai *dai, int bf5xx_pcm_ac97_new(struct snd_soc_pcm_runtime *rtd)
struct snd_pcm *pcm)
{ {
struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
int ret = 0; int ret = 0;
pr_debug("%s enter\n", __func__); pr_debug("%s enter\n", __func__);
......
...@@ -248,9 +248,11 @@ static void bf5xx_pcm_free_dma_buffers(struct snd_pcm *pcm) ...@@ -248,9 +248,11 @@ static void bf5xx_pcm_free_dma_buffers(struct snd_pcm *pcm)
static u64 bf5xx_pcm_dmamask = DMA_BIT_MASK(32); static u64 bf5xx_pcm_dmamask = DMA_BIT_MASK(32);
int bf5xx_pcm_i2s_new(struct snd_card *card, struct snd_soc_dai *dai, int bf5xx_pcm_i2s_new(struct snd_soc_pcm_runtime *rtd)
struct snd_pcm *pcm)
{ {
struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
int ret = 0; int ret = 0;
pr_debug("%s enter\n", __func__); pr_debug("%s enter\n", __func__);
......
...@@ -283,9 +283,11 @@ static void bf5xx_pcm_free_dma_buffers(struct snd_pcm *pcm) ...@@ -283,9 +283,11 @@ static void bf5xx_pcm_free_dma_buffers(struct snd_pcm *pcm)
static u64 bf5xx_pcm_dmamask = DMA_BIT_MASK(32); static u64 bf5xx_pcm_dmamask = DMA_BIT_MASK(32);
static int bf5xx_pcm_tdm_new(struct snd_card *card, struct snd_soc_dai *dai, static int bf5xx_pcm_tdm_new(struct snd_soc_pcm_runtime *rtd)
struct snd_pcm *pcm)
{ {
struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
int ret = 0; int ret = 0;
if (!card->dev->dma_mask) if (!card->dev->dma_mask)
......
...@@ -833,9 +833,11 @@ static void davinci_pcm_free(struct snd_pcm *pcm) ...@@ -833,9 +833,11 @@ static void davinci_pcm_free(struct snd_pcm *pcm)
static u64 davinci_pcm_dmamask = 0xffffffff; static u64 davinci_pcm_dmamask = 0xffffffff;
static int davinci_pcm_new(struct snd_card *card, static int davinci_pcm_new(struct snd_soc_pcm_runtime *rtd)
struct snd_soc_dai *dai, struct snd_pcm *pcm)
{ {
struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
int ret; int ret;
if (!card->dev->dma_mask) if (!card->dev->dma_mask)
......
...@@ -266,9 +266,11 @@ static void ep93xx_pcm_free_dma_buffers(struct snd_pcm *pcm) ...@@ -266,9 +266,11 @@ static void ep93xx_pcm_free_dma_buffers(struct snd_pcm *pcm)
static u64 ep93xx_pcm_dmamask = 0xffffffff; static u64 ep93xx_pcm_dmamask = 0xffffffff;
static int ep93xx_pcm_new(struct snd_card *card, struct snd_soc_dai *dai, static int ep93xx_pcm_new(struct snd_soc_pcm_runtime *rtd)
struct snd_pcm *pcm)
{ {
struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
int ret = 0; int ret = 0;
if (!card->dev->dma_mask) if (!card->dev->dma_mask)
......
...@@ -294,9 +294,11 @@ static irqreturn_t fsl_dma_isr(int irq, void *dev_id) ...@@ -294,9 +294,11 @@ static irqreturn_t fsl_dma_isr(int irq, void *dev_id)
* Regardless of where the memory is actually allocated, since the device can * Regardless of where the memory is actually allocated, since the device can
* technically DMA to any 36-bit address, we do need to set the DMA mask to 36. * technically DMA to any 36-bit address, we do need to set the DMA mask to 36.
*/ */
static int fsl_dma_new(struct snd_card *card, struct snd_soc_dai *dai, static int fsl_dma_new(struct snd_soc_pcm_runtime *rtd)
struct snd_pcm *pcm)
{ {
struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
static u64 fsl_dma_dmamask = DMA_BIT_MASK(36); static u64 fsl_dma_dmamask = DMA_BIT_MASK(36);
int ret; int ret;
......
...@@ -299,10 +299,11 @@ static struct snd_pcm_ops psc_dma_ops = { ...@@ -299,10 +299,11 @@ static struct snd_pcm_ops psc_dma_ops = {
}; };
static u64 psc_dma_dmamask = 0xffffffff; static u64 psc_dma_dmamask = 0xffffffff;
static int psc_dma_new(struct snd_card *card, struct snd_soc_dai *dai, static int psc_dma_new(struct snd_soc_pcm_runtime *rtd)
struct snd_pcm *pcm)
{ {
struct snd_soc_pcm_runtime *rtd = pcm->private_data; struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
struct psc_dma *psc_dma = snd_soc_dai_get_drvdata(rtd->cpu_dai); struct psc_dma *psc_dma = snd_soc_dai_get_drvdata(rtd->cpu_dai);
size_t size = psc_dma_hardware.buffer_bytes_max; size_t size = psc_dma_hardware.buffer_bytes_max;
int rc = 0; int rc = 0;
......
...@@ -238,12 +238,14 @@ static struct snd_pcm_ops imx_pcm_ops = { ...@@ -238,12 +238,14 @@ static struct snd_pcm_ops imx_pcm_ops = {
static int ssi_irq = 0; static int ssi_irq = 0;
static int imx_pcm_fiq_new(struct snd_card *card, struct snd_soc_dai *dai, static int imx_pcm_fiq_new(struct snd_soc_pcm_runtime *rtd)
struct snd_pcm *pcm)
{ {
struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
int ret; int ret;
ret = imx_pcm_new(card, dai, pcm); ret = imx_pcm_new(rtd);
if (ret) if (ret)
return ret; return ret;
......
...@@ -388,10 +388,11 @@ static int imx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream) ...@@ -388,10 +388,11 @@ static int imx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream)
static u64 imx_pcm_dmamask = DMA_BIT_MASK(32); static u64 imx_pcm_dmamask = DMA_BIT_MASK(32);
int imx_pcm_new(struct snd_card *card, struct snd_soc_dai *dai, int imx_pcm_new(struct snd_soc_pcm_runtime *rtd)
struct snd_pcm *pcm)
{ {
struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
int ret = 0; int ret = 0;
if (!card->dev->dma_mask) if (!card->dev->dma_mask)
......
...@@ -225,8 +225,7 @@ struct snd_soc_platform *imx_ssi_dma_mx2_init(struct platform_device *pdev, ...@@ -225,8 +225,7 @@ struct snd_soc_platform *imx_ssi_dma_mx2_init(struct platform_device *pdev,
struct imx_ssi *ssi); struct imx_ssi *ssi);
int snd_imx_pcm_mmap(struct snd_pcm_substream *substream, struct vm_area_struct *vma); int snd_imx_pcm_mmap(struct snd_pcm_substream *substream, struct vm_area_struct *vma);
int imx_pcm_new(struct snd_card *card, struct snd_soc_dai *dai, int imx_pcm_new(struct snd_soc_pcm_runtime *rtd);
struct snd_pcm *pcm);
void imx_pcm_free(struct snd_pcm *pcm); void imx_pcm_free(struct snd_pcm *pcm);
/* /*
......
...@@ -299,9 +299,11 @@ static void jz4740_pcm_free(struct snd_pcm *pcm) ...@@ -299,9 +299,11 @@ static void jz4740_pcm_free(struct snd_pcm *pcm)
static u64 jz4740_pcm_dmamask = DMA_BIT_MASK(32); static u64 jz4740_pcm_dmamask = DMA_BIT_MASK(32);
int jz4740_pcm_new(struct snd_card *card, struct snd_soc_dai *dai, int jz4740_pcm_new(struct snd_soc_pcm_runtime *rtd)
struct snd_pcm *pcm)
{ {
struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
int ret = 0; int ret = 0;
if (!card->dev->dma_mask) if (!card->dev->dma_mask)
......
...@@ -312,9 +312,11 @@ static int kirkwood_dma_preallocate_dma_buffer(struct snd_pcm *pcm, ...@@ -312,9 +312,11 @@ static int kirkwood_dma_preallocate_dma_buffer(struct snd_pcm *pcm,
return 0; return 0;
} }
static int kirkwood_dma_new(struct snd_card *card, static int kirkwood_dma_new(struct snd_soc_pcm_runtime *rtd)
struct snd_soc_dai *dai, struct snd_pcm *pcm)
{ {
struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
int ret; int ret;
if (!card->dev->dma_mask) if (!card->dev->dma_mask)
......
...@@ -402,9 +402,10 @@ static void sst_pcm_free(struct snd_pcm *pcm) ...@@ -402,9 +402,10 @@ static void sst_pcm_free(struct snd_pcm *pcm)
snd_pcm_lib_preallocate_free_for_all(pcm); snd_pcm_lib_preallocate_free_for_all(pcm);
} }
int sst_pcm_new(struct snd_card *card, struct snd_soc_dai *dai, int sst_pcm_new(struct snd_soc_pcm_runtime *rtd)
struct snd_pcm *pcm)
{ {
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
int retval = 0; int retval = 0;
pr_debug("sst_pcm_new called\n"); pr_debug("sst_pcm_new called\n");
......
...@@ -315,9 +315,12 @@ static void nuc900_dma_free_dma_buffers(struct snd_pcm *pcm) ...@@ -315,9 +315,12 @@ static void nuc900_dma_free_dma_buffers(struct snd_pcm *pcm)
} }
static u64 nuc900_pcm_dmamask = DMA_BIT_MASK(32); static u64 nuc900_pcm_dmamask = DMA_BIT_MASK(32);
static int nuc900_dma_new(struct snd_card *card, static int nuc900_dma_new(struct snd_soc_pcm_runtime *rtd)
struct snd_soc_dai *dai, struct snd_pcm *pcm)
{ {
struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
if (!card->dev->dma_mask) if (!card->dev->dma_mask)
card->dev->dma_mask = &nuc900_pcm_dmamask; card->dev->dma_mask = &nuc900_pcm_dmamask;
if (!card->dev->coherent_dma_mask) if (!card->dev->coherent_dma_mask)
......
...@@ -366,9 +366,11 @@ static void omap_pcm_free_dma_buffers(struct snd_pcm *pcm) ...@@ -366,9 +366,11 @@ static void omap_pcm_free_dma_buffers(struct snd_pcm *pcm)
} }
} }
static int omap_pcm_new(struct snd_card *card, struct snd_soc_dai *dai, static int omap_pcm_new(struct snd_soc_pcm_runtime *rtd)
struct snd_pcm *pcm)
{ {
struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
int ret = 0; int ret = 0;
if (!card->dev->dma_mask) if (!card->dev->dma_mask)
......
...@@ -85,9 +85,11 @@ static struct snd_pcm_ops pxa2xx_pcm_ops = { ...@@ -85,9 +85,11 @@ static struct snd_pcm_ops pxa2xx_pcm_ops = {
static u64 pxa2xx_pcm_dmamask = DMA_BIT_MASK(32); static u64 pxa2xx_pcm_dmamask = DMA_BIT_MASK(32);
static int pxa2xx_soc_pcm_new(struct snd_card *card, struct snd_soc_dai *dai, static int pxa2xx_soc_pcm_new(struct snd_soc_pcm_runtime *rtd)
struct snd_pcm *pcm)
{ {
struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
int ret = 0; int ret = 0;
if (!card->dev->dma_mask) if (!card->dev->dma_mask)
......
...@@ -443,10 +443,11 @@ static void s6000_pcm_free(struct snd_pcm *pcm) ...@@ -443,10 +443,11 @@ static void s6000_pcm_free(struct snd_pcm *pcm)
static u64 s6000_pcm_dmamask = DMA_BIT_MASK(32); static u64 s6000_pcm_dmamask = DMA_BIT_MASK(32);
static int s6000_pcm_new(struct snd_card *card, static int s6000_pcm_new(struct snd_soc_pcm_runtime *runtime)
struct snd_soc_dai *dai, struct snd_pcm *pcm)
{ {
struct snd_soc_pcm_runtime *runtime = pcm->private_data; struct snd_card *card = runtime->card->snd_card;
struct snd_soc_dai *dai = runtime->cpu_dai;
struct snd_pcm *pcm = runtime->pcm;
struct s6000_pcm_dma_params *params; struct s6000_pcm_dma_params *params;
int res; int res;
......
...@@ -425,9 +425,11 @@ static void dma_free_dma_buffers(struct snd_pcm *pcm) ...@@ -425,9 +425,11 @@ static void dma_free_dma_buffers(struct snd_pcm *pcm)
static u64 dma_mask = DMA_BIT_MASK(32); static u64 dma_mask = DMA_BIT_MASK(32);
static int dma_new(struct snd_card *card, static int dma_new(struct snd_soc_pcm_runtime *rtd)
struct snd_soc_dai *dai, struct snd_pcm *pcm)
{ {
struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
int ret = 0; int ret = 0;
pr_debug("Entered %s\n", __func__); pr_debug("Entered %s\n", __func__);
......
...@@ -327,10 +327,10 @@ static void camelot_pcm_free(struct snd_pcm *pcm) ...@@ -327,10 +327,10 @@ static void camelot_pcm_free(struct snd_pcm *pcm)
snd_pcm_lib_preallocate_free_for_all(pcm); snd_pcm_lib_preallocate_free_for_all(pcm);
} }
static int camelot_pcm_new(struct snd_card *card, static int camelot_pcm_new(struct snd_soc_pcm_runtime *rtd)
struct snd_soc_dai *dai,
struct snd_pcm *pcm)
{ {
struct snd_pcm *pcm = rtd->pcm;
/* dont use SNDRV_DMA_TYPE_DEV, since it will oops the SH kernel /* dont use SNDRV_DMA_TYPE_DEV, since it will oops the SH kernel
* in MMAP mode (i.e. aplay -M) * in MMAP mode (i.e. aplay -M)
*/ */
......
...@@ -1168,10 +1168,10 @@ static void fsi_pcm_free(struct snd_pcm *pcm) ...@@ -1168,10 +1168,10 @@ static void fsi_pcm_free(struct snd_pcm *pcm)
snd_pcm_lib_preallocate_free_for_all(pcm); snd_pcm_lib_preallocate_free_for_all(pcm);
} }
static int fsi_pcm_new(struct snd_card *card, static int fsi_pcm_new(struct snd_soc_pcm_runtime *rtd)
struct snd_soc_dai *dai,
struct snd_pcm *pcm)
{ {
struct snd_pcm *pcm = rtd->pcm;
/* /*
* dont use SNDRV_DMA_TYPE_DEV, since it will oops the SH kernel * dont use SNDRV_DMA_TYPE_DEV, since it will oops the SH kernel
* in MMAP mode (i.e. aplay -M) * in MMAP mode (i.e. aplay -M)
......
...@@ -527,10 +527,11 @@ static snd_pcm_uframes_t siu_pcm_pointer_dma(struct snd_pcm_substream *ss) ...@@ -527,10 +527,11 @@ static snd_pcm_uframes_t siu_pcm_pointer_dma(struct snd_pcm_substream *ss)
return bytes_to_frames(ss->runtime, ptr); return bytes_to_frames(ss->runtime, ptr);
} }
static int siu_pcm_new(struct snd_card *card, struct snd_soc_dai *dai, static int siu_pcm_new(struct snd_soc_pcm_runtime *rtd)
struct snd_pcm *pcm)
{ {
/* card->dev == socdev->dev, see snd_soc_new_pcms() */ /* card->dev == socdev->dev, see snd_soc_new_pcms() */
struct snd_card *card = rtd->card->snd_card;
struct snd_pcm *pcm = rtd->pcm;
struct siu_info *info = siu_i2s_data; struct siu_info *info = siu_i2s_data;
struct platform_device *pdev = to_platform_device(card->dev); struct platform_device *pdev = to_platform_device(card->dev);
int ret; int ret;
......
...@@ -2143,8 +2143,7 @@ static int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num) ...@@ -2143,8 +2143,7 @@ static int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &soc_pcm_ops); snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &soc_pcm_ops);
if (platform->driver->pcm_new) { if (platform->driver->pcm_new) {
ret = platform->driver->pcm_new(rtd->card->snd_card, ret = platform->driver->pcm_new(rtd);
codec_dai, pcm);
if (ret < 0) { if (ret < 0) {
pr_err("asoc: platform pcm constructor failed\n"); pr_err("asoc: platform pcm constructor failed\n");
return ret; return ret;
......
...@@ -322,9 +322,11 @@ static void tegra_pcm_deallocate_dma_buffer(struct snd_pcm *pcm, int stream) ...@@ -322,9 +322,11 @@ static void tegra_pcm_deallocate_dma_buffer(struct snd_pcm *pcm, int stream)
static u64 tegra_dma_mask = DMA_BIT_MASK(32); static u64 tegra_dma_mask = DMA_BIT_MASK(32);
static int tegra_pcm_new(struct snd_card *card, static int tegra_pcm_new(struct snd_soc_pcm_runtime *rtd)
struct snd_soc_dai *dai, struct snd_pcm *pcm)
{ {
struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
int ret = 0; int ret = 0;
if (!card->dev->dma_mask) if (!card->dev->dma_mask)
......
...@@ -288,9 +288,10 @@ static void txx9aclc_pcm_free_dma_buffers(struct snd_pcm *pcm) ...@@ -288,9 +288,10 @@ static void txx9aclc_pcm_free_dma_buffers(struct snd_pcm *pcm)
snd_pcm_lib_preallocate_free_for_all(pcm); snd_pcm_lib_preallocate_free_for_all(pcm);
} }
static int txx9aclc_pcm_new(struct snd_card *card, struct snd_soc_dai *dai, static int txx9aclc_pcm_new(struct snd_soc_pcm_runtime *rtd)
struct snd_pcm *pcm)
{ {
struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm;
struct platform_device *pdev = to_platform_device(dai->platform->dev); struct platform_device *pdev = to_platform_device(dai->platform->dev);
struct txx9aclc_soc_device *dev; struct txx9aclc_soc_device *dev;
struct resource *r; struct resource *r;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册