]> git.baikalelectronics.ru Git - arm-tf.git/commit
Corstone700: add support for mhuv2 in arm TF-A
authorKhandelwal <tushar.khandelwal@arm.com>
Wed, 29 Jan 2020 16:51:42 +0000 (16:51 +0000)
committerAbdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Mon, 17 Feb 2020 16:13:38 +0000 (16:13 +0000)
commitc6fe43b726f16e45863a409e0a94d0c816b33f70
tree6d26fa4bbcf0abab94a7ab88cb2c37e4f6ed05e2
parent956059385cf2532924e1023f9d5156aed2f78f4b
Corstone700: add support for mhuv2 in arm TF-A

Note: This patch implements in-band messaging protocol only.
ARM has launched a next version of MHU i.e. MHUv2 with its latest
subsystems. The main change is that the MHUv2 is now a distributed IP
with different peripheral views (registers) for the sender and receiver.

Another main difference is that MHUv1 duplex channels are now split into
simplex/half duplex in MHUv2. MHUv2 has a configurable number of
communication channels. There is a capability register (MSG_NO_CAP) to
find out how many channels are available in a system.

The register offsets have also changed for STAT, SET & CLEAR registers
from 0x0, 0x8 & 0x10 in MHUv1 to 0x0, 0xC & 0x8 in MHUv2 respectively.

0x0    0x4  0x8  0xC             0x1F
------------------------....-----
| STAT |    |    | SET |    |   |
------------------------....-----
      Transmit Channel

0x0    0x4  0x8   0xC            0x1F
------------------------....-----
| STAT |    | CLR |    |    |   |
------------------------....-----
        Receive Channel

The MHU controller can request the receiver to wake-up and once the
request is removed, the receiver may go back to sleep, but the MHU
itself does not actively put a receiver to sleep.

So, in order to wake-up the receiver when the sender wants to send data,
the sender has to set ACCESS_REQUEST register first in order to wake-up
receiver, state of which can be detected using ACCESS_READY register.
ACCESS_REQUEST has an offset of 0xF88 & ACCESS_READY has an offset
of 0xF8C and are accessible only on any sender channel.

This patch adds necessary changes in a new file required to support the
latest MHUv2 controller. This patch also needs an update in DT binding
for ARM MHUv2 as we need a second register base (tx base) which would
be used as the send channel base.

Change-Id: I1455e08b3d88671a191c558790c503eabe07a8e6
Signed-off-by: Tushar Khandelwal <tushar.khandelwal@arm.com>
plat/arm/board/corstone700/corstone700_plat.c
plat/arm/board/corstone700/drivers/mhu/mhu.c [new file with mode: 0644]
plat/arm/board/corstone700/drivers/mhu/mhu.h [new file with mode: 0644]
plat/arm/board/corstone700/include/platform_def.h
plat/arm/board/corstone700/platform.mk