Difference between revisions of "Creating A devicetree.cb"

From coreboot
Jump to: navigation, search
(Keywords)
(Grammar)
Line 25: Line 25:
 
== Grammar ==
 
== Grammar ==
  
..
+
=== Literals ===
 +
Literal values types are defined and thus consumed by the following regular expressions:
 +
 
 +
* Hex
 +
<source lang="reg">
 +
0x[0-9a-fA-F.]+
 +
</source>
 +
 
 +
* Decimals
 +
<source lang="reg">
 +
[0-9.]+
 +
</source>
 +
 
 +
* PCI Interrupts
 +
<source lang="reg">
 +
INT[A-D]
 +
</source>
 +
 
 +
* Strings
 +
<source lang="reg">
 +
\"[^\"]+\"
 +
</source>
 +
<source lang="reg">
 +
[^ \n\t]+
 +
<source>
  
 
== Examples ==
 
== Examples ==

Revision as of 10:58, 18 February 2014

This article should help people who are writting a devicetree.cb for their system.

What you will need

  • lspci -nvvv output

Introduction

The mainboard's devicetree.cb file contains many build and platform configuration settings. One of the most important items is the mainboard device list.

A device needs to be listed in the mainboard devicetree.cb if it requires more setup than standard PCI initialization (resource allocation). Typically, that includes the CPU, northbridge, southbridge, and Super I/O. These devices are usually required for system specific configuration as well as indicate the system bus structure (pci_domain).

When a device in devicetree.cb is found during the coreboot PCI/system scan process the functions to do customized initialization are called via the device_operations and the chip_operations structures. You will find these structures in the devices source files.

Keywords & Symbols

chip, device, register,on,off,pci,ioapic,pnp,i2c,lapic,cpu_cluster,domain,irq,drq,io,ioapic_irq,inherit,subsystemid,end,=

Syntax

..

Grammar

Literals

Literal values types are defined and thus consumed by the following regular expressions:

  • Hex
0x[0-9a-fA-F.]+
  • Decimals
[0-9.]+
  • PCI Interrupts
INT[A-D]
  • Strings
\"[^\"]+\"
[^ \n\t]+
<source>
 
== Examples ==
 
=== NorthBridge ===
 
..
 
=== Super I/O ===
 
 »       chip superio/fintek/f71869ad
 »       »       device pnp 4e.00 off # Floppy
 »       »       »       io 0x60 = 0x3f0
 »       »       »       irq 0x70 = 6
 »       »       »       drq 0x74 = 2
 »       »       end
 »       »       device pnp 4e.01 on # COM1
 »       »       »       io 0x60 = 0x3f8
 »       »       »       irq 0x70 = 4
 »       »       end
 »       »       »       device pnp 4e.02 off # COM2
 »       »       »       io 0x60 = 0x2f8
 »       »       »       irq 0x70 = 3
 »       »       end
 »       »       device pnp 4e.03 off # Parallel Port
 »       »       »       io 0x60 = 0x378
 »       »       »       irq 0x70 = 7
 »       »       »       drq 0x74 = 3
 »       »       end
 »       »       device pnp 4e.04 on # Hardware Monitor
 »       »       »       io 0x60 = 0x295
 »       »       »       irq 0x70 = 0
 »       »       end
 »       »       device pnp 4e.05 on # KBC
 »       »       »       io 0x60 = 0x060
 »       »       »       irq 0x70 = 1 # Keyboard IRQ
 »       »       »       irq 0x72 = 12 # Mouse IRQ
 »       »       end
 »       »       device pnp 4e.06 off end # GPIO
 »       »       device pnp 4e.07 on end # BSEL
 »       »       device pnp 4e.0a off end # PME
 »       end # f71869ad
 
{{Cc-by-2.5}}