315 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			315 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/****************************************************************************
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
							 | 
						||
| 
								 | 
							
								be copied by any method or incorporated into another program without
							 | 
						||
| 
								 | 
							
								the express written consent of Aerospace C.Power. This Information or any portion
							 | 
						||
| 
								 | 
							
								thereof remains the property of Aerospace C.Power. The Information contained herein
							 | 
						||
| 
								 | 
							
								is believed to be accurate and Aerospace C.Power assumes no responsibility or
							 | 
						||
| 
								 | 
							
								liability for its use in any way and conveys no license or title under
							 | 
						||
| 
								 | 
							
								any patent or copyright and makes no representation or warranty that this
							 | 
						||
| 
								 | 
							
								Information is free from patent or copyright infringement.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								****************************************************************************/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef PHY_ANA_H
							 | 
						||
| 
								 | 
							
								#define PHY_ANA_H
							 | 
						||
| 
								 | 
							
								#include "plc_fr.h"
							 | 
						||
| 
								 | 
							
								#include "os_types.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								extern "C" {
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define PHY_ANA_HW_EN   (0xFFFFFFFF)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define MAC_RX_BUF_SIZE (32*1024-1)
							 | 
						||
| 
								 | 
							
								#define MAC_RX_SAMPLE_SIZE (31*1024)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef enum
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    DA_B_PATH_PHY           = 0x00U,
							 | 
						||
| 
								 | 
							
								    DA_B_PATH_TONE          = 0x01U,
							 | 
						||
| 
								 | 
							
								}DA_B_PATH_CFG;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef enum
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    ADC_MODE_FORCE          = 0x00U,
							 | 
						||
| 
								 | 
							
								    ADC_MODE_AUTO           = 0x01U,
							 | 
						||
| 
								 | 
							
								}ADC_MODE_CFG;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef enum {
							 | 
						||
| 
								 | 
							
								    PHY_ENLIC_TXRX_IDLE,
							 | 
						||
| 
								 | 
							
								    PHY_ENLIC_TXRX_RX,
							 | 
						||
| 
								 | 
							
								    PHY_ENLIC_TXRX_TX,
							 | 
						||
| 
								 | 
							
								    PHY_ENLIC_TXRX_LP
							 | 
						||
| 
								 | 
							
								} PHY_ENLIC_TXRX_ID;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* tx para */
							 | 
						||
| 
								 | 
							
								typedef struct
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    uint32_t buf_size;
							 | 
						||
| 
								 | 
							
								    DA_B_PATH_CFG path;
							 | 
						||
| 
								 | 
							
								    bool_t inv_en;
							 | 
						||
| 
								 | 
							
								    bool_t tone_mode_en;
							 | 
						||
| 
								 | 
							
								    uint32_t tone_num;
							 | 
						||
| 
								 | 
							
								}DaTxPara_t;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* rx para */
							 | 
						||
| 
								 | 
							
								typedef struct
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    /***/
							 | 
						||
| 
								 | 
							
								    uint32_t buf_size;
							 | 
						||
| 
								 | 
							
								    uint32_t sample_size;
							 | 
						||
| 
								 | 
							
								    ADC_MODE_CFG mode;
							 | 
						||
| 
								 | 
							
								    uint32_t thrd;
							 | 
						||
| 
								 | 
							
								    bool_t clk_inv_en;
							 | 
						||
| 
								 | 
							
								    bool_t dmsb_inv_en;
							 | 
						||
| 
								 | 
							
								}DaRxPara_t;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void phy_ada_enable(uint32_t enable);
							 | 
						||
| 
								 | 
							
								void phy_ada_clk_ratio_cfg(uint8_t data);
							 | 
						||
| 
								 | 
							
								void phy_ada_tx_cfg(DaTxPara_t *tp);
							 | 
						||
| 
								 | 
							
								void phy_ada_rx_cfg(DaRxPara_t *rp);
							 | 
						||
| 
								 | 
							
								void phy_adc_en_cfg(uint32_t enable);
							 | 
						||
| 
								 | 
							
								void phy_dac_en_cfg(uint32_t enable);
							 | 
						||
| 
								 | 
							
								bool_t phy_adc_is_sample_done();
							 | 
						||
| 
								 | 
							
								void phy_adc_thrd_cfg(uint32_t thrd);
							 | 
						||
| 
								 | 
							
								void phy_adc_trig_en_cfg(uint32_t enable);
							 | 
						||
| 
								 | 
							
								void warm_rst_ada();
							 | 
						||
| 
								 | 
							
								uint32_t phy_adc_trig_addr_get();
							 | 
						||
| 
								 | 
							
								uint32_t phy_ada_get_power_on();
							 | 
						||
| 
								 | 
							
								void phy_adc_mode_cfg(ADC_MODE_CFG mode);
							 | 
						||
| 
								 | 
							
								void phy_ana_top_reset_n_set(bool_t en);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief enable_ada
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * enable ada clock.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param enable             [clock enable/disable]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void enable_ada(uint32_t enable);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_ana_init.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * initialize granite and geode depend on band id.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param band_id            [band index.]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_ana_init(uint32_t band_id);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_ana_tx_set.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * enable or disable analog TX and DAC.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param tx_en              [analog TX enable.]
							 | 
						||
| 
								 | 
							
								 *@param dac_en             [analog DAC enable.]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_ana_tx_set(bool_t tx_en, bool_t dac_en);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_ana_rx_set.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * enable or disable analog RX and ADC.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param rx_en              [analog RX enable.]
							 | 
						||
| 
								 | 
							
								 *@param adc_en             [analog ADC enable.]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_ana_rx_set(bool_t rx_en, bool_t adc_en);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_ana_sadc_enable.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * enable or disable sadc.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param enable             [analog RX enable.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_ana_sadc_enable(bool_t enable);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_ana_dfe_init.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * initialize bias switch auto for low power.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param none               [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void phy_ana_dfe_init(void);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_ana_i2c_write.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * analog write interface.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param reg_id             [register index from 0 to 10.]
							 | 
						||
| 
								 | 
							
								 *@param wdata              [the data will be written.]
							 | 
						||
| 
								 | 
							
								 *@param mask               [mask for the data.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_ana_i2c_write(uint32_t reg_id, uint32_t wdata, uint32_t mask);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_ana_i2c_read.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * read the value from analog register.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param reg_id             [register index from 0 to 10.]
							 | 
						||
| 
								 | 
							
								 *@param rdata              [the data read from analog with the reg_id.]
							 | 
						||
| 
								 | 
							
								 *@param rodata             [extend status value.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_ana_i2c_read(uint32_t reg_id, uint32_t *rdata, uint8_t *rodata);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_ana_pga_gain_set.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * set the gpa gain value to analog register.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param val                [0-3.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_ana_pga_gain_set(uint32_t val);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_ana_pga_gain_get.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * get the gpa gain value
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@return                   [0-3.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint32_t phy_ana_pga_gain_get(void);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_ana_tx_en.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * enable analog tx.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param en                 [true for enable and false for disable.]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_ana_tx_en(bool_t en);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_ana_rx_en.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * enable analog rx.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param en                 [true for enable and false for disable.]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_ana_rx_en(bool_t en);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_ana_enlic_en.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * enable analog enlic.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param val                [0:off, 1:rx, 2:tx, 3:loopback.]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_ana_enlic_en(uint8_t val);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_ana_filter_set.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * set analog filter value.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param val                [valid value from 7 to 63.]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_ana_filter_set(uint8_t val);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_ana_dbg_print.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * print analog debug register value.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param none               [none.]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_ana_dbg_print();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_sadc_pt_init.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * init sadc reg for pt.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param none               [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_sadc_pt_init();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void phy_ana_tx_comp_set(bool_t tx_en);
							 | 
						||
| 
								 | 
							
								void phy_ana_tx_gpga_set(uint32_t data);
							 | 
						||
| 
								 | 
							
								void phy_ana_rx_pgfloop_set(bool_t en);
							 | 
						||
| 
								 | 
							
								void phy_ana_rx_fe_set(bool_t en);
							 | 
						||
| 
								 | 
							
								void phy_ana_rx_fe_gpga_offset(uint32_t data);
							 | 
						||
| 
								 | 
							
								void phy_ana_rx_fe_gpga(uint8_t data);
							 | 
						||
| 
								 | 
							
								void phy_ana_rx_bq_qvalue(uint8_t data);
							 | 
						||
| 
								 | 
							
								void phy_ana_rx_fe_gbq(uint8_t data);
							 | 
						||
| 
								 | 
							
								void phy_ana_rx_fe_gpgf_offset(uint32_t data);
							 | 
						||
| 
								 | 
							
								void phy_ana_rx_fe_gpgf(uint8_t data);
							 | 
						||
| 
								 | 
							
								void phy_ana_rx_fe_hpfenord2_set(bool_t en);
							 | 
						||
| 
								 | 
							
								void phy_ana_rx_fe_byphpf_set(bool_t en);
							 | 
						||
| 
								 | 
							
								void phy_ana_rx_fe_pwdpgf_offset_set(bool_t en);
							 | 
						||
| 
								 | 
							
								void phy_ana_rx_fe_pwdpga_offset_set(bool_t en);
							 | 
						||
| 
								 | 
							
								void phy_ana_rx_glna(uint8_t data);
							 | 
						||
| 
								 | 
							
								void phy_ana_top_tx_en(bool_t en);
							 | 
						||
| 
								 | 
							
								void phy_ana_top_rx_en(bool_t en);
							 | 
						||
| 
								 | 
							
								void phy_ana_top_adc_en(bool_t en);
							 | 
						||
| 
								 | 
							
								void phy_ana_top_dac_en(bool_t en);
							 | 
						||
| 
								 | 
							
								void phy_ana_top_enlic_rx_set(bool_t en);
							 | 
						||
| 
								 | 
							
								void phy_ana_top_enlic_tx_set(bool_t en);
							 | 
						||
| 
								 | 
							
								void phy_ana_rx_fe_selc_hpf(uint8_t data);
							 | 
						||
| 
								 | 
							
								void phy_ana_rx_fe_selc_pgf_bq(uint8_t data);
							 | 
						||
| 
								 | 
							
								void phy_ana_adc_set(bool_t en);
							 | 
						||
| 
								 | 
							
								uint32_t phy_ana_tx_pgacomp_read();
							 | 
						||
| 
								 | 
							
								void phy_ana_bias_ic0_cfg(uint32_t value);
							 | 
						||
| 
								 | 
							
								void phy_ana_bias_ic1_cfg(uint32_t value);
							 | 
						||
| 
								 | 
							
								void phy_ana_bias_ir0_cfg(uint32_t value);
							 | 
						||
| 
								 | 
							
								void phy_ana_bias_ir1_cfg(uint32_t value);
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_ana_hw_en_bitmap.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * init analog hw or sw control.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param value              [value 0 for sw contrl,0xFFFFFFFF for hw contrl]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_ana_hw_en_bitmap(uint32_t value);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_ana_set_filter_init.  ana filter init
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param band_id                   [band id]
							 | 
						||
| 
								 | 
							
								 *@return                          [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_ana_set_filter_init(uint32_t band_id);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif // !PHY_ANA_H
							 |