slimbus: ngd: Add qcom SLIMBus NGD driver

This patch adds suppor to Qualcomm SLIMBus Non-Generic Device (NGD)
controller driver.
This is light-weight SLIMBus controller driver responsible for
communicating with slave HW directly over the bus using messaging
interface, and communicating with master component residing on ADSP
for bandwidth and data-channel management

Based on intial work from
Karthikeyan Ramasubramanian <kramasub@codeaurora.org> and
Sagar Dharia <sdharia@codeaurora.org>

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Tested-by: Craig Tatlor <ctatlor97@gmail.com>
Reviewed-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Srinivas Kandagatla 2018-06-19 17:13:01 +01:00 committed by Greg Kroah-Hartman
parent 992d36158a
commit 917809e228
4 changed files with 1403 additions and 0 deletions

View File

@ -20,4 +20,15 @@ config SLIM_QCOM_CTRL
Select driver if Qualcomm's SLIMbus Manager Component is Select driver if Qualcomm's SLIMbus Manager Component is
programmed using Linux kernel. programmed using Linux kernel.
config SLIM_QCOM_NGD_CTRL
tristate "Qualcomm SLIMbus Satellite Non-Generic Device Component"
depends on QCOM_QMI_HELPERS
depends on HAS_IOMEM && DMA_ENGINE
help
Select driver if Qualcomm's SLIMbus Satellite Non-Generic Device
Component is programmed using Linux kernel.
This is light-weight slimbus controller driver responsible for
communicating with slave HW directly over the bus using messaging
interface, and communicating with master component residing on ADSP
for bandwidth and data-channel management.
endif endif

View File

@ -8,3 +8,6 @@ slimbus-y := core.o messaging.o sched.o
#Controllers #Controllers
obj-$(CONFIG_SLIM_QCOM_CTRL) += slim-qcom-ctrl.o obj-$(CONFIG_SLIM_QCOM_CTRL) += slim-qcom-ctrl.o
slim-qcom-ctrl-y := qcom-ctrl.o slim-qcom-ctrl-y := qcom-ctrl.o
obj-$(CONFIG_SLIM_QCOM_NGD_CTRL) += slim-qcom-ngd-ctrl.o
slim-qcom-ngd-ctrl-y := qcom-ngd-ctrl.o

File diff suppressed because it is too large Load Diff

View File

@ -17,6 +17,8 @@
/* SLIMbus message types. Related to interpretation of message code. */ /* SLIMbus message types. Related to interpretation of message code. */
#define SLIM_MSG_MT_CORE 0x0 #define SLIM_MSG_MT_CORE 0x0
#define SLIM_MSG_MT_DEST_REFERRED_USER 0x2
#define SLIM_MSG_MT_SRC_REFERRED_USER 0x6
/* /*
* SLIM Broadcast header format * SLIM Broadcast header format
@ -48,6 +50,12 @@
#define SLIM_MSG_MC_NEXT_PAUSE_CLOCK 0x4A #define SLIM_MSG_MC_NEXT_PAUSE_CLOCK 0x4A
#define SLIM_MSG_MC_RECONFIGURE_NOW 0x5F #define SLIM_MSG_MC_RECONFIGURE_NOW 0x5F
/*
* Clock pause flag to indicate that the reconfig message
* corresponds to clock pause sequence
*/
#define SLIM_MSG_CLK_PAUSE_SEQ_FLG (1U << 8)
/* Clock pause values per SLIMbus spec */ /* Clock pause values per SLIMbus spec */
#define SLIM_CLK_FAST 0 #define SLIM_CLK_FAST 0
#define SLIM_CLK_CONST_PHASE 1 #define SLIM_CLK_CONST_PHASE 1