From c5f4aa0c3ec6d01c1693721b51382205467f30b0 Mon Sep 17 00:00:00 2001 From: Zhao Wei Liew Date: Sun, 21 Feb 2016 12:03:32 +0800 Subject: [PATCH] Update CM dtbTool This updates to the latest cm-13.0 revision, with support for dtb-v3 and other fixes. --- README.md | 2 +- dtbToolCM | Bin 22643 -> 27088 bytes dtbtool.txt | 115 +++++++++++++++++++++++++++++++++++++++++++--------- 3 files changed, 96 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 086eff9..78f548d 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ mkbootimg_tools Generating master DTB... completed -### dtbToolCM support dt-tag & dtb v2(https://github.com/CyanogenMod/android_device_qcom_common/tree/cm-11.0/dtbtool): +### dtbToolCM support dt-tag & dtb v2/3(https://github.com/CyanogenMod/android_device_qcom_common/tree/cm-13.0/dtbtool): dtbToolCM -s 2048 -d "htc,project-id = <" -o arch/arm/boot/dt.img -p scripts/dtc/ arch/arm/boot/ diff --git a/dtbToolCM b/dtbToolCM index 822ecae1414bdb28932e1d46d71f298e67ef68c5..40c691ea4887e459ef3477bdad9fd8db46e56f22 100755 GIT binary patch literal 27088 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 literal 22643 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 first smallest SID of existing pmic) + | +------------------+ + | | pmic1 #1 | uint32 (pmic1-> secondary smallest SID of existing pmic) + | +------------------+ + | | pmic2 #1 | uint32 (pmic2-> third smallest SID of existing pmic) + | +------------------+ + | | pmic3 #1 | uint32 (pmic3-> fourth smallest SID of existing pmic) + | +------------------+ | | offset #1 | uint32 (byte offset from start/before MAGIC | +------------------+ to DTB entry) | | size #1 | uint32 (size in bytes of DTB blob) @@ -98,8 +106,18 @@ Android - Table of Device Tree | +------------------+ device | variant id #Z | uint32 (e.g. ID for CDP, MTP) #Z +------------------+ - entry | soc rev #Z | uint32 (e.g. MSM8974 v2) + entry | subtype id #Z | uint32 (e.g. ID for subtype) (QCDT v2) (last) +------------------+ + | | soc rev #Z | uint32 (e.g. MSM8974 v2) + | +------------------+ + | | pmic0 #1 | uint32 (pmic0-> first smallest SID of existing pmic) + | +------------------+ + | | pmic1 #1 | uint32 (pmic1-> secondary smallest SID of existing pmic) + | +------------------+ + | | pmic2 #1 | uint32 (pmic2-> third smallest SID of existing pmic) + | +------------------+ + | | pmic3 #1 | uint32 (pmic3-> fourth smallest SID of existing pmic) + | +------------------+ | | offset #Z | uint32 (byte offset from start/before MAGIC x +------------------+ to DTB entry) | 0 ("zero") | uint32 (end of list delimiter) @@ -125,25 +143,63 @@ Android - Table of Device Tree 3) Operations ------------- 3.1) Build-time: - 1) Each DTS per device will add a "qcom,msm-id" triplet + 1) Each DTS per device will add a "qcom,msm-id" entry e.g. for msm8974-sim.dts, add - qcom,msm-id = ; - x = ID for msm8974 - y = ID for CDP, MTP, etc. - z = ID for soc revision - The triplet can optionally be an array of triplets: - qcom,msm-id = , , ...; + qcom,msm-id = ; + or + qcom,msm-id = ; + qcom,board-id = ; + or + qcom,msm-id = ; + qcom,board-id = ; + qcom,pmic-id = ; + x = ID for msm8974 + y = ID for CDP, MTP, etc. + y' = ID for subtype (assumed zero if absent) + z = ID for soc revision + a = pmic0 + b = pmic1 + c = pmic2 + d = pmic3 + SBL populates the pmic entries always in ascending order of SID, so + pmic0-> SID0, pmic1-> SID1, pmic2-> SID2, pmic3-> SID3. + e.g. for qcom,pmic-id = + Board X = MSM8994 + PM8994 + PMI8994 (Existing boards [ROW]) + Board Y = MSM8994 + PM8994 + PMI8994 + PM8004 (Internal SS board variant) + Board Z = MSM8994 + PM8994 + PM8004 (Boards that SS will be making) + + For all boards X, Y, and Z, PMICs have the following SIDs and REVID SUBTYPEs + (i.e. PMIC Model): + PM8994 - SID 0 and 1; subtype = 9 + PMI8994 - SID 2 and 3; subtype = 10 + PM8004 - SID 4 and 5; subtype = 12 + + LK using SMEM PMIC info(1 as major and 0 as minor version for example): + Board X: qcom,pmic-id = <0x0109 0x010A 0x0 0x0>; + Board Y: qcom,pmic-id = <0x0109 0x010A 0x010C 0x0>; + Board Z: qcom,pmic-id = <0x0109 0x010C 0x0 0x0>; + + The entry can optionally be an array: + qcom,msm-id = , , ...; + or + qcom,msm-id = , , ...; + qcom,board-id = , ...; + or + qcom,msm-id = , , ...; + qcom,board-id = , ...; + qcom,pmic-id = , ...; + Note that qcom,msm-id, qcom,board-id and qcom,pmic-id are not matched pairs. 2) Kernel compile will generate the DTB 3) Android build will run a new tool (dtbTool) a) scan the DTB output directory for all compiled DTB - b) decompile the DTB for "qcom,msm-id" + b) decompile the DTB for "qcom,msm-id"/"qcom,board-id"/"qcom,pmic-id" c) generate the QC table of device tree in sorted - order (platform, variant, soc rev) + order (platform, variant, subtype, soc rev, pmic0, pmic1, pmic2, pmic3) d) modified mkbootimg will merge new table of DT 3.2) Run-time: - 1) LK bootloader will obtain MSM id/variant/soc rev info - either from early bootloaders or via other means + 1) LK bootloader will obtain platform id/variant/subtype/soc rev/major ver/minor ver + /pmic0/pmic1/pmic2/pmic3 info either from early bootloaders or via other means 2) LK bootloader will check entries #10 for non-zero value (set to zero for standard boot.img). If the value is non-zero, refer to page section after @@ -153,9 +209,28 @@ Android - Table of Device Tree QCDT version) 5) LK scans through the QCDT table to look for matching entry. Search order is: - 1) platform ID exact match - 2) variant ID exact match - 3) select the highest soc rev in QCDT that is + 1) msm ID exact match + 2) Platform type exact match + 3) subtype ID exact match + 4) HLOS subtype exact match + 5) Pmic0 model ID exact match + 6) Pmic1 model ID exact match + 7) Pmic2 model ID exact match + 8) Pmic3 model ID exact match + 9) foundry ID, look for exact match, if not found choose + device tree with foundry-id(0x0) + 10) select the highest soc rev in QCDT that is equal to or lower than the runtime detected soc rev + 11) select the highest major&minor ver in QCDT that is + equal to or lower than the runtime detected major ver + 12) select the highest pmic0 major&minor in QCDT that is + equal to or lower than the runtime detected pmic0 + 13) select the highest pmic1 major&minor in QCDT that is + equal to or lower than the runtime detected pmic1 + 14) select the highest pmic2 major&minor in QCDT that is + equal to or lower than the runtime detected pmic2 + 15) select the highest pmic3 major&minor in QCDT that is + equal to or lower than the runtime detected pmic3 6) Load the matching DTB blob to the tags addr 7) LK pass the correct DTB to the kernel + \ No newline at end of file