Lines Matching refs:frontend
79 static void sun4i_frontend_scaler_init(struct sun4i_frontend *frontend) in sun4i_frontend_scaler_init() argument
83 if (frontend->data->has_coef_access_ctrl) in sun4i_frontend_scaler_init()
84 regmap_write_bits(frontend->regs, SUN4I_FRONTEND_FRM_CTRL_REG, in sun4i_frontend_scaler_init()
89 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_HORZCOEF0_REG(i), in sun4i_frontend_scaler_init()
91 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_HORZCOEF0_REG(i), in sun4i_frontend_scaler_init()
93 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_HORZCOEF1_REG(i), in sun4i_frontend_scaler_init()
95 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_HORZCOEF1_REG(i), in sun4i_frontend_scaler_init()
97 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTCOEF_REG(i), in sun4i_frontend_scaler_init()
99 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTCOEF_REG(i), in sun4i_frontend_scaler_init()
103 if (frontend->data->has_coef_rdy) in sun4i_frontend_scaler_init()
104 regmap_write_bits(frontend->regs, in sun4i_frontend_scaler_init()
110 int sun4i_frontend_init(struct sun4i_frontend *frontend) in sun4i_frontend_init() argument
112 return pm_runtime_get_sync(frontend->dev); in sun4i_frontend_init()
116 void sun4i_frontend_exit(struct sun4i_frontend *frontend) in sun4i_frontend_exit() argument
118 pm_runtime_put(frontend->dev); in sun4i_frontend_exit()
156 void sun4i_frontend_update_buffer(struct sun4i_frontend *frontend, in sun4i_frontend_update_buffer() argument
179 regmap_write(frontend->regs, SUN4I_FRONTEND_TB_OFF0_REG, in sun4i_frontend_update_buffer()
186 regmap_write(frontend->regs, SUN4I_FRONTEND_TB_OFF1_REG, in sun4i_frontend_update_buffer()
194 regmap_write(frontend->regs, SUN4I_FRONTEND_TB_OFF2_REG, in sun4i_frontend_update_buffer()
209 regmap_write(frontend->regs, SUN4I_FRONTEND_LINESTRD0_REG, in sun4i_frontend_update_buffer()
213 regmap_write(frontend->regs, SUN4I_FRONTEND_LINESTRD1_REG, in sun4i_frontend_update_buffer()
217 regmap_write(frontend->regs, SUN4I_FRONTEND_LINESTRD2_REG, in sun4i_frontend_update_buffer()
227 regmap_write(frontend->regs, SUN4I_FRONTEND_BUF_ADDR0_REG, paddr); in sun4i_frontend_update_buffer()
233 regmap_write(frontend->regs, SUN4I_FRONTEND_BUF_ADDR1_REG, in sun4i_frontend_update_buffer()
241 regmap_write(frontend->regs, SUN4I_FRONTEND_BUF_ADDR2_REG, in sun4i_frontend_update_buffer()
403 int sun4i_frontend_update_formats(struct sun4i_frontend *frontend, in sun4i_frontend_update_formats() argument
445 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_HORZPHASE_REG, in sun4i_frontend_update_formats()
446 frontend->data->ch_phase[0].horzphase); in sun4i_frontend_update_formats()
447 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_HORZPHASE_REG, in sun4i_frontend_update_formats()
448 frontend->data->ch_phase[1].horzphase); in sun4i_frontend_update_formats()
449 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTPHASE0_REG, in sun4i_frontend_update_formats()
450 frontend->data->ch_phase[0].vertphase[0]); in sun4i_frontend_update_formats()
451 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTPHASE0_REG, in sun4i_frontend_update_formats()
452 frontend->data->ch_phase[1].vertphase[0]); in sun4i_frontend_update_formats()
453 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTPHASE1_REG, in sun4i_frontend_update_formats()
454 frontend->data->ch_phase[0].vertphase[1]); in sun4i_frontend_update_formats()
455 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTPHASE1_REG, in sun4i_frontend_update_formats()
456 frontend->data->ch_phase[1].vertphase[1]); in sun4i_frontend_update_formats()
469 regmap_write(frontend->regs, in sun4i_frontend_update_formats()
476 regmap_update_bits(frontend->regs, SUN4I_FRONTEND_BYPASS_REG, in sun4i_frontend_update_formats()
479 regmap_write(frontend->regs, SUN4I_FRONTEND_INPUT_FMT_REG, in sun4i_frontend_update_formats()
487 regmap_write(frontend->regs, SUN4I_FRONTEND_OUTPUT_FMT_REG, in sun4i_frontend_update_formats()
494 void sun4i_frontend_update_coord(struct sun4i_frontend *frontend, in sun4i_frontend_update_coord() argument
512 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_INSIZE_REG, in sun4i_frontend_update_coord()
514 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_INSIZE_REG, in sun4i_frontend_update_coord()
517 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_OUTSIZE_REG, in sun4i_frontend_update_coord()
519 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_OUTSIZE_REG, in sun4i_frontend_update_coord()
522 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_HORZFACT_REG, in sun4i_frontend_update_coord()
524 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_HORZFACT_REG, in sun4i_frontend_update_coord()
527 regmap_write(frontend->regs, SUN4I_FRONTEND_CH0_VERTFACT_REG, in sun4i_frontend_update_coord()
529 regmap_write(frontend->regs, SUN4I_FRONTEND_CH1_VERTFACT_REG, in sun4i_frontend_update_coord()
532 regmap_write_bits(frontend->regs, SUN4I_FRONTEND_FRM_CTRL_REG, in sun4i_frontend_update_coord()
538 int sun4i_frontend_enable(struct sun4i_frontend *frontend) in sun4i_frontend_enable() argument
540 regmap_write_bits(frontend->regs, SUN4I_FRONTEND_FRM_CTRL_REG, in sun4i_frontend_enable()
559 struct sun4i_frontend *frontend; in sun4i_frontend_bind() local
565 frontend = devm_kzalloc(dev, sizeof(*frontend), GFP_KERNEL); in sun4i_frontend_bind()
566 if (!frontend) in sun4i_frontend_bind()
569 dev_set_drvdata(dev, frontend); in sun4i_frontend_bind()
570 frontend->dev = dev; in sun4i_frontend_bind()
571 frontend->node = dev->of_node; in sun4i_frontend_bind()
573 frontend->data = of_device_get_match_data(dev); in sun4i_frontend_bind()
574 if (!frontend->data) in sun4i_frontend_bind()
582 frontend->regs = devm_regmap_init_mmio(dev, regs, in sun4i_frontend_bind()
584 if (IS_ERR(frontend->regs)) { in sun4i_frontend_bind()
586 return PTR_ERR(frontend->regs); in sun4i_frontend_bind()
589 frontend->reset = devm_reset_control_get(dev, NULL); in sun4i_frontend_bind()
590 if (IS_ERR(frontend->reset)) { in sun4i_frontend_bind()
592 return PTR_ERR(frontend->reset); in sun4i_frontend_bind()
595 frontend->bus_clk = devm_clk_get(dev, "ahb"); in sun4i_frontend_bind()
596 if (IS_ERR(frontend->bus_clk)) { in sun4i_frontend_bind()
598 return PTR_ERR(frontend->bus_clk); in sun4i_frontend_bind()
601 frontend->mod_clk = devm_clk_get(dev, "mod"); in sun4i_frontend_bind()
602 if (IS_ERR(frontend->mod_clk)) { in sun4i_frontend_bind()
604 return PTR_ERR(frontend->mod_clk); in sun4i_frontend_bind()
607 frontend->ram_clk = devm_clk_get(dev, "ram"); in sun4i_frontend_bind()
608 if (IS_ERR(frontend->ram_clk)) { in sun4i_frontend_bind()
610 return PTR_ERR(frontend->ram_clk); in sun4i_frontend_bind()
613 list_add_tail(&frontend->list, &drv->frontend_list); in sun4i_frontend_bind()
622 struct sun4i_frontend *frontend = dev_get_drvdata(dev); in sun4i_frontend_unbind() local
624 list_del(&frontend->list); in sun4i_frontend_unbind()
647 struct sun4i_frontend *frontend = dev_get_drvdata(dev); in sun4i_frontend_runtime_resume() local
650 clk_set_rate(frontend->mod_clk, 300000000); in sun4i_frontend_runtime_resume()
652 clk_prepare_enable(frontend->bus_clk); in sun4i_frontend_runtime_resume()
653 clk_prepare_enable(frontend->mod_clk); in sun4i_frontend_runtime_resume()
654 clk_prepare_enable(frontend->ram_clk); in sun4i_frontend_runtime_resume()
656 ret = reset_control_reset(frontend->reset); in sun4i_frontend_runtime_resume()
662 regmap_update_bits(frontend->regs, SUN4I_FRONTEND_EN_REG, in sun4i_frontend_runtime_resume()
666 sun4i_frontend_scaler_init(frontend); in sun4i_frontend_runtime_resume()
673 struct sun4i_frontend *frontend = dev_get_drvdata(dev); in sun4i_frontend_runtime_suspend() local
675 clk_disable_unprepare(frontend->ram_clk); in sun4i_frontend_runtime_suspend()
676 clk_disable_unprepare(frontend->mod_clk); in sun4i_frontend_runtime_suspend()
677 clk_disable_unprepare(frontend->bus_clk); in sun4i_frontend_runtime_suspend()
679 reset_control_assert(frontend->reset); in sun4i_frontend_runtime_suspend()