From nobody Mon Dec 15 03:19:52 2025 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 80.81.252.135 is neither permitted nor denied by domain of seabios.org) client-ip=80.81.252.135; envelope-from=seabios-bounces@seabios.org; helo=mail.coreboot.org; Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 80.81.252.135 is neither permitted nor denied by domain of seabios.org) smtp.mailfrom=seabios-bounces@seabios.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from mail.coreboot.org (mail.coreboot.org [80.81.252.135]) by mx.zohomail.com with SMTPS id 1527748489232689.6086983976467; Wed, 30 May 2018 23:34:49 -0700 (PDT) Received: from [127.0.0.1] (helo=ra.coreboot.org) by mail.coreboot.org with esmtp (Exim 4.86_2) (envelope-from ) id 1fOHDk-0001m7-Ml; Thu, 31 May 2018 08:38:00 +0200 Received: from mx3-rdu2.redhat.com ([66.187.233.73] helo=mx1.redhat.com) by mail.coreboot.org with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.86_2) (envelope-from ) id 1fOHDb-0001kp-Hc for seabios@seabios.org; Thu, 31 May 2018 08:37:59 +0200 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4DD2480401A8 for ; Thu, 31 May 2018 06:34:07 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-117-13.ams2.redhat.com [10.36.117.13]) by smtp.corp.redhat.com (Postfix) with ESMTP id 024622157F44; Thu, 31 May 2018 06:34:06 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 3774E423E7; Thu, 31 May 2018 08:34:06 +0200 (CEST) From: Gerd Hoffmann To: seabios@seabios.org Date: Thu, 31 May 2018 08:33:49 +0200 Message-Id: <20180531063353.21777-3-kraxel@redhat.com> In-Reply-To: <20180531063353.21777-1-kraxel@redhat.com> References: <20180531063353.21777-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.8]); Thu, 31 May 2018 06:34:07 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.8]); Thu, 31 May 2018 06:34:07 +0000 (UTC) for IP:'10.11.54.6' DOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'kraxel@redhat.com' RCPT:'' X-Spam-Score: -6.2 (------) Subject: [SeaBIOS] [PATCH 2/6] cbvga: factor out cbvga_setup_modes() X-BeenThere: seabios@seabios.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: SeaBIOS mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: seabios-bounces@seabios.org Sender: "SeaBIOS" X-Duff: Orig. Duff, Duff Lite, Duff Dry, Duff Dark, Raspberry Duff, Lady Duff, Red Duff, Tartar Control Duff X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Factor out generic data structure setup code from cbvga_setup(). Signed-off-by: Gerd Hoffmann --- vgasrc/cbvga.c | 57 ++++++++++++++++++++++++++++++++----------------------= --- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/vgasrc/cbvga.c b/vgasrc/cbvga.c index f85989a232..9ae97d5f51 100644 --- a/vgasrc/cbvga.c +++ b/vgasrc/cbvga.c @@ -232,10 +232,40 @@ struct cb_framebuffer { u8 reserved_mask_size; }; =20 +void +cbvga_setup_modes(u64 addr, u8 bpp, u32 xlines, u32 ylines, u32 linelength) +{ + int i; + + SET_VGA(CBmode, 0x140); + SET_VGA(VBE_framebuffer, addr); + SET_VGA(VBE_total_memory, linelength * ylines); + SET_VGA(CBlinelength, linelength); + SET_VGA(CBmodeinfo.memmodel, MM_DIRECT); + SET_VGA(CBmodeinfo.width, xlines); + SET_VGA(CBmodeinfo.height, ylines); + SET_VGA(CBmodeinfo.depth, bpp); + SET_VGA(CBmodeinfo.cwidth, 8); + SET_VGA(CBmodeinfo.cheight, 16); + memcpy_far(get_global_seg(), &CBemulinfo + , get_global_seg(), &CBmodeinfo, sizeof(CBemulinfo)); + + // Validate modes + for (i =3D 0; i < ARRAY_SIZE(cbvesa_modes); i++) { + struct cbvga_mode_s *cbmode_g =3D &cbvesa_modes[i]; + /* Skip VBE modes that doesn't fit into coreboot's framebuffer */ + if ((GET_GLOBAL(cbmode_g->info.height) > ylines) + || (GET_GLOBAL(cbmode_g->info.width) > xlines) + || (GET_GLOBAL(cbmode_g->info.depth) !=3D bpp)) { + dprintf(3, "Removing mode %x\n", GET_GLOBAL(cbmode_g->mode)); + SET_VGA(cbmode_g->mode, 0xffff); + } + } +} + int cbvga_setup(void) { - int i; dprintf(1, "coreboot vga init\n"); =20 if (GET_GLOBAL(HaveRunInit)) @@ -277,29 +307,6 @@ cbvga_setup(void) return -1; } =20 - SET_VGA(CBmode, 0x140); - SET_VGA(VBE_framebuffer, addr); - SET_VGA(VBE_total_memory, linelength * ylines); - SET_VGA(CBlinelength, linelength); - SET_VGA(CBmodeinfo.memmodel, MM_DIRECT); - SET_VGA(CBmodeinfo.width, xlines); - SET_VGA(CBmodeinfo.height, ylines); - SET_VGA(CBmodeinfo.depth, bpp); - SET_VGA(CBmodeinfo.cwidth, 8); - SET_VGA(CBmodeinfo.cheight, 16); - memcpy_far(get_global_seg(), &CBemulinfo - , get_global_seg(), &CBmodeinfo, sizeof(CBemulinfo)); - - // Validate modes - for (i =3D 0; i < ARRAY_SIZE(cbvesa_modes); i++) { - struct cbvga_mode_s *cbmode_g =3D &cbvesa_modes[i]; - /* Skip VBE modes that doesn't fit into coreboot's framebuffer */ - if ((GET_GLOBAL(cbmode_g->info.height) > ylines) - || (GET_GLOBAL(cbmode_g->info.width) > xlines) - || (GET_GLOBAL(cbmode_g->info.depth) !=3D bpp)) { - dprintf(3, "Removing mode %x\n", GET_GLOBAL(cbmode_g->mode)); - SET_VGA(cbmode_g->mode, 0xffff); - } - } + cbvga_setup_modes(addr, bpp, xlines, ylines, linelength); return 0; } --=20 2.9.3 _______________________________________________ SeaBIOS mailing list SeaBIOS@seabios.org https://mail.coreboot.org/mailman/listinfo/seabios