/*
 * Copyright 2017 NXP
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 ******************************************************************************
 * communication stack of audio with rpmsg
 ******************************************************************************
 * Packet structure:
 *   A SRTM message consists of a 10 bytes header followed by 0~N bytes of data
 *
 *   +---------------+-------------------------------+
 *   |               |            Content            |
 *   +---------------+-------------------------------+
 *   |  Byte Offset  | 7   6   5   4   3   2   1   0 |
 *   +---------------+---+---+---+---+---+---+---+---+
 *   |       0       |           Category            |
 *   +---------------+---+---+---+---+---+---+---+---+
 *   |     1 ~ 2     |           Version             |
 *   +---------------+---+---+---+---+---+---+---+---+
 *   |       3       |             Type              |
 *   +---------------+---+---+---+---+---+---+---+---+
 *   |       4       |           Command             |
 *   +---------------+---+---+---+---+---+---+---+---+
 *   |       5       |           Reserved0           |
 *   +---------------+---+---+---+---+---+---+---+---+
 *   |       6       |           Reserved1           |
 *   +---------------+---+---+---+---+---+---+---+---+
 *   |       7       |           Reserved2           |
 *   +---------------+---+---+---+---+---+---+---+---+
 *   |       8       |           Reserved3           |
 *   +---------------+---+---+---+---+---+---+---+---+
 *   |       9       |           Reserved4           |
 *   +---------------+---+---+---+---+---+---+---+---+
 *   |       10      |            DATA 0             |
 *   +---------------+---+---+---+---+---+---+---+---+
 *   :   :   :   :   :   :   :   :   :   :   :   :   :
 *   +---------------+---+---+---+---+---+---+---+---+
 *   |   N + 10 - 1  |            DATA N-1           |
 *   +---------------+---+---+---+---+---+---+---+---+
 *
 *   +----------+------------+------------------------------------------------+
 *   |  Field   |    Byte    |                                                |
 *   +----------+------------+------------------------------------------------+
 *   | Category |     0      | The destination category.                      |
 *   +----------+------------+------------------------------------------------+
 *   | Version  |   1 ~ 2    | The category version of the sender of the      |
 *   |          |            | packet.                                        |
 *   |          |            | The first byte represent the major version of  |
 *   |          |            | the packet.The second byte represent the minor |
 *   |          |            | version of the packet.                         |
 *   +----------+------------+------------------------------------------------+
 *   |  Type    |     3      | The message type of current message packet.    |
 *   +----------+------------+------------------------------------------------+
 *   | Command  |     4      | The command byte sent to remote processor/SoC. |
 *   +----------+------------+------------------------------------------------+
 *   | Reserved |   5 ~ 9    | Reserved field for future extension.           |
 *   +----------+------------+------------------------------------------------+
 *   | Data     |     N      | The data payload of the message packet.        |
 *   +----------+------------+------------------------------------------------+
 *
 * Audio control:
 *   SRTM Audio Control Category Request Command Table:
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |  Category  | Version | Type | Command | Data                          | Function                                       |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x00   | Data[0]: Audio Device Index   | Open an Audio TX Instance.                     |
 *       |            |         |      |         | Data[1]:     format           |                                                |
 *       |            |         |      |         | Data[2]:     channels         |                                                |
 *       |            |         |      |         | Data[3-6]:   samplerate       |                                                |
 *       |            |         |      |         | Data[7-10]:  buffer_addr      |                                                |
 *       |            |         |      |         | Data[11-14]: buffer_size      |                                                |
 *       |            |         |      |         | Data[15-18]: period_size      |                                                |
 *       |            |         |      |         | Data[19-22]: buffer_tail      |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x01   | Data[0]: Audio Device Index   | Start an Audio TX Instance.                    |
 *       |            |         |      |         | Same as above command         |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x02   | Data[0]: Audio Device Index   | Pause an Audio TX Instance.                    |
 *       |            |         |      |         | Same as above command         |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x03   | Data[0]: Audio Device Index   | Resume an Audio TX Instance.                   |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x04   | Data[0]: Audio Device Index   | Terminate an Audio TX Instance.                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x05   | Data[0]: Audio Device Index   | Close an Audio TX Instance.                    |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x06   | Data[0]: Audio Device Index   | Set Parameters for an Audio TX Instance.       |
 *       |            |         |      |         | Data[1]:     format           |                                                |
 *       |            |         |      |         | Data[2]:     channels         |                                                |
 *       |            |         |      |         | Data[3-6]:   samplerate       |                                                |
 *       |            |         |      |         | Data[7-22]:  reserved         |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x07   | Data[0]: Audio Device Index   | Set Audio TX Buffer.                           |
 *       |            |         |      |         | Data[1-6]:   reserved         |                                                |
 *       |            |         |      |         | Data[7-10]:  buffer_addr      |                                                |
 *       |            |         |      |         | Data[11-14]: buffer_size      |                                                |
 *       |            |         |      |         | Data[15-18]: period_size      |                                                |
 *       |            |         |      |         | Data[19-22]: buffer_tail      |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x08   | Data[0]: Audio Device Index   | Suspend an Audio TX Instance.                  |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x09   | Data[0]: Audio Device Index   | Resume an Audio TX Instance.                   |
 *       |            |         |      |         | Data[1]:     format           |                                                |
 *       |            |         |      |         | Data[2]:     channels         |                                                |
 *       |            |         |      |         | Data[3-6]:   samplerate       |                                                |
 *       |            |         |      |         | Data[7-10]:  buffer_addr      |                                                |
 *       |            |         |      |         | Data[11-14]: buffer_size      |                                                |
 *       |            |         |      |         | Data[15-18]: period_size      |                                                |
 *       |            |         |      |         | Data[19-22]: buffer_tail      |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x0A   | Data[0]: Audio Device Index   | Open an Audio RX Instance.                     |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x0B   | Data[0]: Audio Device Index   | Start an Audio RX Instance.                    |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x0C   | Data[0]: Audio Device Index   | Pause an Audio RX Instance.                    |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x0D   | Data[0]: Audio Device Index   | Resume an Audio RX Instance.                   |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x0E   | Data[0]: Audio Device Index   | Terminate an Audio RX Instance.                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x0F   | Data[0]: Audio Device Index   | Close an Audio RX Instance.                    |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x10   | Data[0]: Audio Device Index   | Set Parameters for an Audio RX Instance.       |
 *       |            |         |      |         | Data[1]:     format           |                                                |
 *       |            |         |      |         | Data[2]:     channels         |                                                |
 *       |            |         |      |         | Data[3-6]:   samplerate       |                                                |
 *       |            |         |      |         | Data[7-22]:  reserved         |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x11   | Data[0]: Audio Device Index   | Set Audio RX Buffer.                           |
 *       |            |         |      |         | Data[1-6]:   reserved         |                                                |
 *       |            |         |      |         | Data[7-10]:  buffer_addr      |                                                |
 *       |            |         |      |         | Data[11-14]: buffer_size      |                                                |
 *       |            |         |      |         | Data[15-18]: period_size      |                                                |
 *       |            |         |      |         | Data[19-22]: buffer_tail      |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x12   | Data[0]: Audio Device Index   | Suspend an Audio RX Instance.                  |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x13   | Data[0]: Audio Device Index   | Resume an Audio RX Instance.                   |
 *       |            |         |      |         | Data[1]:     format           |                                                |
 *       |            |         |      |         | Data[2]:     channels         |                                                |
 *       |            |         |      |         | Data[3-6]:   samplerate       |                                                |
 *       |            |         |      |         | Data[7-10]:  buffer_addr      |                                                |
 *       |            |         |      |         | Data[11-14]: buffer_size      |                                                |
 *       |            |         |      |         | Data[15-18]: period_size      |                                                |
 *       |            |         |      |         | Data[19-22]: buffer_tail      |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x14   | Data[0]: Audio Device Index   | Set register value to codec.                   |
 *       |            |         |      |         | Data[1-6]:   reserved         |                                                |
 *       |            |         |      |         | Data[7-10]:  register         |                                                |
 *       |            |         |      |         | Data[11-14]: value            |                                                |
 *       |            |         |      |         | Data[15-22]: reserved         |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x00 |  0x15   | Data[0]: Audio Device Index   | Get register value from codec.                 |
 *       |            |         |      |         | Data[1-6]:   reserved         |                                                |
 *       |            |         |      |         | Data[7-10]:  register         |                                                |
 *       |            |         |      |         | Data[11-22]: reserved         |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       Note 1: See <List of Sample Format> for available value of
 *               Sample Format;
 *       Note 2: See <List of Audio Channels> for available value of Channels;
 *       Note 3: Sample Rate of Set Parameters for an Audio TX Instance
 *               Command and Set Parameters for an Audio RX Instance Command is
 *               in little-endian format.
 *
 *       SRTM Audio Control Category Response Command Table:
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |  Category  | Version | Type | Command | Data                          | Function                                       |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x00   | Data[0]: Audio Device Index   | Reply for Open an Audio TX Instance.           |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x01   | Data[0]: Audio Device Index   | Reply for Start an Audio TX Instance.          |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x02   | Data[0]: Audio Device Index   | Reply for Pause an Audio TX Instance.          |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x03   | Data[0]: Audio Device Index   | Reply for Resume an Audio TX Instance.         |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x04   | Data[0]: Audio Device Index   | Reply for Terminate an Audio TX Instance.      |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x05   | Data[0]: Audio Device Index   | Reply for Close an Audio TX Instance.          |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x06   | Data[0]: Audio Device Index   | Reply for Set Parameters for an Audio          |
 *       |            |         |      |         | Data[1]: Return code          | TX Instance.                                   |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x07   | Data[0]: Audio Device Index   | Reply for Set Audio TX Buffer.                 |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x08   | Data[0]: Audio Device Index   | Reply for Suspend an Audio TX Instance.        |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x09   | Data[0]: Audio Device Index   | Reply for Resume an Audio TX Instance.         |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x0A   | Data[0]: Audio Device Index   | Reply for Open an Audio RX Instance.           |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x0B   | Data[0]: Audio Device Index   | Reply for Start an Audio RX Instance.          |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x0C   | Data[0]: Audio Device Index   | Reply for Pause an Audio RX Instance.          |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x0D   | Data[0]: Audio Device Index   | Reply for Resume an Audio RX Instance.         |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x0E   | Data[0]: Audio Device Index   | Reply for Terminate an Audio RX Instance.      |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x0F   | Data[0]: Audio Device Index   | Reply for Close an Audio RX Instance.          |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x10   | Data[0]: Audio Device Index   | Reply for Set Parameters for an Audio          |
 *       |            |         |      |         | Data[1]: Return code          | RX Instance.                                   |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x11   | Data[0]: Audio Device Index   | Reply for Set Audio RX Buffer.                 |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x12   | Data[0]: Audio Device Index   | Reply for Supend an Audio RX Instance.         |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x13   | Data[0]: Audio Device Index   | Reply for Resume an Audio RX Instance.         |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x14   | Data[0]: Audio Device Index   | Reply for Set codec register value.            |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x01 |  0x15   | Data[0]: Audio Device Index   | Reply for Get codec register value.            |
 *       |            |         |      |         | Data[1]: Return code          |                                                |
 *       |            |         |      |         | Data[2-6]:   reserved         |                                                |
 *       |            |         |      |         | Data[7-10]:  register         |                                                |
 *       |            |         |      |         | Data[11-14]: value            |                                                |
 *       |            |         |      |         | Data[15-22]: reserved         |                                                |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *
 *       SRTM Audio Control Category Notification Command Table:
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |  Category  | Version | Type | Command | Data                          | Function                                       |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x02 |  0x00   | Data[0]: Audio Device Index   | Notify one TX period is finished.              |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *       |    0x03    | 0x0100  | 0x02 |  0x01   | Data[0]: Audio Device Index   | Notify one RX period is finished.              |
 *       +------------+---------+------+---------+-------------------------------+------------------------------------------------+
 *
 *       List of Sample Format:
 *       +--------------------+----------------------------------------------+
 *       |   Sample Format    |             Description                      |
 *       +--------------------+----------------------------------------------+
 *       |         0x0        | S16_LE                                       |
 *       +--------------------+----------------------------------------------+
 *       |         0x1        | S24_LE                                       |
 *       +--------------------+----------------------------------------------+
 *
 *       List of Audio Channels
 *       +--------------------+----------------------------------------------+
 *       |    Audio Channel   |             Description                      |
 *       +--------------------+----------------------------------------------+
 *       |         0x0        | Left Channel                                 |
 *       +--------------------+----------------------------------------------+
 *       |         0x1        | Right Channel                                |
 *       +--------------------+----------------------------------------------+
 *       |         0x2        | Left & Right Channel                         |
 *       +--------------------+----------------------------------------------+
 *
 */

#ifndef __FSL_RPMSG_I2S_H
#define __FSL_RPMSG_I2S_H

#include <linux/pm_qos.h>
#include <linux/imx_rpmsg.h>
#include <linux/interrupt.h>
#include <sound/dmaengine_pcm.h>

#define RPMSG_TIMEOUT 1000

#define		I2S_TX_OPEN		0x0
#define		I2S_TX_START		0x1
#define		I2S_TX_PAUSE		0x2
#define		I2S_TX_RESTART		0x3
#define		I2S_TX_TERMINATE	0x4
#define		I2S_TX_CLOSE		0x5
#define		I2S_TX_HW_PARAM		0x6
#define		I2S_TX_BUFFER		0x7
#define		I2S_TX_SUSPEND		0x8
#define		I2S_TX_RESUME		0x9

#define		I2S_RX_OPEN		0xA
#define		I2S_RX_START		0xB
#define		I2S_RX_PAUSE		0xC
#define		I2S_RX_RESTART		0xD
#define		I2S_RX_TERMINATE	0xE
#define		I2S_RX_CLOSE		0xF
#define		I2S_RX_HW_PARAM		0x10
#define		I2S_RX_BUFFER		0x11
#define		I2S_RX_SUSPEND		0x12
#define		I2S_RX_RESUME		0x13
#define         SET_CODEC_VALUE         0x14
#define         GET_CODEC_VALUE         0x15
#define		I2S_TX_POINTER		0x16
#define		I2S_RX_POINTER		0x17

#define         I2S_TYPE_A_NUM          0x18

#define         WORK_MAX_NUM		0x30

#define		I2S_TX_PERIOD_DONE	0x0
#define		I2S_RX_PERIOD_DONE	0x1

#define         I2S_TYPE_C_NUM          0x2

#define         I2S_CMD_MAX_NUM	        (I2S_TYPE_A_NUM + I2S_TYPE_C_NUM)

#define         I2S_TYPE_A		0x0
#define         I2S_TYPE_B		0x1
#define         I2S_TYPE_C		0x2

#define		I2S_RESP_NONE		0x0
#define		I2S_RESP_NOT_ALLOWED	0x1
#define		I2S_RESP_SUCCESS	0x2
#define		I2S_RESP_FAILED		0x3

#define		RPMSG_S16_LE		0x0
#define		RPMSG_S24_LE		0x1
#define		RPMSG_S32_LE		0x2
#define		RPMSG_DSD_U16_LE	0x3
#define		RPMSG_DSD_U24_LE	0x4
#define		RPMSG_DSD_U32_LE	0x5

#define		RPMSG_CH_LEFT		0x0
#define		RPMSG_CH_RIGHT		0x1
#define		RPMSG_CH_STEREO		0x2

struct i2s_param_s {
	unsigned char audioindex;
	unsigned char format;
	unsigned char channels;
	unsigned int  rate;
	unsigned int  buffer_addr;  /* Register for SET_CODEC_VALUE*/
	unsigned int  buffer_size;  /* register value for SET_CODEC_VALUE*/
	unsigned int  period_size;
	unsigned int  buffer_tail;
} __packed;

struct i2s_param_r {
	unsigned char audioindex;
	unsigned char resp;
	unsigned char reserved1[1];
	unsigned int  buffer_offset;	/* the consumed offset of buffer*/
	unsigned int  reg_addr;
	unsigned int  reg_data;
	unsigned char reserved2[4];
	unsigned int  buffer_tail;
} __packed;

/* struct of send message */
struct i2s_rpmsg_s {
	struct imx_rpmsg_head header;
	struct i2s_param_s    param;
};

/* struct of received message */
struct i2s_rpmsg_r {
	struct imx_rpmsg_head header;
	struct i2s_param_r    param;
};

struct i2s_rpmsg {
	struct i2s_rpmsg_s       send_msg;
	struct i2s_rpmsg_r       recv_msg;
};

struct work_of_rpmsg {
	struct i2s_info		*i2s_info;
	/* sent msg for each work */
	struct i2s_rpmsg         msg;
	struct work_struct       work;
};

typedef void (*dma_callback)(void *arg);
struct i2s_info {
	struct rpmsg_device     *rpdev;
	struct device            *dev;
	struct completion        cmd_complete;

	/* received msg (global) */
	struct i2s_rpmsg_r       recv_msg;

	struct i2s_rpmsg         rpmsg[I2S_CMD_MAX_NUM];
	struct i2s_rpmsg         period_done_msg[2];
	bool                     period_done_msg_enabled[2];

	struct workqueue_struct  *rpmsg_wq;
	struct work_of_rpmsg	 work_list[WORK_MAX_NUM];
	int                      work_write_index;
	int                      work_read_index;
	int                      msg_drop_count[2];
	int                      num_period[2];
	void                     *callback_param[2];
	int (*send_message)(struct i2s_rpmsg *msg, struct i2s_info *info);
	dma_callback             callback[2];
	spinlock_t               lock[2];
	struct mutex             tx_lock;
	struct mutex             i2c_lock;
	struct timer_list        stream_timer[2];
	int                      prealloc_buffer_size;
};

struct fsl_rpmsg_i2s {
	struct platform_device *pdev;
	struct i2s_info        i2s_info;
	struct pm_qos_request pm_qos_req;
	int codec_dummy;
	int codec_wm8960;
	int codec_cs42888;
	int codec_ak4497;
	int force_lpa;
	int version;
	int rates;
	u64 formats;
	int enable_lpa;
};

#define RPMSG_CODEC_DRV_NAME_WM8960 "rpmsg-audio-codec-wm8960"
#define RPMSG_CODEC_DRV_NAME_CS42888 "rpmsg-audio-codec-cs42888"
#define RPMSG_CODEC_DRV_NAME_AK4497 "rpmsg-audio-codec-ak4497"

struct fsl_rpmsg_codec {
	int audioindex;

	/*property for wm8960*/
	bool capless;
	bool shared_lrclk;

	/*property for cs42xx8*/

	char name[32];
	int num_adcs;
};

#endif /* __FSL_RPMSG_I2S_H */
