soc: ti: k3: add navss ringacc driver
authorGrygorii Strashko <grygorii.strashko@ti.com>
Tue, 5 Feb 2019 12:01:22 +0000 (17:31 +0530)
committerTom Rini <trini@konsulko.com>
Fri, 12 Apr 2019 00:07:12 +0000 (20:07 -0400)
commit432f66fe731eab1c3318bd34a677f652a4be680f
tree9842210425985a734a85d35dd0eda41f62350461
parentfd6b40b1ba20b7344e85c0c97eb1c4d14ed72a98
soc: ti: k3: add navss ringacc driver

The Ring Accelerator (RINGACC or RA) provides hardware acceleration to
enable straightforward passing of work between a producer and a consumer.
There is one RINGACC module per NAVSS on TI AM65x SoCs.

The RINGACC converts constant-address read and write accesses to equivalent
read or write accesses to a circular data structure in memory. The RINGACC
eliminates the need for each DMA controller which needs to access ring
elements from having to know the current state of the ring (base address,
current offset). The DMA controller performs a read or write access to a
specific address range (which maps to the source interface on the RINGACC)
and the RINGACC replaces the address for the transaction with a new address
which corresponds to the head or tail element of the ring (head for reads,
tail for writes). Since the RINGACC maintains the state, multiple DMA
controllers or channels are allowed to coherently share the same rings as
applicable. The RINGACC is able to place data which is destined towards
software into cached memory directly.

Supported ring modes:
 - Ring Mode
 - Messaging Mode
 - Credentials Mode
 - Queue Manager Mode

TI-SCI integration:

Texas Instrument's System Control Interface (TI-SCI) Message Protocol now
has control over Ringacc module resources management (RM) and Rings
configuration.

The Ringacc driver manages Rings allocation by itself now and requests
TI-SCI firmware to allocate and configure specific Rings only. It's done
this way because, Linux driver implements two stage Rings allocation and
configuration (allocate ring and configure ring) while TI-SCI Message
Protocol supports only one combined operation (allocate+configure).

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Vignesh R <vigneshr@ti.com>
drivers/Kconfig
drivers/soc/Kconfig [new file with mode: 0644]
drivers/soc/Makefile
drivers/soc/ti/Kconfig [new file with mode: 0644]
drivers/soc/ti/Makefile [new file with mode: 0644]
drivers/soc/ti/k3-navss-ringacc.c [new file with mode: 0644]
include/linux/soc/ti/k3-navss-ringacc.h [new file with mode: 0644]