summaryrefslogtreecommitdiffstats
path: root/drivers/mfd/exynos-lpass.c
diff options
context:
space:
mode:
authorBeomho Seo <beomho.seo@samsung.com>2018-12-21 15:32:28 +0100
committerLee Jones <lee.jones@linaro.org>2019-01-03 09:32:42 +0100
commit3f2d347e851ef4464dea49504cde85e5eef67b2d (patch)
tree96bd29e9aae3ef81ac7c6ef7f2b51193ec50ddd4 /drivers/mfd/exynos-lpass.c
parentmfd: mc13xxx: Fix a missing check of a register-read failure (diff)
downloadlinux-3f2d347e851ef4464dea49504cde85e5eef67b2d.tar.xz
linux-3f2d347e851ef4464dea49504cde85e5eef67b2d.zip
mfd: exynos-lpass: Enable UART module support
This patch enables proper interrupts routing between UART module in Exynos Audio SubSystem and the rest of the SoC. This routing is completely transparent for UART device and CPU/GIC. UART driver requests interrupts from the respective controller and enables/masks/handles it by itself via standard methods. There are boards (for example TM2), which use UART module in Exynos Audio SubStem for communication with BlueTooth chip. Signed-off-by: Beomho Seo <beomho.seo@samsung.com> [mszyprow: rephrased commit message, added UART reset] Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
Diffstat (limited to 'drivers/mfd/exynos-lpass.c')
-rw-r--r--drivers/mfd/exynos-lpass.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/mfd/exynos-lpass.c b/drivers/mfd/exynos-lpass.c
index ca829f85672f..2713de989f05 100644
--- a/drivers/mfd/exynos-lpass.c
+++ b/drivers/mfd/exynos-lpass.c
@@ -82,11 +82,13 @@ static void exynos_lpass_enable(struct exynos_lpass *lpass)
LPASS_INTR_SFR | LPASS_INTR_DMA | LPASS_INTR_I2S);
regmap_write(lpass->top, SFR_LPASS_INTR_CPU_MASK,
- LPASS_INTR_SFR | LPASS_INTR_DMA | LPASS_INTR_I2S);
+ LPASS_INTR_SFR | LPASS_INTR_DMA | LPASS_INTR_I2S |
+ LPASS_INTR_UART);
exynos_lpass_core_sw_reset(lpass, LPASS_I2S_SW_RESET);
exynos_lpass_core_sw_reset(lpass, LPASS_DMA_SW_RESET);
exynos_lpass_core_sw_reset(lpass, LPASS_MEM_SW_RESET);
+ exynos_lpass_core_sw_reset(lpass, LPASS_UART_SW_RESET);
}
static void exynos_lpass_disable(struct exynos_lpass *lpass)