Add IW-RFSOC-2T2R external preset
This commit is contained in:
parent
eeef70cd7a
commit
e38fc7e039
119
LMK_Preset.c
119
LMK_Preset.c
@ -133,4 +133,123 @@ int LMK_ReadReg(LMK_Config *DevConfig, u16 RegisterAddress, u8 *Value)
|
||||
#endif //LMK_PRESET_IW_RFSOC_2T2R_INTERNAL
|
||||
|
||||
#ifdef LMK_PRESET_IW_RFSOC_2T2R_EXTERNAL
|
||||
|
||||
#include "xspips.h"
|
||||
|
||||
int LMK_ConfigSetRegister(LMK_Config *DevConfig, LMK_Simple *SimpleConfig)
|
||||
{
|
||||
int i;
|
||||
|
||||
// Calculate Register Value
|
||||
DevConfig->Config.OSCout_FMT = 0;
|
||||
DevConfig->Config.OSCout_MUX = 1;
|
||||
DevConfig->Config.VCO_MUX = SimpleConfig->Generated.VCOSelect;
|
||||
DevConfig->Config.SYSREF_MUX = 3;
|
||||
DevConfig->Config.SYSREF_DIVH = SimpleConfig->Generated.SYSREF_DIV >> 8;
|
||||
DevConfig->Config.SYSREF_DIVL = SimpleConfig->Generated.SYSREF_DIV & 0xFF;
|
||||
DevConfig->Config.PLL1_NCLK_MUX = 0;
|
||||
DevConfig->Config.PLL2_NCLK_MUX = 0;
|
||||
DevConfig->Config.SYNC_DIS0 = 1;
|
||||
DevConfig->Config.SYNC_DIS2 = 1;
|
||||
DevConfig->Config.SYNC_DIS4 = 1;
|
||||
DevConfig->Config.SYNC_DIS6 = 1;
|
||||
DevConfig->Config.SYNC_DIS8 = 1;
|
||||
DevConfig->Config.SYNC_DIS10 = 1;
|
||||
DevConfig->Config.SYNC_DIS12 = 1;
|
||||
DevConfig->Config.SYNC_DISSYSREF = 1;
|
||||
DevConfig->Config.CLKin0_TYPE = 0;
|
||||
DevConfig->Config.CLKin1_TYPE = 0;
|
||||
DevConfig->Config.CLKin2_TYPE = 0;
|
||||
DevConfig->Config.CLKin0_EN = 0;
|
||||
DevConfig->Config.CLKin1_EN = 0;
|
||||
DevConfig->Config.CLKin2_EN = 0;
|
||||
DevConfig->Config.CLKin0_OUT_MUX = 3;
|
||||
// Set CLKin with SPI, release CLKin_SEL0 PIN.
|
||||
DevConfig->Config.CLKin1_OUT_MUX = 2;
|
||||
DevConfig->Config.CLKin_SEL_MODE = 1;
|
||||
// Set CLKin_SEL0 as SPI readback.
|
||||
DevConfig->Config.CLKin_SEL0_TYPE = 3;
|
||||
DevConfig->Config.CLKin_SEL0_MUX = 6;
|
||||
DevConfig->Config.CLKin_SEL1_TYPE = 0;
|
||||
DevConfig->Config.CLKin_SEL1_MUX = 0;
|
||||
DevConfig->Config.SDIO_RDBK_TYPE = 0;
|
||||
DevConfig->Config.RESET_TYPE = 2;
|
||||
DevConfig->Config.RESET_MUX = 0;
|
||||
DevConfig->Config.CLKin1_RH = SimpleConfig->Generated.CLKin_R >> 8;
|
||||
DevConfig->Config.CLKin1_RL = SimpleConfig->Generated.CLKin_R & 0xFF;
|
||||
DevConfig->Config.PLL1_NH = SimpleConfig->Generated.PLL1_N >> 8;
|
||||
DevConfig->Config.PLL1_NL = SimpleConfig->Generated.PLL1_N & 0xFF;
|
||||
DevConfig->Config.PLL1_LD_TYPE = 3;
|
||||
DevConfig->Config.PLL1_LD_MUX = 1;
|
||||
DevConfig->Config.PLL2_RH = SimpleConfig->Generated.PLL2_R >> 8;
|
||||
DevConfig->Config.PLL2_RL = SimpleConfig->Generated.PLL2_R & 0xFF;
|
||||
DevConfig->Config.PLL2_REF_2X_EN = 0;
|
||||
DevConfig->Config.PLL2_XTAL_EN = 0;
|
||||
DevConfig->Config.OSCin_FREQ = 4;
|
||||
DevConfig->Config.PLL2_P = 2;
|
||||
DevConfig->Config.PLL2_NH = (SimpleConfig->Generated.PLL2_N >> 16) & 0xFF;
|
||||
DevConfig->Config.PLL2_FCAL_DIS = 0;
|
||||
DevConfig->Config.PLL2_NM = (SimpleConfig->Generated.PLL2_N >> 8) & 0xFF;
|
||||
DevConfig->Config.PLL2_NL = SimpleConfig->Generated.PLL2_N & 0xFF;
|
||||
DevConfig->Config.PLL2_LD_TYPE = 3;
|
||||
DevConfig->Config.PLL2_LD_MUX = 2;
|
||||
|
||||
for(i = 0; i < 7; i++)
|
||||
{
|
||||
if(SimpleConfig->Generated.DCLKout_Div[i] != 0)
|
||||
{
|
||||
DevConfig->Config.Clock[i].DCLKout_Div = SimpleConfig->Generated.DCLKout_Div[i];
|
||||
DevConfig->Config.Clock[i].DCLKout_MUX = 1;
|
||||
DevConfig->Config.Clock[i].SDCLKout_HS = 1;
|
||||
DevConfig->Config.Clock[i].SDCLKout_DDLY = 0;
|
||||
DevConfig->Config.Clock[i].SDCLKout_MUX = 1;
|
||||
DevConfig->Config.Clock[i].DCLKout_HS = 0;
|
||||
DevConfig->Config.Clock[i].SDCLKout_PD = 0;
|
||||
DevConfig->Config.Clock[i].SDCLKout_DIS_MODE = 0;
|
||||
DevConfig->Config.Clock[i].CLKout_PD = 0;
|
||||
DevConfig->Config.Clock[i].DCLKout_ADLY_PD = 1;
|
||||
DevConfig->Config.Clock[i].DCLKout_ADLYg_PD = 1;
|
||||
DevConfig->Config.Clock[i].DCLKout_HSg_PD = 0;
|
||||
DevConfig->Config.Clock[i].DCLKout_DDLY_PD = 1;
|
||||
DevConfig->Config.Clock[i].DCLKout_FMT = 1;
|
||||
DevConfig->Config.Clock[i].DCLKout_POL = 0;
|
||||
DevConfig->Config.Clock[i].SDCLKout_FMT = 1;
|
||||
DevConfig->Config.Clock[i].SDCLKout_POL = 0;
|
||||
}
|
||||
}
|
||||
return LMK_SUCCESS;
|
||||
}
|
||||
|
||||
int LMK_WriteReg(LMK_Config *DevConfig, u16 RegisterAddress, u8 Value)
|
||||
{
|
||||
u8 writebuf[3];
|
||||
|
||||
writebuf[0] = 0x0 | ((RegisterAddress >> 8) & 0x1F);
|
||||
writebuf[1] = RegisterAddress & 0xFF;
|
||||
writebuf[2] = Value;
|
||||
|
||||
XSpiPs_SetSlaveSelect((XSpiPs *)DevConfig->InterfaceInst, 0x00);
|
||||
XSpiPs_PolledTransfer((XSpiPs *)DevConfig->InterfaceInst, writebuf, NULL, 3);
|
||||
XSpiPs_SetSlaveSelect((XSpiPs *)DevConfig->InterfaceInst, 0x0F);
|
||||
|
||||
return LMK_SUCCESS;
|
||||
}
|
||||
|
||||
int LMK_ReadReg(LMK_Config *DevConfig, u16 RegisterAddress, u8 *Value)
|
||||
{
|
||||
u8 readbuf[3];
|
||||
|
||||
readbuf[0] = 0x80 | ((RegisterAddress >> 8) & 0x1F);
|
||||
readbuf[1] = RegisterAddress & 0xFF;
|
||||
readbuf[2] = 0;
|
||||
|
||||
XSpiPs_SetSlaveSelect((XSpiPs *)DevConfig->InterfaceInst, 0x00);
|
||||
XSpiPs_PolledTransfer((XSpiPs *)DevConfig->InterfaceInst, readbuf, readbuf, 3);
|
||||
XSpiPs_SetSlaveSelect((XSpiPs *)DevConfig->InterfaceInst, 0x0F);
|
||||
|
||||
*Value = readbuf[2];
|
||||
|
||||
return LMK_SUCCESS;
|
||||
}
|
||||
|
||||
#endif //LMK_PRESET_IW_RFSOC_2T2R_EXTERNAL
|
Loading…
x
Reference in New Issue
Block a user