[coreboot] [Patch] CMOS: Add set_option and rework get_option.
peter at stuge.se
Fri May 29 15:48:09 CEST 2009
Luc Verhaegen wrote:
> From 261d18b8825a849d6e7b678294cf13ede5f0e8c9 Mon Sep 17 00:00:00 2001
> From: Luc Verhaegen <libv at skynet.be>
> Date: Fri, 29 May 2009 15:18:33 +0200
> Subject: [PATCH] CMOS: Add set_option and rework get_option.
> To ease some of my debugging pain on the unichrome, i decided i needed to
> move FB size selection into cmos, so i could test a size and then reset it
> to the default after loading this value so that the next reboot uses the
> (working) default again. This meant implementing set_option in parallel to
> get_option was then found to have inversed argument ordering (like outb) and
> passing char * and then depending on the cmos layout length, which made me
> feel quite uncomfortable. Since we either have reserved space (which we
> shouldn't do anything with in these two functions), an enum or a
> hexadecimal value, unsigned int seemed like the way to go. So all users of
> get_option now have their arguments inversed and switched from using ints
> to unsigned ints now.
> The way get_cmos_value was implemented forced us to not overlap byte and to
> have multibyte values be byte aligned. This logic is now adapted to do a
> full uint32_t read (when needed) at any offset and any length up to 32, and
> the shifting all happens inside an uint32_t as well. set_cmos_value was
> implemented similarly. Both routines have been extensively tested in a
> quick separate little program as it is not easy to get this stuff right.
> build_opt_tbl.c was altered to function correctly within these new
> parameters. The enum value retrieval has been changed strol(..., NULL, 10)
> to stroul(..., NULL, 0), so that we not only are able to use unsigned ints
> now but so that we also interprete hex values correctly. The 32bit limit
> gets imposed on all entries not marked reserved, an unused "user_data" field
> that appeared in a lot of cmos.layouts has been changed to reserved as well.
> Signed-off-by: Luc Verhaegen <libv at skynet.be>
Acked-by: Peter Stuge <peter at stuge.se>
More information about the coreboot