Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
// SPDX-License-Identifier: GPL-2.0
/********************************************************************************
*
*  Copyright (C) 2017 	NEXTCHIP Inc. All rights reserved.
*  Module		: Raptor3 Device Driver
*  Description	: coax_protocol.h
*  Author		:
*  Date         :
*  Version		: Version 1.0
*
********************************************************************************
*  History      :
*
*
********************************************************************************/
#ifndef _RAPTOR3_COAX_PROTOCOL_
#define _RAPTOR3_COAX_PROTOCOL_

#include "nvp6158_common.h"

//#define BANK1 0x01
//#define BANK2 0x02
//#define BANK3 0x03
//#define BANKC 0x0C

#define FW_SUCCESS 0
#define FW_FAILURE -1

#define DBG_TX_INIT_PRINT 0
#define DBG_TX_CMD_PRINT 0
#define DBG_RX_INIT_PRINT 0

typedef enum NC_COAX_CMD_DEF
{
	COAX_CMD_UNKNOWN = 0,
	COAX_CMD_IRIS_INC,
	COAX_CMD_IRIS_DEC,
	COAX_CMD_FOCUS_INC,
	COAX_CMD_FOCUS_DEC,
	COAX_CMD_ZOOM_INC,
	COAX_CMD_ZOOM_DEC,
	COAX_CMD_OSD_ON,
	COAX_CMD_PTZ_UP,
	COAX_CMD_PTZ_DOWN,
	COAX_CMD_PTZ_LEFT,
	COAX_CMD_PTZ_RIGHT,
	COAX_CMD_OSD_ENTER,
	COAX_CMD_SPECIAL_FW,
	COAX_CMD_SPECIAL_CAMEQ,
	COAX_CMD_SPECIAL_FPS,
	COAX_CMD_SPECIAL_MOTION,
	COAX_CMD_SPECIAL_3DNR_REQUEST,
	COAX_CMD_TVI_DOWNSTREAM_REQUEST,
	COAX_CMD_OSD_UP,
	COAX_CMD_OSD_DOWN,
	COAX_CMD_OSD_LEFT,
	COAX_CMD_OSD_RIGHT,
	COAX_CMD_STOP,

	COAX_CMD_MAX,

} NC_COAX_CMD_DEF;

/*=============================================================
 * Coaxial Test Structure[APP <-> DRV]
 ==============================================================*/
typedef struct NC_VD_COAX_TEST_STR{
	 unsigned char ch;
	 unsigned char chip_num;
	 unsigned char bank;
	 unsigned char data_addr;
	 unsigned char param;

	 unsigned char rx_src;             //B5/6/7/8 0x7C
	 unsigned char rx_slice_lev;       //B5/6/7/8 0x7D
	 unsigned char tx_baud;            //B3/4 0x00/80
	 unsigned char tx_pel_baud;        //B3/4 0x02/82
	 unsigned char tx_line_pos0;       //B3/4 0x03/83
	 unsigned char tx_line_pos1;       //B3/4 0x04/84
	 unsigned char tx_pel_line_pos0;   //B3/4 0x07/87
	 unsigned char tx_pel_line_pos1;   //B3/4 0x08/88
	 unsigned char tx_line_count;      //B3/4 0x05/85
	 unsigned char tx_line_count_max;  //B3/4 0x0A/8A
	 unsigned char tx_mode;            //B3/4 0x0B/8B
	 unsigned char tx_sync_pos0;       //B3/4 0x0D/8D
	 unsigned char tx_sync_pos1;       //B3/4 0x0E/8E
	 unsigned char tx_even;            //B3/4 0x2F/AF
	 unsigned char tx_zero_length;     //B3/4 0x0C/
} NC_VD_COAX_TEST_STR;

typedef struct NC_VD_COAX_BANK_DUMP_STR{
	 unsigned char ch;
	 unsigned char vd_dev;
	 unsigned char bank;

	 unsigned char rx_pelco_data[256];

} NC_VD_COAX_BANK_DUMP_STR;

/*=============================================================
 * Coaxial UP/Down Stream Initialize Structure[APP -> DRV]
 ==============================================================*/
typedef struct NC_VD_COAX_STR{
	 char *name;
	 unsigned char ch;
	 unsigned char vd_dev;
	 unsigned char param;
	 NC_FORMAT_STANDARD format_standard;
	 NC_FORMAT_RESOLUTION format_resolution;
	 NC_FORMAT_FPS format_fps;
	 NC_VIVO_CH_FORMATDEF vivo_fmt;
	 NC_COAX_CMD_DEF cmd;

	 unsigned char rx_pelco_data[8];
	 unsigned char rx_data1[8];
	 unsigned char rx_data2[8];
	 unsigned char rx_data3[8];
	 unsigned char rx_data4[8];
	 unsigned char rx_data5[8];
	 unsigned char rx_data6[8];

} NC_VD_COAX_STR;

typedef struct _nvp6158_coax_str{
	unsigned char ch;
	unsigned char param;
	NC_VIVO_CH_FORMATDEF fmt_def;
	NC_COAX_CMD_DEF cmd;
	unsigned char rx_pelco_data[8];
	unsigned char rx_data1[8];
	unsigned char rx_data2[8];
	unsigned char rx_data3[8];
	unsigned char rx_data4[8];
	unsigned char rx_data5[8];
	unsigned char rx_data6[8];

} nvp6158_coax_str;

/*=============================================================
 * COAX FW Upgrade
 ==============================================================*/
typedef struct __file_information
{
	unsigned int	channel;                // FirmUP Channel
	unsigned int	cp_mode;                // Channel Format
  	unsigned char 	filename[64];           //
  	unsigned char 	filePullname[64+32];    // FirmUP FileNmae
  	unsigned int	filesize;
  	unsigned int	filechecksum;		// (sum of file&0x0000FFFFF)
  	unsigned int	currentpacketnum;	// current packet sequnce number(0,1,2........)
  	unsigned int	filepacketnum;		// file packet number = (total size/128bytes), if remain exist, file packet number++
  	unsigned char 	onepacketbuf[128+32];

  	unsigned int	currentFileOffset;	// Current file offset
  	unsigned int	readsize;		// currnet read size

  	unsigned int	receive_addr;

  	unsigned int	ispossiblefirmup[16]; 	// is it possible to update firmware?
  	int 		result;

  	int		appstatus[16];		// Application status

} FIRMWARE_UP_FILE_INFO, *PFIRMWARE_UP_FILE_INFO;

// Coaxial UP Stream Function
void nvp6158_coax_tx_init( nvp6158_coax_str *ps_coax_str );     // Coax Tx : Initialize
void nvp6158_coax_tx_cmd_send( nvp6158_coax_str *ps_coax_str ); // Coax Tx : Command Send

int nvp6158_coax_tx_16bit_init( nvp6158_coax_str *ps_coax_str );
void nvp6158_coax_tx_16bit_cmd_send( nvp6158_coax_str *ps_coax_str );
void nvp6158_coax_tx_cvi_new_cmd_send( nvp6158_coax_str *ps_coax_str );

// Coaxial Down Stream Function
void nvp6158_coax_rx_init( nvp6158_coax_str *ps_coax_str );          	// Coax Rx : Initialize
void nvp6158_coax_rx_data_get( nvp6158_coax_str *coax_rx );      	// Coax Rx : All Rx Buffer read
void nvp6158_coax_rx_buffer_clear( nvp6158_coax_str *ps_coax_str );  	// Coax Rx : Rx Buffer Clear
void nvp6158_coax_rx_deinit( nvp6158_coax_str *ps_coax_str );        	// Coax Rx : 3x63 Set[ 1 -> 0 ]

// Coaxial FW Update Function
void nvp6158_coax_fw_ready_header_check_from_isp_recv(void *p_param);
void nvp6158_coax_fw_ready_cmd_to_isp_send(void *p_param);                // 1.1 FW Update Ready Command Send
void nvp6158_coax_fw_ready_cmd_ack_from_isp_recv(void *p_param);          // 1.2 FW Update Ready ACK
void nvp6158_coax_fw_start_cmd_to_isp_send( void *p_param );              // 2.1 FW Update Start Command Send
void nvp6158_coax_fw_start_cmd_ack_from_isp_recv( void *p_param );        // 2.2 FW Update Start ACK
void nvp6158_coax_fw_one_packet_data_to_isp_send( void *p_param );        // 3.1 FW Update One Packet Data Send
void nvp6158_coax_fw_one_packet_data_ack_from_isp_recv( void *p_param );  // 3.2 FW Update One Packet Data ACK
void nvp6158_coax_fw_end_cmd_to_isp_send( void *p_param );                // 4.1 FW Update End Command Send
void nvp6158_coax_fw_end_cmd_ack_from_isp_recv( void *p_param );          // 4.2 FW Update End ACK

// Coaxial Option
void nvp6158_coax_option_rt_nrt_mode_change_set(void *p_param);    // RT, NRT Mode change

// Coaxial Test Function
void nvp6158_coax_test_tx_init_read(NC_VD_COAX_TEST_STR *coax_tx_mode);    // Coax Test : Tx Init Read
void nvp6158_coax_test_data_set(NC_VD_COAX_TEST_STR *coax_data);           // Coax Test : 1byte Data write
void nvp6158_coax_test_data_get(NC_VD_COAX_TEST_STR *coax_data);           // Coax Test : 1byte Data read
void nvp6158_coax_test_Bank_dump_get(NC_VD_COAX_BANK_DUMP_STR *coax_data); // Bank Dump
unsigned char nvp6158_coax_acp_isp_read(unsigned char ch, unsigned int reg_addr);
unsigned char nvp6158_coax_acp_isp_write(unsigned char ch, unsigned int reg_addr, unsigned char reg_data);

#endif
/********************************************************************
 *  End of file
 ********************************************************************/