openMMC
Open Source Modular MMC for AMCs
Loading...
Searching...
No Matches
cdce906.h File Reference

CDCE906 PLL driver function declarations. More...

#include <stdint.h>
Include dependency graph for cdce906.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  cdce906_cfg
 

Enumerations

enum  cdce906_clk_src {
  CDCE906_CLK_SRC_CRYSTAL , CDCE906_CLK_SRC_CLKIN0_LVCMOS , CDCE906_CLK_SRC_CLKIN1_LVCMOS , CDCE906_CLK_SRC_CLKIN_DIFF ,
  CDCE906_CLK_SRC_INVALID
}
 
enum  cdce906_pll_vco_mux { CDCE906_PLL_VCO_MUX_PLL , CDCE906_PLL_VCO_MUX_VCO }
 
enum  cdce906_pll_fvco { CDCE906_PLL_FVCO_80_200MHZ , CDCE906_PLL_FVCO_180_300MHZ }
 
enum  cdce906_s0_cfg { CDCE906_S0_CFG_POWER_DOWN_CTRL , CDCE906_S0_CFG_PLL_DIV_BYPASS_CTRL , CDCE906_S0_CFG_CLKSEL_CTRL , CDCE906_S0_CFG_I2C_ADDR }
 
enum  cdce906_s1_cfg { CDCE906_S1_CFG_Yx_FIXED_OUTPUT_CTRL , CDCE906_S1_CFG_Yx_TRISTATE_CTRL , CDCE906_S1_CFG_I2C_ADDR , CDCE906_S1_CFG_INVALID }
 
enum  cdce906_px_pll_sel {
  CDCE906_Px_PLL_SEL_BYPASS , CDCE906_Px_PLL_SEL_PLL1 , CDCE906_Px_PLL_SEL_PLL2 , CDCE906_Px_PLL_SEL_PLL2_SSC ,
  CDCE906_Px_PLL_SEL_PLL3 , CDCE906_Px_PLL_SEL_INVALID
}
 
enum  cdce906_yx_out_cfg { CDCE906_Yx_OUT_CFG_EN , CDCE906_Yx_OUT_CFG_EN_INV , CDCE906_Yx_OUT_CFG_DIS_LOW , CDCE906_Yx_OUT_CFG_DIS_HIGH }
 
enum  cdce906_yx_slew_cfg { CDCE906_Yx_SLEW_CFG_NOMINAL , CDCE906_Yx_SLEW_CFG_NOMINAL_1NS , CDCE906_Yx_SLEW_CFG_NOMINAL_2NS , CDCE906_Yx_SLEW_CFG_NOMINAL_3NS }
 
enum  cdce906_yx_px_sel {
  CDCE906_Yx_Px_SEL_P0 , CDCE906_Yx_Px_SEL_P1 , CDCE906_Yx_Px_SEL_P2 , CDCE906_Yx_Px_SEL_P3 ,
  CDCE906_Yx_Px_SEL_P4 , CDCE906_Yx_Px_SEL_P5 , CDCE906_Yx_Px_SEL_INVALID
}
 
enum  cdce906_ssc_mod_amount {
  CDCE906_SSC_MOD_AMOUNT_OFF = 0 , CDCE906_SSC_MOD_AMOUNT_0P1_CENTER , CDCE906_SSC_MOD_AMOUNT_0P25_CENTER , CDCE906_SSC_MOD_AMOUNT_0P4_CENTER ,
  CDCE906_SSC_MOD_AMOUNT_1P0_DOWN , CDCE906_SSC_MOD_AMOUNT_1P5_DOWN , CDCE906_SSC_MOD_AMOUNT_2P0_DOWN , CDCE906_SSC_MOD_AMOUNT_3P0_DOWN
}
 
enum  cdce906_ssc_mod_freq {
  CDCE906_SSC_MOD_FREQ_5680 = 0 , CDCE906_SSC_MOD_FREQ_5412 , CDCE906_SSC_MOD_FREQ_5144 , CDCE906_SSC_MOD_FREQ_4876 ,
  CDCE906_SSC_MOD_FREQ_4608 , CDCE906_SSC_MOD_FREQ_4340 , CDCE906_SSC_MOD_FREQ_4072 , CDCE906_SSC_MOD_FREQ_3804 ,
  CDCE906_SSC_MOD_FREQ_3536 , CDCE906_SSC_MOD_FREQ_3286 , CDCE906_SSC_MOD_FREQ_3000 , CDCE906_SSC_MOD_FREQ_2732 ,
  CDCE906_SSC_MOD_FREQ_2464 , CDCE906_SSC_MOD_FREQ_2196 , CDCE906_SSC_MOD_FREQ_1928 , CDCE906_SSC_MOD_FREQ_1660
}
 

Functions

int cdce906_read_cfg (uint8_t chip_id, cdce906_cfg *cfg)
 Read the current CDCE906 configuration.
 
int cdce906_write_cfg (uint8_t chip_id, const cdce906_cfg *cfg)
 Write the CDCE906 configuration.
 
int cdce906_write_eeprom (uint8_t chip_id)
 Save the current CDCE906 configuration to internal eeprom.
 

Detailed Description

CDCE906 PLL driver function declarations.

Author
Augusto Fraga Giachero augus.nosp@m.to.f.nosp@m.raga@.nosp@m.cnpe.nosp@m.m.br

Enumeration Type Documentation

◆ cdce906_clk_src

Enumerator
CDCE906_CLK_SRC_CRYSTAL 
CDCE906_CLK_SRC_CLKIN0_LVCMOS 
CDCE906_CLK_SRC_CLKIN1_LVCMOS 
CDCE906_CLK_SRC_CLKIN_DIFF 
CDCE906_CLK_SRC_INVALID 

◆ cdce906_pll_fvco

Enumerator
CDCE906_PLL_FVCO_80_200MHZ 
CDCE906_PLL_FVCO_180_300MHZ 

◆ cdce906_pll_vco_mux

Enumerator
CDCE906_PLL_VCO_MUX_PLL 
CDCE906_PLL_VCO_MUX_VCO 

◆ cdce906_px_pll_sel

Enumerator
CDCE906_Px_PLL_SEL_BYPASS 
CDCE906_Px_PLL_SEL_PLL1 
CDCE906_Px_PLL_SEL_PLL2 
CDCE906_Px_PLL_SEL_PLL2_SSC 
CDCE906_Px_PLL_SEL_PLL3 
CDCE906_Px_PLL_SEL_INVALID 

◆ cdce906_s0_cfg

Enumerator
CDCE906_S0_CFG_POWER_DOWN_CTRL 
CDCE906_S0_CFG_PLL_DIV_BYPASS_CTRL 
CDCE906_S0_CFG_CLKSEL_CTRL 
CDCE906_S0_CFG_I2C_ADDR 

◆ cdce906_s1_cfg

Enumerator
CDCE906_S1_CFG_Yx_FIXED_OUTPUT_CTRL 
CDCE906_S1_CFG_Yx_TRISTATE_CTRL 
CDCE906_S1_CFG_I2C_ADDR 
CDCE906_S1_CFG_INVALID 

◆ cdce906_ssc_mod_amount

Enumerator
CDCE906_SSC_MOD_AMOUNT_OFF 
CDCE906_SSC_MOD_AMOUNT_0P1_CENTER 
CDCE906_SSC_MOD_AMOUNT_0P25_CENTER 
CDCE906_SSC_MOD_AMOUNT_0P4_CENTER 
CDCE906_SSC_MOD_AMOUNT_1P0_DOWN 
CDCE906_SSC_MOD_AMOUNT_1P5_DOWN 
CDCE906_SSC_MOD_AMOUNT_2P0_DOWN 
CDCE906_SSC_MOD_AMOUNT_3P0_DOWN 

◆ cdce906_ssc_mod_freq

Enumerator
CDCE906_SSC_MOD_FREQ_5680 
CDCE906_SSC_MOD_FREQ_5412 
CDCE906_SSC_MOD_FREQ_5144 
CDCE906_SSC_MOD_FREQ_4876 
CDCE906_SSC_MOD_FREQ_4608 
CDCE906_SSC_MOD_FREQ_4340 
CDCE906_SSC_MOD_FREQ_4072 
CDCE906_SSC_MOD_FREQ_3804 
CDCE906_SSC_MOD_FREQ_3536 
CDCE906_SSC_MOD_FREQ_3286 
CDCE906_SSC_MOD_FREQ_3000 
CDCE906_SSC_MOD_FREQ_2732 
CDCE906_SSC_MOD_FREQ_2464 
CDCE906_SSC_MOD_FREQ_2196 
CDCE906_SSC_MOD_FREQ_1928 
CDCE906_SSC_MOD_FREQ_1660 

◆ cdce906_yx_out_cfg

Enumerator
CDCE906_Yx_OUT_CFG_EN 
CDCE906_Yx_OUT_CFG_EN_INV 
CDCE906_Yx_OUT_CFG_DIS_LOW 
CDCE906_Yx_OUT_CFG_DIS_HIGH 

◆ cdce906_yx_px_sel

Enumerator
CDCE906_Yx_Px_SEL_P0 
CDCE906_Yx_Px_SEL_P1 
CDCE906_Yx_Px_SEL_P2 
CDCE906_Yx_Px_SEL_P3 
CDCE906_Yx_Px_SEL_P4 
CDCE906_Yx_Px_SEL_P5 
CDCE906_Yx_Px_SEL_INVALID 

◆ cdce906_yx_slew_cfg

Enumerator
CDCE906_Yx_SLEW_CFG_NOMINAL 
CDCE906_Yx_SLEW_CFG_NOMINAL_1NS 
CDCE906_Yx_SLEW_CFG_NOMINAL_2NS 
CDCE906_Yx_SLEW_CFG_NOMINAL_3NS 

Function Documentation

◆ cdce906_read_cfg()

int cdce906_read_cfg ( uint8_t chip_id,
cdce906_cfg * cfg )

Read the current CDCE906 configuration.

Parameters
[in]chip_idChip ID to communicate
[out]cfgcdce906_cfg struct with the current configuration
Returns
0 if successful, non zero if there was an I2C error

◆ cdce906_write_cfg()

int cdce906_write_cfg ( uint8_t chip_id,
const cdce906_cfg * cfg )

Write the CDCE906 configuration.

Parameters
[in]chip_idChip ID to communicate
[in]cfgcdce906_cfg struct containing the desired configuration
Returns
0 if successful, non zero if there was an I2C error

◆ cdce906_write_eeprom()

int cdce906_write_eeprom ( uint8_t chip_id)

Save the current CDCE906 configuration to internal eeprom.

Parameters
[in]chip_idChip ID to communicate
Returns
0 if successful, non zero if there was an I2C error