blob: 699c62df287bac81ed5576bf71ea17d96b5e6a1d [file] [log] [blame]
/********************************************************************************
* Marvell GPL License Option
*
* If you received this File from Marvell, you may opt to use, redistribute and/or
* modify this File in accordance with the terms and conditions of the General
* Public License Version 2, June 1991 (the "GPL License"), a copy of which is
* available along with the File in the license.txt file or by writing to the Free
* Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
* on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
*
* THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
* WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
* DISCLAIMED. The GPL License provides additional details about this warranty
* disclaimer.
******************************************************************************/
#ifndef __PLLDIAG__H_
#define __PLLDIAG__H_
#include "Galois_memmap.h"
#include "avioGbl.h"
#undef DIAG_ENV
#undef DIAG_PRT
#if 1
//Diag code use phy_addr directly
#define AVPLL_A (MEMMAP_AVIO_GBL_BASE + RA_avioGbl_AVPLLA)
#define AVPLL_B (MEMMAP_CHIP_CTRL_REG_BASE + RA_Gbl_AVPLLB)
#else
#define AVPLL_A ((volatile unsigned int *)devmem_phy_to_virt(MEMMAP_AVIO_GBL_BASE + RA_avioGbl_AVPLLA))
#define AVPLL_B ((volatile unsigned int *)devmem_phy_to_virt(MEMMAP_CHIP_CTRL_REG_BASE + RA_Gbl_AVPLLB))
#endif
#define PHY_HOST_Bus_Read32(addr_var, u32) *((volatile unsigned*)&(u32)) = *((volatile unsigned*)&(addr_var))
#define PHY_HOST_Bus_Write32(addr_var, u32) *((volatile unsigned*)&(addr_var)) = (u32)
extern int diag_pll_A_VCO_Setting;
extern int diag_pll_B_VCO_Setting;
enum
{
VCO_FREQ_1_512G=0,
VCO_FREQ_1_620G,
VCO_FREQ_1_856G,
VCO_FREQ_2_160G,
VCO_FREQ_2_227G,
VCO_FREQ_2_520G,
VCO_FREQ_2_700G,
VCO_FREQ_2_970G,
};
enum PRINT_LEVEL
{
PRN_NONE=0,
PRN_ERR,
PRN_RES,
PRN_INFO,
PRN_DBG
};
#ifdef DIAG_PRT
//#define dbg_printf(RES, fmt, ...) printf("%d(%s:%d)--" fmt, RES, __FUNCTION__, __LINE__, ##__VA_ARGS__)
#else
#define dbg_printf(RES, fmt, ...)
#endif
extern double diag_vcoFreqs[];
extern double diag_videoFreqs[];
extern void diag_setDPll(SIE_avPll *avPllBase, int enable, int p_sync1, int p_sync2, int chId);
//extern void diag_setVCO(SIE_avPll *avPllBase, int vco_freq_index);
extern void diag_setChanOffset(SIE_avPll *avPllBase, int offset, int chId);
void diag_set_Post_Div(SIE_avPll *avPllBase, int div, int chId);
void diag_set_Post_0P5_Div(SIE_avPll *avPllBase, int enable, int chId);
extern void diag_set1KPPM(SIE_avPll *avPllBase, int inc, int chId);
extern void diag_changeRefFreq(int vco_freq_index, int grp);
extern void diag_avpllFreq(SIE_avPll *avPllBase, int chId);
extern void diag_vcoFreq(SIE_avPll *avPllBase);
extern void diag_videoFreq(SIE_avPll *avPllBase, int freqIndex, int hdmiMode, int frameRate, float overSampleRate, int chId);
extern int diag_clockFreq(SIE_avPll *avPllBase, int vco_freq_index, unsigned int target_freq, int chId);
extern void diag_assertReset(SIE_avPll *avPllBase);
extern void diag_deassertReset(SIE_avPll *avPllBase);
void diag_powerDown(SIE_avPll *avPllBase);
void diag_powerUp(SIE_avPll *avPllBase);
void diag_calibrate(SIE_avPll *avPllBase, double fvco);
extern void diag_initAvPll(void);
extern int diag_pll_A_VCO_Setting;
extern int diag_pll_B_VCO_Setting;
void cpu_cycle_count_delay(unsigned int udelay);
int diag_powerStatus(SIE_avPll *avPllBase);
void dump_AVPLL_regs(int nRegs);
#define BFM_HOST_Bus_Write32 GA_REG_WORD32_WRITE
#define BFM_HOST_Bus_Read32 GA_REG_WORD32_READ
#endif