[PATCH 0/4] soc: imx: add scu firmware api support

A.s. Dong
2018-05-02T18:54:43Z

> -----Original Message-----
> From: Oleksij Rempel [mailto:o.rempel at pengutronix.de]
> Sent: Tuesday, May 1, 2018 1:59 PM
> To: A.s. Dong <aisheng.dong@nxp.com>
> Cc: linux-arm-kernel at lists.infradead.org; dongas86 at gmail.com; dl-linux-imx
> <linux-imx@nxp.com>; kernel at pengutronix.de; Fabio Estevam
> <fabio.estevam@nxp.com>; shawnguo at kernel.org
> Subject: Re: [PATCH 0/4] soc: imx: add scu firmware api support
>
> Hi,
>
> On Sat, Apr 28, 2018 at 02:46:12AM +0800, Dong Aisheng wrote:
> > Unlike the former i.MX Architectures, the new generation i.MX8 SoCs
> > (e.g. MX8QXP and MX8QM) contain a system controller which runs on a
> > dedicated Cortex-M core to provide power, clock, Pad, and resource
> > management. Communication between the host processor running an OS
> and
> > the system controller happens through a SCU protocol.
> > This patchset adds the SCU APIs which is implemented based on MU and
> > will be used by different system components.
> >
> > It mainly consists of below parts:
> > 1) MU library calls
> > 1) Implementation of the IPC functions based on MUs (client side).
> > 2) SCU firmware services APIs implementation ased on RPC calls which
> > are mostly generated by SCU firmware
>
>
> Hm... I fail to see the difference between remoteproc, virtio, rpmsg and
> other existing frameworks in kernel with this functionality. Why do we need
> vendor/soc specific framework once again?
>

Hmm.. It seems like not a vendor specific framework...
It mainly SCU firmware APIs generated by SCU firmware script for
Linux OS components to use.
And those APIs are implemented base on MU simple polling mode
With better performance.

NXP internally has tried mailbox but got performance regression,
So we're still not sure whether Mailbox is quit suitable for i.MX
SCU Firmware. Needs more time to investigate.

And I'm still not quite familiar with remoteproc, virtio, rpmsg.
May need spend more time to investigate later.
And it would be good if you can provide suggestions and sharing
Informations about them.
e.g. what's requirement of i.MX to switch to them? Benefit? Or
something else valuable?

Regards
Dong Aisheng

> > Dong Aisheng (4):
> > soc: imx: add mu library functions support
> > dt-bindings: arm: fsl: add mu binding doc
> > dt-bindings: arm: fsl: add scu binding doc
> > soc: imx: add SC firmware IPC and APIs
> >
> > .../devicetree/bindings/arm/freescale/fsl,mu.txt | 33 +
> > .../devicetree/bindings/arm/freescale/fsl,scu.txt | 40 ++
> > drivers/soc/imx/Kconfig | 7 +
> > drivers/soc/imx/Makefile | 2 +
> > drivers/soc/imx/imx_mu.c | 125 ++++
> > drivers/soc/imx/sc/Makefile | 8 +
> > drivers/soc/imx/sc/main/ipc.c | 270 ++++++++
> > drivers/soc/imx/sc/main/rpc.h | 123 ++++
> > drivers/soc/imx/sc/svc/irq/rpc.h | 41 ++
> > drivers/soc/imx/sc/svc/irq/rpc_clnt.c | 58 ++
> > drivers/soc/imx/sc/svc/misc/rpc.h | 58 ++
> > drivers/soc/imx/sc/svc/misc/rpc_clnt.c | 368 ++++++++++
> > drivers/soc/imx/sc/svc/pad/rpc.h | 55 ++
> > drivers/soc/imx/sc/svc/pad/rpc_clnt.c | 412 +++++++++++
> > drivers/soc/imx/sc/svc/pm/rpc.h | 58 ++
> > drivers/soc/imx/sc/svc/pm/rpc_clnt.c | 393 +++++++++++
> > drivers/soc/imx/sc/svc/rm/rpc.h | 70 ++
> > drivers/soc/imx/sc/svc/rm/rpc_clnt.c | 612 +++++++++++++++++
> > drivers/soc/imx/sc/svc/timer/rpc.h | 52 ++
> > drivers/soc/imx/sc/svc/timer/rpc_clnt.c | 295 ++++++++
> > include/soc/imx/mu.h | 21 +
> > include/soc/imx/sc/ipc.h | 46 ++
> > include/soc/imx/sc/scfw.h | 24 +
> > include/soc/imx/sc/sci.h | 35 +
> > include/soc/imx/sc/svc/irq/api.h | 139 ++++
> > include/soc/imx/sc/svc/misc/api.h | 395 +++++++++++
> > include/soc/imx/sc/svc/pad/api.h | 536 +++++++++++++++
> > include/soc/imx/sc/svc/pm/api.h | 559 +++++++++++++++
> > include/soc/imx/sc/svc/rm/api.h | 726 ++++++++++++++++++++
> > include/soc/imx/sc/svc/timer/api.h | 265 +++++++
> > include/soc/imx/sc/types.h | 764 +++++++++++++++++++++
> > 31 files changed, 6590 insertions(+)
> > create mode 100644
> > Documentation/devicetree/bindings/arm/freescale/fsl,mu.txt
> > create mode 100644
> > Documentation/devicetree/bindings/arm/freescale/fsl,scu.txt
> > create mode 100644 drivers/soc/imx/imx_mu.c create mode 100644
> > drivers/soc/imx/sc/Makefile create mode 100644
> > drivers/soc/imx/sc/main/ipc.c create mode 100644
> > drivers/soc/imx/sc/main/rpc.h create mode 100644
> > drivers/soc/imx/sc/svc/irq/rpc.h create mode 100644
> > drivers/soc/imx/sc/svc/irq/rpc_clnt.c
> > create mode 100644 drivers/soc/imx/sc/svc/misc/rpc.h create mode
> > 100644 drivers/soc/imx/sc/svc/misc/rpc_clnt.c
> > create mode 100644 drivers/soc/imx/sc/svc/pad/rpc.h create mode
> > 100644 drivers/soc/imx/sc/svc/pad/rpc_clnt.c
> > create mode 100644 drivers/soc/imx/sc/svc/pm/rpc.h create mode
> > 100644 drivers/soc/imx/sc/svc/pm/rpc_clnt.c
> > create mode 100644 drivers/soc/imx/sc/svc/rm/rpc.h create mode
> > 100644 drivers/soc/imx/sc/svc/rm/rpc_clnt.c
> > create mode 100644 drivers/soc/imx/sc/svc/timer/rpc.h
> > create mode 100644 drivers/soc/imx/sc/svc/timer/rpc_clnt.c
> > create mode 100644 include/soc/imx/mu.h create mode 100644
> > include/soc/imx/sc/ipc.h create mode 100644 include/soc/imx/sc/scfw.h
> > create mode 100644 include/soc/imx/sc/sci.h create mode 100644
> > include/soc/imx/sc/svc/irq/api.h create mode 100644
> > include/soc/imx/sc/svc/misc/api.h create mode 100644
> > include/soc/imx/sc/svc/pad/api.h create mode 100644
> > include/soc/imx/sc/svc/pm/api.h create mode 100644
> > include/soc/imx/sc/svc/rm/api.h create mode 100644
> > include/soc/imx/sc/svc/timer/api.h
> > create mode 100644 include/soc/imx/sc/types.h
> >
> > --
> > 2.7.4
> >
> >
> >
>
> --
> Pengutronix e.K. | |
> Industrial Linux Solutions | http://www.pengutronix.de/ |
> Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
> Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |