summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-04-12imx8m: soc: Relocate u-boot to the top DDR in 4GB spaceYe Li
The EFI memory init uses gd->ram_top for conventional memory. In current implementation, the ram_top is below optee address. This cause grub failed to allocation memory for initrd. The change updates DDR bank setup functions to place the u-boot at top DDR in 4GB space. Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx8m: soc: drop phy-reset-gpios for fecPeng Fan
Need to drop phy-reset-gpios before booting linux, this property is legacy property and replaced with reset-gpios. If provide both, kernel would failed to request the same gpio twice and cause fec not work. Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8m: soc: runtime drop extcon property from usbotg nodePeng Fan
The extcon is an decrepted property and not used by upstream Linux and NXP 5.10 kernel, so we remove it before kicking linux in case it is in dts. Otherwise distro kernel will not able to have usb function. Reviewed-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8mp: disable fused IP for UltraLitePeng Fan
Beside the fused modules on iMX8MP Lite, this part has also fused GPU3D/2D, LVDS and MIPI DSI. So we have to disable them for kernel and also disable MIPI DSI in u-boot DTS for splash screen at runtime. Signed-off-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8mp: detect i.MX8MP UltraLite when get cpu revPeng Fan
Detect i.MX8MP UltraLite in get_cpu_variant_type Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8mp: Add iMX8MP UltraLite Part cpu typePeng Fan
Add i.MX8MP UltraLite Part CPU type Signed-off-by: Peng Fan <[email protected]>
2022-04-12mx6: ddr: Wait before issuing the first MRS cmdFrancesco Dolcini
Wait 1ms before issuing the first MRS command to write DDR3 Mode registers. There is a requirement to wait a minimum time before issuing command to the DDR3 device, according to the JEDEC standard this time is 500us (after RESET_n is de-asserted until CKE becomes active) + tXPR (Reset CKE Exit time, maximum value 360ns). It seems that for some reason this is not enforced by the MMDC controller. Without this change we experienced random memory initialization failures with about 2% boot failure rate on specific problematic boards, after this change we were able to do more than 10.000 power-cycle without a single failure. Fixes: fe0f7f7842e1 ("mx6: add mmdc configuration for MX6Q/MX6DL") Signed-off-by: Francesco Dolcini <[email protected]> Reviewed-by: Marek Vasut <[email protected]> Reviewed-by: Fabio Estevam <[email protected]>
2022-04-12mx6: ddr: Restore ralat/walat in write level calibrationFrancesco Dolcini
The current DDR write level calibration routine always overwrite the ralat/walat fields to their maximum value, just save the existing values at the beginning of the calibration routine and restore it at the end. In case the delay is estimated by the user to be more than one cycle the walat should be configured according to that, this is not automatically done. From the i.MX6 RM: The user should read the results of the associated delay-line at MPWLDECTRL#[WL_DL_ABS_OFFSET#] and in case the user estimates that the reasonable delay may be above 1 cycle then the user should indicate it at MPWLDECTRL#[WL_CYC_DEL#]. Moreover the user should indicate it in MDMISC[WALAT] field. For example, if the result of the write leveling calibration is 100/256 parts of a cycle, but the user estimates that the delay is above 2 cycles then MPWLDECTRL#[WL_CYC_DEL#] should be configured to 2, so the total delay will be 2 and 100/256 parts of a cycle Probably it would just possible to not overwrite the mdmisc register in the first place, since this is not present in the write_level_calib() example in NXP AN4467 nor in the i.MX6 RM (44.11.6.1 Hardware Write Leveling Calibration). Fixes: d339f16911c7 ("arm: imx6: Add DDR3 calibration code for MX6 Q/D/DL") Signed-off-by: Francesco Dolcini <[email protected]> Reviewed-by: Marek Vasut <[email protected]> Reviewed-by: Fabio Estevam <[email protected]>
2022-04-12misc: imx8ulp: Update fuse driverPeng Fan
- According to S400 API, the fuse bank 25 (Testconfig2) is able to access. Add it into driver's mapping table. - According to FSB words list, the reserved 48 words are ahead of the bank 5 and bank 6. Fix the wrong position. Signed-off-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp_evk: Enable multiple env storage devicesYe Li
Enable multiple storages for u-boot env: MMC or SPI flash or NOWHERE for usb so u-boot can runtime select the storage flash according to boot device. Signed-off-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp_evk: enlarge CONFIG_NR_DRAM_BANKSPeng Fan
When TEE is present, the DRAM maybe split to two parts, so enlarge CONFIG_NR_DRAM_BANKS Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp: reserve tee memoryJi Luo
The TEE memory should be reserved when TEE is present, so need to runtime update dram bank and memory information according to tee present or not. Signed-off-by: Ji Luo <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp: enable wdog_ad interrupt in CMC1Peng Fan
Enable wdog_ad interrupt being triggered by CMC1 to CM33 to let CM33 know A35 reset and reinitialize rpmsg. Clear wdog_ad and AD_PERIPH reset interrupt after A35 up, otherwise M33 will always receive interrupt. Reviewed-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp_evk: Enable SD/MMC port auto detectPeng Fan
Enable the SD/MMC port auto detect. The mmc relevant env can be reset when auto detect is enabled. Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: dynamic setting mmcdev and mmcrootPeng Fan
Dynamic setting mmcdev and mmcroot. Then when boot linux, we can have correct "root=/dev/mmcblk[x]p2" Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp_evk: call the handshake with M33Ye Li
If M33 handshake is successful, TPM and DSI panel MUX setting is done by M33, no need to set them. If handshake is failed or M33 is not booted, continue the TPM and DSI panel MUX setting Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Ye Li <[email protected]> Signed-off-by: Biwen Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp_evk: Update LPDDR4 PHY settingsYe Li
Update DDR PHY settings to support LPDDR4 mode only by adjusting DQ VREF ctrl, ODT and pads drive strength. Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp: release CAAM for the Cortex-A35Clement Faure
Release the CAAM for the A35 from the SPL. Signed-off-by: Clement Faure <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12misc: S400_API: Update S400 API for buffer dumpYe Li
Add ahab_dump_buffer API to dump AHAB buffer for debug purpose Signed-off-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12misc: S400_API: add ahab_release_caamClement Faure
Add ahab_release_caam() function to the S400 API. Signed-off-by: Clement Faure <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp: Load the lposc fuse for dual bootYe Li
Found the lposc fuse loading having impact to cpu idle in kernel. Without the loading in dual boot mode, kernel will hang after idle for a while. Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp: Change LPAV assignment for dual bootYe Li
Assign the LPAV owner to RTD, and assign LPAV masters and peripherals to APD. So except the masters and peripherals, other resources (like DDR, cgc2, pcc5) in LPAV won't be reset during reboot and suspend. No needs to initialize DDR again after reboot. Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12misc: imx8ulp: Add OEM SRK Hash fuse supportYe Li
Since latest S400 firmware has supported to read OEM SRK Hash, add it to the driver's table Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp: enable MU0_B clk by defaultPeng Fan
Enable MU0_B clk by default. When M33 image is loaded by Jlink, the previous method not enable MU0_B clk and not able to communicate with M33, so let's enable it by default. And we not put it under kernel dts, because it conflicts with i.MX8QM suspend/resume logic which requires large change. Reviewed-by: Ye Li <[email protected]> Reviewed-by: Jacky Bai <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp: cgc: Switch to NICLPAV to FRO192 before PLL4 initYe Li
When reset with dual boot mode, the LPAV domain won't power down due to its master is not assigned to APD. So the NICLPAV keeps the last setting to use PLL4PFD1. So before SPL initialize the PLL4, we need to switch NICLPAV to FRO192, otherwise system will hang. Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp_evk: Skip init DDR for reboot in dual boot modeYe Li
When M33 is LPAV owner in dual boot, DDR, PCC5, CGC2 won't be reset during APD reset. So no need to init DDR again after reboot, but need to reconfigure the PLL4 PFD/PFDDIV/LPAV NIC etc, because kernel may change or disable some of them. Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp: add ND/LD clockPeng Fan
Add a new ddr script, defconfig for ND Configure the clock for ND mode changing A35 to 960MHz for OD mode Update NIC CLK for the various modes Introduce clock_init_early/late, late is used after pmic voltage setting, early is used in the very early stage for upower mu, lpuart and etc. Note: NIC runs at 324MHz, 442MHz has some random kernel hang issue with cpuidle enabled now. Reviewed-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp_evk: Remove PMIC Bucks PWM mode settingsYe Li
This workaround is not needed on i.MX8ULP proto-1B EVK as board has fixed the problem. Because we don't support proto-1A any longer, remove the PMIC settings. Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp: add CAAM clock entryPeng Fan
Add CAAM clock entry in PCC3 Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp: clock: Add clock support for i3c controllerClark Wang
Add i3c controller clock enable/disable function for imx8ulp. Reviewed-by: Ye Li <[email protected]> Signed-off-by: Clark Wang <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp: Add M33 handshake functionsYe Li
Add functions to check if M33 image is booted and handshake with M33 image via MU. A core notifies M33 to start init by FCR F0, then wait M33 init done signal by checking FSR F0. Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Ye Li <[email protected]> Signed-off-by: Biwen Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp: include pcc/cgc header in clock headerPeng Fan
With this change, we no need to include pcc/cgc header files both. Signed-off-by: Peng Fan <[email protected]>
2022-04-12imx: imx8ulp: Set COUNTER_FREQUENCY to 1MhzYe Li
The COUNTER_FREQUENCY is missed in 8ulp configs, it will cause SPL and u-boot not set the cntfrq_el0. For u-boot, this is ok, because ATF has set it. But for SPL, it will lead delay and get_timer not working. Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Ye Li <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2022-04-12phy: phy-imx8mq-usb: Add support for i.MX8MP USB PHYMarek Vasut
Add initial support for i.MX8MP USB PHY, i.MX8MP USB is similar to the i.MX8MQ, except for clock and power domain design customization. Signed-off-by: Marek Vasut <[email protected]> Cc: Fabio Estevam <[email protected]> Cc: Peng Fan <[email protected]> Cc: Stefano Babic <[email protected]> Tested-By: Tim Harvey <[email protected]> #imx8mp-venice-gw74xx
2022-04-12clk: imx8mp: Fill in DWC3 USB, USB PHY, HSIOMIX clockMarek Vasut
Add clock tables required to bring up DWC3 USB, USB PHY and HSIOMIX domain. Signed-off-by: Marek Vasut <[email protected]> Cc: Fabio Estevam <[email protected]> Cc: Peng Fan <[email protected]> Cc: Stefano Babic <[email protected]>
2022-04-12arm: imx: parse-container: add some missing end of lineClément Péron
Some printf() have strings that doesn't terminate with end of line and make the output hard to read. Signed-off-by: Clément Péron <[email protected]> Reviewed-by: Fabio Estevam <[email protected]> Reviewed-by: Peng Fan <[email protected]>
2022-04-12clk: imx8m: reduce rate table duplicationAngus Ainslie
Re-factor the imx8m[nmpq] rate tables into the common pll1416x clock driver. 43cdaa1567ad3 ("clk: imx8mm: Move 1443X/1416X PLL clock structure to common place") Signed-off-by: Angus Ainslie <[email protected]> Tested-by: Adam Ford <[email protected]> #imx8mm-beacon
2022-04-12clk: imx8mq: Add a clock driver for the imx8mqAngus Ainslie
This is a DM clock driver based off the imx8mm u-boot driver and the linux kernel driver. All of the PLLs and clocks are initialized so the subsystems below are functional and tested. 1) USB host and peripheral 2) ECSPI 3) UART 4) I2C all busses 5) USDHC for eMMC support 6) USB storage 7) GPIO 8) DRAM Signed-off-by: Angus Ainslie <[email protected]> Acked-by: Sean Anderson <[email protected]>
2022-04-12dt-bindings: imx8mq-clock: add mainline definitionsAngus Ainslie
Sync the clock ids with the mainline kernel 077de6e1c9f ("clk: imx8mq: add PLL monitor output") Signed-off-by: Angus Ainslie <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2022-04-12mtd: nand: mxs_nand_spl: Remove the page aligned accessYe Li
The mxs_nand_spl driver can support to read from page unaligned offset, so don't need to set bl_len to ask spl_load_simple_fit to handle the page unaligned access. Actually spl_load_simple_fit has two parts of reading: spl_simple_fit_read and spl_load_fit_image. The spl_load_fit_image can handle the page unaligned offset, but the spl_simple_fit_read can't do it. spl_simple_fit_read requires the FIT location at page aligned offset. Hence, remove the nand_get_mtd overwrite function from mxs_nand_spl to use page unaligned read by driver. Signed-off-by: Ye Li <[email protected]> Tested-by: Tim Harvey <[email protected]> #gw_ventana
2022-04-12configs: imx8mm_evk: add pwm backlight supportTommaso Merciai
Enable support for backlight/pwm-imx driver Signed-off-by: Tommaso Merciai <[email protected]>
2022-04-12arm: dts: imx8mm_evk: add pwm1/backlight supportTommaso Merciai
Add pwm1/backlight support nodes for imx8mm_evk board Signed-off-by: Tommaso Merciai <[email protected]>
2022-04-12driver: pwm: pwm-imx: introduce pwm_dm_imx_get_parmsTommaso Merciai
Introduce pwm_dm_imx_get_parms, dm version of pwm_imx_get_parms. This function get clock rate using clk dm api Signed-off-by: Tommaso Merciai <[email protected]>
2022-04-12driver: pwm: pwm-imx: get and enable per/ipg clock using dmTommaso Merciai
Get and enable ipg/per pwms clocks using dm api into imx_pwm_of_to_plat and imx_pwm_probe driver function Signed-off-by: Tommaso Merciai <[email protected]>
2022-04-12clk: imx8mm: add pwm clocks supportTommaso Merciai
Add clocks support for the PWM controllers. This is ported from Linux v5.17-rc8. Signed-off-by: Tommaso Merciai <[email protected]>
2022-04-12arch: mach-imx: imx8m: add pwm_regs struct in imx-regsTommaso Merciai
Add pwm_regs struct for i.MX8MM SOC Signed-off-by: Tommaso Merciai <[email protected]>
2022-04-12arch: mach-imx: imx8m: add pwm ctrl registers fields definesTommaso Merciai
Add pwm control registers fields defines into imx-regs.h: - prescaler - dozeen - waiten - dbgen - clksrc_ipg_high - clksrc_ipg, en field References: - iMX8MMRM.pdf p 3884 Signed-off-by: Tommaso Merciai <[email protected]>
2022-04-12ARM: imx: Decode ECSPI env location from i.MX8M ROMAPI tablesMarek Vasut
Decode ECSPI boot device in env_get_location() from i.MX8M ROMAPI tables. This is necessary to correctly identify env is in SPI NOR when the system boots from SPI NOR attached to ECSPI. Signed-off-by: Marek Vasut <[email protected]> Cc: Fabio Estevam <[email protected]> Cc: Peng Fan <[email protected]> Cc: Stefano Babic <[email protected]> Reviewed-by: Fabio Estevam <[email protected]>
2022-04-12arm: imx: imx8mn_beacon: Remove unnecessary configsAdam Ford
Because the Beacon imx8mn board uses device tree for MMC/SD and Ethernet, there is no need to have some of the config options. It's handled by the device tree. Signed-off-by: Adam Ford <[email protected]> Reviewed-by: Fabio Estevam <[email protected]>
2022-04-12arm: imx: imx8mm_beacon: Remove unnecessary configsAdam Ford
Because the Beacon imx8mm board uses device tree for MMC/SD and Ethernet, there is no need to have some of the config options. It's handled by the device tree. Signed-off-by: Adam Ford <[email protected]> Reviewed-by: Fabio Estevam <[email protected]>