aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-04-22arm64: dts: imx8-ss-img: Remove JPEG clock-namesFabio Estevam1-2/+0
Per nxp,imx8-jpeg.yaml, the clock-names entry is not valid. Remove them. Signed-off-by: Fabio Estevam <[email protected]> Signed-off-by: Mirela Rabulea <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: freescale: imx8mm-verdin-dahlia: support sleep-mociStefan Eichenberger1-0/+33
Previously, we had the sleep-moci pin set to always on. However, the Dahlia carrier board supports disabling the sleep-moci when the system is suspended to power down peripherals that support it. This reduces overall power consumption. This commit adds support for this feature by disabling the reg_force_sleep_moci regulator and adding two new regulators for the USB hub and PCIe that can be turned off when the system is suspended. Signed-off-by: Stefan Eichenberger <[email protected]> Reviewed-by: Francesco Dolcini <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: freescale: imx8mm-verdin: replace sleep-moci hog with regulatorStefan Eichenberger4-10/+31
The Verdin family has a signal called sleep-moci which can be used to turn off peripherals on the carrier board when the SoM goes into suspend. So far we have hogged this signal, which means the peripherals are always on and it is not possible to add peripherals that depend on the sleep-moci to be on. With this change, we replace the hog with a regulator so that peripherals can add their own regulators that use the same gpio. Carrier boards that allow peripherals to be powered off in suspend can disable this regulator and implement their own regulator to control the sleep-moci. Signed-off-by: Stefan Eichenberger <[email protected]> Reviewed-by: Francesco Dolcini <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: freescale: imx8mp-verdin-dahlia: support sleep-mociStefan Eichenberger1-0/+44
Previously, we had the sleep-moci pin set to always on. However, the Dahlia carrier board supports disabling the sleep-moci when the system is suspended to power down peripherals that support it. This reduces overall power consumption. This commit adds support for this feature by disabling the reg_force_sleep_moci regulator and adding two new regulators for the USB hub and PCIe that can be turned off when the system is suspended. Signed-off-by: Stefan Eichenberger <[email protected]> Reviewed-by: Francesco Dolcini <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: freescale: imx8mp-verdin: replace sleep-moci hog with regulatorStefan Eichenberger4-10/+31
The Verdin family has a signal called sleep-moci which can be used to turn off peripherals on the carrier board when the SoM goes into suspend. So far we have hogged this signal, which means the peripherals are always on and it is not possible to add peripherals that depend on the sleep-moci to be on. With this change, we replace the hog with a regulator so that peripherals can add their own regulators that use the same gpio. Carrier boards that allow peripherals to be powered off in suspend can disable this regulator and implement their own regulator to control the sleep-moci. Signed-off-by: Stefan Eichenberger <[email protected]> Reviewed-by: Francesco Dolcini <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: imx8mn-var-som-symphony: drop redundant status from typecKrzysztof Kozlowski1-1/+0
"okay" is the default status, so drop redundant property from the typec node. Signed-off-by: Krzysztof Kozlowski <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: imx8mm-var-som-symphony: drop redundant status from typecKrzysztof Kozlowski1-1/+0
"okay" is the default status, so drop redundant property from the typec node. Signed-off-by: Krzysztof Kozlowski <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: imx8mp-debix-som-a-bmb-08: Remove 'phy-supply' from eqosFabio Estevam1-1/+0
Per nxp,dwmac-imx.yaml, it is not valid to pass 'phy-supply'. Remove it to fix the following dt-schema warning: ethernet@30bf0000: Unevaluated properties are not allowed ('phy-supply' was unexpected) from schema $id: http://devicetree.org/schemas/net/nxp,dwmac-imx.yaml# Signed-off-by: Fabio Estevam <[email protected]> Reviewed-by: Umang Jain <[email protected]> Tested-by: Umang Jain <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: debix-a: Disable i2c2 in base .dtsJacopo Mondi1-2/+0
The I2C2 bus is used for the CSI and DSI connectors only, no devices are connected to it on neither the Debix Model A nor its IO board. Disable the bus in the board's .dts and remove its clock frequency settings, as the value depends solely on the devices conncted to the CSI and DSI connectors. Display panel or camera sensor overlays will configure and enable the bus when necessary. Signed-off-by: Jacopo Mondi <[email protected]> Signed-off-by: Laurent Pinchart <[email protected]> Reviewed-by: Kieran Bingham <[email protected]> Reviewed-by: Marco Felsch <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: imx8mm-evk: Describe the OV5640 suppliesFabio Estevam1-0/+17
Per ovti,ov5640.yaml, the OV5640 power supplies are mandatory properties. Describe them to fix dt-schema warnings. Signed-off-by: Fabio Estevam <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: imx8mn-evk: Describe the OV5640 suppliesFabio Estevam4-0/+34
Per ovti,ov5640.yaml, the OV5640 power supplies are mandatory properties. Describe them to fix dt-schema warnings. As there are two different PMICs used on the imx8mn-evk variants, describe the DOVDD OV5640 power supply in each board devicetree. Signed-off-by: Fabio Estevam <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: imx8mn-evk: Fix ADV7535 dt-schema warningsFabio Estevam4-12/+45
Currently, there are several ADV7535 dt-schema warnings. Fx them the same way as in commit efa97aed071e060 ("arm64: dts: imx8mm-evk: Fix hdmi@3d node"). As there are two different PMICs used on the imx8mn-evk variants, describe the ADV7535 power supplies in each board devicetree. Fixes: 5aafda608f73 ("arm64: dts: imx8mn-evk: Add camera support") Signed-off-by: Fabio Estevam <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: imx8m/qxp: Pass the tcpci compatibleFabio Estevam6-6/+6
Per nxp,ptn5110.yaml, also pass the fallback "tcpci" compatible to fix the following dt-schema warning: usb-typec@50: compatible: ['nxp,ptn5110'] is too short from schema $id: http://devicetree.org/schemas/usb/nxp,ptn5110.yaml# Signed-off-by: Fabio Estevam <[email protected]> Reviewed-by: Krzysztof Kozlowski <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: imx8mm/n remove clock-names property from usb controller nodeXu Yang2-3/+0
The clock-names property is not needed by usb controller node on imx8mm/n. This will remove it. Signed-off-by: Xu Yang <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: imx93-11x11-evk: enable usb and typec nodesXu Yang1-0/+119
There are 2 Type-C ports and 2 USB controllers on i.MX93. Enable them. Signed-off-by: Xu Yang <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: imx93: add usb nodesXu Yang1-0/+58
There are 2 USB controllers on i.MX93. Add them. Acked-by: Alexander Stein <[email protected]> Tested-by: Alexander Stein <[email protected]> # TQMa9352LA/CA Signed-off-by: Xu Yang <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: imx8ulp-evk: enable usb nodes and add ptn5150 nodesXu Yang1-0/+84
Enable 2 USB nodes and add 2 PTN5150 nodes on i.MX8ULP evk board. Signed-off-by: Xu Yang <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: imx8ulp: add usb nodesXu Yang1-0/+62
Add USB nodes on i.MX8ULP platform which has 2 USB controllers. Signed-off-by: Xu Yang <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: freescale: Add Toradex Colibri iMX8DXHiago De Franco6-0/+79
Add support for Toradex Colibri iMX8DX SoM and Aster, Evaluation Board v3, Iris and Iris v2 carrier boards the module can be mated in. This SoM is a variant of the already supported Colibri iMX8QXP, using an NXP i.MX8DX SoC instead of i.MX8QXP. Link: https://www.toradex.com/computer-on-modules/colibri-arm-family/nxp-imx-8x Signed-off-by: Hiago De Franco <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: freescale: Add i.MX8DX dtsiHiago De Franco1-0/+13
Add DTSI for i.MX8DX processor. According to 'i.MX 8DualX Industrial Applications Processors Data Sheet', the GPU and shader use a clock of 372MHz. Therefore, this dtsi includes the imx8dxp.dtsi and changes the clock accordingly. Signed-off-by: Hiago De Franco <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-22arm64: dts: ls1028a: sl28: split variant 3/ads2 carrierMichael Walle3-1/+20
The devicetree files can be (re-)used in u-boot now, they are imported on a regular basis (see OF_UPSTREAM option) there. Up until now, it didn't matter for linux and there was just a combined devicetree "-var3-ads2" (with ads2 being the carrier board). But if the devicetree files are now reused in u-boot, we need to have an individual "-var3" variant, because the bootloader is just using the bare "varN" devicetree files. Split the "var3" off of the "-var3-ads2" devicetree. Signed-off-by: Michael Walle <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-03arm64: dts: imx8dxl-evk: add lpuart1 and cm40 uartFrank Li1-0/+37
Add lpuart1 and cm40 uart. Signed-off-by: Frank Li <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-03arm64: dts: imx8dxl: update cm40 irq number informationFrank Li1-0/+11
Update cm40 irq number for imx8dxl chip. Signed-off-by: Frank Li <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-03arm64: dts: imx8dxl: add lpuart device in cm40 subsystemAlice Guo1-0/+24
Add lpuart device in cm40 subsystem. Signed-off-by: Alice Guo <[email protected]> Reviewed-by: Peng Fan <[email protected]> Reviewed-by: Alexander Stein <[email protected]> Signed-off-by: Frank Li <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-03arm64: dts: imx8: add cm40 subsystem dtsiDong Aisheng3-0/+70
Add cm40 subsystem dtsi. Reviewed-by: Peng Fan <[email protected]> Signed-off-by: Dong Aisheng <[email protected]> Reviewed-by: Alexander Stein <[email protected]> Signed-off-by: Frank Li <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-03arm64: dts: imx8m*-venice-gw7: Fix TPM schema violationsTim Harvey3-3/+3
Since commit 26c9d152ebf3 ("dt-bindings: tpm: Consolidate TCG TIS bindings"), several issues are reported by "make dtbs_check" for arm64 devicetrees: The compatible property needs to contain the chip's name in addition to the generic "tcg,tpm_tis-spi". tpm@1: compatible: ['tcg,tpm_tis-spi'] is too short from schema $id: http://devicetree.org/schemas/tpm/tcg,tpm_tis-spi.yaml# Fix these schema violations. Gateworks Venice uses an Atmel ATTPM20P: https://trac.gateworks.com/wiki/tpm Cc: Lukas Wunner <[email protected]> Signed-off-by: Tim Harvey <[email protected]> Reviewed-by: Fabio Estevam <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-03arm64: dts: freescale: Add device tree for Emcraft Systems NavQ+ KitGilles Talis2-0/+425
The Emcraft Systems NavQ+ kit is a mobile robotics platform based on NXP i.MX8 MPlus SoC. The following interfaces and devices are enabled: - eMMC - Gigabit Ethernet - RTC - SD-Card - UART console Signed-off-by: Gilles Talis <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-03arm64: dts: imx8mp-venice-gw73xx: add mac addr for eth1Tim Harvey1-0/+36
The SoM used on this board does not bring down the pins for the QOS ethernet and instead offers the 2nd ethernet as a PCI GbE device. Set the alias as such and add the PCI bus topology for eth1 so that boot firmware can set the local-mac-address property. The eth1 device is behind a PCI switch: # lspci -n 00:00.0 0604: 16c3:abcd (rev 01) 01:00.0 0604: 12d8:2608 02:01.0 0604: 12d8:2608 02:02.0 0604: 12d8:2608 02:03.0 0604: 12d8:2608 02:04.0 0604: 12d8:2608 c0:00.0 0200: 1055:7430 (rev 11) # lspci -t -[0000:00]---00.0-[01-ff]----00.0-[02-fe]--+-01.0-[03-41]-- +-02.0-[42-80]-- +-03.0-[81-bf]-- \-04.0-[c0-fe]----00.0 Signed-off-by: Tim Harvey <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-03arm64: dts: imx8mp-venice-gw72xx: add mac addr for eth1Tim Harvey1-0/+36
The SoM used on this board does not bring down the pins for the QOS ethernet and instead offers the 2nd ethernet as a PCI GbE device. Set the alias as such and add the PCI bus topology for eth1 so that boot firmware can set the local-mac-address property. The eth1 device is behind a PCI switch: # lspci -n 00:00.0 0604: 16c3:abcd (rev 01) 01:00.0 0604: 12d8:b404 (rev 01) 02:01.0 0604: 12d8:b404 (rev 01) 02:02.0 0604: 12d8:b404 (rev 01) 02:03.0 0604: 12d8:b404 (rev 01) 05:00.0 0200: 11ab:4380 # lspci -t -[0000:00]---00.0-[01-ff]----00.0-[02-05]--+-01.0-[03]-- +-02.0-[04]-- \-03.0-[05]----00.0 Signed-off-by: Tim Harvey <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-03arm64: dts: imx8qxp: add asrc[0,1], esai0, spdif0 and sai[4,5]Frank Li1-0/+269
Add asrc[0,1], esai0, spdif0, sai[4,5] and related lpcg node for imx8 audio subsystem. Signed-off-by: Frank Li <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-03arm64: dts: imx8: fix audio lpcg indexFrank Li1-8/+8
lpcg cell0 should be clock's 'indices' instead of 'index'. imx_lpcg_of_clk_src_get(struct of_phandle_args *clkspec, void *data) { struct clk_hw_onecell_data *hw_data = data; unsigned int idx = clkspec->args[0] / 4; .... } <@sai0_lpcg 1> will be the same as <@sai_lpcg 0>. Replace 0 with IMX_LPCG_CLK_0 and replace 1 with IMX_LPCG_CLK_4. It can work at iMX8QXP because IMX_LPCG_CLK_4 is ipg clock, which already enabled. But for iMX8QM IMX_LPCG_CLK_4 is mclk, which trigger issue. Fixes: 0a9279e9ae88 ("arm64: dts: imx8qxp: Add audio SAI nodes") Signed-off-by: Frank Li <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-03arm64: dts: lx2160a: add pinmux and i2c gpio to support bus recoveryCarlos Song1-2/+106
I2C bus recovery need a pinmux and gpio. So i2c driver can switch gpio mode to toggle scl to recovery bus. Add pinctrl-single node to every i2c bus on fsl-ls2160 layerscape platform. Signed-off-by: Carlos Song <[email protected]> Reviewed-by: Frank Li <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-02arm64: dts: S32G3: Introduce device tree for S32G-VNP-RDB3Wadim Mueller3-0/+279
This commit adds device tree support for the NXP S32G3-based S32G-VNP-RDB3 Board [1]. The S32G3 features an 8-core ARM Cortex-A53 based SoC developed by NXP. The device tree files are derived from the official NXP downstream Linux tree [2]. This addition encompasses a limited selection of peripherals that are upstream-supported. Apart from the ARM System Modules (GIC, Generic Timer, etc.), the following IPs have been validated: * UART: fsl-linflexuart * SDHC: fsl-imx-esdhc Clock settings for the chip rely on ATF Firmware [3]. Pin control integration into the device tree is pending and currently relies on Firmware/U-Boot settings [4]. These changes were validated using BSP39 Firmware/U-Boot from NXP [5]. The modifications enable booting the official Ubuntu 22.04 from NXP on the RDB3 with default settings from the SD card and eMMC. [1] https://www.nxp.com/design/design-center/designs/s32g3-vehicle-networking-reference-design:S32G-VNP-RDB3 [2] https://github.com/nxp-auto-linux/linux [3] https://github.com/nxp-auto-linux/arm-trusted-firmware [4] https://github.com/nxp-auto-linux/u-boot [5] https://github.com/nxp-auto-linux/auto_yocto_bsp Signed-off-by: Wadim Mueller <[email protected]> Tested-by: Ghennadi Procopciuc <[email protected]> Reviewed-by: Ghennadi Procopciuc <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-02arm64: dts: freescale: verdin-imx8mp: enable Verdin I2C_3_HDMI interfaceVitor Soares5-4/+43
Enable Verdin I2C_3_HDMI interface on iMX8MP Toradex Verdin boards. Signed-off-by: Vitor Soares <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-02arm64: dts: imx93-11x11-evk: add pca9451a supportJoy Zou1-0/+111
Support pca9451a on imx93-11x11-evk. Signed-off-by: Joy Zou <[email protected]> Reviewed-by: Frank Li <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-02arm64: dts: imx8mp: Describe CSI2 GPIO expander on i.MX8MP DHCOM PDK3 boardMarek Vasut1-0/+10
The production PDK3 carrier board rev.200 contains additional GPIO expander to control power and reset signals for each CSI2 plug separately. Describe this expander in the carrier board DT. The label is used by sensor DTOs to reference the expander and its signals. Signed-off-by: Marek Vasut <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-04-01arm64: dts: imx8mp-venice-gw74xx: add ADC rail for VDD_1P0Tim Harvey1-0/+6
The imx8mp-venice-gw74xx revB PCB added an ADC rail for VDD_1P0. Add it to the GSC ADC rails. Signed-off-by: Tim Harvey <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-03-30arm64: dts: fsl-lx2162a-clearfog: add alias for i2c bus iic6Josua Mayer1-0/+1
SoM dts has enabled i2c bus IIC6 (dts i2c5), but defines no aliases. LX2162A Clearfog dts has aliases for all i2c buses to ensure predictable numbering for userspace. Add an additional alias for this extra bus. Signed-off-by: Josua Mayer <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-03-30arm64: dts: fsl-lx2162a-som: add description for rtcJosua Mayer1-0/+9
SolidRun LX2162A SoM has an RTC on bus IIC6 (dts i2c5). Enable this bus and add description for the rtc. Signed-off-by: Josua Mayer <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-03-30arm64: dts: imx8mp-venice-gw74xx-imx219.dtso: fix dt warningTim Harvey1-0/+13
Fix the following warning from a 'make dtbs W=1': arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx-imx219.dtso:65.10-70.5: Warning (unit_address_vs_reg): /fragment@3/__overlay__/ports/port@0: node has a unit name, but no reg or ranges property Signed-off-by: Tim Harvey <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-03-29arm64: dts: mba8mx: Simplify DSI connectionAlexander Stein1-10/+4
With the DSI output label in place, use the phandle directly. Signed-off-by: Alexander Stein <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-03-29arm64: dts: imx8mp: Add empty DSI output endpointAlexander Stein1-0/+7
Also add a corresponding label so overlays can reference that node. Signed-off-by: Alexander Stein <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-03-29arm64: dts: imx8mq: Add empty DSI output endpointAlexander Stein1-0/+7
Also add a corresponding label so overlays can reference that node. Signed-off-by: Alexander Stein <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-03-29arm64: dts: imx8mn: Add empty DSI output endpointAlexander Stein1-0/+7
Also add a corresponding label so overlays can reference that node. Signed-off-by: Alexander Stein <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-03-29arm64: dts: imx8mm: Add empty DSI output endpointAlexander Stein1-0/+7
Also add a corresponding label so overlays can reference that node. Signed-off-by: Alexander Stein <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-03-29arm64: dts: imx8mp-evk: Add PDM micphone sound card supportShengjiu Wang1-0/+34
Add PDM micphone sound card support, configure the pinmux. This sound card supports recording sound from PDM micphone and convert the PDM format data to PCM data. Signed-off-by: Shengjiu Wang <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-03-29arm64: dts: imx8mp-evk: Add HDMI audio sound card supportShengjiu Wang1-0/+11
AUD2HTX works as the cpu dai in HDMI audio sound card. This sound card only support playback/output. Signed-off-by: Shengjiu Wang <[email protected]> Acked-by: Alexander Stein <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-03-29arm64: dts: imx8mp: Add AUD2HTX device nodeShengjiu Wang1-0/+10
The AUD2HTX is a digital module that provides a bridge between the Audio Subsystem and the HDMI RTX Subsystem. This module includes intermediate storage to queue SDMA transactions prior to being synchronized and passed to the HDMI RTX Subsystem over the Audio Link. Signed-off-by: Shengjiu Wang <[email protected]> Reviewed-by: Alexander Stein <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-03-29arm64: dts: imx8mp: add HDMI display pipelineLucas Stach1-0/+96
This adds the DT nodes for all the peripherals that make up the HDMI display pipeline. Signed-off-by: Lucas Stach <[email protected]> Signed-off-by: Adam Ford <[email protected]> Tested-by: Marek Vasut <[email protected]> Tested-by: Luca Ceresoli <[email protected]> Reviewed-by: Luca Ceresoli <[email protected]> Tested-by: Tommaso Merciai <[email protected]> Signed-off-by: Shawn Guo <[email protected]>
2024-03-29arm64: dts: imx8mp: add HDMI irqsteerLucas Stach1-0/+13
The HDMI irqsteer is a secondary interrupt controller within the HDMI subsystem that maps all HDMI peripheral IRQs into a single upstream IRQ line. Signed-off-by: Lucas Stach <[email protected]> Signed-off-by: Adam Ford <[email protected]> Tested-by: Marek Vasut <[email protected]> Tested-by: Luca Ceresoli <[email protected]> Tested-by: Tommaso Merciai <[email protected]> Signed-off-by: Shawn Guo <[email protected]>