Commit 45f31216 authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Mark Brown

ASoC: fsi-ak4642: modify specification method of FSI / ak464x

Current fsi-ak4642 was using id_entry name in order to specify
FSI port and ak464x codec.
But it was no sense, no flexibility.
Platform can specify FSI/ak464x pair by this patch.
Acked-by: default avatarPaul Mundt <lethal@linux-sh.org>
Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 39afd66c
...@@ -762,9 +762,22 @@ static struct platform_device fsi_device = { ...@@ -762,9 +762,22 @@ static struct platform_device fsi_device = {
}, },
}; };
static struct fsi_ak4642_info fsi2_ak4643_info = {
.name = "AK4643",
.card = "FSI2A-AK4643",
.cpu_dai = "fsia-dai",
.codec = "ak4642-codec.0-0013",
.platform = "sh_fsi2",
.id = FSI_PORT_A,
};
static struct platform_device fsi_ak4643_device = { static struct platform_device fsi_ak4643_device = {
.name = "sh_fsi2_a_ak4643", .name = "fsi-ak4642-audio",
.dev = {
.platform_data = &fsi_info,
},
}; };
static struct sh_mobile_meram_cfg hdmi_meram_cfg = { static struct sh_mobile_meram_cfg hdmi_meram_cfg = {
.icb[0] = { .icb[0] = {
.marker_icb = 30, .marker_icb = 30,
......
...@@ -990,8 +990,20 @@ static struct platform_device fsi_device = { ...@@ -990,8 +990,20 @@ static struct platform_device fsi_device = {
}, },
}; };
static struct fsi_ak4642_info fsi2_ak4643_info = {
.name = "AK4643",
.card = "FSI2A-AK4643",
.cpu_dai = "fsia-dai",
.codec = "ak4642-codec.0-0013",
.platform = "sh_fsi2",
.id = FSI_PORT_A,
};
static struct platform_device fsi_ak4643_device = { static struct platform_device fsi_ak4643_device = {
.name = "sh_fsi2_a_ak4643", .name = "fsi-ak4642-audio",
.dev = {
.platform_data = &fsi2_ak4643_info,
},
}; };
/* /*
......
...@@ -315,8 +315,20 @@ static struct platform_device fsi_device = { ...@@ -315,8 +315,20 @@ static struct platform_device fsi_device = {
}, },
}; };
static struct fsi_ak4642_info fsi_ak4642_info = {
.name = "AK4642",
.card = "FSIA-AK4642",
.cpu_dai = "fsia-dai",
.codec = "ak4642-codec.0-0012",
.platform = "sh_fsi.0",
.id = FSI_PORT_A,
};
static struct platform_device fsi_ak4642_device = { static struct platform_device fsi_ak4642_device = {
.name = "sh_fsi_a_ak4642", .name = "fsi-ak4642-audio",
.dev = {
.platform_data = &fsi_ak4642_info,
},
}; };
/* KEYSC in SoC (Needs SW33-2 set to ON) */ /* KEYSC in SoC (Needs SW33-2 set to ON) */
......
...@@ -78,4 +78,16 @@ struct sh_fsi_platform_info { ...@@ -78,4 +78,16 @@ struct sh_fsi_platform_info {
int (*set_rate)(struct device *dev, int is_porta, int rate, int enable); int (*set_rate)(struct device *dev, int is_porta, int rate, int enable);
}; };
/*
* for fsi-ak4642
*/
struct fsi_ak4642_info {
const char *name;
const char *card;
const char *cpu_dai;
const char *codec;
const char *platform;
int id;
};
#endif /* __SOUND_FSI_H */ #endif /* __SOUND_FSI_H */
...@@ -58,27 +58,23 @@ static struct platform_device *fsi_snd_device; ...@@ -58,27 +58,23 @@ static struct platform_device *fsi_snd_device;
static int fsi_ak4642_probe(struct platform_device *pdev) static int fsi_ak4642_probe(struct platform_device *pdev)
{ {
int ret = -ENOMEM; int ret = -ENOMEM;
const struct platform_device_id *id_entry; struct fsi_ak4642_info *pinfo = pdev->dev.platform_data;
struct fsi_ak4642_data *pdata;
id_entry = pdev->id_entry; if (!pinfo) {
if (!id_entry) { dev_err(&pdev->dev, "no info for fsi ak4642\n");
dev_err(&pdev->dev, "unknown fsi ak4642\n"); goto out;
return -ENODEV;
} }
pdata = (struct fsi_ak4642_data *)id_entry->driver_data; fsi_snd_device = platform_device_alloc("soc-audio", pinfo->id);
fsi_snd_device = platform_device_alloc("soc-audio", pdata->id);
if (!fsi_snd_device) if (!fsi_snd_device)
goto out; goto out;
fsi_dai_link.name = pdata->name; fsi_dai_link.name = pinfo->name;
fsi_dai_link.stream_name = pdata->name; fsi_dai_link.stream_name = pinfo->name;
fsi_dai_link.cpu_dai_name = pdata->cpu_dai; fsi_dai_link.cpu_dai_name = pinfo->cpu_dai;
fsi_dai_link.platform_name = pdata->platform; fsi_dai_link.platform_name = pinfo->platform;
fsi_dai_link.codec_name = pdata->codec; fsi_dai_link.codec_name = pinfo->codec;
fsi_soc_card.name = pdata->card; fsi_soc_card.name = pinfo->card;
platform_set_drvdata(fsi_snd_device, &fsi_soc_card); platform_set_drvdata(fsi_snd_device, &fsi_soc_card);
ret = platform_device_add(fsi_snd_device); ret = platform_device_add(fsi_snd_device);
...@@ -96,100 +92,12 @@ static int fsi_ak4642_remove(struct platform_device *pdev) ...@@ -96,100 +92,12 @@ static int fsi_ak4642_remove(struct platform_device *pdev)
return 0; return 0;
} }
static struct fsi_ak4642_data fsi_a_ak4642 = {
.name = "AK4642",
.card = "FSIA-AK4642",
.cpu_dai = "fsia-dai",
.codec = "ak4642-codec.0-0012",
.platform = "sh_fsi.0",
.id = FSI_PORT_A,
};
static struct fsi_ak4642_data fsi_b_ak4642 = {
.name = "AK4642",
.card = "FSIB-AK4642",
.cpu_dai = "fsib-dai",
.codec = "ak4642-codec.0-0012",
.platform = "sh_fsi.0",
.id = FSI_PORT_B,
};
static struct fsi_ak4642_data fsi_a_ak4643 = {
.name = "AK4643",
.card = "FSIA-AK4643",
.cpu_dai = "fsia-dai",
.codec = "ak4642-codec.0-0013",
.platform = "sh_fsi.0",
.id = FSI_PORT_A,
};
static struct fsi_ak4642_data fsi_b_ak4643 = {
.name = "AK4643",
.card = "FSIB-AK4643",
.cpu_dai = "fsib-dai",
.codec = "ak4642-codec.0-0013",
.platform = "sh_fsi.0",
.id = FSI_PORT_B,
};
static struct fsi_ak4642_data fsi2_a_ak4642 = {
.name = "AK4642",
.card = "FSI2A-AK4642",
.cpu_dai = "fsia-dai",
.codec = "ak4642-codec.0-0012",
.platform = "sh_fsi2",
.id = FSI_PORT_A,
};
static struct fsi_ak4642_data fsi2_b_ak4642 = {
.name = "AK4642",
.card = "FSI2B-AK4642",
.cpu_dai = "fsib-dai",
.codec = "ak4642-codec.0-0012",
.platform = "sh_fsi2",
.id = FSI_PORT_B,
};
static struct fsi_ak4642_data fsi2_a_ak4643 = {
.name = "AK4643",
.card = "FSI2A-AK4643",
.cpu_dai = "fsia-dai",
.codec = "ak4642-codec.0-0013",
.platform = "sh_fsi2",
.id = FSI_PORT_A,
};
static struct fsi_ak4642_data fsi2_b_ak4643 = {
.name = "AK4643",
.card = "FSI2B-AK4643",
.cpu_dai = "fsib-dai",
.codec = "ak4642-codec.0-0013",
.platform = "sh_fsi2",
.id = FSI_PORT_B,
};
static struct platform_device_id fsi_id_table[] = {
/* FSI */
{ "sh_fsi_a_ak4642", (kernel_ulong_t)&fsi_a_ak4642 },
{ "sh_fsi_b_ak4642", (kernel_ulong_t)&fsi_b_ak4642 },
{ "sh_fsi_a_ak4643", (kernel_ulong_t)&fsi_a_ak4643 },
{ "sh_fsi_b_ak4643", (kernel_ulong_t)&fsi_b_ak4643 },
/* FSI 2 */
{ "sh_fsi2_a_ak4642", (kernel_ulong_t)&fsi2_a_ak4642 },
{ "sh_fsi2_b_ak4642", (kernel_ulong_t)&fsi2_b_ak4642 },
{ "sh_fsi2_a_ak4643", (kernel_ulong_t)&fsi2_a_ak4643 },
{ "sh_fsi2_b_ak4643", (kernel_ulong_t)&fsi2_b_ak4643 },
{},
};
static struct platform_driver fsi_ak4642 = { static struct platform_driver fsi_ak4642 = {
.driver = { .driver = {
.name = "fsi-ak4642-audio", .name = "fsi-ak4642-audio",
}, },
.probe = fsi_ak4642_probe, .probe = fsi_ak4642_probe,
.remove = fsi_ak4642_remove, .remove = fsi_ak4642_remove,
.id_table = fsi_id_table,
}; };
static int __init fsi_ak4642_init(void) static int __init fsi_ak4642_init(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment