struct dpu_soc *dpu = fg->dpu;
const struct dpu_devtype *devtype = dpu->devtype;
- mutex_lock(&fg->mutex);
dpu_fg_write(fg, FGEN, FGENABLE);
- mutex_unlock(&fg->mutex);
if (!(devtype->has_dual_ldb && fg->encoder_type_has_lvds))
dpu_pixel_link_enable(dpu->id, fg->id);
if (!(devtype->has_dual_ldb && fg->encoder_type_has_lvds))
dpu_pixel_link_disable(dpu->id, fg->id);
- mutex_lock(&fg->mutex);
dpu_fg_write(fg, 0, FGENABLE);
- mutex_unlock(&fg->mutex);
}
EXPORT_SYMBOL_GPL(framegen_disable);
void framegen_shdtokgen(struct dpu_framegen *fg)
{
- mutex_lock(&fg->mutex);
dpu_fg_write(fg, SHDTOKGEN, FGSLR);
- mutex_unlock(&fg->mutex);
}
EXPORT_SYMBOL_GPL(framegen_shdtokgen);
struct dpu_soc *dpu = fg->dpu;
u32 val;
- mutex_lock(&fg->mutex);
val = dpu_fg_read(fg, FGSTCTRL);
val &= ~FGSYNCMODE_MASK;
val |= mode;
dpu_fg_write(fg, val, FGSTCTRL);
- mutex_unlock(&fg->mutex);
dpu_pixel_link_set_dc_sync_mode(dpu->id, mode != FGSYNCMODE__OFF);
}
vsync = m->crtc_vsync_end - m->crtc_vsync_start;
vsbp = m->crtc_vtotal - m->crtc_vsync_start;
- mutex_lock(&fg->mutex);
/* video mode */
dpu_fg_write(fg, HACT(hact) | HTOTAL(htotal), HTCFG1);
dpu_fg_write(fg, HSYNC(hsync) | HSBP(hsbp) | HSEN, HTCFG2);
/* constant color */
dpu_fg_write(fg, 0, FGCCR);
- mutex_unlock(&fg->mutex);
disp_clock_rate = m->clock * 1000;
{
u32 val;
- mutex_lock(&fg->mutex);
val = dpu_fg_read(fg, PKICKCONFIG);
if (enable)
val |= EN;
else
val &= ~EN;
dpu_fg_write(fg, val, PKICKCONFIG);
- mutex_unlock(&fg->mutex);
}
EXPORT_SYMBOL_GPL(framegen_pkickconfig);
if (!dpu->devtype->has_syncmode_fixup)
return;
- mutex_lock(&fg->mutex);
val = dpu_fg_read(fg, SECSTATCONFIG);
if (enable)
val |= BIT(7);
else
val &= ~BIT(7);
dpu_fg_write(fg, val, SECSTATCONFIG);
- mutex_unlock(&fg->mutex);
}
EXPORT_SYMBOL_GPL(framegen_syncmode_fixup);
void framegen_sacfg(struct dpu_framegen *fg, unsigned int x, unsigned int y)
{
- mutex_lock(&fg->mutex);
dpu_fg_write(fg, STARTX(x) | STARTY(y), SACFG);
- mutex_unlock(&fg->mutex);
}
EXPORT_SYMBOL_GPL(framegen_sacfg);
{
u32 val;
- mutex_lock(&fg->mutex);
val = dpu_fg_read(fg, FGINCTRL);
val &= ~FGDM_MASK;
val |= mode;
dpu_fg_write(fg, val, FGINCTRL);
- mutex_unlock(&fg->mutex);
}
EXPORT_SYMBOL_GPL(framegen_displaymode);
{
u32 val;
- mutex_lock(&fg->mutex);
val = dpu_fg_read(fg, FGINCTRLPANIC);
val &= ~FGDM_MASK;
val |= mode;
dpu_fg_write(fg, val, FGINCTRLPANIC);
- mutex_unlock(&fg->mutex);
}
EXPORT_SYMBOL_GPL(framegen_panic_displaymode);
}
timeout = jiffies + pending_framedur_jiffies;
- mutex_lock(&fg->mutex);
do {
val = dpu_fg_read(fg, FGENSTS);
} while ((val & ENSTS) && time_before(jiffies, timeout));
- mutex_unlock(&fg->mutex);
dev_dbg(fg->dpu->dev, "FrameGen%d pending frame duration is %ums\n",
fg->id, jiffies_to_msecs(pending_framedur_jiffies));
{
u32 stamp;
- mutex_lock(&fg->mutex);
stamp = dpu_fg_read(fg, FGTIMESTAMP);
*frame_index = framegen_frame_index(stamp);
*line_index = framegen_line_index(stamp);
- mutex_unlock(&fg->mutex);
}
EXPORT_SYMBOL_GPL(framegen_read_timestamp);
u32 val;
bool empty;
- mutex_lock(&fg->mutex);
val = dpu_fg_read(fg, FGCHSTAT);
- mutex_unlock(&fg->mutex);
empty = !!(val & SFIFOEMPTY);
void framegen_secondary_clear_channel_status(struct dpu_framegen *fg)
{
- mutex_lock(&fg->mutex);
dpu_fg_write(fg, CLRSECSTAT, FGCHSTATCLR);
- mutex_unlock(&fg->mutex);
}
EXPORT_SYMBOL_GPL(framegen_secondary_clear_channel_status);
bool framegen_secondary_is_syncup(struct dpu_framegen *fg)
{
- u32 val;
-
- mutex_lock(&fg->mutex);
- val = dpu_fg_read(fg, FGCHSTAT);
- mutex_unlock(&fg->mutex);
+ u32 val = dpu_fg_read(fg, FGCHSTAT);
return val & SECSYNCSTAT;
}
int tcon_set_fmt(struct dpu_tcon *tcon, u32 bus_format)
{
- mutex_lock(&tcon->mutex);
switch (bus_format) {
case MEDIA_BUS_FMT_RGB888_1X24:
dpu_tcon_write(tcon, 0x19181716, MAPBIT3_0);
dpu_tcon_write(tcon, 0x00000908, MAPBIT31_28);
break;
default:
- mutex_unlock(&tcon->mutex);
return -EINVAL;
}
- mutex_unlock(&tcon->mutex);
return 0;
}
{
u32 val;
- mutex_lock(&tcon->mutex);
val = dpu_tcon_read(tcon, TCON_CTRL);
val &= ~BYPASS;
dpu_tcon_write(tcon, val, TCON_CTRL);
- mutex_unlock(&tcon->mutex);
}
EXPORT_SYMBOL_GPL(tcon_set_operation_mode);
hsync_end /= 2;
}
- mutex_lock(&tcon->mutex);
/*
* TKT320590:
* Turn TCON into operation mode later after the first dumb frame is
dpu_tcon_write(tcon, 0x6, SMXSIGS(3));
dpu_tcon_write(tcon, 0x2, SMXFCTTABLE(3));
- mutex_unlock(&tcon->mutex);
}
EXPORT_SYMBOL_GPL(tcon_cfg_videomode);