Amlogic Meson6/8/8b/8m2 come with an ARC core in the Always-On (AO)
power-domain. This is typically used for waking up the ARM CPU after
powering it down for system suspend.
The exact ARC core used on Meson6 and earlier is not known. I believe
it is an ARC625, but I am not sure about this. Meson8/8b/8m2 uses an
ARC EM4 core.
They all have in common that they use a section of the SoCs SRAM for
running code on the ARC core.
Unfortunately there's no information about the remote-processor control
registers in the public Meson8b (S805) datasheet. All information is
either taken from Amlogic's 3.10 kernel and 2011-03 u-boot or found by
testing (for example the clock input is not mentioned anywhere in the
reference code, but disabling it stops the AO ARC core from working).
This series consists of five patches:
1: dt-bindings for the SRAM section
2: dt-bindings for the SECBUS2 syscon region which contains a few
bits for controlling this remote processor
3: dt-bindings for the AO ARC remote processor
4: the driver for booting code on the AO ARC remote processor
5: (only included for documentation purposes) dts changes (these will
be re-sent separately)
Patches #3 and #4 should go through the remoteproc tree. Patches #1
and #2 may go through Rob's (devicetree) tree, Kevin's linux-amlogic
tree or through the remoteproc tree. Personally I have no preference
here.
To test this series I ported the Amlogic serial driver and added the
board files for the Amlogic AO ARC EM4 to the Zephyr RTOS. The code can
be found here: [0] (the resulting zephyr.elf can then be loaded as
remote-processor firmware from Linux).
Changes since v1 at [1]:
- fixed yamllint warnings (after installing the package these now also
show up on my build machine) in patches #2 and #3. Thanks for the
hint Rob
- dropped the explicit "select" statement from the dt-bindings in patch
#2 as suggested by Rob (thanks)
[0] https://github.com/xdarklight/zephyr-rtos/commits/amlogic_ao_em4-20201229
[1] https://patchwork.kernel.org/project/linux-amlogic/list/?series=407349
Martin Blumenstingl (5):
dt-bindings: sram: Add compatible strings for the Meson AO ARC SRAM
dt-bindings: Amlogic: add the documentation for the SECBUS2 registers
dt-bindings: remoteproc: Add the documentation for Meson AO ARC rproc
remoteproc: meson-mx-ao-arc: Add a driver for the AO ARC remote
procesor
ARM: dts: meson: add the AO ARC remote processor
.../arm/amlogic/amlogic,meson-mx-secbus2.yaml | 42 +++
.../remoteproc/amlogic,meson-mx-ao-arc.yaml | 87 +++++++
.../devicetree/bindings/sram/sram.yaml | 2 +
arch/arm/boot/dts/meson.dtsi | 7 +
arch/arm/boot/dts/meson8.dtsi | 21 ++
arch/arm/boot/dts/meson8b.dtsi | 21 ++
drivers/remoteproc/Kconfig | 11 +
drivers/remoteproc/Makefile | 1 +
drivers/remoteproc/meson_mx_ao_arc.c | 240 ++++++++++++++++++
9 files changed, 432 insertions(+)
create mode 100644 Documentation/devicetree/bindings/arm/amlogic/amlogic,meson-mx-secbus2.yaml
create mode 100644 Documentation/devicetree/bindings/remoteproc/amlogic,meson-mx-ao-arc.yaml
create mode 100644 drivers/remoteproc/meson_mx_ao_arc.c
--
2.30.0
Martin Blumenstingl <[email protected]> writes:
> Amlogic Meson6/8/8b/8m2 come with an ARC core in the Always-On (AO)
> power-domain. This is typically used for waking up the ARM CPU after
> powering it down for system suspend.
>
> The exact ARC core used on Meson6 and earlier is not known. I believe
> it is an ARC625, but I am not sure about this. Meson8/8b/8m2 uses an
> ARC EM4 core.
> They all have in common that they use a section of the SoCs SRAM for
> running code on the ARC core.
>
> Unfortunately there's no information about the remote-processor control
> registers in the public Meson8b (S805) datasheet. All information is
> either taken from Amlogic's 3.10 kernel and 2011-03 u-boot or found by
> testing (for example the clock input is not mentioned anywhere in the
> reference code, but disabling it stops the AO ARC core from working).
>
> This series consists of five patches:
> 1: dt-bindings for the SRAM section
> 2: dt-bindings for the SECBUS2 syscon region which contains a few
> bits for controlling this remote processor
> 3: dt-bindings for the AO ARC remote processor
> 4: the driver for booting code on the AO ARC remote processor
> 5: (only included for documentation purposes) dts changes (these will
> be re-sent separately)
>
> Patches #3 and #4 should go through the remoteproc tree. Patches #1
> and #2 may go through Rob's (devicetree) tree, Kevin's linux-amlogic
> tree or through the remoteproc tree. Personally I have no preference
> here.
>
> To test this series I ported the Amlogic serial driver and added the
> board files for the Amlogic AO ARC EM4 to the Zephyr RTOS. The code can
> be found here: [0] (the resulting zephyr.elf can then be loaded as
> remote-processor firmware from Linux).
>
>
> Changes since v1 at [1]:
> - fixed yamllint warnings (after installing the package these now also
> show up on my build machine) in patches #2 and #3. Thanks for the
> hint Rob
> - dropped the explicit "select" statement from the dt-bindings in patch
> #2 as suggested by Rob (thanks)
>
>
> [0] https://github.com/xdarklight/zephyr-rtos/commits/amlogic_ao_em4-20201229
> [1] https://patchwork.kernel.org/project/linux-amlogic/list/?series=407349
>
>
> Martin Blumenstingl (5):
> dt-bindings: sram: Add compatible strings for the Meson AO ARC SRAM
> dt-bindings: Amlogic: add the documentation for the SECBUS2 registers
> dt-bindings: remoteproc: Add the documentation for Meson AO ARC rproc
> remoteproc: meson-mx-ao-arc: Add a driver for the AO ARC remote
> procesor
> ARM: dts: meson: add the AO ARC remote processor
Patches 1-2, 5 queued for v5.12 via the amlogic tree.
Kevin