[PATCH 00/10] Add new feature controller framework
Ahmad Fatoum
a.fatoum at pengutronix.de
Wed Aug 17 22:19:45 PDT 2022
The i.MX8MM exists in a Lite variant with no VPUs as well as Solo and
Dual variants with one or two cores respectively instead of the default
four. For i.MX6, we had a manual fixup taking care of deleting the
excess CPUs, but for e.g. the i.MX8MP, we have fuses for the M7, VPUs, CAN,
CAN-FD, ISPs, NPU, ... etc. Describing all that in the DT is overly verbose
as we need to take care not to rely on specific device node names that
should be disabled. There has been an upstream attempt to get a binding
for U-Boot to act on:
https://lore.kernel.org/all/20220324042024.26813-1-peng.fan@oss.nxp.com/
This was refused by the DT maintainer, because any solution to this
problem should also be flexible enough to cover the case of partitioning
devices between the secure and normal world.
There's a patch series upstream to describe a domain-controller binding
that allows a hypervisor to partition devices into domains. With the
naming generalized, this fits nicely the use case of gating devices
behind specific features:
https://lore.kernel.org/all/3ca7cd75-4b62-2380-adb0-646bbeb647a2@pengutronix.de/
This series does that. See the first two commit messages for details.
We use a barebox, prefix as the naming isn't set in stone, but the intention
is to drop the prefix and potentially rename once an upstream binding is
approved.
Ahmad Fatoum (10):
driver: add feature controller framework
driver: consult feature controller prior to device probe
driver: featctrl: fixup kernel device tree
dt-bindings: add i.MX8M feature controller bindings
soc: imx: add i.MX8M feature controller driver
nvmem: import Linux nvmem_cell_read_variable_le_u32
nvmem: ocotp: add i.MX8M[MN] feature controller support
ARM: dts: i.MX8MN: describe feature controller
RFC: soc: imx: imx8m-featctrl: add i.MX8M[MN] stand-alone driver
RFC: ARM: dts: i.MX8MM: describe standlone feature controller
arch/arm/dts/imx8mm.dtsi | 61 ++++++++++
arch/arm/dts/imx8mn.dtsi | 32 ++++++
drivers/base/Kconfig | 3 +
drivers/base/Makefile | 1 +
drivers/base/driver.c | 9 ++
drivers/base/featctrl.c | 160 +++++++++++++++++++++++++++
drivers/nvmem/core.c | 33 ++++++
drivers/nvmem/ocotp.c | 62 +++++++++--
drivers/of/Kconfig | 12 ++
drivers/soc/imx/Kconfig | 6 +
drivers/soc/imx/Makefile | 1 +
drivers/soc/imx/imx8m-featctrl.c | 101 +++++++++++++++++
include/dt-bindings/features/imx8m.h | 14 +++
include/featctrl.h | 29 +++++
include/linux/nvmem-consumer.h | 9 ++
include/soc/imx8m/featctrl.h | 25 +++++
16 files changed, 550 insertions(+), 8 deletions(-)
create mode 100644 drivers/base/featctrl.c
create mode 100644 drivers/soc/imx/imx8m-featctrl.c
create mode 100644 include/dt-bindings/features/imx8m.h
create mode 100644 include/featctrl.h
create mode 100644 include/soc/imx8m/featctrl.h
--
2.30.2
More information about the barebox
mailing list