162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright 2012 Steffen Trumtrar <s.trumtrar@pengutronix.de>
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * generic videomode description
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#ifndef __LINUX_VIDEOMODE_H
962306a36Sopenharmony_ci#define __LINUX_VIDEOMODE_H
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#include <linux/types.h>
1262306a36Sopenharmony_ci#include <video/display_timing.h>
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci/*
1562306a36Sopenharmony_ci * Subsystem independent description of a videomode.
1662306a36Sopenharmony_ci * Can be generated from struct display_timing.
1762306a36Sopenharmony_ci */
1862306a36Sopenharmony_cistruct videomode {
1962306a36Sopenharmony_ci	unsigned long pixelclock;	/* pixelclock in Hz */
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci	u32 hactive;
2262306a36Sopenharmony_ci	u32 hfront_porch;
2362306a36Sopenharmony_ci	u32 hback_porch;
2462306a36Sopenharmony_ci	u32 hsync_len;
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci	u32 vactive;
2762306a36Sopenharmony_ci	u32 vfront_porch;
2862306a36Sopenharmony_ci	u32 vback_porch;
2962306a36Sopenharmony_ci	u32 vsync_len;
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci	enum display_flags flags; /* display flags */
3262306a36Sopenharmony_ci};
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci/**
3562306a36Sopenharmony_ci * videomode_from_timing - convert display timing to videomode
3662306a36Sopenharmony_ci * @dt: display_timing structure
3762306a36Sopenharmony_ci * @vm: return value
3862306a36Sopenharmony_ci *
3962306a36Sopenharmony_ci * DESCRIPTION:
4062306a36Sopenharmony_ci * This function converts a struct display_timing to a struct videomode.
4162306a36Sopenharmony_ci */
4262306a36Sopenharmony_civoid videomode_from_timing(const struct display_timing *dt,
4362306a36Sopenharmony_ci			  struct videomode *vm);
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci/**
4662306a36Sopenharmony_ci * videomode_from_timings - convert one display timings entry to videomode
4762306a36Sopenharmony_ci * @disp: structure with all possible timing entries
4862306a36Sopenharmony_ci * @vm: return value
4962306a36Sopenharmony_ci * @index: index into the list of display timings in devicetree
5062306a36Sopenharmony_ci *
5162306a36Sopenharmony_ci * DESCRIPTION:
5262306a36Sopenharmony_ci * This function converts one struct display_timing entry to a struct videomode.
5362306a36Sopenharmony_ci */
5462306a36Sopenharmony_ciint videomode_from_timings(const struct display_timings *disp,
5562306a36Sopenharmony_ci			  struct videomode *vm, unsigned int index);
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci#endif
58