summaryrefslogtreecommitdiff
path: root/package/lqtapi/src/mps/mps-msg.h
diff options
context:
space:
mode:
Diffstat (limited to 'package/lqtapi/src/mps/mps-msg.h')
-rw-r--r--package/lqtapi/src/mps/mps-msg.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/package/lqtapi/src/mps/mps-msg.h b/package/lqtapi/src/mps/mps-msg.h
new file mode 100644
index 0000000000..8d672fbf5d
--- /dev/null
+++ b/package/lqtapi/src/mps/mps-msg.h
@@ -0,0 +1,87 @@
+#ifndef __MPS_MSG_H__
+#define __MPS_MSG_H__
+
+#include <linux/slab.h>
+
+struct mps_message {
+ uint32_t header;
+ uint32_t data[0];
+};
+
+#define MPS_MSG_HEADER(_rw, _sc, _bc, _cmd, _chan, _mode, _ecmd, _length) \
+ (((_rw) << 31) | ((_sc) << 30) | ((_bc) << 29) | ((_cmd) << 24) | \
+ ((_chan) << 16) | ((_mode) << 13) | ((_ecmd) << 8) | (_length))
+
+#define MPS_MSG_INIT(_msg, _rw, _sc, _bc, _cmd, _chan, _mode, _ecmd, _length) \
+ do { \
+ (_msg)->header = MPS_MSG_HEADER(_rw, _sc, _bc, _cmd, _chan, _mode, \
+ _ecmd, _length); \
+ } while(0)
+
+
+static inline void mps_msg_init(struct mps_message *msg, uint32_t rw, uint32_t sc,
+ uint32_t bc, uint32_t cmd, uint32_t chan, uint32_t mode, uint32_t ecmd,
+ uint32_t length)
+{
+ msg->header = MPS_MSG_HEADER(rw, sc, bc, cmd, chan, mode, ecmd, length);
+}
+
+#define DECLARE_MESSAGE(_name, _size) struct mps_message _name; \
+ uint32_t __mps_msg_data_ ## __FUNCTION__ ## __LINE__[_size]
+
+static inline struct mps_message *mps_message_alloc(size_t size)
+{
+ return kmalloc(sizeof(struct mps_message) + size * sizeof(uint32_t), GFP_KERNEL);
+}
+
+static inline size_t mps_message_size(const struct mps_message *msg)
+{
+ return msg->header & 0xff;
+}
+
+enum {
+ MPS_MSG_WRITE = 0,
+ MPS_MSG_READ = 1,
+};
+
+enum {
+ MPS_CMD_ALI = 1,
+ MPS_CMD_DECT = 3,
+ MPS_CMD_SDD = 4,
+ MPS_CMD_EOP = 6,
+};
+
+#define MOD_PCM 0
+#define MOD_SDD 0
+#define MOD_ALI 1
+#define MOD_SIGNALING 2
+#define MOD_CODER 3
+#define MOD_RESOURCE 6
+#define MOD_SYSTEM 7
+#define ECMD_SYS_VER 6
+#define SYS_CAP_ECMD 7
+#define ECMD_CIDS_DATA 9
+#define ECMD_DCCTL_DEBUG 0x0a
+
+#define ALI_CHAN_CMD 6
+#define ALI_CHAN_ECMD 1
+
+#define MPS_MSG_HEADER_W(_sc, _bc, _cmd, _chan, _mode, _ecmd, _length) \
+ MPS_MSG_HEADER(MPS_MSG_WRITE, _sc, _bc, _cmd, _chan, _mode, _ecmd, _length)
+
+#define MPS_MSG_HEADER_R(_sc, _bc, _cmd, _chan, _mode, _ecmd, _length) \
+ MPS_MSG_HEADER(MPS_MSG_READ, _sc, _bc, _cmd, _chan, _mode, _ecmd, _length)
+
+#define MPS_MSG_CMD_EOP(_mode, _ecmd, _length) \
+ MPS_MSG_HEADER_R(0, 0, MPS_CMD_EOP, 0, _mode, _ecmd, _length)
+
+#define MPS_MSG_CMD_EOP_SYSTEM(_ecmd, _length) \
+ MPS_MSG_CMD_EOP(MOD_SYSTEM, _ecmd, _length)
+
+#define MPS_CMD_GET_VERSION \
+ MPS_MSG_CMD_EOP_SYSTEM(ECMD_SYS_VER, 4)
+
+#define MPS_CMD_ALI(_chan) \
+ MPS_MSG_HEADER_W(0, 0, ALI_CHAN_CMD, _chan, MOD_ALI, ALI_CHAN_ECMD, 12)
+
+#endif