From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1MmSKM-0002hU-QA for mharc-grub-devel@gnu.org; Sat, 12 Sep 2009 09:07:42 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MmSKL-0002hJ-LJ for grub-devel@gnu.org; Sat, 12 Sep 2009 09:07:41 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MmSKG-0002gG-47 for grub-devel@gnu.org; Sat, 12 Sep 2009 09:07:40 -0400 Received: from [199.232.76.173] (port=57459 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MmSKF-0002g5-Dn for grub-devel@gnu.org; Sat, 12 Sep 2009 09:07:35 -0400 Received: from xvm-190-8.ghst.net ([217.70.190.8]:35957 helo=aybabtu.com) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1MmSKC-0002OL-Tm for grub-devel@gnu.org; Sat, 12 Sep 2009 09:07:34 -0400 Received: from [192.168.10.10] (helo=thorin) by aybabtu.com with esmtp (Exim 4.69) (envelope-from ) id 1MmSKB-0005Nv-2b for grub-devel@gnu.org; Sat, 12 Sep 2009 15:07:31 +0200 Received: from rmh by thorin with local (Exim 4.69) (envelope-from ) id 1MmSKA-000318-De for grub-devel@gnu.org; Sat, 12 Sep 2009 15:07:30 +0200 Date: Sat, 12 Sep 2009 15:07:30 +0200 From: Robert Millan To: grub-devel@gnu.org Message-ID: <20090912130730.GB11468@thorin> References: <20090910210316.GA5298@thorin> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090910210316.GA5298@thorin> Organization: free as in freedom X-Message-Flag: Worried about Outlook viruses? Switch to Thunderbird! www.mozilla.com/thunderbird X-Debbugs-No-Ack: true User-Agent: Mutt/1.5.18 (2008-05-17) X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) Subject: Re: [PATCH] move DAC register setting to linux.c X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GRUB 2 List-Id: The development of GRUB 2 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 12 Sep 2009 13:07:41 -0000 Committed. On Thu, Sep 10, 2009 at 11:03:16PM +0200, Robert Millan wrote: > > It didn't really seem right that we were *setting* values in the DAC palette > register in a function that was only meant to retrieve video mode information. > > So I would rather move this to the Linux loader. In the event that other > loaders would need this facility, it can be moved into a shared function. > > This has the advantage that we don't mess with the DAC palette in cases where > this is not necessary (read: the vast majority of them). > > -- > Robert Millan > > The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and > how) you may access your data; but nobody's threatening your freedom: we > still allow you to remove your data and not access it at all." > 2009-09-10 Robert Millan > > * video/i386/pc/vbe.c (grub_vbe_get_video_mode_info): Move packed > mode special handling (grub_vbe_bios_set_dac_palette_width() call) > from here ... > * loader/i386/linux.c [GRUB_MACHINE_PCBIOS] > (grub_linux_setup_video): ... to here (with some adjustments). > > Index: video/i386/pc/vbe.c > =================================================================== > --- video/i386/pc/vbe.c (revision 2583) > +++ video/i386/pc/vbe.c (working copy) > @@ -286,24 +286,6 @@ grub_vbe_get_video_mode_info (grub_uint3 > > /* Make copy of mode info block. */ > grub_memcpy (mode_info, mi_tmp, sizeof (*mode_info)); > - > - /* Packed mode. Query DAC Palette width for color sizes. */ > - if (mode_info->bits_per_pixel <= 8) > - { > - int width = 8; > - status = 0; > - > - if (controller_info.capabilities & GRUB_VBE_CAPABILITY_DACWIDTH) > - status = grub_vbe_bios_set_dac_palette_width (& width); > - > - if (status != GRUB_VBE_STATUS_OK) > - /* 6 is default after mode reset. */ > - width = 6; > - > - mode_info->red_mask_size = mode_info->green_mask_size > - = mode_info->blue_mask_size = width; > - mode_info->rsvd_mask_size = 0; > - } > } > else > /* Just clear mode info block if it isn't a VESA mode. */ > Index: loader/i386/linux.c > =================================================================== > --- loader/i386/linux.c (revision 2583) > +++ loader/i386/linux.c (working copy) > @@ -33,6 +33,7 @@ > #include > #include > #include > +#include > > #define GRUB_LINUX_CL_OFFSET 0x1000 > #define GRUB_LINUX_CL_END_OFFSET 0x2000 > @@ -416,6 +417,33 @@ grub_linux_setup_video (struct linux_ker > params->reserved_mask_size = mode_info.reserved_mask_size; > params->reserved_field_pos = mode_info.reserved_field_pos; > > + > +#ifdef GRUB_MACHINE_PCBIOS > + /* VESA packed modes may come with zeroed mask sizes, which need > + to be set here according to DAC Palette width. If we don't, > + this results in Linux displaying a black screen. */ > + if (mode_info.bpp <= 8) > + { > + struct grub_vbe_info_block controller_info; > + int status; > + int width = 8; > + > + status = grub_vbe_bios_get_controller_info (&controller_info); > + > + if (status == GRUB_VBE_STATUS_OK && > + (controller_info.capabilities & GRUB_VBE_CAPABILITY_DACWIDTH)) > + status = grub_vbe_bios_set_dac_palette_width (&width); > + > + if (status != GRUB_VBE_STATUS_OK) > + /* 6 is default after mode reset. */ > + width = 6; > + > + params->red_mask_size = params->green_mask_size > + = params->blue_mask_size = width; > + params->reserved_mask_size = 0; > + } > +#endif > + > return 0; > } > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/grub-devel -- Robert Millan The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and how) you may access your data; but nobody's threatening your freedom: we still allow you to remove your data and not access it at all."