Motherboard Porting Guide

From coreboot
Revision as of 21:42, 28 May 2014 by Phcoder (talk | contribs)
Jump to navigation Jump to search

The wiki is being retired!

Documentation is now handled by the same processes we use for code: Add something to the Documentation/ directory in the coreboot repo, and it will be rendered to Contributions welcome!

Motherboard Porting Guide

Please note that this is WIP work.

HOWTO to find a way

  • find a model and manufacturer of your mobo
  • download these tools:
 # git clone
 # superiotool (  cd coreboot/util/superiotool ; make ; sudo make install )
 # inteltool ( cd coreboot/util/inteltool ; make ; sudo make install )
 # ectool ( cd coreboot/util/ectool ; make ; sudo make install )
 # dmidecode ( cvs -z3 co dmidecode )
 # msrtool ( cd coreboot/util/msrtool ; ./configure ; make ; sudo make install )
 # nvramtool ( cd coreboot/util/nvramtool ; make ; sudo make install )
 # flashrom ( svn co svn:// flashrom )
  • make and install them (make; sudo make install) - you need at least libpci/pciutils
  • check that your distro have this tools and install them:
 # lspci
 # dmesg
 # acpitool
 # lspnp
 # lsusb
 # acpidump
  • Do this commands:
 # lspci -nnvvvxxxx > lscpi.log
 # lspnp -vv > lspnp.log
 # lsusb -vvv > lsusb.log
 # superiotool -deV > superiotool.log
 # inteltool -a > inteltool.log
 # ectool > ectool.log
 # msrtool > msrtool.log
 # dmidecode > dmidecode.log
 # biosdecode > biosdecode.log
 # nvramtool -x > nvramtool.log
 # dmesg > dmesg.log
 # flashrom -V -p internal:laptop=force_I_want_a_brick > flashrom_info.log
 # flashrom -V -p internal:laptop=force_I_want_a_brick -r rom.bin > flashrom_read.log
 # acpidump > acpidump.log
  • Save all logs in safe place, and also rom.bin file.
  • Find what chip does your mobo use. The name of the chip is present in flashrom_info.log but is not always exact as some chips have several packaging variants (e.g. SOIC-16, SOIC-8 and TSOP). Consult [[1]] for more info on possible chip formats. If possible make a high-resolution (600dpi or higher) scan of motherboard. Make a scan, not a photo as cameras typically don't have enough resolution to identify individual chips.
  • try to find information - what EC (if on laptop) or Super I/O chip (if any) is used in your mobo (may be some info in Service Manuals or Disassembly guides)
  • try to find your Super I/O / EC chip datasheet

For laptop, additionally:

  • if you see that ectool return some fake staff - like only 'FF' or '00' - so you have custom EC configuration, it's a hard work for support
  • if you see that ectool return looks like 'right' output - you have a big chances for support
  • you need to find from thease outputs Super I/O / EC chip name, or if not see this - disassembly your laptop

Selecting Similar Board


Modifying existing board


Adding a new board

This is a two step process. If you mainboard already exists, skip to next section.

Adding a new vendor to tree

Create a directory in src/mainboard with the same name as vendor name. Add to src/mainboard/Kconfig new vendor entry, the rest of this example uses "foo" vendor.

      bool "Foo"

Add also a include for new Kconfig file which holds the vendor motherboards in the vendor directory

source "src/mainboard/foo/Kconfig"

Create a src/mainboard/foo/Kconfig, copy from other vendor, and change the vendor name. Delete all mainboards.

Adding a new motherboard to tree

Asume that vendor name is foo and board type is bar. Add new configuration item in src/mainboard/foo/Kconfig

       bool "BAR"

Add include for board specific config:

source "src/mainboard/foo/bar/Kconfig"

Adjusting contents of new board directory

Adjust Kconfig to fit the new vendor/model name and dont forget to change MAINBOARD_DIR and MAINBOARD_PART_NUMBER.