Lines Matching full:lpass
30 /* LPASS Top register definitions */
56 /* pointer to the LPASS TOP regmap */
61 static void exynos_lpass_core_sw_reset(struct exynos_lpass *lpass, int mask) in exynos_lpass_core_sw_reset() argument
65 regmap_read(lpass->top, SFR_LPASS_CORE_SW_RESET, &val); in exynos_lpass_core_sw_reset()
68 regmap_write(lpass->top, SFR_LPASS_CORE_SW_RESET, val); in exynos_lpass_core_sw_reset()
73 regmap_write(lpass->top, SFR_LPASS_CORE_SW_RESET, val); in exynos_lpass_core_sw_reset()
76 static void exynos_lpass_enable(struct exynos_lpass *lpass) in exynos_lpass_enable() argument
78 clk_prepare_enable(lpass->sfr0_clk); in exynos_lpass_enable()
81 regmap_write(lpass->top, SFR_LPASS_INTR_CA5_MASK, in exynos_lpass_enable()
84 regmap_write(lpass->top, SFR_LPASS_INTR_CPU_MASK, in exynos_lpass_enable()
87 exynos_lpass_core_sw_reset(lpass, LPASS_I2S_SW_RESET); in exynos_lpass_enable()
88 exynos_lpass_core_sw_reset(lpass, LPASS_DMA_SW_RESET); in exynos_lpass_enable()
89 exynos_lpass_core_sw_reset(lpass, LPASS_MEM_SW_RESET); in exynos_lpass_enable()
92 static void exynos_lpass_disable(struct exynos_lpass *lpass) in exynos_lpass_disable() argument
95 regmap_write(lpass->top, SFR_LPASS_INTR_CPU_MASK, 0); in exynos_lpass_disable()
96 regmap_write(lpass->top, SFR_LPASS_INTR_CA5_MASK, 0); in exynos_lpass_disable()
98 clk_disable_unprepare(lpass->sfr0_clk); in exynos_lpass_disable()
112 struct exynos_lpass *lpass; in exynos_lpass_probe() local
116 lpass = devm_kzalloc(dev, sizeof(*lpass), GFP_KERNEL); in exynos_lpass_probe()
117 if (!lpass) in exynos_lpass_probe()
125 lpass->sfr0_clk = devm_clk_get(dev, "sfr0_ctrl"); in exynos_lpass_probe()
126 if (IS_ERR(lpass->sfr0_clk)) in exynos_lpass_probe()
127 return PTR_ERR(lpass->sfr0_clk); in exynos_lpass_probe()
129 lpass->top = regmap_init_mmio(dev, base_top, in exynos_lpass_probe()
131 if (IS_ERR(lpass->top)) { in exynos_lpass_probe()
132 dev_err(dev, "LPASS top regmap initialization failed\n"); in exynos_lpass_probe()
133 return PTR_ERR(lpass->top); in exynos_lpass_probe()
136 platform_set_drvdata(pdev, lpass); in exynos_lpass_probe()
139 exynos_lpass_enable(lpass); in exynos_lpass_probe()
146 struct exynos_lpass *lpass = platform_get_drvdata(pdev); in exynos_lpass_remove() local
148 exynos_lpass_disable(lpass); in exynos_lpass_remove()
151 exynos_lpass_disable(lpass); in exynos_lpass_remove()
152 regmap_exit(lpass->top); in exynos_lpass_remove()
159 struct exynos_lpass *lpass = dev_get_drvdata(dev); in exynos_lpass_suspend() local
161 exynos_lpass_disable(lpass); in exynos_lpass_suspend()
168 struct exynos_lpass *lpass = dev_get_drvdata(dev); in exynos_lpass_resume() local
170 exynos_lpass_enable(lpass); in exynos_lpass_resume()
182 { .compatible = "samsung,exynos5433-lpass" },
189 .name = "exynos-lpass",