CMOS.layout guide: Difference between revisions
m (→CMOS layout) |
|||
(14 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== CMOS | == CMOS layout == | ||
This page explain the workings of the CMOS | This page explain the workings of the CMOS layout file. The CMOS layout file can be linked into a board specific environment. By creating the cmos.layout file in the board directory. and set the HAVE_OPTION_TABLE in the Kconfig file of the board. | ||
The CMOS layout file must contain the following sections; | The CMOS layout file must contain the following sections; | ||
Line 8: | Line 8: | ||
* checksums | * checksums | ||
The hash (#) character is the comment prefix, all characters until the | The hash (#) character is the comment prefix, all characters until the end of line are treated as comment. | ||
* Page 0: 0 - 1024 128 Bytes | |||
** position bit 0 - bit 112 : RTC clock data | |||
** position bit 113 - bit 1024 : other data | |||
* Page 1: 1025 - 2048 128 Bytes | |||
** user free space, not always available. | |||
=== entries section === | === entries section === | ||
This section defined all the variables used within coreboot. Each line consists out of the following parameters; | |||
<start-bit> <bit-length> <config> <config-id> <parameter-name> | |||
The parameter <start-bit> is the start position is bit position where the parameter get stored. | |||
The parameter <bit-length> is the length in bits of the parameter. | |||
The parameter <config> indicates the type of parameter, currently there are three known types; | |||
** r = register | |||
** e = enumeration | |||
** h = ? hide ? | |||
The parameter <config-id> is used when the <config> is set to 'e', than there must be at least one item in the enumeration section. The <config-id> does not have to be unique, a <config-id> in the enumeration section can be used for different entries. | |||
The parameter <parameter-name> is the name the coreboot retrieval and storage functions will refer to. | |||
Example: | |||
0 384 r 0 reserved_memory | |||
384 3 e 5 baud_rate | |||
487 1 e 1 power_on_after_fail | |||
=== enumerations section === | === enumerations section === | ||
Each line in the the enumerations section is contructed as follows; | |||
<config-id> <value> <label> | |||
The parameter <config-id> is the same value as the <config-id> from the entries section. | |||
The parameter <value> is the value that get stored at the bit location defined in the entries section, where that config-id is being used. | |||
The parameter <label> is the label for displaying in the the presentation layer. | |||
Example; | |||
1 0 Disable | |||
1 1 Enable | |||
5 0 115200 | |||
5 1 57600 | |||
5 2 38400 | |||
5 3 19200 | |||
5 4 9600 | |||
5 5 4800 | |||
5 6 2400 | |||
5 7 1200 | |||
=== checksums section === | === checksums section === | ||
Line 29: | Line 79: | ||
Example; | Example; | ||
checksum 392 983 984 | checksum 392 983 984 | ||
== Example cmos.layout file == | |||
'''entries''' | |||
# <start-bit> <bit-length> <config> <config-id> <parameter-name> | |||
0 384 r 0 reserved_memory | |||
384 1 e 4 boot_option | |||
385 1 e 4 last_boot | |||
386 1 e 1 ECC_memory | |||
388 4 r 0 reboot_bits | |||
392 3 e 5 baud_rate | |||
395 1 e 1 hw_scrubber | |||
396 1 e 1 interleave_chip_selects | |||
397 2 e 8 max_mem_clock | |||
399 1 e 2 multi_core | |||
400 1 e 1 power_on_after_fail | |||
412 4 e 6 debug_level | |||
416 4 e 7 boot_first | |||
420 4 e 7 boot_second | |||
424 4 e 7 boot_third | |||
428 4 h 0 boot_index | |||
432 8 h 0 boot_countdown | |||
440 4 e 9 slow_cpu | |||
444 1 e 1 nmi | |||
445 1 e 1 iommu | |||
728 256 h 0 user_data | |||
984 16 h 0 check_sum | |||
# Reserve the extended AMD configuration registers | |||
1000 24 r 0 amd_reserved | |||
'''enumerations''' | |||
#<config-id> <value> <label> | |||
# for ECC_memory, hw_scrubber, interleave_chip_selects, power_on_after_fail, nmi, iommu | |||
1 0 Disable | |||
1 1 Enable | |||
# multi_core | |||
2 0 Enable | |||
2 1 Disable | |||
# boot_option, last_boot | |||
4 0 Fallback | |||
4 1 Normal | |||
# baud_rate | |||
5 0 115200 | |||
5 1 57600 | |||
5 2 38400 | |||
5 3 19200 | |||
5 4 9600 | |||
5 5 4800 | |||
5 6 2400 | |||
5 7 1200 | |||
# debug_level | |||
6 6 Notice | |||
6 7 Info | |||
6 8 Debug | |||
6 9 Spew | |||
# boot_first, boot_second, boot_third | |||
7 0 Network | |||
7 1 HDD | |||
7 2 Floppy | |||
7 8 Fallback_Network | |||
7 9 Fallback_HDD | |||
7 10 Fallback_Floppy | |||
7 3 ROM | |||
# max_mem_clock | |||
8 0 DDR400 | |||
8 1 DDR333 | |||
8 2 DDR266 | |||
8 3 DDR200 | |||
# slow_cpu | |||
9 0 off | |||
9 1 87.5% | |||
9 2 75.0% | |||
9 3 62.5% | |||
9 4 50.0% | |||
9 5 37.5% | |||
9 6 25.0% | |||
9 7 12.5% | |||
'''checksums''' | |||
# <startbit> <endbit> <start-of-checksumbit> | |||
checksum 392 983 984 |
Latest revision as of 16:41, 26 January 2011
CMOS layout
This page explain the workings of the CMOS layout file. The CMOS layout file can be linked into a board specific environment. By creating the cmos.layout file in the board directory. and set the HAVE_OPTION_TABLE in the Kconfig file of the board.
The CMOS layout file must contain the following sections;
- entries
- enumerations
- checksums
The hash (#) character is the comment prefix, all characters until the end of line are treated as comment.
- Page 0: 0 - 1024 128 Bytes
- position bit 0 - bit 112 : RTC clock data
- position bit 113 - bit 1024 : other data
- Page 1: 1025 - 2048 128 Bytes
- user free space, not always available.
entries section
This section defined all the variables used within coreboot. Each line consists out of the following parameters;
<start-bit> <bit-length> <config> <config-id> <parameter-name>
The parameter <start-bit> is the start position is bit position where the parameter get stored.
The parameter <bit-length> is the length in bits of the parameter.
The parameter <config> indicates the type of parameter, currently there are three known types;
- r = register
- e = enumeration
- h = ? hide ?
The parameter <config-id> is used when the <config> is set to 'e', than there must be at least one item in the enumeration section. The <config-id> does not have to be unique, a <config-id> in the enumeration section can be used for different entries.
The parameter <parameter-name> is the name the coreboot retrieval and storage functions will refer to.
Example:
0 384 r 0 reserved_memory 384 3 e 5 baud_rate 487 1 e 1 power_on_after_fail
enumerations section
Each line in the the enumerations section is contructed as follows;
<config-id> <value> <label>
The parameter <config-id> is the same value as the <config-id> from the entries section.
The parameter <value> is the value that get stored at the bit location defined in the entries section, where that config-id is being used.
The parameter <label> is the label for displaying in the the presentation layer.
Example;
1 0 Disable 1 1 Enable 5 0 115200 5 1 57600 5 2 38400 5 3 19200 5 4 9600 5 5 4800 5 6 2400 5 7 1200
checksums section
The checksums section has one variable with three parameters;
checksum <startbit> <endbit> <start-of-checksumbit>
The <startbit> parameter is the bit position where the calculation of the checksum starts from.
The <endbit> parameter is the bit position there the calculation of the checksum starts on.
The <start-of-checksumbit> parameter is the bit position there the checksum will be stored, there must be space for 16 bits of checksum data.
Example;
checksum 392 983 984
Example cmos.layout file
entries # <start-bit> <bit-length> <config> <config-id> <parameter-name> 0 384 r 0 reserved_memory 384 1 e 4 boot_option 385 1 e 4 last_boot 386 1 e 1 ECC_memory 388 4 r 0 reboot_bits 392 3 e 5 baud_rate 395 1 e 1 hw_scrubber 396 1 e 1 interleave_chip_selects 397 2 e 8 max_mem_clock 399 1 e 2 multi_core 400 1 e 1 power_on_after_fail 412 4 e 6 debug_level 416 4 e 7 boot_first 420 4 e 7 boot_second 424 4 e 7 boot_third 428 4 h 0 boot_index 432 8 h 0 boot_countdown 440 4 e 9 slow_cpu 444 1 e 1 nmi 445 1 e 1 iommu 728 256 h 0 user_data 984 16 h 0 check_sum # Reserve the extended AMD configuration registers 1000 24 r 0 amd_reserved enumerations #<config-id> <value> <label> # for ECC_memory, hw_scrubber, interleave_chip_selects, power_on_after_fail, nmi, iommu 1 0 Disable 1 1 Enable # multi_core 2 0 Enable 2 1 Disable # boot_option, last_boot 4 0 Fallback 4 1 Normal # baud_rate 5 0 115200 5 1 57600 5 2 38400 5 3 19200 5 4 9600 5 5 4800 5 6 2400 5 7 1200 # debug_level 6 6 Notice 6 7 Info 6 8 Debug 6 9 Spew # boot_first, boot_second, boot_third 7 0 Network 7 1 HDD 7 2 Floppy 7 8 Fallback_Network 7 9 Fallback_HDD 7 10 Fallback_Floppy 7 3 ROM # max_mem_clock 8 0 DDR400 8 1 DDR333 8 2 DDR266 8 3 DDR200 # slow_cpu 9 0 off 9 1 87.5% 9 2 75.0% 9 3 62.5% 9 4 50.0% 9 5 37.5% 9 6 25.0% 9 7 12.5% checksums # <startbit> <endbit> <start-of-checksumbit> checksum 392 983 984