207 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			207 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /****************************************************************************
 | |
| 
 | |
| 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_TMAP_H
 | |
| #define __PHY_TMAP_H
 | |
| 
 | |
| #include "hw_tonemask.h"
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| #define PHY_TMAP_MODU_EN_OFFSET     (3)
 | |
| #define PHY_TMAP_TURBO_RATE_OFFSET  (2)
 | |
| #define PHY_TMAP_MAX                (128)
 | |
| #define PHY_TMAP_TURBO_GI_MAX       (16)
 | |
| 
 | |
| // CLK 75MHz mode
 | |
| #define FFT_POINT                   (3072)
 | |
| #define PB_GI0                      (567)
 | |
| #define ALIGN_PARA                  (96)
 | |
| #define HPAV_RIFS                   (140)
 | |
| #define HPAV_BIFS                   (20)
 | |
| 
 | |
| typedef enum _plc_tone_map_modu_t {
 | |
|     PHY_MODU_BPSK   = 0,
 | |
|     PHY_MODU_QPSK,
 | |
|     PHY_MODU_16QAM,
 | |
|     PHY_MODU_8QAM,
 | |
|     PHY_MODU_64QAM,
 | |
|     PHY_MODU_256QAM,
 | |
|     PHY_MODU_1024QAM,
 | |
|     PHY_MODU_4096QAM
 | |
| } plc_tone_map_modu_t;
 | |
| 
 | |
| typedef enum _plc_tone_map_turbo_rate_t {
 | |
|     PHY_TURBO_RATE_1_2 = 0,
 | |
|     PHY_TURBO_RATE_16_21,
 | |
|     PHY_TURBO_RATE_16_18
 | |
| } plc_tone_map_turbo_rate_t;
 | |
| 
 | |
| typedef enum _plc_tone_map_gi_t {
 | |
|     PHY_GI_417   = 0,
 | |
|     PHY_GI_567,
 | |
|     PHY_GI_3534
 | |
| } plc_tone_map_gi_t;
 | |
| 
 | |
| typedef struct _plc_tmap_rule{
 | |
|     uint8_t rule_id;
 | |
|     uint8_t en;
 | |
|     uint8_t stei;
 | |
|     uint8_t dtei;
 | |
|     uint8_t tmi;
 | |
| } plc_tmap_rule_t;
 | |
| 
 | |
| 
 | |
| /**
 | |
|  *@brief phy_fft_4096p_init.
 | |
|  *
 | |
|  *  enable 4096 point fft for high speed modulation.
 | |
|  *
 | |
|  *@param en                 [true for enable or disable.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| void phy_fft_4096p_init(bool_t en);
 | |
| 
 | |
| #if SUPPORT_GREEN_PHY
 | |
| 
 | |
| /**
 | |
|  *@brief phy_tmap_cal.
 | |
|  *
 | |
|  *  get tone map info from sound data.
 | |
|  *
 | |
|  *@param sound_data_ptr     [sound data pointer.]
 | |
|  *@param tone_map_ptr       [tone map pointer.]
 | |
|  *@param start_tone         [start tone.]
 | |
|  *@param end_tone           [end tone.]
 | |
|  *@param cal_lvl            [calibrate level.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [1 for success or other fail.]
 | |
|  */
 | |
| uint32_t phy_tmap_cal( \
 | |
|     uint32_t *sound_data_ptr, \
 | |
|     uint32_t *tone_map_ptr, \
 | |
|     uint32_t start_tone, \
 | |
|     uint32_t end_tone, \
 | |
|     uint8_t cal_lvl);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_tmap_tx_rule_set.
 | |
|  *
 | |
|  *  tx direction rule config.
 | |
|  *
 | |
|  *@param rule               [rule structure.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| void phy_tmap_tx_rule_set(plc_tmap_rule_t *rule);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_tmap_rx_rule_set.
 | |
|  *
 | |
|  *  rx direction rule config.
 | |
|  *
 | |
|  *@param rule               [rule structure.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| void phy_tmap_rx_rule_set(plc_tmap_rule_t *rule);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_tmap_init.
 | |
|  *
 | |
|  *  sound tone map initilze.
 | |
|  *
 | |
|  *@param none               [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| void phy_tmap_init();
 | |
| 
 | |
| /**
 | |
|  *@brief phy_tmap_self_tmi_set.
 | |
|  *
 | |
|  *  phy tone map tx and rx tmi set.
 | |
|  *
 | |
|  *@param tmi                [which tmi to set.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| void phy_tmap_self_tmi_set(uint8_t tmi);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_tmap_self_tmi_set.
 | |
|  *
 | |
|  *  phy tone map tx and rx tmi set.
 | |
|  *
 | |
|  *@param start_tone         [start tone number.]
 | |
|  *@param end_tone           [end tone number.]
 | |
|  *@param tone_map_ptr       [tone map pointer.]
 | |
|  *@param tmt                [tone mask table pointer.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [symbol bits.]
 | |
|  */
 | |
| uint32_t phy_cal_tmap_symb_bits( \
 | |
|     uint32_t start_tone, \
 | |
|     uint32_t end_tone, \
 | |
|     uint32_t *tone_map_ptr, \
 | |
|     const plc_tonemask_table *tmt);
 | |
| 
 | |
| /**
 | |
|  *@brief hpav_cal_fl_tmap.
 | |
|  *
 | |
|  *  phy frame length calibrate API.
 | |
|  *
 | |
|  *@param mpdu_cnt           [current mpdu counter.]
 | |
|  *@param pb_num             [pb number.]
 | |
|  *@param turbo_rate         [turbo rate select.]
 | |
|  *@param tmap_gi            [GI value.]
 | |
|  *@param bits_per_symb      [bits symbol number.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [frame length.]
 | |
|  */
 | |
| int hpav_cal_fl_tmap
 | |
| (
 | |
|     uint8_t mpdu_cnt,
 | |
|     uint8_t pb_num,
 | |
|     uint8_t turbo_rate,
 | |
|     uint8_t tmap_gi,
 | |
|     uint32_t bits_per_symb
 | |
| );
 | |
| 
 | |
| int hpav_cal_fl_robo(uint8_t tmi, uint8_t mpdu_cnt, uint8_t pb_num);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_symb_bits_get.
 | |
|  *
 | |
|  *  phy symbol number bits calibrate API.
 | |
|  *
 | |
|  *@param tmap_addr          [tone map address.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [symbol number bits.]
 | |
|  */
 | |
| uint32_t phy_symb_bits_get(uint32_t *tmap_addr);
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif
 | |
| 
 |