Lines Matching refs:mic
109 static void mic_set_path(struct exynos_mic *mic, bool enable) in mic_set_path() argument
114 ret = regmap_read(mic->sysreg, DSD_CFG_MUX, &val); in mic_set_path()
121 if (mic->i80_mode) in mic_set_path()
130 ret = regmap_write(mic->sysreg, DSD_CFG_MUX, val); in mic_set_path()
135 static int mic_sw_reset(struct exynos_mic *mic) in mic_sw_reset() argument
140 writel(MIC_SW_RST, mic->reg + MIC_OP); in mic_sw_reset()
143 ret = readl(mic->reg + MIC_OP); in mic_sw_reset()
153 static void mic_set_porch_timing(struct exynos_mic *mic) in mic_set_porch_timing() argument
155 struct videomode vm = mic->vm; in mic_set_porch_timing()
161 writel(reg, mic->reg + MIC_V_TIMING_0); in mic_set_porch_timing()
165 writel(reg, mic->reg + MIC_V_TIMING_1); in mic_set_porch_timing()
170 writel(reg, mic->reg + MIC_INPUT_TIMING_0); in mic_set_porch_timing()
174 writel(reg, mic->reg + MIC_INPUT_TIMING_1); in mic_set_porch_timing()
177 static void mic_set_img_size(struct exynos_mic *mic) in mic_set_img_size() argument
179 struct videomode *vm = &mic->vm; in mic_set_img_size()
185 writel(reg, mic->reg + MIC_IMG_SIZE); in mic_set_img_size()
188 static void mic_set_output_timing(struct exynos_mic *mic) in mic_set_output_timing() argument
190 struct videomode vm = mic->vm; in mic_set_output_timing()
196 writel(reg, mic->reg + MIC_2D_OUTPUT_TIMING_2); in mic_set_output_timing()
198 if (!mic->i80_mode) { in mic_set_output_timing()
202 writel(reg, mic->reg + MIC_2D_OUTPUT_TIMING_0); in mic_set_output_timing()
206 writel(reg, mic->reg + MIC_2D_OUTPUT_TIMING_1); in mic_set_output_timing()
210 static void mic_set_reg_on(struct exynos_mic *mic, bool enable) in mic_set_reg_on() argument
212 u32 reg = readl(mic->reg + MIC_OP); in mic_set_reg_on()
219 if (mic->i80_mode) in mic_set_reg_on()
226 writel(reg, mic->reg + MIC_OP); in mic_set_reg_on()
233 struct exynos_mic *mic = bridge->driver_private; in mic_post_disable() local
236 if (!mic->enabled) in mic_post_disable()
239 mic_set_path(mic, 0); in mic_post_disable()
241 pm_runtime_put(mic->dev); in mic_post_disable()
242 mic->enabled = 0; in mic_post_disable()
252 struct exynos_mic *mic = bridge->driver_private; in mic_mode_set() local
255 drm_display_mode_to_videomode(mode, &mic->vm); in mic_mode_set()
256 mic->i80_mode = to_exynos_crtc(bridge->encoder->crtc)->i80_mode; in mic_mode_set()
262 struct exynos_mic *mic = bridge->driver_private; in mic_pre_enable() local
266 if (mic->enabled) in mic_pre_enable()
269 ret = pm_runtime_get_sync(mic->dev); in mic_pre_enable()
273 mic_set_path(mic, 1); in mic_pre_enable()
275 ret = mic_sw_reset(mic); in mic_pre_enable()
281 if (!mic->i80_mode) in mic_pre_enable()
282 mic_set_porch_timing(mic); in mic_pre_enable()
283 mic_set_img_size(mic); in mic_pre_enable()
284 mic_set_output_timing(mic); in mic_pre_enable()
285 mic_set_reg_on(mic, 1); in mic_pre_enable()
286 mic->enabled = 1; in mic_pre_enable()
292 pm_runtime_put(mic->dev); in mic_pre_enable()
310 struct exynos_mic *mic = dev_get_drvdata(dev); in exynos_mic_bind() local
312 mic->bridge.driver_private = mic; in exynos_mic_bind()
320 struct exynos_mic *mic = dev_get_drvdata(dev); in exynos_mic_unbind() local
323 if (!mic->enabled) in exynos_mic_unbind()
326 pm_runtime_put(mic->dev); in exynos_mic_unbind()
340 struct exynos_mic *mic = dev_get_drvdata(dev); in exynos_mic_suspend() local
344 clk_disable_unprepare(mic->clks[i]); in exynos_mic_suspend()
351 struct exynos_mic *mic = dev_get_drvdata(dev); in exynos_mic_resume() local
355 ret = clk_prepare_enable(mic->clks[i]); in exynos_mic_resume()
360 clk_disable_unprepare(mic->clks[i]); in exynos_mic_resume()
377 struct exynos_mic *mic; in exynos_mic_probe() local
381 mic = devm_kzalloc(dev, sizeof(*mic), GFP_KERNEL); in exynos_mic_probe()
382 if (!mic) { in exynos_mic_probe()
388 mic->dev = dev; in exynos_mic_probe()
395 mic->reg = devm_ioremap(dev, res.start, resource_size(&res)); in exynos_mic_probe()
396 if (!mic->reg) { in exynos_mic_probe()
402 mic->sysreg = syscon_regmap_lookup_by_phandle(dev->of_node, in exynos_mic_probe()
404 if (IS_ERR(mic->sysreg)) { in exynos_mic_probe()
406 ret = PTR_ERR(mic->sysreg); in exynos_mic_probe()
411 mic->clks[i] = devm_clk_get(dev, clk_names[i]); in exynos_mic_probe()
412 if (IS_ERR(mic->clks[i])) { in exynos_mic_probe()
415 ret = PTR_ERR(mic->clks[i]); in exynos_mic_probe()
420 platform_set_drvdata(pdev, mic); in exynos_mic_probe()
422 mic->bridge.funcs = &mic_bridge_funcs; in exynos_mic_probe()
423 mic->bridge.of_node = dev->of_node; in exynos_mic_probe()
425 drm_bridge_add(&mic->bridge); in exynos_mic_probe()
445 struct exynos_mic *mic = platform_get_drvdata(pdev); in exynos_mic_remove() local
450 drm_bridge_remove(&mic->bridge); in exynos_mic_remove()