summaryrefslogtreecommitdiffstats
path: root/drivers/mfd
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 08:32:42 +0000
commit3f2d347e851ef4464dea49504cde85e5eef67b2d (patch)
tree96bd29e9aae3ef81ac7c6ef7f2b51193ec50ddd4 /drivers/mfd
parent9e28989d41c0eab57ec0bb156617a8757406ff8a (diff)
downloadlinux-3f2d347e851ef4464dea49504cde85e5eef67b2d.tar.gz
linux-3f2d347e851ef4464dea49504cde85e5eef67b2d.tar.bz2
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')
-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)