forked from Minki/linux
e5fab2ec9c
This patch adds clocking support for the YUV420 output from the Amlogic Meson SoCs Video Processing Unit to the HDMI Controller. The YUV420 is obtained by generating a YUV444 pixel stream like the classic HDMI display modes, but then the Video Encoder output can be configured to down-sample the YUV444 pixel stream to a YUV420 stream. This mode needs a different clock generation scheme since the TMDS PHY clock must match the 10x ratio with the YUV420 pixel clock, but the video encoder must run at 2x the pixel clock. This patch adds the TMDS PHY clock value in all the video clock setup in order to better support these specific uses cases and switch to the Common Clock framework for clocks handling in the future. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> Reviewed-by: Jernej Škrabec <jernej.skrabec@siol.net> Link: https://patchwork.freedesktop.org/patch/msgid/20200304104052.17196-11-narmstrong@baylibre.com
36 lines
853 B
C
36 lines
853 B
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Copyright (C) 2016 BayLibre, SAS
|
|
* Author: Neil Armstrong <narmstrong@baylibre.com>
|
|
*/
|
|
|
|
/* Video Clock */
|
|
|
|
#ifndef __MESON_VCLK_H
|
|
#define __MESON_VCLK_H
|
|
|
|
#include <drm/drm_modes.h>
|
|
|
|
struct meson_drm;
|
|
|
|
enum {
|
|
MESON_VCLK_TARGET_CVBS = 0,
|
|
MESON_VCLK_TARGET_HDMI = 1,
|
|
MESON_VCLK_TARGET_DMT = 2,
|
|
};
|
|
|
|
/* 27MHz is the CVBS Pixel Clock */
|
|
#define MESON_VCLK_CVBS 27000
|
|
|
|
enum drm_mode_status
|
|
meson_vclk_dmt_supported_freq(struct meson_drm *priv, unsigned int freq);
|
|
enum drm_mode_status
|
|
meson_vclk_vic_supported_freq(unsigned int phy_freq, unsigned int vclk_freq);
|
|
|
|
void meson_vclk_setup(struct meson_drm *priv, unsigned int target,
|
|
unsigned int phy_freq, unsigned int vclk_freq,
|
|
unsigned int venc_freq, unsigned int dac_freq,
|
|
bool hdmi_use_enci);
|
|
|
|
#endif /* __MESON_VCLK_H */
|