| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- Copyright (c) 2012, The Linux Foundation. All rights reserved.
- Redistribution and use in source form and compiled forms (SGML, HTML,
- PDF, PostScript, RTF and so forth) with or without modification, are
- permitted provided that the following conditions are met:
- Redistributions in source form must retain the above copyright
- notice, this list of conditions and the following disclaimer as the
- first lines of this file unmodified.
- Redistributions in compiled form (transformed to other DTDs,
- converted to PDF, PostScript, RTF and other formats) must reproduce
- the above copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided with
- the distribution.
- THIS DOCUMENTATION IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AND
- NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD
- DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- DAMAGE.
- June 2014, Ketut Putu Kumajaya
- Samsung Exynos DTBH device tree documentation.
- Android - Table of Device Tree
- ==============================
- 0) Document revision
- v1.0 - Initial version (dng)
- 1) Android boot image:
- ----------------------
- 1.1) Header:
- 1) Magic (8B)
- 2) kernel size (4B)
- 3) kernel addr (4B)
- 4) ramdisk size (4B)
- 5) ramdisk addr (4B)
- 6) 2ndary size (4B)
- 7) 2ndary addr (4B)
- 8) tags addr (4B)
- 9) page size (4B)
- 10) unused #1 (4B) (zero in standard Android)
- 11) unused #2 (4B) (zero in standard Android)
- 12) product name (16B)
- 13) kernel cmdline (512B)
- 14) id (8B)
- 1.2) Layout:
- A) header (as above - 1 page)
- B) kernel (n pages)
- C) ramdisk (m pages)
- D) second stage (o pages)
- 2) Exynos DTBH table of device tree
- --------------------------
- 2.1) Changes:
- i) use "unused #1, #2" members in existing boot image
- header to point to new table of device tree
- (#1 - size of Exynos DTBH table of DT)
- ii) append table of device tree (described later)
- after "D) second stage"
- 2.2) Format:
- size
- x +------------------+
- | | MAGIC ("DTBH") | 4B
- | +------------------+
- header | VERSION | uint32 (version 2, 0x00000002)
- | +------------------+
- | | num of DTBs | uint32 (number of DTB entries, e.g. 5 entries, 0x00000005)
- x +------------------+
- | | chip #1 | uint32 (e.g. ID for 5422, 0x0000152e)
- | +------------------+
- | | platform #1 | uint32 (e.g. ID for k3g, 0x00001e92)
- | +------------------+
- device | subtype #1 | uint32 (e.g. ID for k3g_eur_open, 0x7d64f612)
- #1 +------------------+
- entry | hw_rev #1 | uint32 (e.g. k3g rev 2, 0x00000002)
- | +------------------+
- | | hw_rev_end #1 | uint32 (e.g. k3g rev_end 2, 0x00000002)
- | +------------------+
- | | offset #1 | uint32 (byte offset from start/before MAGIC
- | +------------------+ to DTB entry, e.g. 0x00000800)
- | | size #1 | uint32 (size in bytes of DTB blob
- | +------------------+ e.g. 110,592 bytes, 0x0001b000)
- | | space #1 | uint32 (0x00000020)
- x +------------------+
- . .
- . . (repeat)
- . .
- x +------------------+
- | | chip #Z | uint32 (e.g. ID for 5422, 0x0000152e)
- | +------------------+
- | | platform #Z | uint32 (e.g. ID for k3g, 0x00001e92)
- | +------------------+
- device | subtype #Z | uint32 (e.g. ID for k3g_eur_open, 0x7d64f612)
- #1 +------------------+
- entry | hw_rev #Z | uint32 (e.g. k3g rev 10, 0x0000000A)
- | +------------------+
- | | hw_rev_end #Z | uint32 (e.g. k3g rev_end 255, 0x000000FF)
- | +------------------+
- | | offset #Z | uint32 (byte offset from start/before MAGIC
- | +------------------+ to DTB entry, e.g. 0x0006c800)
- | | size #Z | uint32 (size in bytes of DTB blob
- | +------------------+ e.g. 110,592 bytes, 0x0001b000)
- | | space #Z | uint32 (0x00000020)
- x +------------------+
- | padding | variable length for next DTB to start on
- +------------------+ page boundary
- | DTB #1 | variable (start is page aligned)
- | |
- | |
- +------------------+
- | padding | variable length for next DTB to start on
- +------------------+ page boundary
- .
- .
- .
- +------------------+
- | DTB #Z (last) | variable (start is page aligned)
- | |
- | |
- +------------------+
|