Commit Graph

4646 Commits

Author SHA1 Message Date
Andrejs Cainikovs 8ca326d9a4 nmhw23: port changes to NXP branch 2019-06-05 12:26:32 +02:00
Adrian Negreanu 15ecd669ac env variable to specify androidboot.storage_type
The boota command boots an Android already written to mmc/emmc.
It calls get_boot_device() to figure out where to look for Android;
but when a board is booted over serial, get_boot_device() returns
an invalid boot mode.

Explicitly setting the storage_type will enable boota on
a board booted over serial.

   FB: ucmd setenv storage_type emmc
   FB: ucmd boota

Signed-off-by: Adrian Negreanu <adrian.negreanu@nxp.com>
2019-03-20 09:17:31 +02:00
Ji Luo 24e33164cb MA-14120 Add config to guard append bootargs support
Grant user the permission to change the bootargs can be very
dangerous, so add config 'CONFIG_APPEND_BOOTARGS' to guard the
bootargs appending feature.

Test: bootargs can't be appended if "CONFIG_APPEND_BOOTARGS" is
      not set.

Change-Id: I6d6879415ca251c806b56490290e5032aef24277
Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-02-22 10:14:10 +08:00
Ye Li cad69cc0f5 MLK-20945-4 imx8: Update container parser for RAW NOR SPL
Since FSPI is assigned to M4 partition, A core only can read it from its
memory-map address. So we have to enable SPL NOR which won't access
flexspi driver.

Update SPL container parser for the RAW NOR support.

Signed-off-by: Ye Li <ye.li@nxp.com>
(cherry picked from commit 7ea7a16fd892558098fb8cbea134ac275d1220d3)
2019-02-19 00:46:36 -08:00
Ji Luo 71562aae3b MA-13938 [Android] imx8q: Support dual bootloader feature
Support dual bootloader feature for imx8q which uses the
container format. Move the A/B slot select and verify to
SPL stage, the bootloader rollback index will be stored
at the last 8K bytes of eMMC rpmb storage.

Test: Boot and rbindex verify pass on imx8q.

Change-Id: I0a48210f65984a083037a0cd3f9558951029ed7d
Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-01-18 12:07:21 +08:00
Ye Li ca7ebfcf07 MLK-20664-2 imx8/imx8m: Disable the SPL RAW image support
The RAW image support must be disabled, otherwise a RAW image can be used
to bypass FIT image.

Signed-off-by: Ye Li <ye.li@nxp.com>
2019-01-16 02:17:43 -08:00
Ye Li 4b2850ccfd MLK-20664-1 imx8qxp: spl: Enable SPL container support for NAND
Add the NAND support to SPL container parser and enable it for imx8qxp arm2
nand reworked board.
The SPL NAND will read from nandfit mtdpart (128MB offset) to parsing the entire
boot image and get the 3rd container from it. This requires burning tool (uuu)
to program the entire boot image into nandfit.

Signed-off-by: Ye Li <ye.li@nxp.com>
2019-01-16 02:17:43 -08:00
Ye Li 1f6b3efc62 MLK-20559-5 f_sdp: Add a callback to clean up USB driver
Because SDP directly jumps to next level boot image, we'd better
clean up the USB driver before it. Implement a weak callback function,
that spl sdp can use it to clean up USB driver.

Signed-off-by: Ye Li <ye.li@nxp.com>
2019-01-08 21:46:31 -08:00
Ye Li dba0d7c7dc MLK-20559-1 spl_sdp: Add CONFIG_SPL_SDP_USB_DEV for USB device
Add a new configuration CONFIG_SPL_SDP_USB_DEV to specify the
usb index for spl sdp driver, so that we change use different device.
The default value is 0.

Signed-off-by: Ye Li <ye.li@nxp.com>
2019-01-08 21:46:31 -08:00
yang.tian 3957eaafc0 MA-13879-2 Revert adding bootargs for multi-vendor of 8mm
Remove this patch to specify wifi vendor info from uboot,
instead we directly add the bootargs in cmdline.

Revert commit 9f1a11bdc3
MA-13879[wifi concurrency] Add bootargs to set a
property for wifi vendor of 8mm

Change-Id: Icf7e89df2b4993f6e17a6b7cf38b891591f680d7
Signed-off-by: yang.tian <yang.tian@nxp.com>
2019-01-07 16:22:53 +08:00
yang.tian 9f1a11bdc3 MA-13879[wifi concurrency] Add bootargs to set a property for wifi vendor of 8mm
Since evk_8mm will support both QCA9377 and BCM43455 wifi,
add bootargs to pass a property to differ which wifi is used.

Change-Id: I83f7fd657dbdedc54931148cd6dd3d59563b6ec3
Signed-off-by: yang.tian <yang.tian@nxp.com>
2019-01-03 10:33:00 +08:00
Ji Luo fc734f07d7 MA-13759-1 imx8mm: Enable trusty support
Open configs to enable trusty for imx8mm_evk and also
add new config imx8mm_evk_android_trusty_defconfig based
on imx8mm_evk_android_defconfig.

Test: Trusty starts ok.

Change-Id: Iaea90de21f886ed23082a5e8e8d2fa7fb139a9cb
Signed-off-by: Ji Luo <ji.luo@nxp.com>
2018-12-12 21:02:10 +08:00
yang.tian 6e57497c14 MA-13748 Pass BDADDR from uboot cmdline
Pass bt mac address from uboot cmdline to write
ro.boot.btmacaddr property for bluetooth hal to parse
BDADDR which is composed from ro.boot.serialno,
or it will fall back to persist property seted in init.rc.

Change-Id: If6886596c79c699b8530d3249b1cc98f19aad51f
Signed-off-by: yang.tian <yang.tian@nxp.com>
2018-12-11 17:56:06 +08:00
Ji Luo d7c768a690 MA-13628 [Auto] Read/Write rollback index from rpmb
Secure storage is ready in trusty so we should read/write the rollback
index from rpmb.
But for borads without rpmb key, read/write the rpmb will fail and will
block the following avb verify process. In this case, check if the rpmb
key has been set and always return AVB_IO_RESULT_OK for the boards without
rpmb key.

Test: build and boot pass on imx8qm_mek.

Change-Id: I10c438e56d049ae97ebedfc446c8202642630d8b
Signed-off-by: Ji Luo <ji.luo@nxp.com>
2018-12-04 09:53:12 +08:00
faqiang.zhu c258131f49 MA-13588 Fix build warning caused by previous android SPL+CONTAINER patch
compile waring info is as below:
	arch/arm/mach-imx/imx8/parser.c: In function ‘mmc_load_image_parse_container’:
	arch/arm/mach-imx/imx8/parser.c:244:1: warning: control reaches end of non-void function [-Wreturn-type]
	}
	^

previouse patch change ID:
I40a791d5b5b1eba6a0170d6853626fb546be4b2c

Change-Id: Ia605df11beab42e720fff6442a11b1e4b25ac209
Signed-off-by: faqiang.zhu <faqiang.zhu@nxp.com>
2018-11-28 12:00:41 +08:00
Ye Li 710efd3ccb MLK-20467 imx8m: Fix issue for booting signed image through uuu
The SPL loads the FIT image FDT part to an address related with the device
block length. This length is 512 for SD/MMC and is 1 for other devices
like SDP, NOR, NAND, SPI, etc.
When signing FIT image, we use fixed address caculated by SD/MMC block length
to sign FDT part. Thus, when booting through uuu, this causes mismatch and
gets authentication failed.

Fix the issue by providing a override function for this FIT buffer address.
When secure boot is enabled, adjust the addresses of other devices to be same
with SD/MMC.

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
2018-11-27 02:55:50 -08:00
Ye Li 7843ab1b61 MLK-20442 imx8qm/qxp: Fix SPL crash when authentication is failed
When booting SPL from SD/MMC, the codes load and parse container image
first, if its authentication is failed, the flow continues to load and parse
for FIT image and cause crash in SPL.

The correct way should stop the booting if authentication is failed, avoid
trying the FIT image since FIT does not support AHAB on 8QM/QXP.

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
2018-11-22 17:33:54 -08:00
Ji Luo eb1892df16 MA-13480-1 [Auto] Fix XEN hang with wrong keymaster service
Pass "androidboot.keystore=trusty" for trusty backed keymaster
service, pass "androidboot.keystore=software" for software
keymaster service.

Test: boot pass on imx8qm_mek.

Change-Id: I9fa38c15a7c10aef09ab29b0e9859b690e3e7a41
Signed-off-by: Ji Luo <ji.luo@nxp.com>
2018-11-21 10:51:19 +08:00
Ye Li bc23ae569c MLK-20356-1 common: Fix resource leak in sparse image writting
Fix coverity issue CID 18031: Resource leak (RESOURCE_LEAK)
leaked_storage: Variable fill_buf going out of scope leaks the storage it points to

Should free the fill_buf before function return.

Signed-off-by: Ye Li <ye.li@nxp.com>
2018-11-14 01:13:02 -08:00
Ji Luo 2e419edbe5 [iot] Load Trusty to different address for AIY 1G/3G ddr board
Trusty image should be loaded to different address for AIY 1G/3G ddr
board which have different ddr size. Use board id to distinguish
different baseboard, load trusty image to 0x7e00_0000 for AIY 1G ddr
board and 0xfe00_0000 for AIY 3G ddr board.

Test: build and boot Trusty ok for AIY 1G/3G ddr board.

Change-Id: I62d8a19b13fe19f38075512a6faa4bbb36f74791
Signed-off-by: Ji Luo <ji.luo@nxp.com>
2018-11-12 09:18:36 +08:00
faqiang.zhu 434e104b7d Set different bootargs for imx8m_phanbell based on ram capacity
for 1GB ram: cma=296M galcore.contiguousSize=8388608
for 3GB ram: cma=384M
Test: Boot successfully on AIY-1G & AIY-3G

Change-Id: If082d5b751b5a5e06efe301c0b8e49ec4ac3dfb7
Signed-off-by: faqiang.zhu <faqiang.zhu@nxp.com>
Reviewed-on: http://androidsource.ap.freescale.net/project/5262
Reviewed-by: Wang Haoran <elven.wang@nxp.com>
Signed-off-by: faqiang.zhu <faqiang.zhu@nxp.com>
2018-11-12 09:18:34 +08:00
Abel Vesa 2bd8277fd7 MLK-20233 spl_spi: Add QSPI boot device support to the container parser
Before parsing the image header, try to check if there is a container and
validate it first. If no (valid) container then as a fall-through parse
the image as before.

Signed-off-by: Abel Vesa <abel.vesa@nxp.com>
Reviewed-by: Ye Li <ye.li@nxp.com>
2018-11-09 11:45:15 +02:00
Abel Vesa c853049068 MLK-20233 arch: imx8: Add container parser for loading ATF and uboot proper
This intends to replace the FIT image support since that cannot be
authenticated. Instead, we append another container at the end of
flash.bin, this new one containing a new container with two
images representing the ATF and uboot proper.

Signed-off-by: Abel Vesa <abel.vesa@nxp.com>
Reviewed-by: Ye Li <ye.li@nxp.com>
2018-11-07 15:56:52 +02:00
Ji Luo 8cd43400c1 MA-13276 [Auto] Generate key blob when set the rpmb key
Generate the key blob and store it to the last block of boot1 partition
after setting the rpmb key. The key blob should be checked in spl and be
passed to Trusty OS if it's valid. If the key blob are damaged, RPMB
storage proxy service will return fail and should make the device hang.

Test: Build and boot ok on imx8qm/qxp.

Change-Id: Ia274cd72109ab6ae15920e91b2a2008e1f1e667c
Signed-off-by: Ji Luo <ji.luo@nxp.com>
2018-11-02 20:50:09 -05:00
Teo Hall fe6af14493 MLK-19877-1: iMX8QXP: Add NAND SPL support
Add implementation necessary for supporting SPL on QXP
ARM2 board with dynamic offset detection from container header.

Signed-off-by: Teo Hall <teo.hall@nxp.com>
2018-11-02 20:50:08 -05:00
Frank Li 0809067062 MLK-19969 fastboot: write to wrong position when size bigger than 4GB
chunk_data_sz = sparse_header->blk_sz * chunk_header->chunk_sz;
All is uint32. chunk_data_sz may be bigger than 4G.

Change chunk_data_sz to 64bit.
force chunk_header->chunk_sz and sparse_header->blk_sz to 64bit.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
Acked-by: Ye Li <Ye.Li@nxp.com>
2018-10-18 10:57:27 -05:00
Abel Vesa 80d961517f common: spl_mmc: Allow FIT image raw loading
If SPL is built with CONFIG_SPL_LOAD_FIT make the checking for
FIT image. If there is no FIT image go with the raw default mode.

Signed-off-by: Abel Vesa <abel.vesa@nxp.com>
2018-10-16 09:52:40 +03:00
Ji Luo b8296e64d2 MA-12973 [AUTO] Skip serial init in board_init_f
Serial init in board_init_f will cost much time, skip it here
because the serial will be initialized again in board_init_r
and it's more faster (after cache is enabled). We will miss
some logs before the serial is ready but it's ok for Android Auto.
This commit will save about 190ms on imx8qm.

Test: boot ok for both imx8qm and imx8qxp.

Change-Id: If6efdc19794aecda862f22b6fec7f7aba2005766
Signed-off-by: Ji Luo <ji.luo@nxp.com>
Reviewed-by: Ye Li <ye.li@nxp.com>
2018-10-08 10:01:06 +08:00
Ji Luo 4d7f5fd7af MA-12943 [VTS] Fix firmware dtbo verify fail
VTS need commandline 'androidboot.dtbo_idx=<dtb_index_in_dtbo>'
to verify fdt overlay. Pass the dtb index as "0" here since we
only have one dtb in dtbo partition and haven't enabled the dtb
overlay.

Test: VTS case "VtsFirmwareDtboVerification#testVerifyOverlay" pass
      on imx8mq and imx8qxp.

Change-Id: I33b089bf5a945e0b558bbb189b183a38f145dcbe
Signed-off-by: Ji Luo <ji.luo@nxp.com>
2018-09-28 10:21:11 +08:00
Ji Luo d71dcb9175 MA-12915 [AUTO] Only print kernel command line in debug mode
Print the kernel command line in normal mode will consume about
122ms on imx8qm, move the log print to debug mode to save some
boot time.

Change-Id: I5996555cf3f210be8ea25111d2bc84e0d06caa5c
Signed-off-by: Ji Luo <ji.luo@nxp.com>
2018-09-27 14:23:21 +08:00
Haoran.Wang a0759c1bd7 MA-12886 Set keymaster HAL to trusty when use Trusty OS
When use Trusty OS, set the property keymaster HAL to
use the Trusty OS backed one.
This patch make the bootloader able to control the Android
Keymaster HAL.

Change-Id: I0a533c12b99824ef499ce642cf87c22d72b51503
Signed-off-by: Haoran.Wang <elven.wang@nxp.com>
2018-09-26 09:17:04 +08:00
Abel Vesa c70afc348e MLK-19219-4 iMX8QXP/QM: Add support to get container image set size from QSPI
This transforms almost all related functions from mmc specific to device
independent. This allows the container size to be computed from QSPI and other
future devices that will be supported for boot.

Signed-off-by: Abel Vesa <abel.vesa@nxp.com>
Reviewed-by: Ye Li <ye.li@nxp.com>
2018-09-18 09:47:48 +03:00
Luo Ji 028b25c768 MA-12703 Android: Read bootargs from u-boot dts
Load bootargs from the "/chosen/bootargs" dts node
and combine it with the bootargs in bootimage header.

Change-Id: I68c9b0d53fff1f51c4d91aa513dfd38b5d9650d4
Signed-off-by: Luo Ji <ji.luo@nxp.com>
2018-09-13 16:10:01 +08:00
Ji Luo 02b8787d0d MA-12335 Canonical Boot Reason in Android Pie 9.0
Read boot reason from SRC(system reset controller) and report
it to kernel by "androidboot.bootreason=<>" kernel commandline.
This is enabled on imx6/7/7ulp/8m, imx8 will report default value
"androidboot.bootreason=reboot" since it can't get such info on
A core at u-boot stage.

Test: Boot reason report ok on imx6qp/imx7ulp/imx8qxp.

Change-Id: I03effaa03bc513bec6153e82c1a04e29c07e7db8
Signed-off-by: Ji Luo <ji.luo@nxp.com>
2018-09-11 12:19:40 +08:00
faqiang.zhu 5d74621687 MA-12283-2 fix issue of imx6 boot from SD card when use uuu
get_boot_device() for imx6 series can't judge the chips is boot from USB
or not. So, when use uuu, "bootcmd" parameter will get the same value as
boot from SD card, so if the SD card has image in it, uboot will not
enter fastboot mode when use uuu. This patch use is_boot_from_usb(void)
to judge whether boot from USB then change the "bootcmd" parameter
accordingly.

Change-Id: I366aca2e32eab67193f45798abd142b2d5cb86bc
Signed-off-by: faqiang.zhu <faqiang.zhu@nxp.com>
2018-09-04 19:28:20 +08:00
Ji Luo 62105d0684 MA-12492 Remove some redundant codes for android
Some redundant codes are added after cherry-picking android
related commits from imx_v2017.03, remove them in this commit.

Test: build and boot pass on imx6q_sabresd.

Signed-off-by: Ji Luo <ji.luo@nxp.com>
2018-08-22 17:36:44 +08:00
Ye Li 8aaafd9742 MLK-19263-3 imx8m: Enable CONFIG_SPL_FIT_IMAGE_TINY for iMX8MQ/MM
If we don't define CONFIG_SPL_FIT_IMAGE_TINY, when loading images from FIT,
the SPL will record all loadables' info to u-boot's FDT. This causes
problem when HAB is enabled, because FDT's content is modified before
we authenticate it.

Signed-off-by: Ye Li <ye.li@nxp.com>
2018-08-21 02:25:34 -07:00
Luo Ji a3f5218d38 [iot] Support rollback index protection at SPL stage
Bootloader image take fit format and the rollback index for bootloader
is stored at the "rbindex" node, SPL will read the rollback index for
bootloader and compare it with the one stored in RPMB. The stored
rollback index will be updated only when current slot pass the verify
and has been marked as successful.

Bug:109947126
Test: Rollback index protection feature works fine for imx8m.

Change-Id: Ic12db4571287fbcb99e5eba0127e0b09378fa5d6
Signed-off-by: Luo Ji <ji.luo@nxp.com>
2018-08-21 09:44:32 +08:00
Luo Ji dbcf1e3cc0 [iot] Support dual bootloader in SPL
Move the A/B slot check to SPL, the A/B slot switch
workflow is just like what we have in libavb_ab.

Test: A/B select works fine on imx8m.

Change-Id: Ie3d827a9be0298b491bf2bc8d48833597fd70e90
Signed-off-by: Luo Ji <ji.luo@nxp.com>
2018-08-20 21:31:28 +08:00
Luo Ji 4d69389794 MA-12124 [Android] Fix build warnings for u-boot
Fix build warnings in u-boot.

Change-Id: I1944657d2d89a03c0d2303a22a09538dfaa5fd2c
Signed-off-by: Luo Ji <ji.luo@nxp.com>
2018-08-20 21:25:48 +08:00
Ye Li 9f2ffbe414 MLK-19219-1 spl: Add function to get u-boot raw sector
Add a weak function spl_mmc_get_uboot_raw_sector to get u-boot raw sector.
At default it returns CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR. Users
can overwrite it to return customized offset.

Signed-off-by: Ye Li <ye.li@nxp.com>
2018-08-14 19:55:55 -07:00
Frank Li ab6696c4f7 MLK-19181-1: sdp: call board_usb_init at spl_sdp_load_image
Need initialize UDC before run sdp download

Signed-off-by: Frank Li <Frank.Li@nxp.com>
2018-08-10 12:10:31 -05:00
Abel Vesa e6aa0a71dd MLK-19183-8 iMX8QXP SPL: common: spl: Hack for allowing raw ATF image booting
Since the default way to boot ATF from SPL is by using a FIT blob, this hack
allows us to boot raw ATF image, without checking anything in the header of the
image since is non-existent.

Signed-off-by: Abel Vesa <abel.vesa@nxp.com>
2018-08-09 15:18:18 -05:00
Frank Li d39fd3f88c MLK-18257-4 use another method check if need run bootcmd_mfg
Signed-off-by: Frank Li <Frank.Li@nxp.com>
(cherry picked from commit 09b1876fa4c74f8bd9b1efbf17ab8ab012a14555)
2018-06-13 03:06:49 -07:00
Ye Li 1ae9ecc73f MLK-18591-6 android: iot: Add boot Trusty OS codes for imx6 and imx7
Use trusty_os_init to load Trusty OS from CONFIG_TRUSTY_OS_ENTRY
before u-boot ready.

Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Haoran.Wang <elven.wang@nxp.com>
2018-06-13 03:06:47 -07:00
Ye Li 2c840c82b3 MLK-18591-3 android: Add FSL android fastboot support
Porting the FSL android fastboot features from imx u-boot v2017.03 to
support all SoCs: imx6/imx7/imx7ulp/imx8/imx8m

Signed-off-by: Ye Li <ye.li@nxp.com>
2018-06-13 03:06:25 -07:00
Ye Li 2105662ada MLK-18591-1 android: Add the AVB library
Porting the android AVB lib from imx u-boot v2017.03

Signed-off-by: Ye Li <ye.li@nxp.com>
2018-06-13 02:41:08 -07:00
Peng Fan 288c8eedb0 MLK-18333-1 spl: nor: add fit image support
Extend spl_nor to support FIT image loading.
CONFIG_SYS_UBOOT_BASE is the Uboot location in NOR memmap address.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
(cherry picked from commit 60e943cd1a7c248eccc8892073efdada588a208d)
2018-05-23 04:15:58 -07:00
Ye Li b08a044d92 MLK-16758-4 SPL: Add HAB image authentication to FIT
Introduce two board level callback functions to FIT image loading process, and
a SPL_FIT_FOUND flag to differentiate FIT image or RAW image.

Implement functions in imx common SPL codes to call HAB funtion
to authenticate the FIT image. Generally, we have to sign multiple regions
in FIT image:
1. Sign FIT FDT data (configuration)
2. Sign FIT external data (Sub-images)

Because the CSF supports to sign multiple memory blocks, so that we can use one
signature to cover all regions in FIT image and only authenticate once.
The authentication should be done after the entire FIT image is loaded into
memory including all sub-images.
We use "-p" option to generate FIT image to reserve a space for FIT IVT
and FIT CSF, also this help to fix the offset of the external data (u-boot-nodtb.bin,
ATF, u-boot DTB).

The signed FIT image layout is as below:
--------------------------------------------------
|     |     |     |   |           |     |        |
| FIT | FIT | FIT |   | U-BOOT    | ATF | U-BOOT |
| FDT | IVT | CSF |   | nodtb.bin |     |   DTB  |
|     |     |     |   |           |     |        |
--------------------------------------------------

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
(cherry picked from commit 078dd4eed6a04c3db7ec49a1bd1fbc63ebb82e1b)
2018-04-27 02:32:17 -07:00
Ye Li a92c4806bc MLK-18157 mfgtool: Add mfgtool support
If boot from usb, reset environment to default value.
Auto apply mfgtools setting and boot mfgtools kernel.

Only add for mx6, the mx7 and mx7ulp have implemented
relevant USB functions in soc level.

Signed-off-by: Ye Li <ye.li@nxp.com>
2018-04-27 02:30:47 -07:00