xref: /freebsd/sys/contrib/device-tree/Bindings/firmware/coreboot.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotCOREBOOT firmware information
2*c66ec88fSEmmanuel Vadot
3*c66ec88fSEmmanuel VadotThe device tree node to communicate the location of coreboot's memory-resident
4*c66ec88fSEmmanuel Vadotbookkeeping structures to the kernel. Since coreboot itself cannot boot a
5*c66ec88fSEmmanuel Vadotdevice-tree-based kernel (yet), this node needs to be inserted by a
6*c66ec88fSEmmanuel Vadotsecond-stage bootloader (a coreboot "payload").
7*c66ec88fSEmmanuel Vadot
8*c66ec88fSEmmanuel VadotRequired properties:
9*c66ec88fSEmmanuel Vadot - compatible: Should be "coreboot"
10*c66ec88fSEmmanuel Vadot - reg: Address and length of the following two memory regions, in order:
11*c66ec88fSEmmanuel Vadot	1.) The coreboot table. This is a list of variable-sized descriptors
12*c66ec88fSEmmanuel Vadot	that contain various compile- and run-time generated firmware
13*c66ec88fSEmmanuel Vadot	parameters. It is identified by the magic string "LBIO" in its first
14*c66ec88fSEmmanuel Vadot	four bytes.
15*c66ec88fSEmmanuel Vadot	See coreboot's src/commonlib/include/commonlib/coreboot_tables.h for
16*c66ec88fSEmmanuel Vadot	details.
17*c66ec88fSEmmanuel Vadot	2.) The CBMEM area. This is a downward-growing memory region used by
18*c66ec88fSEmmanuel Vadot	coreboot to dynamically allocate data structures that remain resident.
19*c66ec88fSEmmanuel Vadot	It may or may not include the coreboot table as one of its members. It
20*c66ec88fSEmmanuel Vadot	is identified by a root node descriptor with the magic number
21*c66ec88fSEmmanuel Vadot	0xc0389481 that resides in the topmost 8 bytes of the area.
22*c66ec88fSEmmanuel Vadot	See coreboot's src/include/imd.h for details.
23*c66ec88fSEmmanuel Vadot
24*c66ec88fSEmmanuel VadotExample:
25*c66ec88fSEmmanuel Vadot	firmware {
26*c66ec88fSEmmanuel Vadot		ranges;
27*c66ec88fSEmmanuel Vadot
28*c66ec88fSEmmanuel Vadot		coreboot {
29*c66ec88fSEmmanuel Vadot			compatible = "coreboot";
30*c66ec88fSEmmanuel Vadot			reg = <0xfdfea000 0x264>,
31*c66ec88fSEmmanuel Vadot			      <0xfdfea000 0x16000>;
32*c66ec88fSEmmanuel Vadot		}
33*c66ec88fSEmmanuel Vadot	};
34