0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef _CLK_SI5351_H_
0010 #define _CLK_SI5351_H_
0011
0012 #define SI5351_BUS_BASE_ADDR 0x60
0013
0014 #define SI5351_PLL_VCO_MIN 600000000
0015 #define SI5351_PLL_VCO_MAX 900000000
0016 #define SI5351_MULTISYNTH_MIN_FREQ 1000000
0017 #define SI5351_MULTISYNTH_DIVBY4_FREQ 150000000
0018 #define SI5351_MULTISYNTH_MAX_FREQ 160000000
0019 #define SI5351_MULTISYNTH67_MAX_FREQ SI5351_MULTISYNTH_DIVBY4_FREQ
0020 #define SI5351_CLKOUT_MIN_FREQ 8000
0021 #define SI5351_CLKOUT_MAX_FREQ SI5351_MULTISYNTH_MAX_FREQ
0022 #define SI5351_CLKOUT67_MAX_FREQ SI5351_MULTISYNTH67_MAX_FREQ
0023
0024 #define SI5351_PLL_A_MIN 15
0025 #define SI5351_PLL_A_MAX 90
0026 #define SI5351_PLL_B_MAX (SI5351_PLL_C_MAX-1)
0027 #define SI5351_PLL_C_MAX 1048575
0028 #define SI5351_MULTISYNTH_A_MIN 6
0029 #define SI5351_MULTISYNTH_A_MAX 1800
0030 #define SI5351_MULTISYNTH67_A_MAX 254
0031 #define SI5351_MULTISYNTH_B_MAX (SI5351_MULTISYNTH_C_MAX-1)
0032 #define SI5351_MULTISYNTH_C_MAX 1048575
0033 #define SI5351_MULTISYNTH_P1_MAX ((1<<18)-1)
0034 #define SI5351_MULTISYNTH_P2_MAX ((1<<20)-1)
0035 #define SI5351_MULTISYNTH_P3_MAX ((1<<20)-1)
0036
0037 #define SI5351_DEVICE_STATUS 0
0038 #define SI5351_INTERRUPT_STATUS 1
0039 #define SI5351_INTERRUPT_MASK 2
0040 #define SI5351_STATUS_SYS_INIT (1<<7)
0041 #define SI5351_STATUS_LOL_B (1<<6)
0042 #define SI5351_STATUS_LOL_A (1<<5)
0043 #define SI5351_STATUS_LOS (1<<4)
0044 #define SI5351_OUTPUT_ENABLE_CTRL 3
0045 #define SI5351_OEB_PIN_ENABLE_CTRL 9
0046 #define SI5351_PLL_INPUT_SOURCE 15
0047 #define SI5351_CLKIN_DIV_MASK (3<<6)
0048 #define SI5351_CLKIN_DIV_1 (0<<6)
0049 #define SI5351_CLKIN_DIV_2 (1<<6)
0050 #define SI5351_CLKIN_DIV_4 (2<<6)
0051 #define SI5351_CLKIN_DIV_8 (3<<6)
0052 #define SI5351_PLLB_SOURCE (1<<3)
0053 #define SI5351_PLLA_SOURCE (1<<2)
0054
0055 #define SI5351_CLK0_CTRL 16
0056 #define SI5351_CLK1_CTRL 17
0057 #define SI5351_CLK2_CTRL 18
0058 #define SI5351_CLK3_CTRL 19
0059 #define SI5351_CLK4_CTRL 20
0060 #define SI5351_CLK5_CTRL 21
0061 #define SI5351_CLK6_CTRL 22
0062 #define SI5351_CLK7_CTRL 23
0063 #define SI5351_CLK_POWERDOWN (1<<7)
0064 #define SI5351_CLK_INTEGER_MODE (1<<6)
0065 #define SI5351_CLK_PLL_SELECT (1<<5)
0066 #define SI5351_CLK_INVERT (1<<4)
0067 #define SI5351_CLK_INPUT_MASK (3<<2)
0068 #define SI5351_CLK_INPUT_XTAL (0<<2)
0069 #define SI5351_CLK_INPUT_CLKIN (1<<2)
0070 #define SI5351_CLK_INPUT_MULTISYNTH_0_4 (2<<2)
0071 #define SI5351_CLK_INPUT_MULTISYNTH_N (3<<2)
0072 #define SI5351_CLK_DRIVE_STRENGTH_MASK (3<<0)
0073 #define SI5351_CLK_DRIVE_STRENGTH_2MA (0<<0)
0074 #define SI5351_CLK_DRIVE_STRENGTH_4MA (1<<0)
0075 #define SI5351_CLK_DRIVE_STRENGTH_6MA (2<<0)
0076 #define SI5351_CLK_DRIVE_STRENGTH_8MA (3<<0)
0077
0078 #define SI5351_CLK3_0_DISABLE_STATE 24
0079 #define SI5351_CLK7_4_DISABLE_STATE 25
0080 #define SI5351_CLK_DISABLE_STATE_MASK 3
0081 #define SI5351_CLK_DISABLE_STATE_LOW 0
0082 #define SI5351_CLK_DISABLE_STATE_HIGH 1
0083 #define SI5351_CLK_DISABLE_STATE_FLOAT 2
0084 #define SI5351_CLK_DISABLE_STATE_NEVER 3
0085
0086 #define SI5351_PARAMETERS_LENGTH 8
0087 #define SI5351_PLLA_PARAMETERS 26
0088 #define SI5351_PLLB_PARAMETERS 34
0089 #define SI5351_CLK0_PARAMETERS 42
0090 #define SI5351_CLK1_PARAMETERS 50
0091 #define SI5351_CLK2_PARAMETERS 58
0092 #define SI5351_CLK3_PARAMETERS 66
0093 #define SI5351_CLK4_PARAMETERS 74
0094 #define SI5351_CLK5_PARAMETERS 82
0095 #define SI5351_CLK6_PARAMETERS 90
0096 #define SI5351_CLK7_PARAMETERS 91
0097 #define SI5351_CLK6_7_OUTPUT_DIVIDER 92
0098 #define SI5351_OUTPUT_CLK_DIV_MASK (7 << 4)
0099 #define SI5351_OUTPUT_CLK6_DIV_MASK (7 << 0)
0100 #define SI5351_OUTPUT_CLK_DIV_SHIFT 4
0101 #define SI5351_OUTPUT_CLK_DIV6_SHIFT 0
0102 #define SI5351_OUTPUT_CLK_DIV_1 0
0103 #define SI5351_OUTPUT_CLK_DIV_2 1
0104 #define SI5351_OUTPUT_CLK_DIV_4 2
0105 #define SI5351_OUTPUT_CLK_DIV_8 3
0106 #define SI5351_OUTPUT_CLK_DIV_16 4
0107 #define SI5351_OUTPUT_CLK_DIV_32 5
0108 #define SI5351_OUTPUT_CLK_DIV_64 6
0109 #define SI5351_OUTPUT_CLK_DIV_128 7
0110 #define SI5351_OUTPUT_CLK_DIVBY4 (3<<2)
0111
0112 #define SI5351_SSC_PARAM0 149
0113 #define SI5351_SSC_PARAM1 150
0114 #define SI5351_SSC_PARAM2 151
0115 #define SI5351_SSC_PARAM3 152
0116 #define SI5351_SSC_PARAM4 153
0117 #define SI5351_SSC_PARAM5 154
0118 #define SI5351_SSC_PARAM6 155
0119 #define SI5351_SSC_PARAM7 156
0120 #define SI5351_SSC_PARAM8 157
0121 #define SI5351_SSC_PARAM9 158
0122 #define SI5351_SSC_PARAM10 159
0123 #define SI5351_SSC_PARAM11 160
0124 #define SI5351_SSC_PARAM12 161
0125
0126 #define SI5351_VXCO_PARAMETERS_LOW 162
0127 #define SI5351_VXCO_PARAMETERS_MID 163
0128 #define SI5351_VXCO_PARAMETERS_HIGH 164
0129
0130 #define SI5351_CLK0_PHASE_OFFSET 165
0131 #define SI5351_CLK1_PHASE_OFFSET 166
0132 #define SI5351_CLK2_PHASE_OFFSET 167
0133 #define SI5351_CLK3_PHASE_OFFSET 168
0134 #define SI5351_CLK4_PHASE_OFFSET 169
0135 #define SI5351_CLK5_PHASE_OFFSET 170
0136
0137 #define SI5351_PLL_RESET 177
0138 #define SI5351_PLL_RESET_B (1<<7)
0139 #define SI5351_PLL_RESET_A (1<<5)
0140
0141 #define SI5351_CRYSTAL_LOAD 183
0142 #define SI5351_CRYSTAL_LOAD_MASK (3<<6)
0143 #define SI5351_CRYSTAL_LOAD_6PF (1<<6)
0144 #define SI5351_CRYSTAL_LOAD_8PF (2<<6)
0145 #define SI5351_CRYSTAL_LOAD_10PF (3<<6)
0146
0147 #define SI5351_FANOUT_ENABLE 187
0148 #define SI5351_CLKIN_ENABLE (1<<7)
0149 #define SI5351_XTAL_ENABLE (1<<6)
0150 #define SI5351_MULTISYNTH_ENABLE (1<<4)
0151
0152
0153
0154
0155
0156
0157
0158
0159 enum si5351_variant {
0160 SI5351_VARIANT_A = 1,
0161 SI5351_VARIANT_A3 = 2,
0162 SI5351_VARIANT_B = 3,
0163 SI5351_VARIANT_C = 4,
0164 };
0165
0166 #endif