[alsa-devel] [PATCH] ASoC: samsung: Fix non-DT use of I2S controller
The changes in commit a5a56871f804e (ASoC: samsung: add support for exynos7 I2S controller) introduce a new variant_regs structure in the driver data which is now mandatory for accessing registers. Unfortunately this is only hooked up for DT platforms so non-DT platforms like my primary development platform for audio are broken by this change and crash on boot.
Since the only non-DT user of these device is s3c64xx fix this by making the standard samsung-i2s device be of type I2Sv3 and add a new I2Sv4 name to the platform data section, currently using the I2Sv5 information which should be about right.
Signed-off-by: Mark Brown broonie@kernel.org --- sound/soc/samsung/i2s.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c index e1ace5270a8b..25919e090983 100644 --- a/sound/soc/samsung/i2s.c +++ b/sound/soc/samsung/i2s.c @@ -1418,10 +1418,13 @@ static const struct samsung_i2s_dai_data samsung_dai_type_sec = { static struct platform_device_id samsung_i2s_driver_ids[] = { { .name = "samsung-i2s", - .driver_data = (kernel_ulong_t)&samsung_dai_type_pri, + .driver_data = (kernel_ulong_t)&i2sv3_dai_type, }, { .name = "samsung-i2s-sec", .driver_data = (kernel_ulong_t)&samsung_dai_type_sec, + }, { + .name = "samsung-i2sv4", + .driver_data = (kernel_ulong_t)&i2sv5_dai_type_i2s1, }, {}, };
Hi Mark,
On 12/6/14, Mark Brown broonie@kernel.org wrote:
The changes in commit a5a56871f804e (ASoC: samsung: add support for exynos7 I2S controller) introduce a new variant_regs structure in the driver data which is now mandatory for accessing registers. Unfortunately this is only hooked up for DT platforms so non-DT platforms like my primary development platform for audio are broken by this change and crash on boot.
Since the only non-DT user of these device is s3c64xx fix this by making the standard samsung-i2s device be of type I2Sv3 and add a new I2Sv4 name to the platform data section, currently using the I2Sv5 information which should be about right.
Signed-off-by: Mark Brown broonie@kernel.org
sound/soc/samsung/i2s.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c index e1ace5270a8b..25919e090983 100644 --- a/sound/soc/samsung/i2s.c +++ b/sound/soc/samsung/i2s.c @@ -1418,10 +1418,13 @@ static const struct samsung_i2s_dai_data samsung_dai_type_sec = { static struct platform_device_id samsung_i2s_driver_ids[] = { { .name = "samsung-i2s",
.driver_data = (kernel_ulong_t)&samsung_dai_type_pri,
}, { .name = "samsung-i2s-sec", .driver_data = (kernel_ulong_t)&samsung_dai_type_sec,.driver_data = (kernel_ulong_t)&i2sv3_dai_type,
- }, {
.name = "samsung-i2sv4",
.driver_data = (kernel_ulong_t)&i2sv5_dai_type_i2s1,
I think here you need to use i2sv5_dai_type because i2sv5_dai_type_i2s1 is introduced for exynos7 on which the i2s1 is of type v5 but with slightly modified bit offsets.
Thanks Padma
}, {}, }; -- 2.1.3
Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
On Mon, Dec 08, 2014 at 10:21:52AM +0530, Padma Venkat wrote:
On 12/6/14, Mark Brown broonie@kernel.org wrote:
- }, {
.name = "samsung-i2sv4",
.driver_data = (kernel_ulong_t)&i2sv5_dai_type_i2s1,
I think here you need to use i2sv5_dai_type because i2sv5_dai_type_i2s1 is introduced for exynos7 on which the i2s1 is of type v5 but with slightly modified bit offsets.
OK, though I presume that's wrong too (otherwise it should be v4).
Hi Mark,
On 12/8/14, Mark Brown broonie@kernel.org wrote:
On Mon, Dec 08, 2014 at 10:21:52AM +0530, Padma Venkat wrote:
On 12/6/14, Mark Brown broonie@kernel.org wrote:
- }, {
.name = "samsung-i2sv4",
.driver_data = (kernel_ulong_t)&i2sv5_dai_type_i2s1,
I think here you need to use i2sv5_dai_type because i2sv5_dai_type_i2s1 is introduced for exynos7 on which the i2s1 is of type v5 but with slightly modified bit offsets.
OK, though I presume that's wrong too (otherwise it should be v4).
Yes. It does not have secondary dai, internal DMA, reset control. It has only 5.1ch support. Register offsets are similar to i2sv3_regs. So I think one V4 dai type with name "samsung,s3c64xx-i2s" is required.
Thanks Padma
On Tue, Dec 09, 2014 at 09:33:00AM +0530, Padma Venkat wrote:
On 12/8/14, Mark Brown broonie@kernel.org wrote:
OK, though I presume that's wrong too (otherwise it should be v4).
Yes. It does not have secondary dai, internal DMA, reset control. It has only 5.1ch support. Register offsets are similar to i2sv3_regs. So I think one V4 dai type with name "samsung,s3c64xx-i2s" is required.
OK, then can you or someone else with access to the documentation please provide that?
On 12/10/14, Mark Brown broonie@kernel.org wrote:
On Tue, Dec 09, 2014 at 09:33:00AM +0530, Padma Venkat wrote:
On 12/8/14, Mark Brown broonie@kernel.org wrote:
OK, though I presume that's wrong too (otherwise it should be v4).
Yes. It does not have secondary dai, internal DMA, reset control. It has only 5.1ch support. Register offsets are similar to i2sv3_regs. So I think one V4 dai type with name "samsung,s3c64xx-i2s" is required.
OK, then can you or someone else with access to the documentation please provide that?
OK. I will post a patch next week.
Thanks Padma
On Fri, Dec 12, 2014 at 08:53:50AM +0530, Padma Venkat wrote:
On 12/10/14, Mark Brown broonie@kernel.org wrote:
Yes. It does not have secondary dai, internal DMA, reset control. It has only 5.1ch support. Register offsets are similar to i2sv3_regs. So I think one V4 dai type with name "samsung,s3c64xx-i2s" is required.
OK, then can you or someone else with access to the documentation please provide that?
OK. I will post a patch next week.
Great, thanks.
participants (2)
-
Mark Brown
-
Padma Venkat