/**
 *  Copyright (c) 2018 MediaTek Inc.
 *
 *  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.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *  See http://www.gnu.org/licenses/gpl-2.0.html for more details.
 */
#ifndef __BTMTK_QUEUE_H__
#define __BTMTK_QUEUE_H__

#if (USE_DEVICE_NODE == 1)
/*******************************************************************************
*				  C O N S T A N T
********************************************************************************
*/
#define RING_BUFFER_SIZE		(32768)
#define DRIVER_CMD_CHECK		0

 /*******************************************************************************
 *			       D A T A	 T Y P E S
 ********************************************************************************
 */
typedef void (*BT_RX_EVENT_CB) (void);

struct bt_ring_buffer_mgmt {
	u8 buf[RING_BUFFER_SIZE];
	u32 write_idx;
	u32 read_idx;
	spinlock_t lock;
};

s32 rx_skb_enqueue(struct sk_buff *skb);
u8 btmtk_rx_data_valid(void);
void btmtk_register_rx_event_cb(BT_RX_EVENT_CB cb);

int32_t btmtk_receive_data(struct hci_dev *hdev, u8 *buf, u32 count);
int32_t btmtk_send_data(struct hci_dev *hdev, u8 *buf, u32 count);

#endif

#endif /* __BTMTK_QUEUE_H__ */
