Skip to content

Commit

Permalink
soc: ti: add Keystone Navigator QMSS driver
Browse files Browse the repository at this point in the history
The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
the main hardware sub system which forms the backbone of the Keystone
Multi-core Navigator. QMSS consist of queue managers, packed-data structure
processors(PDSP), linking RAM, descriptor pools and infrastructure
Packet DMA.

The Queue Manager is a hardware module that is responsible for accelerating
management of the packet queues. Packets are queued/de-queued by writing or
reading descriptor address to a particular memory mapped location. The PDSPs
perform QMSS related functions like accumulation, QoS, or event management.
Linking RAM registers are used to link the descriptors which are stored in
descriptor RAM. Descriptor RAM is configurable as internal or external memory.

The QMSS driver manages the PDSP setups, linking RAM regions,
queue pool management (allocation, push, pop and notify) and descriptor
pool management. The specifics on the device tree bindings for
QMSS can be found in:
	Documentation/devicetree/bindings/soc/keystone-navigator-qmss.txt

Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Kumar Gala <galak@codeaurora.org>
Cc: Olof Johansson <olof@lixom.net>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Grant Likely <grant.likely@linaro.org>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Sandeep Nair <sandeep_n@ti.com>
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
  • Loading branch information
Sandeep Nair authored and Santosh Shilimkar committed Sep 24, 2014
1 parent a4dfb8c commit 41f93af
Show file tree
Hide file tree
Showing 9 changed files with 2,912 additions and 0 deletions.
2 changes: 2 additions & 0 deletions drivers/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,8 @@ source "drivers/remoteproc/Kconfig"

source "drivers/rpmsg/Kconfig"

source "drivers/soc/Kconfig"

source "drivers/devfreq/Kconfig"

source "drivers/extcon/Kconfig"
Expand Down
1 change: 1 addition & 0 deletions drivers/soc/Kconfig
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
menu "SOC (System On Chip) specific Drivers"

source "drivers/soc/qcom/Kconfig"
source "drivers/soc/ti/Kconfig"

endmenu
1 change: 1 addition & 0 deletions drivers/soc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@

obj-$(CONFIG_ARCH_QCOM) += qcom/
obj-$(CONFIG_ARCH_TEGRA) += tegra/
obj-$(CONFIG_SOC_TI) += ti/
21 changes: 21 additions & 0 deletions drivers/soc/ti/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#
# TI SOC drivers
#
menuconfig SOC_TI
bool "TI SOC drivers support"

if SOC_TI

config KEYSTONE_NAVIGATOR_QMSS
tristate "Keystone Queue Manager Sub System"
depends on ARCH_KEYSTONE
help
Say y here to support the Keystone multicore Navigator Queue
Manager support. The Queue Manager is a hardware module that
is responsible for accelerating management of the packet queues.
Packets are queued/de-queued by writing/reading descriptor address
to a particular memory mapped location in the Queue Manager module.

If unsure, say N.

endif # SOC_TI
4 changes: 4 additions & 0 deletions drivers/soc/ti/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#
# TI Keystone SOC drivers
#
obj-$(CONFIG_KEYSTONE_NAVIGATOR_QMSS) += knav_qmss_queue.o knav_qmss_acc.o

0 comments on commit 41f93af

Please sign in to comment.