m_SCALER_EN | m_SCALER_OUT_ZERO | m_SCALER_OUT_EN,
v_SCALER_EN(0) | v_SCALER_OUT_ZERO(0) | v_SCALER_OUT_EN(0));
spin_unlock(&lcdc_dev->reg_lock);
- clk_disable_unprepare(lcdc_dev->sclk);
+ if (lcdc_dev->sclk_on) {
+ clk_disable_unprepare(lcdc_dev->sclk);
+ lcdc_dev->sclk_on = false;
+ }
dev_dbg(lcdc_dev->dev, "%s: disable\n", __func__);
return 0;
}
return -EINVAL;
}
- clk_prepare_enable(lcdc_dev->sclk);
- lcdc_dev->s_pixclock = calc_sclk_freq(src, dst);
- pll_freq = calc_sclk_pll_freq(lcdc_dev->s_pixclock);
- clk_set_rate(lcdc_dev->pll_sclk, pll_freq);
- clk_set_rate(lcdc_dev->sclk, lcdc_dev->s_pixclock);
- dev_info(lcdc_dev->dev, "%s:sclk=%d\n", __func__, lcdc_dev->s_pixclock);
+ if (!lcdc_dev->sclk_on) {
+ clk_prepare_enable(lcdc_dev->sclk);
+ lcdc_dev->s_pixclock = calc_sclk_freq(src, dst);
+ pll_freq = calc_sclk_pll_freq(lcdc_dev->s_pixclock);
+ clk_set_rate(lcdc_dev->pll_sclk, pll_freq);
+ clk_set_rate(lcdc_dev->sclk, lcdc_dev->s_pixclock);
+ lcdc_dev->sclk_on = true;
+ dev_info(lcdc_dev->dev, "%s:sclk=%d\n", __func__,
+ lcdc_dev->s_pixclock);
+ }
/* config scale timing */
calc_dsp_frm_vst_hst(src, dst);
ysize = screen->mode.yres;
}
- /* this is for device like rk2928/rk312x,
- * which have one lcdc but two display outputs
- * save win parameter set by android
- */
- if (rk_fb->disp_mode != DUAL) {
- if (screen->screen_id == 0) {
- dev_drv->screen0->xsize = xsize;
- dev_drv->screen0->ysize = ysize;
- dev_drv->screen0->xpos = xpos;
- dev_drv->screen0->ypos = ypos;
- } else {
- xsize = dev_drv->screen1->xsize;
- ysize = dev_drv->screen1->ysize;
- xpos = dev_drv->screen1->xpos;
- ypos = dev_drv->screen1->ypos;
- }
- }
-
fb_data_fmt = rk_fb_data_fmt(data_format, var->bits_per_pixel);
pixel_width = rk_fb_pixel_width(fb_data_fmt);
vir_width_bit = pixel_width * xvir;
screen_x = dev_drv->cur_screen->mode.xres;
screen_y = dev_drv->cur_screen->mode.yres;
- if (inf->disp_mode != DUAL &&
- dev_drv->cur_screen->screen_id == 1) {
+ if (inf->disp_mode != DUAL) {
dev_drv->cur_screen->xpos =
(screen_x - screen_x * scale_x / 100) >> 1;
dev_drv->cur_screen->ypos =