[PATCH v4 00/13] Introducing the Mobileye EyeQ6Lplus SoC

Benoît Monin
2026-03-16T15:25:52Z

The Eyeq6Lplus is a new system-on-chip part of Mobileye's EyeQ family
of SoC aimed at Advanced Driver Assistance Systems (ADAS). It is built
around a multicore MIPS I6500 with 2 cores and 8 threads and integrates
controllers and accelerators dedicated to driving assistance.

This patchset adds the initial support for the EyeQ6Lplus and its
evaluation board with the following list of controllers:
* The OLB ("Other Logic Block") providing clocks, resets and pin controls.
* One UART from DesignWare.
* One GPIO controller from DesignWare.
* Two SPI controllers from DesignWare, one in host mode and one in target
mode.
* One octoSPI flash controller from Cadence, identical to the one found
in the EyeQ5.
* Two I2C controllers from Designware.

The patch series adds the device tree bindings for the SoC and the OLB.
It also adds the Kconfig entry for the EyeQ6Lplus, the SoC and evaluation
board device tree, and the defconfig. For the OLB, the series adds the
match data to the clk-eyeq, reset-eyeq and pinctrl-eyeq5 drivers.

It also brings three other changes. One is for the pinctrl-eyeq5 driver
to access the pin descriptions, pin functions, and pin bank registers
via the match data instead of directly. This is needed to add support
for the EyeQ6Lplus alongside the EyeQ5 to the pinctrl driver.

To be able to match against compatible entries, an OF node is needed
but the pinctrl-eyeq5 does not have one as it is an auxiliary device
of clk-eyeq. As part of his MACB phy series[1], Théo switched to
devm_auxiliary_device_create() to register the auxiliary devices, and
this helper sets the OF node of the auxiliary device.

So this series depends on Théo's patchset so that eq5p_probe() can use
the OF node to get the match data, similar to what is done in eqr_probe()
in reset-eyeq.

The two other changes are in the clk-eyeq driver. First we skip the
post-divisor when computing the PLL frequency in the clk-eyeq driver,
to match how the clock signal is wired internally in all EyeQ PLL and
compute the correct frequency for the PLL of the EyeQ6Lplus. Second we
adjust the accuracy and down spreading computation of the PLL frequency
as the spread spectrum of all EyeQ PLL is in 1/1024 and not in 1/1000
as previously thought.

[1]: https://lore.kernel.org/lkml/20260225-macb-phy-v7-0-665bd8619d51@bootlin.com/

Signed-off-by: Benoît Monin <benoit.monin@bootlin.com>
---
Changes in v4:
- Simplify entries in Kconfig for clk-eyeq and reset-eyeq, since all
Mobileye EyeQ SoCs use these drivers.
- Link to v3: https://lore.kernel.org/r/20260226-eyeq6lplus-v3-0-9cbeb59268b0@bootlin.com

Changes in v3:
- Rebase series on v7.0-rc1 + Théo's patchset[1].
- Refresh the defconfig.
- Add missing cdns,fifo-depth entry in octospi node of the SoC device tree.
- Simplify eq5p_probe() now that the OF node is set in clk-eyeq driver.
- Link to v2: https://lore.kernel.org/r/20251223-eyeq6lplus-v2-0-cd1fd21d182c@bootlin.com

Changes in v2:
- Rebased on v6.19-rc2.
- Drop spidev nodes from the evaluation board DT, they were
here for test only.
- Fix bug in eq5p_pinconf_set() using uninitialized value.
- Link to v1: https://lore.kernel.org/r/20251217-eyeq6lplus-v1-0-e9cdbd3af4c2@bootlin.com

---
Benoît Monin (13):
dt-bindings: mips: Add Mobileye EyeQ6Lplus SoC
dt-bindings: soc: mobileye: Add EyeQ6Lplus OLB
MIPS: Add Mobileye EyeQ6Lplus support
reset: eyeq: Add Mobileye EyeQ6Lplus OLB
pinctrl: eyeq5: Use match data
pinctrl: eyeq5: Add Mobileye EyeQ6Lplus OLB
clk: eyeq: Skip post-divisor when computing PLL frequency
clk: eyeq: Adjust PLL accuracy computation
clk: eyeq: Add Mobileye EyeQ6Lplus OLB
MIPS: Add Mobileye EyeQ6Lplus SoC dtsi
MIPS: Add Mobileye EyeQ6Lplus evaluation board dts
MIPS: config: add eyeq6lplus_defconfig
MAINTAINERS: Mobileye: Add EyeQ6Lplus files

.../devicetree/bindings/mips/mobileye.yaml | 5 +
.../soc/mobileye/mobileye,eyeq6lplus-olb.yaml | 208 ++++++++++
MAINTAINERS | 4 +-
arch/mips/boot/dts/mobileye/Makefile | 1 +
arch/mips/boot/dts/mobileye/eyeq6lplus-epm6.dts | 103 +++++
arch/mips/boot/dts/mobileye/eyeq6lplus-pins.dtsi | 84 ++++
arch/mips/boot/dts/mobileye/eyeq6lplus.dtsi | 170 ++++++++
arch/mips/configs/eyeq6lplus_defconfig | 117 ++++++
arch/mips/mobileye/Kconfig | 3 +
arch/mips/mobileye/Platform | 1 +
drivers/clk/Kconfig | 4 +-
drivers/clk/clk-eyeq.c | 90 ++++-
drivers/pinctrl/Kconfig | 4 +-
drivers/pinctrl/pinctrl-eyeq5.c | 437 +++++++++++++++------
drivers/reset/Kconfig | 4 +-
drivers/reset/reset-eyeq.c | 31 ++
.../dt-bindings/clock/mobileye,eyeq6lplus-clk.h | 37 ++
17 files changed, 1156 insertions(+), 147 deletions(-)
---
base-commit: 559f264e403e4d58d56a17595c60a1de011c5e20
change-id: 20251128-eyeq6lplus-961c630f0940
prerequisite-message-id: <20260225-macb-phy-v7-0-665bd8619d51@bootlin.com>
prerequisite-patch-id: 68a9ce9820cf78e8a0705505ea29ff981b518570
prerequisite-patch-id: 40a406305a44a0ea0d0b861d34c199907750f84c
prerequisite-patch-id: dda6d7c3d7d7d8e49b31015887d1a7308f65559a

Best regards,
--
Benoît Monin, Bootlin
Embedded Linux and Kernel engineering