From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4001:c0b::242; helo=mail-it0-x242.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-it0-x242.google.com (mail-it0-x242.google.com [IPv6:2607:f8b0:4001:c0b::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 7E9892035B2C5 for ; Sat, 23 Dec 2017 06:14:08 -0800 (PST) Received: by mail-it0-x242.google.com with SMTP id o130so20044060itg.0 for ; Sat, 23 Dec 2017 06:18:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=4/3nqn2Dx3Fkm3UGQK8bvyLtgmtOxn5OnCfp3tTURjE=; b=QJjmkGYNhKK/ePx19EV2ybdPg0/HrosaAx8P3nO4zgbuEEjzrCDk6Z72uZJGmQL5qF K8eaTnWZVUntzre8hK2xAyV7fMWib8+oicE6nrytYwU7cYNGXtLJfSknhFuYiDsVlH/Y c2V7nv69LyE/pVtnciRgarhqpqDAv34INPiTk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=4/3nqn2Dx3Fkm3UGQK8bvyLtgmtOxn5OnCfp3tTURjE=; b=TivIbeq5GMd4SdutH9l5eayKgFnuGDiHd1KtzLSI8qfq42OnkdzTrceazWH+nzwFi/ iEo6YtU4AF+uAAAHneEcTB1Jjo4lIqv1BOH6tBdWQlwvTixpfe4ZxLonTwvtEG89tM2o hE2BYzd5QleQuMxNqYff61dr/JeqgrhpnXwd/jydSnuQt5Xns0AcxfkUYAlo2kd77l++ NyzvZvo1j2/dhAL+Jzx9NlSFmC2Ds185DoJuNREVej5tgyCIcBo3BOGn5SGVQd9mLDE3 qG5p3Uo7Ab3C798PASuh/qoGKXX/2n2nNHJYsxw6BKftf5QVOt+SZ4XwJCLmjqDQ+/BZ yphQ== X-Gm-Message-State: AKGB3mIuCsAKQH5EaSzDgaEXP5i9CC0XUfxhZndk1opYGIZze0ZvFtGz sJkNwgJrwxSgNW0MDQiPUHF99rE7neLvgL6bQK+8oCyg2L8= X-Google-Smtp-Source: ACJfBouEj3X93NI3LNo4w1rQcPiBdvivz7H3el6Z1IF9u+URTT2h21DZvO5oNMv8QD3qUit97Lvh1Qe+B+SXcxuKc7E= X-Received: by 10.36.219.214 with SMTP id c205mr21655097itg.65.1514038738559; Sat, 23 Dec 2017 06:18:58 -0800 (PST) MIME-Version: 1.0 Received: by 10.107.52.14 with HTTP; Sat, 23 Dec 2017 06:18:58 -0800 (PST) In-Reply-To: <20171222190821.12440-13-evan.lloyd@arm.com> References: <20171222190821.12440-1-evan.lloyd@arm.com> <20171222190821.12440-13-evan.lloyd@arm.com> From: Ard Biesheuvel Date: Sat, 23 Dec 2017 14:18:58 +0000 Message-ID: To: Evan Lloyd Cc: "edk2-devel@lists.01.org" , Arvind Chauhan , Daniil Egranov , Thomas Panakamattam Abraham , <"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 X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 23 Dec 2017 14:14:09 -0000 Content-Type: text/plain; charset="UTF-8" On 22 December 2017 at 19:08, wrote: > From: Girish Pathak > > 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 > Signed-off-by: Evan Lloyd Reviewed-by: Ard Biesheuvel > --- > 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") >