27 Apr, 2020

40 commits

  • set the i.MX6DL default mtdids value as
    "nor0=8000000.nor,nand0=gpmi-nand", nandbcb can directly write to the
    nandboot partition after u-boot brings up.

    => nandbcb update $loadaddr nandboot 912384
    Device nor0 not found!
    current device is invalid, skip it and check the next one
    device 0 offset 0x0, size 0x912384
    Erasing at 0x3f00000 -- 100% complete.
    NAND fw write: 0x200000 offset, 0x916000 bytes written: OK

    Signed-off-by: Han Xu

    Han Xu
     
  • mtdparts quit when invalid mtd devices found. Add thes patches to skip
    the invalid devices, so NAND partitions can be alway found to burn boot
    images.

    For instance,

    On i.MX6DL Sabreauto, nand config u-boot didn't enable the weim nor, so
    parsing 8000000.nor leads to error:

    Device nor0 not found!

    With the patches, we can skip this invalid device and still get nand
    boot partition table:

    Device nor0 not found!
    current device is invalid, skip it and check the next one

    device nand0 , # parts = 5
    0: nandboot 0x04000000 0x00000000 0
    1: nandkernel 0x01000000 0x04000000 0
    2: nanddtb 0x01000000 0x05000000 0
    3: nandtee 0x01000000 0x06000000 0
    4: nandrootfs 0xf9000000 0x07000000 0

    active partition: nand0,0 - (nandboot) 0x04000000 @ 0x00000000

    Signed-off-by: Han Xu
    (cherry picked from commit e674896123983e152ef3cc9d1304b775e5086a5e)

    Han Xu
     
  • add a new option in mtdparts to skip the invalid devices rather than
    just quit

    Signed-off-by: Han Xu
    (cherry picked from commit dbe3763931e536cba4925fdd04fda39cc748fc1c)

    Han Xu
     
  • Change-Id: I5969217e400ab494f9a74662d1d228fcf2e2d465
    (cherry picked from commit 92c762e1b80b3b12852e3f766cdb16a6be3cbbf8)

    Leonid Lobachev
     
  • imx8mn speed grade fuse uses new definitions as below. So have
    to update get_cpu_speed_grade_hz function to match it.

    SPEED_GRADING[5:0]:
    SPEED_GRADE[5:4] SPEED_GRADE[3:0] MHz
    xx 0000 2300
    xx 0001 2200
    xx 0010 2100
    xx 0011 2000
    xx 0100 1900
    xx 0101 1800
    xx 0110 1700
    xx 0111 1600
    xx 1000 1500
    xx 1001 1400
    xx 1010 1300
    xx 1011 1200
    xx 1100 1100
    xx 1101 1000
    xx 1110 900
    xx 1111 800

    Signed-off-by: Ye Li
    (cherry picked from commit e4e9ba2e868ea1b55581bdc1b7096cfb9cc15009)
    (cherry picked from commit 53ab164d54379fded9203dc79d4534f426e735a2)

    Ye Li
     
  • Add DEK encapsulation support for imx8. The DEK blob is generated by the
    SECO through the SCFW API.

    Signed-off-by: Clement Faure
    (cherry picked from commit b785e44ce2d042c51386dadb6ec6693344a16fc6)

    Clement Faure
     
  • Introduce puts hook for dm serial driver.

    Change-Id: I75423998c7d8db20949bae6ac46a094dc62c9612
    Signed-off-by: Peng Fan
    Reviewed-by: Peng Fan
    Reviewed-by: Flynn xu
    (cherry picked from commit bb986d4ff2124285ec0d99a51a2702a53f485813)

    Peng Fan
     
  • Add DEK blob encapsulation support for IMX8M through "dek_blob" command.
    On ARMv8, u-boot runs in non-secure, thus cannot encapsulate a DEK blob
    for encrypted boot.
    The DEK blob is encapsulated by OP-TEE through a trusted application call.
    U-boot sends and receives the DEK and the DEK blob binaries through OP-TEE
    dynamic shared memory.

    To enable the DEK blob encapsulation, add to the defconfig:
    CONFIG_SECURE_BOOT=y
    CONFIG_FAT_WRITE=y
    CONFIG_CMD_DEKBLOB=y

    Signed-off-by: Clement Faure
    Reviewed-by: Ye Li
    (cherry picked from commit 7ffd25bddc89db30612f4e805d103c7d8dde5d95)

    Clement Faure
     
  • According to datasheet, there are totally 6 variant parts for imx8mn:
    Quad, Dual, Solo with core number changed.
    QuadLite, DualLite, SoloLite with core number changed and GPU disabled.

    Add the support for these variant parts
    1. Recognize the variant parts according to fuse
    2. Power down disabled cores
    3. Remove the cores node and disable GPU node from kernel DTB before
    entering kernel.
    4. Since the mscale dummy id has been used out, increase one more bit
    (bit 8) for cpu id.

    Signed-off-by: Ye Li
    Reviewed-by: Peng Fan
    (cherry picked from commit 144bd9ce223ead71e1726bea510242a3166f66ce)
    (cherry picked from commit 380370b5460cb3f5284828fe0aabc7cca29c3bcd)

    Ye Li
     
  • When download image through ROM API for stream mode (USB, eMMC fastboot).
    We uses tricky way to get the total image size:
    The spl_load_simple_fit is called but the data reading is invalid, so the image
    data is not really downloaded.
    We should not call HAB authenticate in this tricky way. Otherwise it
    will alway fail.
    This patch add a new flag SPL_FIT_BYPASS_POST_LOAD to skip the authentication
    only for this tricky using.

    Signed-off-by: Ye Li
    Reviewed-by: Peng Fan
    (cherry picked from commit 47b0cf6de06ff9b3e2b2755d5c8203210378b26a)
    (cherry picked from commit 3e50573a7007771586e737b343bdde4d98c21c23)

    Ye Li
     
  • Update below codes for DDR4 EVK:
    1. Change SPL to non-DM
    2. Add DM FEC ENET support
    3. Enable Flexspi NOR support
    4. Add USB typec host and device mode support

    Signed-off-by: Ye Li

    Ye Li
     
  • SION bit needs to be set when the pin are used for I2C.

    Signed-off-by: Peng Fan
    Reviewed-by: Ye Li
    (cherry picked from commit e74561bcaa67e11ed5889959ab22afb5a9885c82)
    (cherry picked from commit 192016dc33d2ab3a8e1e7c8348ce02d69416e290)

    Peng Fan
     
  • There is no DDR_SS_GPR0 exits on i.MX8MN, so skip setting
    this register on i.MX8MN.

    Signed-off-by: Jacky Bai
    (cherry picked from commit a8040bc4524687ca026b9960fda18eb19606dade)
    (cherry picked from commit fcf243f43045e40c63511d265591a92a8a7dd7cc)

    Jacky Bai
     
  • Add set clock parent support.
    Add ENET and flexspi related clocks to support assigned clocks

    Signed-off-by: Ye Li

    Ye Li
     
  • Sync the DTS and binding files with v5.4.y kernel.
    Some updates in u-boot:
    1. Add alias for flexspi, usbotg1 and usbotg2.
    2. Add usbotg2 nodes
    3. Add i2c force idle pins
    4. Update usbotg nodes to use excon

    Signed-off-by: Ye Li

    Ye Li
     
  • When enable CONFG_SPL_DM_USB_GADGET, sdp should use
    usb_gadget_initialize() and usb_gadget_release() to
    support DM gadget driver.

    Signed-off-by: Sherry Sun
    (cherry picked from commit 22b59b69af0bfc0a2aeff9a995252d58c77c3955)

    Sherry Sun
     
  • Enable GPT command to allow create gpt partitoin in uboot

    Signed-off-by: Frank Li
    (cherry picked from commit 85a14ccf76ace1ada4732b9d225af8313031f5e0)

    Frank Li
     
  • Since we have changed imx-mkimage flash_spl_container target
    to flash_spl, also update it in u-boot ahab document.

    Signed-off-by: Ye Li
    Acked-by: Peng Fan
    (cherry picked from commit f850d467db9cf3b9b58688b96f1b4d9d8632b07d)
    (cherry picked from commit 6b86e3f2f9dd7a29ee817119340ef61efb010cf6)

    Ye Li
     
  • The i2c gpio mux is not enabled, this causes i2c3 not work and all
    io expander devices on i2c3 not work. So we will meet such as
    "usb start" fail due to the VBUS is not power up.

    The patch add the i2c mux and i2c gpio mux configs. And remove codes of
    controlling i2c steering from board, since i2c gpio mux does same thing.

    Signed-off-by: Ye Li
    Reviewed-by: Peng Fan
    (cherry picked from commit 39183dc231e12c3072ffd9a37ac6a6616178e263)

    Ye Li
     
  • Previous patch "MLK-21885 lmb: Handle the overlap case for lmb reserve" adds
    the overlap support to lmb reserve. However, u-boot has some places to use the
    lmb_reserve when allocating memory in loading images. If we allowed overlap
    in this function, it means images loading address can overlap each other and
    cause the address check mechanism not work.

    So add another function to allow overlap and only use it for fdt reserved-memory
    nodes. The FDT reserved-memory is ok to merge with other reserved memory, since
    this won't break image loading address check.

    Signed-off-by: Ye Li
    (cherry picked from commit 2109dc2a4da592003ec62820f5bdfb6bd0899805)

    Ye Li
     
  • lmb reserve is used to reserve some memory so that when loading images
    (like kernel, dtb, initrd), images won't be loaded into the reserved memory.

    The problem in current lmb is it does not handle the overlap case. When adding
    a new reserved memory, if the memory region is overlap with regions already been
    added in lmb, it will fail. One example is reserved memory in DTB may overlap with
    u-boot relocate address. lmb reserves the u-boot relocate address firstly, so when
    adding reserved memory from DTB, we will meet failure.

    Actually if we handle the overlap case, we can resolve the overlap by using a max
    common region for the overlap regions. So that this case won't fail.

    Signed-off-by: Ye Li
    Reviewed-by: Peng Fan
    (cherry picked from commit 37d86c68816dffde3dc8dcda5b9d67a195b2f9c2)

    Ye Li
     
  • The latest mx7ulp evk board is renamed to EVKB board and has dedicated
    DTB files. Modify the kernel DTB names in u-boot to use the new DTB.

    Signed-off-by: Ye Li
    Acked-by: Peng Fan
    (cherry picked from commit 297a924ddaf456a5a175d9056c0bc45116cc49ce)

    Ye Li
     
  • When power on some sources in Video system, current timeout 10ms is
    too short and returns before SCU response. So increase the timeout
    to 1s.

    Signed-off-by: Ye Li
    (cherry picked from commit f9be201c9e20520a9362d5fcb2524c0cbfffb425)

    Ye Li
     
  • iMX8 has consective address for TCML and TCMU, so the M4 image size
    could exceed the TCML boundary and put its data section in TCMU.

    So change the size limitation in bootaux to 256KB to include TCMU.

    Signed-off-by: Ye Li
    Reviewed-by: Peng Fan
    (cherry picked from commit cdc80200841055b949677ae8633c6d64fe0d0985)
    (cherry picked from commit 086aa956a8e2a98aeb601eba337d02e7ad5076dc)

    Ye Li
     
  • As the M4 use different DDR memory size in normal android/car2 and car
    image, use different defconfig for car2 to decrease DDR memory
    reservation. So memory reserved for each M4 core is 8MB in car2 and
    normal android image. it's 32MB for car image.

    Change-Id: Idf608f539cd614a154c78e3a1af28eff1da5c1f2
    Signed-off-by: Zhang Bo
    Signed-off-by: Ye Li
    (cherry picked from commit 565f2204e7925d3bd25623ff1104a54ee0f8a601)

    Ye Li
     
  • Fix a typo in path provided for imx-mkimage iMX8QM and iMX8QXP directories.

    Reported-by: Marius Grigoras
    Signed-off-by: Breno Lima
    Reviewed-by: Ye Li
    (cherry picked from commit c75243c1a87a10f003377d9c144bcf412ba80440)
    (cherry picked from commit ee024325a0a32b248c4ddb4bb04768bcfb933694)

    Breno Lima
     
  • The commands included in introduction guide should not be used as
    reference for programming the SRK Hash fuses as they are in big
    endian.

    Add a note to avoid a possible mistake.

    Reported-by: Clement Le Marquis
    Signed-off-by: Breno Lima
    Reviewed-by: Ye Li
    (cherry picked from commit 137319826cc32d98a9b6890f35dd6670e104c2a5)
    (cherry picked from commit 03d49480f73ce62de4f759fe02dfcf82726b8b79)

    Breno Lima
     
  • Since commit 771b824728ca ("MLK-20919 imx8: ahab: Add command to
    close the chip") the U-Boot is able to move the lifecycle from
    NXP closed to OEM closed.

    Update AHAB guides to use U-Boot ahab_close command instead of SCFW CLI.

    As the procedure is now independent of SCFW terminal we can remove
    this condition from documentation.

    Signed-off-by: Breno Lima
    Reviewed-by: Ye Li
    (cherry picked from commit 6f93d877e1454024f666a4810d24148cf595429e)
    (cherry picked from commit 4f6bc59ff94de150611d82b45365d24d356f30ef)

    Breno Lima
     
  • Starting in L4.14.78 release, the OP-TEE CAAM driver does not set the
    JROWN_NS field in case LMID is locked.

    We need to include the Unlock MID command in CSF file otherwise device
    will fail to boot in HAB closed mode.

    Add section to avoid crash when OP-TEE is enabled.

    Reported-by: Frank Zhang
    Signed-off-by: Breno Lima
    Reviewed-by: Ye Li
    (cherry picked from commit af03284ad38bd03ef1f0d4942842629db93d2c11)
    (cherry picked from commit 66f05532d587e50631eef066c4190936e0d33583)

    Breno Lima
     
  • Partition creation will be done in xen, remove it from uboot.
    And add domu-android-auto property

    Signed-off-by: Peng Fan
    Reviewed-by: Flynn xu
    (cherry picked from commit 23f7a037d14d05c2eea5622bd8ffda2f23d04372)
    (cherry picked from commit 9646e5b095f4c79114eaa7d60bfa03504c7da172)

    Peng Fan
     
  • Since commit cf2acc5b7cde ("MLK-18942-2 imx8: ahab: Add ahab_status
    command") the U-Boot is able to display and parse the SECO events.

    Update AHAB guides to use U-Boot ahab_status command instead of
    SCFW CLI.

    Starting in SECO FW v0.2.0 engineering release an invalid image
    integrity is logged as an event in open mode. As ahab_status
    is able to return this event the note can be removed.

    Signed-off-by: Breno Lima
    Reviewed-by: Ye Li
    (cherry picked from commit 385ed19051a47f5858e8d326e5ee97f8a08a679d)
    (cherry picked from commit 4a88ca0aecec31d0877d7a620fa796a83387a195)

    Breno Lima
     
  • The set_priblob_bitfield command is enabled by selecting
    CONFIG_CMD_PRIBLOB.

    Fix typo in mx6_mx7_encrypted_boot.txt guide.

    Signed-off-by: Breno Lima
    (cherry picked from commit 99f9696ef5f7d1c0f93b7d910e884890fca6c973)
    (cherry picked from commit e3fbcaa744db8d4f0556c67c788ada939404a892)

    Breno Lima
     
  • Add new u-boot command "imx_tamper" to configure and check the tamper pins.
    The codes are used for reference and test. So command is disabled at default,
    user can enable it by adding CONFIG_IMX_TAMPER=y to defconfig

    The iMX7D has 10 tamper pins those can be used for SNVS tamper detection.

    Tamper 9 pin is NVCC_DRAM power switch for LPSR by default.
    It must be fused to tamper function by command
    => fuse prog -y 1 3 0x80000000
    Otherwise, SNVS power consumption would be high

    When tamper is detected, CPU can't enter/stay in SNVS mode,
    the tamper must be cleared and disabled before enter SNVS.

    Signed-off-by: Ye Li
    Signed-off-by: Shaojun Wang
    Acked-by: Peng Fan
    (cherry picked from commit d520e1c6067c08103a020b0bc19feb620473e543)
    (cherry picked from commit 4333529337a554352e1f9fb7486287dea31aeb79)

    Ye Li
     
  • The FAT16/12 has rootdir area before data area, and the clusters for
    rootdir are not mantained by FAT table. So we don't need to find empty
    cluster for next rootdir space, just use next dir cluster. And the FAT
    table don't need to update for this new dir cluster.

    Signed-off-by: Ye Li
    Acked-by: Peng Fan
    (cherry picked from commit 9e0a33cacc0a7926d46c0ca184498ae88278816e)
    (cherry picked from commit da50714d2f758bea31f223e7ccec56be54c00f18)

    Ye Li
     
  • Enable the FAT write when UUU support is enabled

    Signed-off-by: Frank Li
    Signed-off-by: Ye Li
    (cherry picked from commit 3d8b43c897cdb686322eeeb875494ed561bbbbed)

    Ye Li
     
  • The current U-Boot implementation includes SPL targets for i.MX8QM and
    i.MXQXP MEK boards:

    - imx8qxp_mek_spl_defconfig
    - imx8qxp_mek_spl_fspi_defconfig
    - imx8qm_mek_spl_defconfig
    - imx8qm_mek_spl_fspi_defconfig

    The U-Boot proper and ATF are included in an additional container being
    necessary a different procedure for signing the flash.bin image.

    Add a step-by-step guide covering the signing procedure.
    Add a CSF example for the 3rd container.

    Signed-off-by: Breno Lima
    Reviewed-by: Frank Zhang
    Reviewed-by: Marius Grigoras
    Reviewed-by: Utkarsh Gupta
    (cherry picked from commit 04505024d38eebbb5f39133b502c8e450ca40215)
    (cherry picked from commit b139f10ccec5c57164f7e07e33984c845ce58b60)

    Breno Lima
     
  • Add AHAB secure boot step-by-step guide for i.MX8 and i.MX8x families
    devices.

    Add 3 CSF example files:
    - Example to sign flash.bin only using SRK keys.
    - Example to sign flash.bin using a subordinate SGK key.
    - Example to sign Linux image only using SRK keys.

    Signed-off-by: Clement Le Marquis
    Reviewed-by: Frank Zhang
    Reviewed-by: Marius Grigoras
    Reviewed-by: Utkarsh Gupta
    (cherry picked from commit 7c46caba3b528b0399242f99612e5b094b1a4703)
    (cherry picked from commit 20016c156f4f4e618de9eff6f5b1fc6a1c871e2a)

    Clement Le Marquis
     
  • The AHAB is currently supported in i.MX8QXP and i.MX8QM devices.

    Add an introductory document containing the following topics:

    - AHAB Secure Boot Architecture
    - System Control Unit (SCU) introduction
    - Security Controller (SECO) introduction
    - i.MX8/8x secure boot flow
    - AHAB PKI tree generation
    - SRK Table and SRK Hash generation

    Signed-off-by: Breno Lima
    Reviewed-by: Frank Zhang
    Reviewed-by: Marius Grigoras
    Reviewed-by: Utkarsh Gupta
    (cherry picked from commit 6e9ceb2526bd4a45c6ff669afb086cc3a0627e6b)
    (cherry picked from commit d3534f1d0e9a0f777160a4a6732a30a2bb545733)

    Breno Lima
     
  • The imx8mm new fuse map uses 3bits SPEED_GRADE and add 2Ghz speed.

    SPEED SPEED_GRADE
    2000 ’100’
    1800 ’011’
    1600 ’010’
    1200 ’001’
    800 ’000’

    Signed-off-by: Ye Li
    (cherry picked from commit d747d5e2d055b1191166f5bf3395f7933023b323)
    (cherry picked from commit fb27a5a05757ccf9fbae56ab041a6428e339ea0f)

    Ye Li
     
  • Write magic number in board early init, and clear magic when booting
    Linux.

    This is to let XEN know the current EL1 code is U-Boot or Linux
    when reset/reboot. This is just a workaround because CM41 could not
    communicate with XEN now, even XEN knows that EL1 is reseting/rebooting.

    Signed-off-by: Peng Fan
    Reviewed-by: Flynn xu
    (cherry picked from commit 8132f6b5848d45cab795bb472d6484130985415d)
    (cherry picked from commit c9dc0848f0ccf01f3a7c048d1a309ab99c46bd48)

    Peng Fan