Lines Matching refs:frontend

51 static void sun4i_frontend_scaler_init(struct sun4i_frontend *frontend)  in sun4i_frontend_scaler_init()  argument
56 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_HORZCOEF0_REG(i), in sun4i_frontend_scaler_init()
58 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_HORZCOEF0_REG(i), in sun4i_frontend_scaler_init()
60 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_HORZCOEF1_REG(i), in sun4i_frontend_scaler_init()
62 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_HORZCOEF1_REG(i), in sun4i_frontend_scaler_init()
64 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTCOEF_REG(i), in sun4i_frontend_scaler_init()
66 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTCOEF_REG(i), in sun4i_frontend_scaler_init()
70 regmap_update_bits(frontend->regs, SUN4I_FRONTEND_FRM_CTRL_REG, in sun4i_frontend_scaler_init()
75 int sun4i_frontend_init(struct sun4i_frontend *frontend) in sun4i_frontend_init() argument
77 return pm_runtime_get_sync(frontend->dev); in sun4i_frontend_init()
81 void sun4i_frontend_exit(struct sun4i_frontend *frontend) in sun4i_frontend_exit() argument
83 pm_runtime_put(frontend->dev); in sun4i_frontend_exit()
87 void sun4i_frontend_update_buffer(struct sun4i_frontend *frontend, in sun4i_frontend_update_buffer() argument
96 regmap_write(frontend->regs, SUN4I_FRONTEND_LINESTRD0_REG, in sun4i_frontend_update_buffer()
103 regmap_write(frontend->regs, SUN4I_FRONTEND_BUF_ADDR0_REG, paddr); in sun4i_frontend_update_buffer()
132 int sun4i_frontend_update_formats(struct sun4i_frontend *frontend, in sun4i_frontend_update_formats() argument
158 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_HORZPHASE_REG, 0x400); in sun4i_frontend_update_formats()
159 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_HORZPHASE_REG, 0x400); in sun4i_frontend_update_formats()
160 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTPHASE0_REG, 0x400); in sun4i_frontend_update_formats()
161 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTPHASE0_REG, 0x400); in sun4i_frontend_update_formats()
162 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTPHASE1_REG, 0x400); in sun4i_frontend_update_formats()
163 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTPHASE1_REG, 0x400); in sun4i_frontend_update_formats()
165 regmap_write(frontend->regs, SUN4I_FRONTEND_INPUT_FMT_REG, in sun4i_frontend_update_formats()
175 regmap_write(frontend->regs, SUN4I_FRONTEND_OUTPUT_FMT_REG, in sun4i_frontend_update_formats()
182 void sun4i_frontend_update_coord(struct sun4i_frontend *frontend, in sun4i_frontend_update_coord() argument
190 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_INSIZE_REG, in sun4i_frontend_update_coord()
193 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_INSIZE_REG, in sun4i_frontend_update_coord()
197 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_OUTSIZE_REG, in sun4i_frontend_update_coord()
199 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_OUTSIZE_REG, in sun4i_frontend_update_coord()
202 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_HORZFACT_REG, in sun4i_frontend_update_coord()
204 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_HORZFACT_REG, in sun4i_frontend_update_coord()
207 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTFACT_REG, in sun4i_frontend_update_coord()
209 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTFACT_REG, in sun4i_frontend_update_coord()
212 regmap_write_bits(frontend->regs, SUN4I_FRONTEND_FRM_CTRL_REG, in sun4i_frontend_update_coord()
218 int sun4i_frontend_enable(struct sun4i_frontend *frontend) in sun4i_frontend_enable() argument
220 regmap_write_bits(frontend->regs, SUN4I_FRONTEND_FRM_CTRL_REG, in sun4i_frontend_enable()
239 struct sun4i_frontend *frontend; in sun4i_frontend_bind() local
245 frontend = devm_kzalloc(dev, sizeof(*frontend), GFP_KERNEL); in sun4i_frontend_bind()
246 if (!frontend) in sun4i_frontend_bind()
249 dev_set_drvdata(dev, frontend); in sun4i_frontend_bind()
250 frontend->dev = dev; in sun4i_frontend_bind()
251 frontend->node = dev->of_node; in sun4i_frontend_bind()
258 frontend->regs = devm_regmap_init_mmio(dev, regs, in sun4i_frontend_bind()
260 if (IS_ERR(frontend->regs)) { in sun4i_frontend_bind()
262 return PTR_ERR(frontend->regs); in sun4i_frontend_bind()
265 frontend->reset = devm_reset_control_get(dev, NULL); in sun4i_frontend_bind()
266 if (IS_ERR(frontend->reset)) { in sun4i_frontend_bind()
268 return PTR_ERR(frontend->reset); in sun4i_frontend_bind()
271 frontend->bus_clk = devm_clk_get(dev, "ahb"); in sun4i_frontend_bind()
272 if (IS_ERR(frontend->bus_clk)) { in sun4i_frontend_bind()
274 return PTR_ERR(frontend->bus_clk); in sun4i_frontend_bind()
277 frontend->mod_clk = devm_clk_get(dev, "mod"); in sun4i_frontend_bind()
278 if (IS_ERR(frontend->mod_clk)) { in sun4i_frontend_bind()
280 return PTR_ERR(frontend->mod_clk); in sun4i_frontend_bind()
283 frontend->ram_clk = devm_clk_get(dev, "ram"); in sun4i_frontend_bind()
284 if (IS_ERR(frontend->ram_clk)) { in sun4i_frontend_bind()
286 return PTR_ERR(frontend->ram_clk); in sun4i_frontend_bind()
289 list_add_tail(&frontend->list, &drv->frontend_list); in sun4i_frontend_bind()
298 struct sun4i_frontend *frontend = dev_get_drvdata(dev); in sun4i_frontend_unbind() local
300 list_del(&frontend->list); in sun4i_frontend_unbind()
323 struct sun4i_frontend *frontend = dev_get_drvdata(dev); in sun4i_frontend_runtime_resume() local
326 clk_set_rate(frontend->mod_clk, 300000000); in sun4i_frontend_runtime_resume()
328 clk_prepare_enable(frontend->bus_clk); in sun4i_frontend_runtime_resume()
329 clk_prepare_enable(frontend->mod_clk); in sun4i_frontend_runtime_resume()
330 clk_prepare_enable(frontend->ram_clk); in sun4i_frontend_runtime_resume()
332 ret = reset_control_reset(frontend->reset); in sun4i_frontend_runtime_resume()
338 regmap_update_bits(frontend->regs, SUN4I_FRONTEND_EN_REG, in sun4i_frontend_runtime_resume()
342 regmap_update_bits(frontend->regs, SUN4I_FRONTEND_BYPASS_REG, in sun4i_frontend_runtime_resume()
346 sun4i_frontend_scaler_init(frontend); in sun4i_frontend_runtime_resume()
353 struct sun4i_frontend *frontend = dev_get_drvdata(dev); in sun4i_frontend_runtime_suspend() local
355 clk_disable_unprepare(frontend->ram_clk); in sun4i_frontend_runtime_suspend()
356 clk_disable_unprepare(frontend->mod_clk); in sun4i_frontend_runtime_suspend()
357 clk_disable_unprepare(frontend->bus_clk); in sun4i_frontend_runtime_suspend()
359 reset_control_assert(frontend->reset); in sun4i_frontend_runtime_suspend()