Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ASoC: Samsung: Add quirk for internal DMA

Internal DMA is available only on some of Samsung platforms.
So added a quirk for the same and made it optional.

Signed-off-by: Padmavathi Venna <padma.v@samsung.com>
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Padmavathi Venna and committed by
Mark Brown
b0759736 f114040e

+7 -6
+1
include/linux/platform_data/asoc-s3c.h
··· 27 27 #define QUIRK_NO_MUXPSR (1 << 2) 28 28 #define QUIRK_NEED_RSTCLR (1 << 3) 29 29 #define QUIRK_SUPPORTS_TDM (1 << 4) 30 + #define QUIRK_SUPPORTS_IDMA (1 << 5) 30 31 /* Quirks of the I2S controller */ 31 32 u32 quirks; 32 33 dma_addr_t idma_addr;
+6 -6
sound/soc/samsung/i2s.c
··· 987 987 if (i2s->quirks & QUIRK_NEED_RSTCLR) 988 988 writel(CON_RSTCLR, i2s->addr + I2SCON); 989 989 990 - if (i2s->quirks & QUIRK_SEC_DAI) 990 + if (i2s->quirks & QUIRK_SUPPORTS_IDMA) 991 991 idma_reg_addr_init(i2s->addr, 992 992 i2s->sec_dai->idma_playback.dma_addr); 993 993 ··· 1199 1199 quirks = i2s_dai_data->quirks; 1200 1200 if (of_property_read_u32(np, "samsung,idma-addr", 1201 1201 &idma_addr)) { 1202 - if (quirks & QUIRK_SEC_DAI) { 1203 - dev_err(&pdev->dev, "idma address is not"\ 1202 + if (quirks & QUIRK_SUPPORTS_IDMA) { 1203 + dev_info(&pdev->dev, "idma address is not"\ 1204 1204 "specified"); 1205 - return -EINVAL; 1206 1205 } 1207 1206 } 1208 1207 } ··· 1308 1309 1309 1310 static const struct samsung_i2s_dai_data i2sv5_dai_type = { 1310 1311 .dai_type = TYPE_PRI, 1311 - .quirks = QUIRK_PRI_6CHAN | QUIRK_SEC_DAI | QUIRK_NEED_RSTCLR, 1312 + .quirks = QUIRK_PRI_6CHAN | QUIRK_SEC_DAI | QUIRK_NEED_RSTCLR | 1313 + QUIRK_SUPPORTS_IDMA, 1312 1314 }; 1313 1315 1314 1316 static const struct samsung_i2s_dai_data i2sv6_dai_type = { 1315 1317 .dai_type = TYPE_PRI, 1316 1318 .quirks = QUIRK_PRI_6CHAN | QUIRK_SEC_DAI | QUIRK_NEED_RSTCLR | 1317 - QUIRK_SUPPORTS_TDM, 1319 + QUIRK_SUPPORTS_TDM | QUIRK_SUPPORTS_IDMA, 1318 1320 }; 1319 1321 1320 1322 static const struct samsung_i2s_dai_data samsung_dai_type_pri = {