mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-23 05:56:14 -04:00
drm/omap: Pass drm_display_mode to .check_timings() and .set_timings()
The omap_dss_device .check_timings() and .set_timings() operations operate on struct videomode, while the DRM API operates on struct drm_display_mode. This forces conversion from to videomode in the callers. While that's not a problem per se, it creates a difference with the drm_bridge API. Replace the videomode parameter to the .check_timings() and .set_timings() operations with a drm_display_mode. This pushed the conversion to videomode down to the DSS devices in some cases. If needed they will be converted to operate on drm_display_mode natively. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com> Tested-by: Sebastian Reichel <sebastian.reichel@collabora.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
This commit is contained in:
committed by
Tomi Valkeinen
parent
d68164fe29
commit
41322aa691
@@ -459,7 +459,7 @@ static void dpi_display_disable(struct omap_dss_device *dssdev)
|
||||
}
|
||||
|
||||
static void dpi_set_timings(struct omap_dss_device *dssdev,
|
||||
const struct videomode *vm)
|
||||
const struct drm_display_mode *mode)
|
||||
{
|
||||
struct dpi_data *dpi = dpi_get_data_from_dssdev(dssdev);
|
||||
|
||||
@@ -467,13 +467,13 @@ static void dpi_set_timings(struct omap_dss_device *dssdev,
|
||||
|
||||
mutex_lock(&dpi->lock);
|
||||
|
||||
dpi->vm = *vm;
|
||||
drm_display_mode_to_videomode(mode, &dpi->vm);
|
||||
|
||||
mutex_unlock(&dpi->lock);
|
||||
}
|
||||
|
||||
static int dpi_check_timings(struct omap_dss_device *dssdev,
|
||||
struct videomode *vm)
|
||||
struct drm_display_mode *mode)
|
||||
{
|
||||
struct dpi_data *dpi = dpi_get_data_from_dssdev(dssdev);
|
||||
int lck_div, pck_div;
|
||||
@@ -482,20 +482,20 @@ static int dpi_check_timings(struct omap_dss_device *dssdev,
|
||||
struct dpi_clk_calc_ctx ctx;
|
||||
bool ok;
|
||||
|
||||
if (vm->hactive % 8 != 0)
|
||||
if (mode->hdisplay % 8 != 0)
|
||||
return -EINVAL;
|
||||
|
||||
if (vm->pixelclock == 0)
|
||||
if (mode->clock == 0)
|
||||
return -EINVAL;
|
||||
|
||||
if (dpi->pll) {
|
||||
ok = dpi_pll_clk_calc(dpi, vm->pixelclock, &ctx);
|
||||
ok = dpi_pll_clk_calc(dpi, mode->clock * 1000, &ctx);
|
||||
if (!ok)
|
||||
return -EINVAL;
|
||||
|
||||
fck = ctx.pll_cinfo.clkout[ctx.clkout_idx];
|
||||
} else {
|
||||
ok = dpi_dss_clk_calc(dpi, vm->pixelclock, &ctx);
|
||||
ok = dpi_dss_clk_calc(dpi, mode->clock * 1000, &ctx);
|
||||
if (!ok)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -507,7 +507,7 @@ static int dpi_check_timings(struct omap_dss_device *dssdev,
|
||||
|
||||
pck = fck / lck_div / pck_div;
|
||||
|
||||
vm->pixelclock = pck;
|
||||
mode->clock = pck / 1000;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user