From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: Evan Lloyd <evan.lloyd@arm.com>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
Arvind Chauhan <Arvind.Chauhan@arm.com>,
Daniil Egranov <Daniil.Egranov@arm.com>,
Thomas Panakamattam Abraham <thomas.abraham@arm.com>,
<"ard.biesheuvel@linaro.org"@arm.com>,
<"leif.lindholm@linaro.org"@arm.com>,
<"Matteo.Carlini@arm.com"@arm.com>, <"nd@arm.com"@arm.com>
Subject: Re: [PATCH edk2-platforms v2 12/18] ARM/VExpressPkg: Redefine LcdPlatformGetTimings function
Date: Sat, 23 Dec 2017 14:18:58 +0000 [thread overview]
Message-ID: <CAKv+Gu_XRB2VCsWj8HA6u67CW5m6G_HvXPFe3cg4zkOYLZFFkA@mail.gmail.com> (raw)
In-Reply-To: <20171222190821.12440-13-evan.lloyd@arm.com>
On 22 December 2017 at 19:08, <evan.lloyd@arm.com> wrote:
> From: Girish Pathak <girish.pathak at arm.com>
>
> The LcdPlatformGetTimings interface function takes similar sets of
> multiple parameters for horizontal and vertical timings which can be
> aggregated in a common data type. This change defines a structure
> SCAN_TIMINGS for this which can be used to describe both horizontal and
> vertical scan timings, and accordingly redefines the
> LcdPlatformGetTiming interface, greatly reducing the amount of data
> passed about.
>
> Similarly the mode definition tables are also changed to use this data
> type and thus enable pass through access.
>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Girish Pathak <girish.pathak@arm.com>
> Signed-off-by: Evan Lloyd <evan.lloyd@arm.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> ---
> Platform/ARM/VExpressPkg/Library/HdLcdArmVExpressLib/HdLcdArmVExpress.c | 104 +++++-------
> Platform/ARM/VExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpress.c | 168 ++++++++------------
> 2 files changed, 108 insertions(+), 164 deletions(-)
>
> diff --git a/Platform/ARM/VExpressPkg/Library/HdLcdArmVExpressLib/HdLcdArmVExpress.c b/Platform/ARM/VExpressPkg/Library/HdLcdArmVExpressLib/HdLcdArmVExpress.c
> index 8496a0215bc78585b546f63312c9d7f1ad07adb6..b448d70f86d6acbc6bdae9749c7b6d0205935ba7 100644
> --- a/Platform/ARM/VExpressPkg/Library/HdLcdArmVExpressLib/HdLcdArmVExpress.c
> +++ b/Platform/ARM/VExpressPkg/Library/HdLcdArmVExpressLib/HdLcdArmVExpress.c
> @@ -30,57 +30,51 @@
>
> typedef struct {
> UINT32 Mode;
> - UINT32 HorizontalResolution;
> - UINT32 VerticalResolution;
> UINT32 OscFreq;
>
> // These are used by HDLCD
> - UINT32 HSync;
> - UINT32 HBackPorch;
> - UINT32 HFrontPorch;
> - UINT32 VSync;
> - UINT32 VBackPorch;
> - UINT32 VFrontPorch;
> -} LCD_RESOLUTION;
> + SCAN_TIMINGS Horizontal;
> + SCAN_TIMINGS Vertical;
> +} DISPLAY_MODE;
>
> /** The display modes supported by the platform.
> **/
> -STATIC CONST LCD_RESOLUTION mResolutions[] = {
> +STATIC CONST DISPLAY_MODE mDisplayModes[] = {
> { // Mode 0 : VGA : 640 x 480 x 24 bpp
> - VGA, VGA_H_RES_PIXELS, VGA_V_RES_PIXELS,
> + VGA,
> VGA_OSC_FREQUENCY,
> - VGA_H_SYNC, VGA_H_BACK_PORCH, VGA_H_FRONT_PORCH,
> - VGA_V_SYNC, VGA_V_BACK_PORCH, VGA_V_FRONT_PORCH
> + {VGA_H_RES_PIXELS, VGA_H_SYNC, VGA_H_BACK_PORCH, VGA_H_FRONT_PORCH},
> + {VGA_V_RES_PIXELS, VGA_V_SYNC, VGA_V_BACK_PORCH, VGA_V_FRONT_PORCH}
> },
> { // Mode 1 : SVGA : 800 x 600 x 24 bpp
> - SVGA, SVGA_H_RES_PIXELS, SVGA_V_RES_PIXELS,
> + SVGA,
> SVGA_OSC_FREQUENCY,
> - SVGA_H_SYNC, SVGA_H_BACK_PORCH, SVGA_H_FRONT_PORCH,
> - SVGA_V_SYNC, SVGA_V_BACK_PORCH, SVGA_V_FRONT_PORCH
> + {SVGA_H_RES_PIXELS, SVGA_H_SYNC, SVGA_H_BACK_PORCH, SVGA_H_FRONT_PORCH},
> + {SVGA_V_RES_PIXELS, SVGA_V_SYNC, SVGA_V_BACK_PORCH, SVGA_V_FRONT_PORCH}
> },
> { // Mode 2 : XGA : 1024 x 768 x 24 bpp
> - XGA, XGA_H_RES_PIXELS, XGA_V_RES_PIXELS,
> + XGA,
> XGA_OSC_FREQUENCY,
> - XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH,
> - XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH
> + {XGA_H_RES_PIXELS, XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH},
> + {XGA_V_RES_PIXELS, XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH}
> },
> { // Mode 3 : SXGA : 1280 x 1024 x 24 bpp
> - SXGA, SXGA_H_RES_PIXELS, SXGA_V_RES_PIXELS,
> + SXGA,
> (SXGA_OSC_FREQUENCY/2),
> - SXGA_H_SYNC, SXGA_H_BACK_PORCH, SXGA_H_FRONT_PORCH,
> - SXGA_V_SYNC, SXGA_V_BACK_PORCH, SXGA_V_FRONT_PORCH
> + {SXGA_H_RES_PIXELS, SXGA_H_SYNC, SXGA_H_BACK_PORCH, SXGA_H_FRONT_PORCH},
> + {SXGA_V_RES_PIXELS, SXGA_V_SYNC, SXGA_V_BACK_PORCH, SXGA_V_FRONT_PORCH}
> },
> { // Mode 4 : UXGA : 1600 x 1200 x 24 bpp
> - UXGA, UXGA_H_RES_PIXELS, UXGA_V_RES_PIXELS,
> + UXGA,
> (UXGA_OSC_FREQUENCY/2),
> - UXGA_H_SYNC, UXGA_H_BACK_PORCH, UXGA_H_FRONT_PORCH,
> - UXGA_V_SYNC, UXGA_V_BACK_PORCH, UXGA_V_FRONT_PORCH
> + {UXGA_H_RES_PIXELS, UXGA_H_SYNC, UXGA_H_BACK_PORCH, UXGA_H_FRONT_PORCH},
> + {UXGA_V_RES_PIXELS, UXGA_V_SYNC, UXGA_V_BACK_PORCH, UXGA_V_FRONT_PORCH}
> },
> { // Mode 5 : HD : 1920 x 1080 x 24 bpp
> - HD, HD_H_RES_PIXELS, HD_V_RES_PIXELS,
> + HD,
> (HD_OSC_FREQUENCY/2),
> - HD_H_SYNC, HD_H_BACK_PORCH, HD_H_FRONT_PORCH,
> - HD_V_SYNC, HD_V_BACK_PORCH, HD_V_FRONT_PORCH
> + {HD_H_RES_PIXELS, HD_H_SYNC, HD_H_BACK_PORCH, HD_H_FRONT_PORCH},
> + {HD_V_RES_PIXELS, HD_V_SYNC, HD_V_BACK_PORCH, HD_V_FRONT_PORCH}
> }
> };
>
> @@ -205,7 +199,7 @@ LcdPlatformGetMaxMode (VOID)
> {
> // The following line will report correctly the total number of graphics modes
> // that could be supported by the graphics driver
> - return (sizeof (mResolutions) / sizeof (LCD_RESOLUTION));
> + return (sizeof (mDisplayModes) / sizeof (DISPLAY_MODE));
> }
>
> /** Set the requested display mode.
> @@ -242,7 +236,7 @@ LcdPlatformSetMode (
> // Set the DVI into the new mode
> Status = ArmPlatformSysConfigSet (
> SYS_CFG_DVIMODE,
> - mResolutions[ModeNumber].Mode
> + mDisplayModes[ModeNumber].Mode
> );
> if (EFI_ERROR (Status)) {
> ASSERT_EFI_ERROR (Status);
> @@ -287,9 +281,9 @@ LcdPlatformQueryMode (
> }
>
> Info->Version = 0;
> - Info->HorizontalResolution = mResolutions[ModeNumber].HorizontalResolution;
> - Info->VerticalResolution = mResolutions[ModeNumber].VerticalResolution;
> - Info->PixelsPerScanLine = mResolutions[ModeNumber].HorizontalResolution;
> + Info->HorizontalResolution = mDisplayModes[ModeNumber].Horizontal.Resolution;
> + Info->VerticalResolution = mDisplayModes[ModeNumber].Vertical.Resolution;
> + Info->PixelsPerScanLine = mDisplayModes[ModeNumber].Horizontal.Resolution;
>
> /* Bits per Pixel is always LCD_BITS_PER_PIXEL_24 */
> Info->PixelFormat = PixelRedGreenBlueReserved8BitPerColor;
> @@ -305,14 +299,10 @@ LcdPlatformQueryMode (
>
> @param[in] ModeNumber Mode Number.
>
> - @param[out] HRes Pointer to horizontal resolution.
> - @param[out] HSync Pointer to horizontal sync width.
> - @param[out] HBackPorch Pointer to horizontal back porch.
> - @param[out] HFrontPorch Pointer to horizontal front porch.
> - @param[out] VRes Pointer to vertical resolution.
> - @param[out] VSync Pointer to vertical sync width.
> - @param[out] VBackPorch Pointer to vertical back porch.
> - @param[out] VFrontPorch Pointer to vertical front porch.
> + @param[out] Horizontal Pointer to horizontal timing parameters.
> + (Resolution, Sync, Back porch, Front porch)
> + @param[out] Vertical Pointer to vertical timing parameters.
> + (Resolution, Sync, Back porch, Front porch)
>
> @retval EFI_SUCCESS Display timing information for the requested
> mode returned successfully.
> @@ -320,40 +310,22 @@ LcdPlatformQueryMode (
> **/
> EFI_STATUS
> LcdPlatformGetTimings (
> - IN CONST UINT32 ModeNumber,
> - OUT UINT32 * CONST HRes,
> - OUT UINT32 * CONST HSync,
> - OUT UINT32 * CONST HBackPorch,
> - OUT UINT32 * CONST HFrontPorch,
> - OUT UINT32 * CONST VRes,
> - OUT UINT32 * CONST VSync,
> - OUT UINT32 * CONST VBackPorch,
> - OUT UINT32 * CONST VFrontPorch
> + IN CONST UINT32 ModeNumber,
> + OUT CONST SCAN_TIMINGS ** Horizontal,
> + OUT CONST SCAN_TIMINGS ** Vertical
> )
> {
> // One of the pointers is NULL
> - ASSERT (HRes != NULL);
> - ASSERT (HSync != NULL);
> - ASSERT (HBackPorch != NULL);
> - ASSERT (HFrontPorch != NULL);
> - ASSERT (VRes != NULL);
> - ASSERT (VSync != NULL);
> - ASSERT (VBackPorch != NULL);
> - ASSERT (VFrontPorch != NULL);
> + ASSERT (Horizontal != NULL);
> + ASSERT (Vertical != NULL);
>
> if (ModeNumber >= LcdPlatformGetMaxMode ()) {
> ASSERT (FALSE);
> return EFI_INVALID_PARAMETER;
> }
>
> - *HRes = mResolutions[ModeNumber].HorizontalResolution;
> - *HSync = mResolutions[ModeNumber].HSync;
> - *HBackPorch = mResolutions[ModeNumber].HBackPorch;
> - *HFrontPorch = mResolutions[ModeNumber].HFrontPorch;
> - *VRes = mResolutions[ModeNumber].VerticalResolution;
> - *VSync = mResolutions[ModeNumber].VSync;
> - *VBackPorch = mResolutions[ModeNumber].VBackPorch;
> - *VFrontPorch = mResolutions[ModeNumber].VFrontPorch;
> + *Horizontal = &mDisplayModes[ModeNumber].Horizontal;
> + *Vertical = &mDisplayModes[ModeNumber].Vertical;
>
> return EFI_SUCCESS;
> }
> diff --git a/Platform/ARM/VExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpress.c b/Platform/ARM/VExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpress.c
> index cf50b20fd9b1b44a81963655c2f88305ce6bdc67..439cbdb1a73145fc4dc9c3c9587ce3fd9b9fff56 100644
> --- a/Platform/ARM/VExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpress.c
> +++ b/Platform/ARM/VExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpress.c
> @@ -28,117 +28,111 @@
>
> typedef struct {
> UINT32 Mode;
> - UINT32 HorizontalResolution;
> - UINT32 VerticalResolution;
> LCD_BPP Bpp;
> UINT32 OscFreq;
>
> - UINT32 HSync;
> - UINT32 HBackPorch;
> - UINT32 HFrontPorch;
> - UINT32 VSync;
> - UINT32 VBackPorch;
> - UINT32 VFrontPorch;
> -} LCD_RESOLUTION;
> + SCAN_TIMINGS Horizontal;
> + SCAN_TIMINGS Vertical;
> +} DISPLAY_MODE;
>
> /** The display modes supported by the platform.
> **/
> -LCD_RESOLUTION mResolutions[] = {
> +STATIC CONST DISPLAY_MODE mDisplayModes[] = {
> { // Mode 0 : VGA : 640 x 480 x 24 bpp
> - VGA, VGA_H_RES_PIXELS, VGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24,
> + VGA, LCD_BITS_PER_PIXEL_24,
> VGA_OSC_FREQUENCY,
> - VGA_H_SYNC, VGA_H_BACK_PORCH, VGA_H_FRONT_PORCH,
> - VGA_V_SYNC, VGA_V_BACK_PORCH, VGA_V_FRONT_PORCH
> + {VGA_H_RES_PIXELS, VGA_H_SYNC, VGA_H_BACK_PORCH, VGA_H_FRONT_PORCH},
> + {VGA_V_RES_PIXELS, VGA_V_SYNC, VGA_V_BACK_PORCH, VGA_V_FRONT_PORCH}
> },
> { // Mode 1 : SVGA : 800 x 600 x 24 bpp
> - SVGA, SVGA_H_RES_PIXELS, SVGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24,
> + SVGA, LCD_BITS_PER_PIXEL_24,
> SVGA_OSC_FREQUENCY,
> - SVGA_H_SYNC, SVGA_H_BACK_PORCH, SVGA_H_FRONT_PORCH,
> - SVGA_V_SYNC, SVGA_V_BACK_PORCH, SVGA_V_FRONT_PORCH
> + {SVGA_H_RES_PIXELS, SVGA_H_SYNC, SVGA_H_BACK_PORCH, SVGA_H_FRONT_PORCH},
> + {SVGA_V_RES_PIXELS, SVGA_V_SYNC, SVGA_V_BACK_PORCH, SVGA_V_FRONT_PORCH}
> },
> { // Mode 2 : XGA : 1024 x 768 x 24 bpp
> - XGA, XGA_H_RES_PIXELS, XGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24,
> + XGA, LCD_BITS_PER_PIXEL_24,
> XGA_OSC_FREQUENCY,
> - XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH,
> - XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH
> + {XGA_H_RES_PIXELS, XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH},
> + {XGA_V_RES_PIXELS, XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH}
> },
> { // Mode 3 : SXGA : 1280 x 1024 x 24 bpp
> - SXGA, SXGA_H_RES_PIXELS, SXGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24,
> + SXGA, LCD_BITS_PER_PIXEL_24,
> (SXGA_OSC_FREQUENCY/2),
> - SXGA_H_SYNC, SXGA_H_BACK_PORCH, SXGA_H_FRONT_PORCH,
> - SXGA_V_SYNC, SXGA_V_BACK_PORCH, SXGA_V_FRONT_PORCH
> + {SXGA_H_RES_PIXELS, SXGA_H_SYNC, SXGA_H_BACK_PORCH, SXGA_H_FRONT_PORCH},
> + {SXGA_V_RES_PIXELS, SXGA_V_SYNC, SXGA_V_BACK_PORCH, SXGA_V_FRONT_PORCH}
> },
> { // Mode 4 : UXGA : 1600 x 1200 x 24 bpp
> - UXGA, UXGA_H_RES_PIXELS, UXGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24,
> + UXGA, LCD_BITS_PER_PIXEL_24,
> (UXGA_OSC_FREQUENCY/2),
> - UXGA_H_SYNC, UXGA_H_BACK_PORCH, UXGA_H_FRONT_PORCH,
> - UXGA_V_SYNC, UXGA_V_BACK_PORCH, UXGA_V_FRONT_PORCH
> + {UXGA_H_RES_PIXELS, UXGA_H_SYNC, UXGA_H_BACK_PORCH, UXGA_H_FRONT_PORCH},
> + {UXGA_V_RES_PIXELS, UXGA_V_SYNC, UXGA_V_BACK_PORCH, UXGA_V_FRONT_PORCH}
> },
> { // Mode 5 : HD : 1920 x 1080 x 24 bpp
> - HD, HD_H_RES_PIXELS, HD_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24,
> + HD, LCD_BITS_PER_PIXEL_24,
> (HD_OSC_FREQUENCY/2),
> - HD_H_SYNC, HD_H_BACK_PORCH, HD_H_FRONT_PORCH,
> - HD_V_SYNC, HD_V_BACK_PORCH, HD_V_FRONT_PORCH
> + {HD_H_RES_PIXELS, HD_H_SYNC, HD_H_BACK_PORCH, HD_H_FRONT_PORCH},
> + {HD_V_RES_PIXELS, HD_V_SYNC, HD_V_BACK_PORCH, HD_V_FRONT_PORCH}
> },
> { // Mode 6 : VGA : 640 x 480 x 16 bpp (565 Mode)
> - VGA, VGA_H_RES_PIXELS, VGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_16_565,
> + VGA, LCD_BITS_PER_PIXEL_16_565,
> VGA_OSC_FREQUENCY,
> - VGA_H_SYNC, VGA_H_BACK_PORCH, VGA_H_FRONT_PORCH,
> - VGA_V_SYNC, VGA_V_BACK_PORCH, VGA_V_FRONT_PORCH
> + {VGA_H_RES_PIXELS, VGA_H_SYNC, VGA_H_BACK_PORCH, VGA_H_FRONT_PORCH},
> + {VGA_V_RES_PIXELS, VGA_V_SYNC, VGA_V_BACK_PORCH, VGA_V_FRONT_PORCH}
> },
> { // Mode 7 : SVGA : 800 x 600 x 16 bpp (565 Mode)
> - SVGA, SVGA_H_RES_PIXELS, SVGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_16_565,
> + SVGA, LCD_BITS_PER_PIXEL_16_565,
> SVGA_OSC_FREQUENCY,
> - SVGA_H_SYNC, SVGA_H_BACK_PORCH, SVGA_H_FRONT_PORCH,
> - SVGA_V_SYNC, SVGA_V_BACK_PORCH, SVGA_V_FRONT_PORCH
> + {SVGA_H_RES_PIXELS, SVGA_H_SYNC, SVGA_H_BACK_PORCH, SVGA_H_FRONT_PORCH},
> + {SVGA_V_RES_PIXELS, SVGA_V_SYNC, SVGA_V_BACK_PORCH, SVGA_V_FRONT_PORCH}
> },
> { // Mode 8 : XGA : 1024 x 768 x 16 bpp (565 Mode)
> - XGA, XGA_H_RES_PIXELS, XGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_16_565,
> + XGA, LCD_BITS_PER_PIXEL_16_565,
> XGA_OSC_FREQUENCY,
> - XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH,
> - XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH
> + {XGA_H_RES_PIXELS, XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH},
> + {XGA_V_RES_PIXELS, XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH}
> },
> { // Mode 9 : VGA : 640 x 480 x 15 bpp
> - VGA, VGA_H_RES_PIXELS, VGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_16_555,
> + VGA, LCD_BITS_PER_PIXEL_16_555,
> VGA_OSC_FREQUENCY,
> - VGA_H_SYNC, VGA_H_BACK_PORCH, VGA_H_FRONT_PORCH,
> - VGA_V_SYNC, VGA_V_BACK_PORCH, VGA_V_FRONT_PORCH
> + {VGA_H_RES_PIXELS, VGA_H_SYNC, VGA_H_BACK_PORCH, VGA_H_FRONT_PORCH},
> + {VGA_V_RES_PIXELS, VGA_V_SYNC, VGA_V_BACK_PORCH, VGA_V_FRONT_PORCH}
> },
> { // Mode 10 : SVGA : 800 x 600 x 15 bpp
> - SVGA, SVGA_H_RES_PIXELS, SVGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_16_555,
> + SVGA, LCD_BITS_PER_PIXEL_16_555,
> SVGA_OSC_FREQUENCY,
> - SVGA_H_SYNC, SVGA_H_BACK_PORCH, SVGA_H_FRONT_PORCH,
> - SVGA_V_SYNC, SVGA_V_BACK_PORCH, SVGA_V_FRONT_PORCH
> + {SVGA_H_RES_PIXELS, SVGA_H_SYNC, SVGA_H_BACK_PORCH, SVGA_H_FRONT_PORCH},
> + {SVGA_V_RES_PIXELS, SVGA_V_SYNC, SVGA_V_BACK_PORCH, SVGA_V_FRONT_PORCH}
> },
> { // Mode 11 : XGA : 1024 x 768 x 15 bpp
> - XGA, XGA_H_RES_PIXELS, XGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_16_555,
> + XGA, LCD_BITS_PER_PIXEL_16_555,
> XGA_OSC_FREQUENCY,
> - XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH,
> - XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH
> + {XGA_H_RES_PIXELS, XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH},
> + {XGA_V_RES_PIXELS, XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH}
> },
> { // Mode 12 : XGA : 1024 x 768 x 15 bpp - All the timing info is derived from Linux Kernel Driver Settings
> - XGA, XGA_H_RES_PIXELS, XGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_16_555,
> + XGA, LCD_BITS_PER_PIXEL_16_555,
> 63500000,
> - XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH,
> - XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH
> + {XGA_H_RES_PIXELS, XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH},
> + {XGA_V_RES_PIXELS, XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH}
> },
> { // Mode 13 : VGA : 640 x 480 x 12 bpp (444 Mode)
> - VGA, VGA_H_RES_PIXELS, VGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_12_444,
> + VGA, LCD_BITS_PER_PIXEL_12_444,
> VGA_OSC_FREQUENCY,
> - VGA_H_SYNC, VGA_H_BACK_PORCH, VGA_H_FRONT_PORCH,
> - VGA_V_SYNC, VGA_V_BACK_PORCH, VGA_V_FRONT_PORCH
> + {VGA_H_RES_PIXELS, VGA_H_SYNC, VGA_H_BACK_PORCH, VGA_H_FRONT_PORCH},
> + {VGA_V_RES_PIXELS, VGA_V_SYNC, VGA_V_BACK_PORCH, VGA_V_FRONT_PORCH}
> },
> { // Mode 14 : SVGA : 800 x 600 x 12 bpp (444 Mode)
> - SVGA, SVGA_H_RES_PIXELS, SVGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_12_444,
> + SVGA, LCD_BITS_PER_PIXEL_12_444,
> SVGA_OSC_FREQUENCY,
> - SVGA_H_SYNC, SVGA_H_BACK_PORCH, SVGA_H_FRONT_PORCH,
> - SVGA_V_SYNC, SVGA_V_BACK_PORCH, SVGA_V_FRONT_PORCH
> + {SVGA_H_RES_PIXELS, SVGA_H_SYNC, SVGA_H_BACK_PORCH, SVGA_H_FRONT_PORCH},
> + {SVGA_V_RES_PIXELS, SVGA_V_SYNC, SVGA_V_BACK_PORCH, SVGA_V_FRONT_PORCH}
> },
> { // Mode 15 : XGA : 1024 x 768 x 12 bpp (444 Mode)
> - XGA, XGA_H_RES_PIXELS, XGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_12_444,
> + XGA, LCD_BITS_PER_PIXEL_12_444,
> XGA_OSC_FREQUENCY,
> - XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH,
> - XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH
> + {XGA_H_RES_PIXELS, XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH},
> + {XGA_V_RES_PIXELS, XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH}
> }
> };
>
> @@ -304,7 +298,7 @@ LcdPlatformSetMode (
> Status = ArmPlatformSysConfigSetDevice (
> Function,
> OscillatorId,
> - mResolutions[ModeNumber].OscFreq
> + mDisplayModes[ModeNumber].OscFreq
> );
> if (EFI_ERROR (Status)) {
> ASSERT_EFI_ERROR (Status);
> @@ -322,7 +316,7 @@ LcdPlatformSetMode (
> // Set the DVI into the new mode
> Status = ArmPlatformSysConfigSet (
> SYS_CFG_DVIMODE,
> - mResolutions[ModeNumber].Mode
> + mDisplayModes[ModeNumber].Mode
> );
> if (EFI_ERROR (Status)) {
> ASSERT_EFI_ERROR (Status);
> @@ -362,11 +356,11 @@ LcdPlatformQueryMode (
> }
>
> Info->Version = 0;
> - Info->HorizontalResolution = mResolutions[ModeNumber].HorizontalResolution;
> - Info->VerticalResolution = mResolutions[ModeNumber].VerticalResolution;
> - Info->PixelsPerScanLine = mResolutions[ModeNumber].HorizontalResolution;
> + Info->HorizontalResolution = mDisplayModes[ModeNumber].Horizontal.Resolution;
> + Info->VerticalResolution = mDisplayModes[ModeNumber].Vertical.Resolution;
> + Info->PixelsPerScanLine = mDisplayModes[ModeNumber].Horizontal.Resolution;
>
> - switch (mResolutions[ModeNumber].Bpp) {
> + switch (mDisplayModes[ModeNumber].Bpp) {
> case LCD_BITS_PER_PIXEL_24:
> Info->PixelFormat = PixelRedGreenBlueReserved8BitPerColor;
> Info->PixelInformation.RedMask = LCD_24BPP_RED_MASK;
> @@ -395,14 +389,10 @@ LcdPlatformQueryMode (
>
> @param[in] ModeNumber Mode Number.
>
> - @param[out] HRes Pointer to horizontal resolution.
> - @param[out] HSync Pointer to horizontal sync width.
> - @param[out] HBackPorch Pointer to horizontal back porch.
> - @param[out] HFrontPorch Pointer to horizontal front porch.
> - @param[out] VRes Pointer to vertical resolution.
> - @param[out] VSync Pointer to vertical sync width.
> - @param[out] VBackPorch Pointer to vertical back porch.
> - @param[out] VFrontPorch Pointer to vertical front porch.
> + @param[out] Horizontal Pointer to horizontal timing parameters.
> + (Resolution, Sync, Back porch, Front porch)
> + @param[out] Vertical Pointer to vertical timing parameters.
> + (Resolution, Sync, Back porch, Front porch)
>
> @retval EFI_SUCCESS Display timing information for the requested
> mode returned successfully.
> @@ -410,40 +400,22 @@ LcdPlatformQueryMode (
> **/
> EFI_STATUS
> LcdPlatformGetTimings (
> - IN CONST UINT32 ModeNumber,
> - OUT UINT32 * CONST HRes,
> - OUT UINT32 * CONST HSync,
> - OUT UINT32 * CONST HBackPorch,
> - OUT UINT32 * CONST HFrontPorch,
> - OUT UINT32 * CONST VRes,
> - OUT UINT32 * CONST VSync,
> - OUT UINT32 * CONST VBackPorch,
> - OUT UINT32 * CONST VFrontPorch
> + IN CONST UINT32 ModeNumber,
> + OUT CONST SCAN_TIMINGS ** Horizontal,
> + OUT CONST SCAN_TIMINGS ** Vertical
> )
> {
> // One of the pointers is NULL
> - ASSERT (HRes != NULL);
> - ASSERT (HSync != NULL);
> - ASSERT (HBackPorch != NULL);
> - ASSERT (HFrontPorch != NULL);
> - ASSERT (VRes != NULL);
> - ASSERT (VSync != NULL);
> - ASSERT (VBackPorch != NULL);
> - ASSERT (VFrontPorch != NULL);
> + ASSERT (Horizontal != NULL);
> + ASSERT (Vertical != NULL);
>
> if (ModeNumber >= LcdPlatformGetMaxMode ()) {
> ASSERT (FALSE);
> return EFI_INVALID_PARAMETER;
> }
>
> - *HRes = mResolutions[ModeNumber].HorizontalResolution;
> - *HSync = mResolutions[ModeNumber].HSync;
> - *HBackPorch = mResolutions[ModeNumber].HBackPorch;
> - *HFrontPorch = mResolutions[ModeNumber].HFrontPorch;
> - *VRes = mResolutions[ModeNumber].VerticalResolution;
> - *VSync = mResolutions[ModeNumber].VSync;
> - *VBackPorch = mResolutions[ModeNumber].VBackPorch;
> - *VFrontPorch = mResolutions[ModeNumber].VFrontPorch;
> + *Horizontal = &mDisplayModes[ModeNumber].Horizontal;
> + *Vertical = &mDisplayModes[ModeNumber].Vertical;
>
> return EFI_SUCCESS;
> }
> @@ -471,7 +443,7 @@ LcdPlatformGetBpp (
> return EFI_INVALID_PARAMETER;
> }
>
> - *Bpp = mResolutions[ModeNumber].Bpp;
> + *Bpp = mDisplayModes[ModeNumber].Bpp;
>
> return EFI_SUCCESS;
> }
> --
> Guid("CE165669-3EF3-493F-B85D-6190EE5B9759")
>
next prev parent reply other threads:[~2017-12-23 14:14 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-22 19:08 [PATCH edk2-platforms v2 00/18] ARM: Update GOP evan.lloyd
2017-12-22 19:08 ` [PATCH edk2-platforms v2 01/18] ARM/VExpressPkg: Fix MODULE_TYPE of HDLCD/PL111 platform libraries evan.lloyd
2017-12-22 19:08 ` [PATCH edk2-platforms v2 02/18] ARM/VExpressPkg: Tidy HDLCD and PL11LCD platform Lib: Coding standard evan.lloyd
2017-12-23 14:07 ` Ard Biesheuvel
2017-12-22 19:08 ` [PATCH edk2-platforms v2 03/18] ARM/VExpressPkg: Tidy HdLcd/PL111Lcd code: Updated comments evan.lloyd
2017-12-23 14:08 ` Ard Biesheuvel
2017-12-22 19:08 ` [PATCH edk2-platforms v2 04/18] ARM/VExpressPkg: Remove unused PcdPL111LcdMaxMode from HDLCD inf evan.lloyd
2017-12-23 14:08 ` Ard Biesheuvel
2017-12-22 19:08 ` [PATCH edk2-platforms v2 05/18] ARM/VExpressPkg: PL111 and HDLCD: add const qualifier evan.lloyd
2017-12-23 14:09 ` Ard Biesheuvel
2017-12-22 19:08 ` [PATCH edk2-platforms v2 06/18] ARM/VExpressPkg: Add and update debug ASSERTS evan.lloyd
2017-12-23 14:12 ` Ard Biesheuvel
2018-01-04 18:55 ` Girish Pathak
2018-01-04 19:24 ` Ard Biesheuvel
2018-01-04 19:51 ` Evan Lloyd
2018-01-04 19:54 ` Ard Biesheuvel
2018-02-28 20:27 ` Evan Lloyd
2018-03-02 19:07 ` Ard Biesheuvel
2018-03-05 15:08 ` Evan Lloyd
2018-03-06 11:16 ` Ard Biesheuvel
2018-03-14 12:24 ` Leif Lindholm
2018-03-14 12:35 ` Ard Biesheuvel
2018-03-14 12:39 ` Leif Lindholm
2017-12-22 19:08 ` [PATCH edk2-platforms v2 07/18] ARM/VExpressPkg: PL111LcdArmVExpressLib: Minor code cleanup evan.lloyd
2017-12-23 14:13 ` Ard Biesheuvel
2017-12-22 19:08 ` [PATCH edk2-platforms v2 08/18] ARM/VExpressPkg: PL111 and HDLCD: Use FixedPcdGet32 evan.lloyd
2017-12-23 14:14 ` Ard Biesheuvel
2017-12-22 19:08 ` [PATCH edk2-platforms v2 09/18] ARM/VExpressPkg: PL11LcdArmVExpressLib: Improvement conditional evan.lloyd
2017-12-23 14:16 ` Ard Biesheuvel
2017-12-22 19:08 ` [PATCH edk2-platforms v2 10/18] ARM/VExpressPkg: HdLcdArmVExpressLib: Remove status check EFI_TIMEOUT evan.lloyd
2017-12-23 14:16 ` Ard Biesheuvel
2017-12-22 19:08 ` [PATCH edk2-platforms v2 11/18] ARM/VExpressPkg: HdLcdArmVExpressLib: Remove redundant Bpp evan.lloyd
2017-12-23 14:17 ` Ard Biesheuvel
2017-12-22 19:08 ` [PATCH edk2-platforms v2 12/18] ARM/VExpressPkg: Redefine LcdPlatformGetTimings function evan.lloyd
2017-12-23 14:18 ` Ard Biesheuvel [this message]
2017-12-22 19:08 ` [PATCH edk2-platforms v2 13/18] ARM/VExpressPkg: PL111 and HDLCD: Add PCD to select pixel format evan.lloyd
2017-12-23 16:00 ` Ard Biesheuvel
2017-12-22 19:08 ` [PATCH edk2-platforms v2 14/18] ARM/VExpressPkg: Reserving framebuffer at build evan.lloyd
2017-12-23 16:02 ` Ard Biesheuvel
2018-01-03 11:04 ` Evan Lloyd
2017-12-22 19:08 ` [PATCH edk2-platforms v2 15/18] ARM/VExpressPkg: New DP500/DP550/DP650 platform library evan.lloyd
2017-12-23 16:07 ` Ard Biesheuvel
2018-01-08 18:51 ` Evan Lloyd
2018-01-24 11:27 ` Alexei Fedorov
2018-01-24 11:34 ` Ard Biesheuvel
2017-12-22 19:08 ` [PATCH edk2-platforms v2 16/18] ARM/JunoPkg: Mapping Non-Trused SRAM as device memory evan.lloyd
2017-12-23 16:08 ` Ard Biesheuvel
2017-12-22 19:08 ` [PATCH edk2-platforms v2 17/18] ARM/JunoPkg: Adding SCMI MTL library evan.lloyd
2017-12-23 16:12 ` Ard Biesheuvel
2017-12-22 19:08 ` [PATCH edk2-platforms v2 18/18] ARM/JunoPkg: Add HDLCD platform library evan.lloyd
2017-12-23 16:22 ` Ard Biesheuvel
2018-01-09 18:21 ` Evan Lloyd
2018-01-09 18:26 ` Ard Biesheuvel
2018-01-10 11:45 ` Alexei Fedorov
2018-01-10 12:02 ` Ard Biesheuvel
2017-12-22 19:29 ` [PATCH edk2-platforms v2 00/18] ARM: Update GOP Ard Biesheuvel
2018-01-02 10:28 ` Evan Lloyd
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAKv+Gu_XRB2VCsWj8HA6u67CW5m6G_HvXPFe3cg4zkOYLZFFkA@mail.gmail.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox