Luc Verhaegen wrote: > From 261d18b8825a849d6e7b678294cf13ede5f0e8c9 Mon Sep 17 00:00:00 2001 > From: Luc Verhaegen <[email protected]> > 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. > > 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 <[email protected]>
Acked-by: Peter Stuge <[email protected]> -- coreboot mailing list: [email protected] http://www.coreboot.org/mailman/listinfo/coreboot

