summaryrefslogtreecommitdiff
path: root/drivers
AgeCommit message (Collapse)Author
2019-03-19mmc: Do not poll using CMD13 when changing timingMarek Vasut
When using CMD6 to switch eMMC card timing from HS200/HS400 to HS/legacy, do not poll for the completion status using CMD13, but rather wait 50mS. Once the card receives the CMD6 and starts executing it, the bus is in undefined state until both the card finishes executing the command and until the controller switches the bus to matching timing configuration. During this time, it is not possible to transport any commands or data across the bus, which includes the CMD13. Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Jaehoon Chung <jh80.chung@samsung.com>
2019-03-19mmc: Add support for downgrading HS200/HS400 to HS modeMarek Vasut
The mmc_select_mode_and_width() function can be called while the card is in HS200/HS400 mode and can be used to downgrade the card to lower mode, e.g. HS. This is used for example by mmc_boot_part_access_chk() which cannot access the card in HS200/HS400 mode and which is in turn called by saveenv if env is in the MMC. In such case, forcing the card clock to legacy frequency cannot work. Instead, the card must be switched to HS mode first, from which it can then be reprogrammed as needed. However, this procedure needs additional code changes, since the current implementation checks whether the card correctly switched to HS mode in mmc_set_card_speed(). The check only expects that the card will be going to HS mode from lower modes, not from higher modes, hence add a parameter which indicates that the HS200/HS400 to HS downgrade is happening. This makes the code send the switch command first, reconfigure the controller next and finally perform the EXT_CSD readback check. The last two steps cannot be done in reverse order as the card is already in HS mode when the clock are being switched on the controller side. Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Jaehoon Chung <jh80.chung@samsung.com>
2019-03-15MA-14379 [coverity] Resource leak (RESOURCE_LEAK)Luo Ji
Fix coverity issue: CID 2970630: Resource leak (RESOURCE_LEAK) leaked_storage: Variable cdns going out of scope leaks the storage it points to. Memory allocated by devm_kzalloc() won't be freed automatically in u-boot, free the memory manually here. Test: Coverity scan pass. Change-Id: I3000a2385941cef3b8b7e01611cfdc999971a4ca Signed-off-by: Luo Ji <ji.luo@nxp.com>
2019-03-15MA-14370 [coverity] Buffer not null terminatedLuo Ji
Fix coverity issue: CID 43787: Buffer not null terminated (BUFFER_SIZE_WARNING) buffer_size_warning: Calling strncpy with a maximum size argument of 32 bytes on destination array sdev.name of size 32 bytes might leave the destination string unterminated. Test: Coverity scan pass. Change-Id: Ib10e631bab893cb9cd1484082229f806b02849ba Signed-off-by: Luo Ji <ji.luo@nxp.com>
2019-03-15MA-14322 [coverity] Uninitialized scalar variableLuo Ji
Fix coverity issue: CID 1477258: Uninitialized scalar variable (UNINIT) uninit_use_in_call: Using uninitialized value txbuf when calling __fswab32. Test: Coverity scan pass. Change-Id: If57f70c272ef49a6636a59ae3b5dcc5430fd1753 Signed-off-by: Luo Ji <ji.luo@nxp.com>
2019-03-12MA-14318-1 Support dual bootloader for xenJi Luo
Trusty is not supported for xen so we don't need to check the keyslot package or rollback index in spl. Reassign the dram address for spl and u-boot to avoid conflicts. Support serial init functions to enable debug console in spl when xen is running. Test: Boot and A/B slot switch on imx8qm_mek. Change-Id: If6829252f1ec2e32255f951715c8747181951fd0 Signed-off-by: Ji Luo <ji.luo@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
2019-03-11MLK-20958-2 imx8: Replace SC_R_LAST with SC_R_NONE in DTBLeonard Crestez
We are currently using SC_R_LAST as a marker for imx8 power domain tree nodes without a resource attached. This value is compiled into dtb as part of the linux build and used by uboot. The SC_R_LAST constant changes frequently as SCFW resources are added (by design) and every time we need to update linux and uboot headers together or boot can fail. Fix this by replacing SC_R_LAST usage with a new constant SC_R_NONE defined to be 0xFFF0. Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
2019-03-08MLK-21055 usb: dwc3: gadget: disable U1 and U2Li Jun
Currenlty U1 and U2 low power modes are allowed in device mode. Allowing U1 and U2 low power modes during data transfers in device mode is causing U1 exit failure on some USB3 host: which will transite to SS.inactive instead of U0, then host will send warm reset and ultimately result in reenumeration. This is observed on UUU tool with some PC host. Hence disable U1 and U2 low power modes for now. USB3 spec 7.5.10.4.2 Exit from Recovery.Configuration The port shall transition to eSS.Inactive when the following conditions are met: 1. Either the Ux_EXIT_TIMER or the 6-ms timer (tRecoveryConfigurationTimeout) times out. 2. For a downstream port, the transition to Recovery is not to attempt a Hot Reset. Signed-off-by: Li Jun <jun.li@nxp.com>
2019-03-05MLK-21045 iMX8QM: Need to change u-boot HDMI TX clocksOliver Brown
The HDMI digital PLL, bus clock and core clock need to change to improve the firmware loading time. The clock are now set to 800 MHz for DPLL, 200 MHz for HDMI core, and 100 MHz for HDMI bus. Signed-off-by: Oliver Brown <oliver.brown@nxp.com>
2019-03-03MLK-21019 TMU: Check the TEMP range for iMX8MMYe Li
On iMX8MM, the V flag in TRISTR register only reflect the state of SNSR value, not the calibrated TEMP value. So checking this flag is not reliable. Per IC suggestion, change to read the TEMP/AVG_TEMP directly and check whether it in valid range 10-125C. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-02-22MLK-20962: Support legacy full id NAND in SPLHan Xu
Current SPL code only support ONFI-compatible NAND, porting the code from nand_base.c to support legacy full id NAND chips, such as Toshiba TC58NVG2S0H. Signed-off-by: Han Xu <han.xu@nxp.com>
2019-02-22MLK-20966 TMU: Fix for temperature out of rangeYe Li
When the temperature is out of sensor's range, the Valid bit won't be set in TRITSR register. So the polling loop won't go out. Change the codes to retry 10 times with 100ms interval for the Valid bit. If the timeout, we give a warning for the invalid data. Signed-off-by: Ye Li <ye.li@nxp.com> Reviewed-by: Bai Ping <ping.bai@nxp.com>
2019-02-18MLK-20945-3 imx_virt_i2c: Add DM_FLAG_IGNORE_POWER_ON flagYe Li
When we probe device with virtual i2c driver, it will definitely fail to power up the PD. Becasue the resource is owned by M4. So set this driver to ignore the power up result Signed-off-by: Ye Li <ye.li@nxp.com>
2019-02-18MLK-20945-2 dm: device: Check the power up result in probeYe Li
If a device has relevant power domain, we will check the power up result in probing the device. If the power up is failed, the device_probe will return failure immediately. The only exception is the new FLAG (DM_FLAG_IGNORE_POWER_ON) is set by driver to indicate ignore the power up result. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-02-18MLK-20945-1 imx8-power-domain: Check owned resource in power onYe Li
When fspi is assigned to M4, we have to let the fspi probe failed when its power domain is failed to power up. Because not all devices have power domain (for example, external devices on the board). Current checking resource owner in power domain probe is not good, change to check it in power on. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-02-17MLK-20939 imx_virt_i2c: Add a STOP flag for last messageYe Li
Add a new private flag I2C_M_SRTM_STOP(0x0200) to indicate if STOP is needed for current message. When reading/writing registers for slave devices, generally we have two messages, the first message writes the register address, second message reads/writes the value. Only the last message needs STOP. But previously M4 sends STOP for each message, this causes some slave devices treat it as end of transfer. Then, second message won't have any effect. To solve the problem, we introduce this private STOP flag, so M4 can STOP according to the flag. Signed-off-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
2019-02-15MLK-17405 iMX8QM: Change HDMI TX clocks.Oliver Brown
The HDMI digital PLL, bus clock and core clock need to change to match the settings used by the Linux driver. This allows the SECO to start and initialize the HDMI/DP firmware. Signed-off-by: Oliver Brown <oliver.brown@nxp.com>
2019-02-15MLK-17405 iMX8QM: Add athentication for HDMI/DP firmwareOliver Brown
Add firmware athentication to the hdp and hdprx load functions. If hdp_authenticate_fw is set to yes, the hdp tx firmware is athenticated. If hdprx_authenticate_fw is set to yes, the hdp rx firmware is athenticated. Signed-off-by: Oliver Brown <oliver.brown@nxp.com>
2019-02-13MLK-20909 usb: dwc3: gadget: use usb_endpoint_maxp for req lengthLi Jun
As endpoint.maxpackt is set at init for super speed, we can't use it for USB2 connection, we need use the right max packet length according to connection speed. Signed-off-by: Li Jun <jun.li@nxp.com>
2019-02-11MLK-20886-10 imx8-power-domain: Check resource partition in probing the PDYe Li
If the resource is not owned by current partition, we can't power on/off it, so we'd better return probe failure. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-02-11MLK-20886-9 pinctrl-scu: Check the pad partition before set pinmuxYe Li
If a pad is not owned by current partition we should not set its pinmux. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-02-11MLK-20886-4 lpi2c: Provide override binding functionYe Li
We provide override binding function, so the ARCH level can use it to determine if it is ok to bind with lpi2c driver. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-02-11MLK-20886-3 i2c: Add virtual i2c and virtual i2c mux driversYe Li
Add virtual i2c driver which replies on the VService to send SRTM i2c messages with M4. For each output on i2c mux, M4 side abstracts a i2c bus with special bus id. The virtual i2c mux follows basic mux design, but uses dedicated flag to pass the abstract bus id for the mux output to virtual i2c driver. Virtual i2c and virtual i2c mux will bind nodes with compatible string "fsl,imx-virt-i2c" and "fsl,imx-virt-i2c-mux". To support binding local i2c driver or virtual i2c driver at runtime. We provides a override function for the driver bind. ARCH level is responsible to implement it. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-02-11MLK-20886-1 misc: MU: Add MU driver to communicate with M4Ye Li
Add a common iMX MU driver in misc uclass to communicate with M4. The MU message format is defined to use 4 words as below, the driver will use all 4 TR/RR in MU to pass one message |WORD 0 | WORD 1 | WORD 2 | WORD 3 | |SEQ | TYPE | PAYLOAD ADDRESS | PAYLOAD LENGTH | - SEQ: A sequence id starts from 0 and increases for each request message - TYPE: 0x1: Request. Message sent from AP will set to this value. 0x2: Response. Message responded from M4 set to this value. 0x3: MU A side is ready. 0x4: MU B side is ready. - PAYLOAD ADDRESS: A pointer to the memory address where the uplayer message is stored - PAYLOAD LENGTH: The uplayer message length Signed-off-by: Ye Li <ye.li@nxp.com>
2019-02-11MLK-20887 usb: gadget: Fix controller index in UMSYe Li
The usb mass storage (f_mass_storage.c) uses fixed usb index 0, this causes problem while CDNS3 USB controller index is 1. Modify the API of fsg to pass the controller index. Signed-off-by: Ye Li <ye.li@nxp.com> Reviewed-by: Jun Li <jun.li@nxp.com>
2019-01-24MA-13980 [Auto] Reboot when slot is marked as unbootableLuo Ji
For dual bootloader, slot selection is made at spl stage, go to fastboot when current slot is marked as unbootable in AVB will give the user a chance to recover current slot with fastboot commands. But in this scenario, the device can't switch to another bootable slot automatically when a slot is marked as unbootable. Reboot the board when current slot is marked as unbootable to make the slot switch happen in spl. Test: Slot switch to 'b' automatically when 'a' is marked as unbootable on imx8qxp_mek. Change-Id: I94237965970d0c17ed564cf76e08d353f7b9c047 Signed-off-by: Luo Ji <ji.luo@nxp.com>
2019-01-21MLK-20784-1 TMU: Add a interface for TMU arch level initializationYe Li
Since imx8mm TMU needs to load some registers from fuse, this is arch dependent operation and may vary on different platforms. So add a interface for arch level initialization. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-01-21MA-13969 Fix CAAM build warningsLuo Ji
Fix some warinings as "defined but not used [-Wunused-function]". for CAAM. Test: Build and boot on imx8qm_mek. Change-Id: I632257615a237ca2de96937e121e7a4bcab415ce Signed-off-by: Luo Ji <ji.luo@nxp.com>
2019-01-21MLK-20781-2 video: dsi_northwest: Change the DSI PHY clock settingsYe Li
The previous driver uses a hard coded value which generates the DSI PHY clock can fit HX8363 WVGA screen. But when switching to new WXGA screen which needs higher pixclock and higher DSI PHY clock, the hard coded parameters can't work. Change to follow kernel codes to find the best value of CM, CN, CO parameters for DSI PHY clock to meet pixclock requirement. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-01-21MLK-20781-1 video: Add new mipi DSI panel RM68200_WXGA driverYe Li
mx7ulp EVK B will use two mipi dsi panels, the new panel RM68200_WXGA supports WXGA resolution. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-01-18MA-13938 [Android] imx8q: Support dual bootloader featureJi Luo
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-18MA-13937 Enable CAAM for imx8qJi Luo
The CAAM driver in u-boot will use JR0 by default, but for imx8q, both JR0 and JR1 are assigned to SECO and A core should never access them. Power on the JR3 in this patchset and use it to complete the CAAM operations for imx8q. Test: CAAM self test cases pass for imx8q. Change-Id: Ie3d77d1f2910e7f4c257c797c12b5c8a30ad936a Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-01-18MA-13936 Add CAAM self testJi Luo
Add CAAM RNG generating and BLOB encap/decap self test cases. Test: Test cases pass on imx8qm_mek/imx6qp_sabresd. Change-Id: I538f7b1581b36df83a3006ac133ca9e7b57ab4f0 Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-01-16MLK-20664-4 mtd: mxc_nand: Enable flash BBTYe Li
Current MXC NAND driver uses memory BBT, it will create memory BBT in each booting by searching bad blocks. This patch enables the flash BBT, so the NAND driver can read back Bad block table on the flash chip to create memory BBT. Signed-off-by: Ye Li <ye.li@nxp.com> Acked-by: Peng Fan <peng.fan@nxp.com>
2019-01-08MLK-20559-6 f_sdp: Support searching and loading FIT or container imageYe Li
Add support to f_sdp to search and load iMX8 container image or iMX8M FIT image by new UUU command SDPV. When using the SDPV, the uuu will continue to send out data after first level boot loader used by ROM. This means uuu won't skip to the offset of the second boot loader, and the padding data before second boot loader will be sent out. So we have to search the FIT header or container header in the buffer that SDP received. The new BCD value is used by uuu to distinguish if the SPL supports the SDPV. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-01-08MLK-20559-5 f_sdp: Add a callback to clean up USB driverYe Li
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-08MLK-20559-4 f_sdp: Fix wrong usb request sizeYe Li
Because the buffer length of sdp usb request is 65, we have to allocate 65 bytes not 64 bytes. Otherwise there is potential buffer overflow. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-01-08MLK-20559-3 f_sdp: Add high speed endpoint descriptorYe Li
Add HS endpoint descriptor for SDP. So that we can use high speed endpoint, and the SDP device can send packet with 512 byte size. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-01-08MA-13906 [Trusty] Support commands to set attestation materialsJi Luo
Keystore attestation requires provision keys and cerificate chains into secure storage. Add commands to support rsa/ecdsa keys and certificate chains provision, each key/certificate should be staged before provision. Usage: Set rsa attestation key: fastboot stage <path-to-rsa-atte-key> fastboot oem set-rsa-atte-key Set ec attestation key: fastboot stage <path-to-ec-atte-key> fastboot oem set-ec-atte-key Append rsa attestation certs: fastboot stage <path-to-rsa-atte-cert> fastboot oem append-rsa-atte-cert Append ec attestation certs: fastboot stage <path-to-ec-atte-cert> fastboot oem append-ec-atte-cert Test: Pass CTS cases: android.keystore.cts.KeyAttestationTest#testRsaAttestation android.keystore.cts.KeyAttestationTest#testEcAttestation Change-Id: Ic3ed87e7e328a39b0f1bfb163356ea9e37d2f4fc Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-01-08MA-13904 [Trusty] Pass root trust to keymaster serviceJi Luo
Pass the verified boot key hash to keymaster, it will be treated as the root trust in keymaster service. Also set the 'initialized' flag after initializing the keymaster client or set keymaster boot parameters will fail. Test: Pass CTS cases: android.keystore.cts.KeyAttestationTest#testRsaAttestation android.keystore.cts.KeyAttestationTest#testEcAttestation Change-Id: I486b5493826160f42c61a3da0e6cd769df92254d Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-01-03MLK-20669 lpuart: Fix tstc issue in Non-DM driverYe Li
The tstc function in Non-DM driver does not check the LPUART_FLAG_REGMAP_32BIT_REG flag, it always use 8 bits register version and cause issue in 8QM/QXP SPL. Signed-off-by: Ye Li <ye.li@nxp.com> Acked-by: Peng Fan <peng.fan@nxp.com>
2018-12-26MLK-20655-1 mxc_gpio: Fix non-DM driver issue for iMX8 platformsYe Li
The port index is not calculated correctly. It should not be descreased, because the gpio number is from 0 on imx8 platform. Otherwise we will access wrong registers. Signed-off-by: Ye Li <ye.li@nxp.com>
2018-12-24MA-13832 [Trusty] Support random rpmb key setJi Luo
Sometimes we need to set random rpmb key which is invisible except for the device. Generate the random key with hwcrypto interface and support fastboot command "fastboot oem set-rpmb-random-key" to set it. Test: build and boot on imx8q. Change-Id: I44e1b6b091366d8ffceb1159fc65c17610ce5243 Signed-off-by: Ji Luo <ji.luo@nxp.com>
2018-12-21MA-13303 fix the issue with 8qm boot from eMMC to flash SDfaqiang.zhu
For mek_8qm, bootloader offset in SD card is 32kb, in eMMC bootpartition, it's 0kb. This patch fix the issue that bootloader offset used in uboot is always based on the device that the board boot from. Now, if uboot environment variable "target_ubootdev" is set, bootloader offset used in uboot is based on the device "target_ubootdev" specified. So boot from eMMC to flash SD, the board can boot from SD and vice versa. Change-Id: Ia2cd64ba6ece02b98ea3d2addbce00b1661077de Signed-off-by: faqiang.zhu <faqiang.zhu@nxp.com>
2018-12-20MA-13785 remove the fastboot command of ucmd and acmdfaqiang.zhu
To avoid end user executing uboot command through fastboot, the fastboot command of "ucmd" and "acmd" in the uboot to be flashed into non-volatile storage device is removed in this partch. Change-Id: I999b8688a53c2201d02979be68266afc110dfb15 Signed-off-by: faqiang.zhu <faqiang.zhu@nxp.com>
2018-12-18MLK-20493-10 usb: gaget: ci: set ep's desc when enable epLi Jun
As we need standard usb_ep's desc, so set it when enable ep. Reviewed-by: Peter Chen <peter.chen@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com>
2018-12-18MLK-20493-9 usb: gadget: fastboot: use correct max packet sizeLi Jun
Change to use wMaxPacketSize of current speed EP desc for request length wrap up. Reviewed-by: Peter Chen <peter.chen@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com>
2018-12-18MLK-20493-8 usb: udc: ci: update speed handlingLi Jun
Remove the gadget driver speed check, and set its max_speed to be USB_SPEED_HIGH. Reviewed-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peter Chen <peter.chen@nxp.com> Tested-by: faqiang.zhu <faqiang.zhu@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com>
2018-12-18MLK-20493-7 usb: composite: force gadget to be USB2 for HS only functionLi Jun
If one of functions is not super speed capable, we need force the udc to be high speed, this is an equivalent implementation of usb_gadget_udc_set_speed() in kernel but simple, which set the gadget max_speed to be high speed, so afterwards when start gadget duc can set the HW to be USB 2.0 mode. Reviewed-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peter Chen <peter.chen@nxp.com> Tested-by: faqiang.zhu <faqiang.zhu@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com>
2018-12-18MLK-20493-5 usb: dwc3: change the dwc3 to be USB3 capableLi Jun
Change the dwc3 device mode to be super speed capable. Reviewed-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peter Chen <peter.chen@nxp.com> Tested-by: faqiang.zhu <faqiang.zhu@nxp.com> Signed-off-by: Li Jun <jun.li@nxp.com>