CMOS.layout guide: Difference between revisions

From coreboot
Jump to navigation Jump to search
Line 74: Line 74:


== Example cmos.layout file ==
== Example cmos.layout file ==
  '''entries'''
  #start-bit length  config config-ID    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'''
  #ID value  text
  # 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'''
  checksum 392 983 984

Revision as of 17:19, 25 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 eof of line are treated as comment.

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 = ?

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 length  config config-ID    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
 #ID value   text
 # 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
 checksum 392 983 984