[PATCH] drm/exynos: set the active aspect ratio as per mode
Tomasz Figa
t.figa at samsung.com
Wed Mar 12 08:19:10 PDT 2014
Hi Shirish,
On 10.03.2014 04:44, Shirish S wrote:
> now that the drm_display_mode also provides aspect
> ratio for all resolutions, this patch adds its usage
> to set the active aspect ratio of AVI info frame
> packets as per CEA-861-D standard's Table 9.
>
> This is also needed to abide by the 7-27
> compliance test of HDMI.
>
> Signed-off-by: Shirish S <s.shirish at samsung.com>
> ---
> drivers/gpu/drm/exynos/exynos_hdmi.c | 33 +++++++++++++++++++++++++++------
> 1 file changed, 27 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
> index c021ddc..8aca52a 100644
> --- a/drivers/gpu/drm/exynos/exynos_hdmi.c
> +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
> @@ -53,8 +53,6 @@
> /* AVI header and aspect ratio */
> #define HDMI_AVI_VERSION 0x02
> #define HDMI_AVI_LENGTH 0x0D
> -#define AVI_PIC_ASPECT_RATIO_16_9 (2 << 4)
> -#define AVI_SAME_AS_PIC_ASPECT_RATIO 8
>
> /* AUI header info */
> #define HDMI_AUI_VERSION 0x01
> @@ -65,6 +63,12 @@ enum hdmi_type {
> HDMI_TYPE14,
> };
>
> +enum active_aspect_ratio {
> + AVI_SAME_AS_PIC_ASPECT_RATIO = 8,
> + AVI_4_3_Center_RATIO,
> + AVI_16_9_Center_RATIO,
> +};
> +
CodingStyle: Please define these using preprocessor macros, since they
are bitfield values. Also coding style implies using uppercase for
constants.
> struct hdmi_resources {
> struct clk *hdmi;
> struct clk *sclk_hdmi;
> @@ -162,6 +166,7 @@ struct hdmi_v14_conf {
> struct hdmi_conf_regs {
> int pixel_clock;
> int cea_video_id;
> + enum hdmi_picture_aspect aspect_ratio;
> union {
> struct hdmi_v13_conf v13_conf;
> struct hdmi_v14_conf v14_conf;
> @@ -668,7 +673,6 @@ static void hdmi_reg_infoframe(struct hdmi_context *hdata,
> {
> u32 hdr_sum;
> u8 chksum;
> - u32 aspect_ratio;
> u32 mod;
> u32 vic;
>
> @@ -697,10 +701,25 @@ static void hdmi_reg_infoframe(struct hdmi_context *hdata,
> AVI_ACTIVE_FORMAT_VALID |
> AVI_UNDERSCANNED_DISPLAY_VALID);
>
> - aspect_ratio = AVI_PIC_ASPECT_RATIO_16_9;
> -
> - hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(2), aspect_ratio |
> + /*
> + * Set the aspect ratio as per the mode, mentioned in
> + * Table 9 AVI InfoFrame Data Byte 2 of CEA-861-D Standard
> + */
> + switch (hdata->mode_conf.aspect_ratio) {
> + case HDMI_PICTURE_ASPECT_4_3:
> + hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(2), aspect_ratio |
> + AVI_4_3_Center_RATIO);
CodingStyle: Please keep wrapped function calls aligned using tabs at
least to the opening parenthesis.
> + break;
> + case HDMI_PICTURE_ASPECT_16_9:
> + hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(2), aspect_ratio |
> + AVI_16_9_Center_RATIO);
Ditto.
> + break;
> + case HDMI_PICTURE_ASPECT_NONE:
> + default:
> + hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(2), aspect_ratio |
> AVI_SAME_AS_PIC_ASPECT_RATIO);
Ditto.
Best regards,
Tomasz
More information about the dri-devel
mailing list