162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * generic display timing functions
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (c) 2012 Steffen Trumtrar <s.trumtrar@pengutronix.de>, Pengutronix
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#include <linux/errno.h>
962306a36Sopenharmony_ci#include <linux/export.h>
1062306a36Sopenharmony_ci#include <video/display_timing.h>
1162306a36Sopenharmony_ci#include <video/videomode.h>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_civoid videomode_from_timing(const struct display_timing *dt,
1462306a36Sopenharmony_ci			  struct videomode *vm)
1562306a36Sopenharmony_ci{
1662306a36Sopenharmony_ci	vm->pixelclock = dt->pixelclock.typ;
1762306a36Sopenharmony_ci	vm->hactive = dt->hactive.typ;
1862306a36Sopenharmony_ci	vm->hfront_porch = dt->hfront_porch.typ;
1962306a36Sopenharmony_ci	vm->hback_porch = dt->hback_porch.typ;
2062306a36Sopenharmony_ci	vm->hsync_len = dt->hsync_len.typ;
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci	vm->vactive = dt->vactive.typ;
2362306a36Sopenharmony_ci	vm->vfront_porch = dt->vfront_porch.typ;
2462306a36Sopenharmony_ci	vm->vback_porch = dt->vback_porch.typ;
2562306a36Sopenharmony_ci	vm->vsync_len = dt->vsync_len.typ;
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci	vm->flags = dt->flags;
2862306a36Sopenharmony_ci}
2962306a36Sopenharmony_ciEXPORT_SYMBOL_GPL(videomode_from_timing);
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciint videomode_from_timings(const struct display_timings *disp,
3262306a36Sopenharmony_ci			  struct videomode *vm, unsigned int index)
3362306a36Sopenharmony_ci{
3462306a36Sopenharmony_ci	struct display_timing *dt;
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci	dt = display_timings_get(disp, index);
3762306a36Sopenharmony_ci	if (!dt)
3862306a36Sopenharmony_ci		return -EINVAL;
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci	videomode_from_timing(dt, vm);
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci	return 0;
4362306a36Sopenharmony_ci}
4462306a36Sopenharmony_ciEXPORT_SYMBOL_GPL(videomode_from_timings);
45