148 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
/**
 | 
						|
    Header file of SDP module driver
 | 
						|
 | 
						|
    This file is the header file of SDP module
 | 
						|
 | 
						|
    @file       SDP.h
 | 
						|
    @ingroup    mIDrvIO_SDP
 | 
						|
    @note       Nothing.
 | 
						|
 | 
						|
    Copyright   Novatek Microelectronics Corp. 2018.  All rights reserved.
 | 
						|
*/
 | 
						|
 | 
						|
#ifndef _SDP_H
 | 
						|
#define _SDP_H
 | 
						|
#include <kwrap/nvt_type.h>
 | 
						|
//#include "kwrap/type.h"
 | 
						|
//#include "kdrv_type.h"
 | 
						|
//#include "../comm/driver.h"
 | 
						|
 | 
						|
#ifndef DRV_CB
 | 
						|
typedef void (*DRV_CB)(UINT32 event);
 | 
						|
#endif
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
    @addtogroup mIDrvIO_SDP
 | 
						|
*/
 | 
						|
//@{
 | 
						|
 | 
						|
/**
 | 
						|
    SDP ID
 | 
						|
*/
 | 
						|
typedef enum {
 | 
						|
	SDP_ID_1,                   ///< SDP 1
 | 
						|
 | 
						|
	SDP_ID_COUNT,               ///< SDP ID count
 | 
						|
 | 
						|
	ENUM_DUMMY4WORD(SDP_ID)
 | 
						|
} SDP_ID;
 | 
						|
 | 
						|
/* enum _SDP_EVENTS: enum for SDP events
 | 
						|
 *
 | 
						|
 */
 | 
						|
typedef enum _SDP_EVENTS {
 | 
						|
	SDP_EVENTS_FIFO_LOADED = 0x01,      ///< SDP DMA data loaded to FIFO
 | 
						|
	SDP_EVENTS_FIFO_UNDERRUN = 0x02,    ///< SDP DMA FIFO underrun
 | 
						|
	SDP_EVENTS_DMA_EXHAUSTED = 0x04,    ///< SDP DMA exhausted
 | 
						|
	SDP_EVENTS_DMA_END = 0x08,          ///< SDP DMA end
 | 
						|
 | 
						|
	SDP_EVENTS_MRX_FIFO_EMPTY = 0x10,   ///< SDP MRX FIFO empty
 | 
						|
	SDP_EVENTS_MTX_FIFO_FULL = 0x20,    ///< SDP MTX FIFO full
 | 
						|
	SDP_EVENTS_READ_DATA_UNALIGN = 0x40,///< SDP Master read non align length
 | 
						|
 | 
						|
	ENUM_DUMMY4WORD(SDP_EVENTS)
 | 
						|
} SDP_EVENTS;
 | 
						|
 | 
						|
/*
 | 
						|
    SDP_TRANSFER_MODE
 | 
						|
 | 
						|
    @note For SDP_PARAM_ID_TRANSFER_MODE
 | 
						|
*/
 | 
						|
typedef enum {
 | 
						|
	SDP_TRANSFER_MODE_CONT,		//< only support continously read a burst data
 | 
						|
	SDP_TRANSFER_MODE_SLICE,	//< only support read slices data
 | 
						|
 | 
						|
	ENUM_DUMMY4WORD(SDP_TRANSFER_MODE)
 | 
						|
} SDP_TRANSFER_MODE;
 | 
						|
 | 
						|
 | 
						|
/* enum _SDP_PARAM_ID: structure for set/get functions
 | 
						|
 *
 | 
						|
 */
 | 
						|
typedef enum _SDP_PARAM_ID {
 | 
						|
	SDP_PARAM_ID_EVENT_CALLBACK,    ///< [set/get] SDP event callback.
 | 
						|
	SDP_PARAM_ID_TRANSFER_MODE,		///< [set/get] SDP transfer mode by peer SPI master
 | 
						|
									///< can be SDP_TRANSFER_MODE_CONT or SDP_TRANSFER_MODE_SLICE
 | 
						|
 | 
						|
	ENUM_DUMMY4WORD(SDP_PARAM_ID)
 | 
						|
} SDP_PARAM_ID;
 | 
						|
 | 
						|
/*
 | 
						|
 * SDP operation command
 | 
						|
 *
 | 
						|
 * Select which operation for SDP engine.
 | 
						|
 *
 | 
						|
 * @note Used for SDP_TRIGGER_PARAM.
 | 
						|
 */
 | 
						|
typedef enum _SDP_CMD {
 | 
						|
	SDP_CMD_NOP,                        ///< NULL operation
 | 
						|
	SDP_CMD_SET_MASTER_RX_PORT,         ///< Set master receive port (SDP -> SPI master)
 | 
						|
	                                    ///< Set data word to be returned to SPI master through command 08H
 | 
						|
	SDP_CMD_GET_MASTER_TX_PORT,         ///< Get master transmit port (SDP <- SPI master)
 | 
						|
	                                    ///< Get data word transferred from SPI master through command 09H
 | 
						|
	SDP_CMD_SET_DMA_BUF,                ///< Set DMA buffer (SDP -> SPI master)
 | 
						|
	                                    ///< Set data buffer to be returned to SPI master through command 03H
 | 
						|
	SDP_CMD_ABORT_DMA,                	///< Abort DMA Transfer
 | 
						|
	                                    ///< Abort DMA to be returned to SPI master through command 03H
 | 
						|
 | 
						|
	SDP_CMD_COUNT,
 | 
						|
	ENUM_DUMMY4WORD(SDP_CMD)
 | 
						|
} SDP_CMD;
 | 
						|
 | 
						|
 | 
						|
/* struct  _SDP_TRIGGER_PARAM: structure to describe a job
 | 
						|
 *
 | 
						|
 * @note For sdp_trigger()
 | 
						|
 */
 | 
						|
typedef struct _SDP_TRIGGER_PARAM {
 | 
						|
	UINT32		ver;        	///< driver version (reserved)
 | 
						|
	SDP_CMD     command;        ///< Command
 | 
						|
	UINT32      *p_data;        ///< data buffer reference by command
 | 
						|
	UINT32      size;           ///< size of p_data (unit: byte)
 | 
						|
} SDP_TRIGGER_PARAM;
 | 
						|
 | 
						|
/**
 | 
						|
    SDP controller clock source selection
 | 
						|
 | 
						|
    @note Used in SDP_setConfig(SDP_CONFIG_ID_CLK_SRC_SEL);
 | 
						|
*/
 | 
						|
/*
 | 
						|
typedef enum {
 | 
						|
	SDP_CLK_SRC_RTC,   ///< SDP clock source on real chip is 32.768KHz, and 31.25KHz on FPGA.
 | 
						|
	SDP_CLK_SRC_OSC,   ///< SDP clock source on real chip is 32KHz, and 32KHz on FPGA.
 | 
						|
	SDP_CLK_SRC_EXT,   ///< SDP clock source from external clock.
 | 
						|
	SDP_CLK_SRC_3M,    ///< SDP clock source on real chip is 3MHz, and 300KHz on FPGA.
 | 
						|
 | 
						|
	ENUM_DUMMY4WORD(SDP_CLK_SRC_SEL)
 | 
						|
} SDP_CLK_SRC_SEL;
 | 
						|
*/
 | 
						|
 | 
						|
#define _EMULATION_                 DISABLE
 | 
						|
#define _FPGA_EMULATION_            DISABLE
 | 
						|
 | 
						|
extern ER sdp_open(SDP_ID id);
 | 
						|
extern ER sdp_close(SDP_ID id);
 | 
						|
extern ER sdp_trigger(SDP_ID id, SDP_TRIGGER_PARAM *p_param, DRV_CB p_cb_func, void *p_user_data);
 | 
						|
extern ER sdp_set(SDP_ID id, SDP_PARAM_ID param_id, VOID *p_param);
 | 
						|
extern ER sdp_reset(void);
 | 
						|
 | 
						|
void sdp_isr(void);
 | 
						|
void sdp_init(UINT32 BaseAddr);
 | 
						|
void sdp_platform_init(void);
 | 
						|
void sdp_platform_uninit(void);
 | 
						|
 | 
						|
//@}
 | 
						|
 | 
						|
#endif
 |