no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
hmc630x.h
Go to the documentation of this file.
1/***************************************************************************/
33#ifndef _HMC630X_H_
34#define _HMC630X_H_
35
36#include <stdbool.h>
37#include <stdint.h>
38#include "no_os_util.h"
39#include "no_os_gpio.h"
40
41/* Code the row on highest 8 (of 16) bits and the field mask on lowest 8 bits. */
42#define HMC630X_PARAM(row, mask) (((((uint16_t)row) << 8)) | (mask))
43#define HMC630X_ROW(param) ((param) >> 8)
44#define HMC630X_MASK(param) ((param) & 0xff)
45
46/* ROW0 */
47#define HMC6301_LNA_PWRDWN HMC630X_PARAM(0, NO_OS_BIT(7))
48#define HMC6301_BBAMP_PWRDN_I HMC630X_PARAM(0, NO_OS_BIT(6))
49#define HMC6301_BBAMP_PWRDN_Q HMC630X_PARAM(0, NO_OS_BIT(5))
50#define HMC6301_DIVIDER_PWRDN HMC630X_PARAM(0, NO_OS_BIT(4))
51#define HMC6301_MIXER_PWRDN HMC630X_PARAM(0, NO_OS_BIT(3))
52#define HMC6301_IFMIXER_PWRDN_I HMC630X_PARAM(0, NO_OS_BIT(2))
53#define HMC6301_TRIPLER_PWRDN HMC630X_PARAM(0, NO_OS_BIT(1))
54#define HMC6301_IFVGA_PWRDN HMC630X_PARAM(0, NO_OS_BIT(0))
55
56/* ROW1 */
57#define HMC6300_PA_SEL_VGBS HMC630X_PARAM(1, NO_OS_GENMASK(7, 4))
58#define HMC6300_PA_SEL_VREF HMC630X_PARAM(1, NO_OS_GENMASK(3, 0))
59
60#define HMC6301_IPC_PWRDWN HMC630X_PARAM(1, NO_OS_BIT(7))
61#define HMC6301_IFMIX_PWRDN_Q HMC630X_PARAM(1, NO_OS_BIT(6))
62#define HMC6301_IF_BGMUX_PWRDN HMC630X_PARAM(1, NO_OS_BIT(5))
63#define HMC6301_ASK_PWRDN HMC630X_PARAM(1, NO_OS_BIT(4))
64#define HMC6301_BBAMP_ATTEN1 HMC630X_PARAM(1, NO_OS_GENMASK(3, 2))
65#define HMC6301_BBAMP_SELL_ASK HMC630X_PARAM(1, NO_OS_BIT(1))
66#define HMC6301_BBAMP_SIGSHORT HMC630X_PARAM(1, NO_OS_BIT(0))
67
68/* ROW2 */
69#define HMC6300_PA_SEL_ALC_DAC HMC630X_PARAM(2, NO_OS_GENMASK(7, 4))
70#define HMC6300_PA_SEP_PA_PWRDWN_FAST HMC630X_PARAM(2, NO_OS_BIT(3))
71#define HMC6300_PA_PWRDWN_FAST HMC630X_PARAM(2, NO_OS_BIT(2))
72#define HMC6300_PA_SE_SEL HMC630X_PARAM(2, NO_OS_BIT(1))
73#define HMC6300_POWER_DET_PWRDN HMC630X_PARAM(2, NO_OS_BIT(0))
74
75#define HMC6301_BBAMP_ATTENFI HMC630X_PARAM(2, NO_OS_GENMASK(7, 5))
76#define HMC6301_BBAMP_ATTENFQ HMC630X_PARAM(2, NO_OS_GENMASK(4, 2))
77#define HMC6301_BBAMP_ATTEN2 HMC630X_PARAM(2, NO_OS_GENMASK(1, 0))
78
79/* ROW3 */
80#define HMC6300_DRIVER_BIAS HMC630X_PARAM(3, NO_OS_GENMASK(7, 5))
81#define HMC6300_DRIVER_BIAS2 HMC630X_PARAM(3, NO_OS_GENMASK(4, 2))
82#define HMC6300_EN_IFMIX_HICG HMC630X_PARAM(3, NO_OS_BIT(1))
83#define HMC6300_EN_TEMPFLASH HMC630X_PARAM(3, NO_OS_BIT(0))
84
85#define HMC6301_BBAMP_SELBW HMC630X_PARAM(3, NO_OS_GENMASK(7, 6))
86#define HMC6301_BBAMP_SELFASTREC HMC630X_PARAM(3, NO_OS_GENMASK(5, 4))
87#define HMC6301_BG_MONITOR_SEL HMC630X_PARAM(3, NO_OS_GENMASK(3, 2))
88#define HMC6301_IF_REFSEL HMC630X_PARAM(3, NO_OS_BIT(1))
89#define HMC6301_LNA_REFSEL HMC630X_PARAM(3, NO_OS_BIT(0))
90
91/* ROW4 */
92#define HMC6300_DRIVER_PWRDN HMC630X_PARAM(4, NO_OS_BIT(7))
93#define HMC6300_UPMIXER_PWRDN HMC630X_PARAM(4, NO_OS_BIT(6))
94#define HMC6300_IFVGA_PWRDN HMC630X_PARAM(4, NO_OS_BIT(5))
95#define HMC6300_DIVIDER_PWRDN HMC630X_PARAM(4, NO_OS_BIT(4))
96#define HMC6300_PA_PWRDN HMC630X_PARAM(4, NO_OS_BIT(3))
97#define HMC6300_RFVGA_PWRDN HMC630X_PARAM(4, NO_OS_BIT(2))
98#define HMC6300_TRIPLER_PWRDN HMC630X_PARAM(4, NO_OS_BIT(1))
99#define HMC6300_IF_UPMIXER_PWRDN HMC630X_PARAM(4, NO_OS_BIT(0))
100
101#define HMC6301_IFVGA_BIAS HMC630X_PARAM(4, NO_OS_GENMASK(7, 5))
102#define HMC6301_IFVGA_TUNE HMC630X_PARAM(4, NO_OS_GENMASK(4, 1))
103#define HMC6301_ENDIGVGA HMC630X_PARAM(4, NO_OS_BIT(0))
104
105/* ROW5 */
106#define HMC6300_TRIPLER_BIAS_HIGH HMC630X_PARAM(5, NO_OS_GENMASK(7, 0))
107
108#define HMC6301_IFVGA_VGA_ADJ HMC630X_PARAM(5, NO_OS_GENMASK(7, 4))
109#define HMC6301_RFMIX_TUNE HMC630X_PARAM(5, NO_OS_GENMASK(3, 0))
110
111/* ROW6 */
112#define HMC6300_TRIPLER_BIAS_LOW HMC630X_PARAM(6, NO_OS_GENMASK(7, 2))
113
114#define HMC6301_TRIPLER_BIAS_HIGH HMC630X_PARAM(6, NO_OS_GENMASK(7, 0))
115
116/* ROW7 */
117#define HMC6300_IFVGA_VGA_ADJ HMC630X_PARAM(7, NO_OS_GENMASK(7, 4))
118#define HMC6300_IFVGA_TUNE HMC630X_PARAM(7, NO_OS_GENMASK(3, 0))
119
120#define HMC6301_TRIPLER_BIAS_LOW HMC630X_PARAM(7, NO_OS_GENMASK(7, 2))
121#define HMC6301_BBAMP_SELFM HMC630X_PARAM(7, NO_OS_BIT(1))
122#define HMC6301_FM_PWRDN HMC630X_PARAM(7, NO_OS_BIT(0))
123
124/* ROW8 */
125#define HMC6300_IFVGA_BIAS HMC630X_PARAM(8, NO_OS_GENMASK(7, 4))
126#define HMC6300_IF_UPMIXER_TUNE HMC630X_PARAM(8, NO_OS_GENMASK(3, 0))
127
128#define HMC6301_LNA_BIAS HMC630X_PARAM(8, NO_OS_GENMASK(7, 5))
129#define HMC6301_LNA_GAIN HMC630X_PARAM(8, NO_OS_GENMASK(4, 3))
130#define HMC6301_IFVGA_Q_CNTRL HMC630X_PARAM(8, NO_OS_GENMASK(2, 0))
131
132/* ROW9*/
133#define HMC6300_IFVGA_Q_CNTRL HMC630X_PARAM(9, NO_OS_GENMASK(7, 5))
134
135#define HMC6301_ENANAV_LNA HMC630X_PARAM(9, NO_OS_BIT(7))
136#define HMC6301_ENBAR_TEMPS HMC630X_PARAM(9, NO_OS_BIT(6))
137#define HMC6301_EN_TEMPFLASH HMC630X_PARAM(9, NO_OS_BIT(5))
138#define HMC6301_EN_SEP_IFMIX_PWRDN_Q HMC630X_PARAM(9, NO_OS_BIT(4))
139
140/* ROW10 */
141#define HMC6300_ENABLE_FM HMC630X_PARAM(10, NO_OS_BIT(7))
142#define HMC6300_IF_REFSEL HMC630X_PARAM(10, NO_OS_BIT(6))
143#define HMC6300_BG_MONITOR HMC630X_PARAM(10, NO_OS_BIT(5))
144#define HMC6300_ENDIG_IFVGA_GAIN_CONTROL HMC630X_PARAM(10, NO_OS_BIT(4))
145#define HMC6300_IPC_PWRDN HMC630X_PARAM(10, NO_OS_BIT(3))
146#define HMC6300_IF_BGMUX_PWRDN HMC630X_PARAM(10, NO_OS_BIT(2))
147#define HMC6300_UPMIX_CAL_PWRDN HMC630X_PARAM(10, NO_OS_BIT(1))
148#define HMC6300_TEMPSENSOR_PWRDN HMC630X_PARAM(10, NO_OS_BIT(0))
149
150/* ROW11 */
151#define HMC6300_RFVGAGAIN HMC630X_PARAM(11, NO_OS_GENMASK(7, 4))
152#define HMC6300_ENRFVGA_ANA HMC630X_PARAM(11, NO_OS_BIT(3))
153#define HMC6300_RFVGA_ICTRL HMC630X_PARAM(11, NO_OS_GENMASK(2, 0))
154
155/* ROW12 */
156#define HMC6300_UPMIX_CAL HMC630X_PARAM(12, NO_OS_GENMASK(7, 0))
157
158/* ROW16 */
159#define HMC630X_BYP_SYNTH_LDO HMC630X_PARAM(16, NO_OS_BIT(7))
160#define HMC630X_EN_CPSHORT HMC630X_PARAM(16, NO_OS_BIT(6))
161#define HMC630X_EN_CPCMFB HMC630X_PARAM(16, NO_OS_BIT(5))
162#define HMC630X_EN_CP_DUMP HMC630X_PARAM(16, NO_OS_BIT(4))
163#define HMC630X_EN_CPTRIST HMC630X_PARAM(16, NO_OS_BIT(3))
164#define HMC630X_EN_CP HMC630X_PARAM(16, NO_OS_BIT(2))
165#define HMC630X_EN_SYNTH_LDO HMC630X_PARAM(16, NO_OS_BIT(1))
166#define HMC630X_ENBAR_SYNTHBG HMC630X_PARAM(16, NO_OS_BIT(0))
167
168/* ROW17 */
169#define HMC630X_EN_LOCKD_CLK HMC630X_PARAM(17, NO_OS_BIT(7))
170#define HMC630X_EN_TEST_DIVOUT HMC630X_PARAM(17, NO_OS_BIT(6))
171#define HMC630X_EN_VTUNE_FLASH HMC630X_PARAM(17, NO_OS_BIT(5))
172#define HMC630X_EN_REBUF_DC HMC630X_PARAM(17, NO_OS_BIT(4))
173#define HMC630X_EN_REFBUF HMC630X_PARAM(17, NO_OS_BIT(3))
174#define HMC630X_EN_STICK_DIV HMC630X_PARAM(17, NO_OS_BIT(2))
175#define HMC630X_EN_FBDIV_CML2CMOS HMC630X_PARAM(17, NO_OS_BIT(1))
176#define HMC630X_EN_FBDIV HMC630X_PARAM(17, NO_OS_BIT(0))
177
178/* ROW18 */
179#define HMC630X_EN_NB250M HMC630X_PARAM(18, NO_OS_BIT(6))
180#define HMC630X_BYP_VCO_LDO HMC630X_PARAM(18, NO_OS_BIT(5))
181#define HMC630X_EN_EXTLO HMC630X_PARAM(18, NO_OS_BIT(4))
182#define HMC630X_EN_VCOPK HMC630X_PARAM(18, NO_OS_BIT(3))
183#define HMC630X_EN_VCO HMC630X_PARAM(18, NO_OS_BIT(2))
184#define HMC630X_EN_VCO_REG HMC630X_PARAM(18, NO_OS_BIT(1))
185#define HMC630X_ENBAR_VCOGB HMC630X_PARAM(18, NO_OS_BIT(0))
186
187/* ROW19 */
188#define HMC630X_REFSEL_SYNTHBG HMC630X_PARAM(19, NO_OS_BIT(1))
189#define HMC630X_MUXREF HMC630X_PARAM(19, NO_OS_BIT(0))
190
191/* ROW20 */
192#define HMC630X_FBDIV_CODE HMC630X_PARAM(20, NO_OS_GENMASK(6, 0))
193
194/* ROW21 */
195#define HMC630X_REFSEL_VCOBG HMC630X_PARAM(21, NO_OS_BIT(4))
196#define HMC630X_VCO_BIASTRIM HMC630X_PARAM(21, NO_OS_GENMASK(3, 0))
197
198/* ROW22 */
199#define HMC630X_VCO_BANDSEL HMC630X_PARAM(22, NO_OS_GENMASK(6, 0))
200
201/* ROW23 */
202#define HMC630X_ICP_BIASTRIM HMC630X_PARAM(23, NO_OS_GENMASK(7, 5))
203#define HMC630X_VCO_OFFSET HMC630X_PARAM(23, NO_OS_GENMASK(4, 0))
204
205/* ROW24 */
206#define HMC630X_LOCKDET HMC630X_PARAM(24, NO_OS_BIT(3))
207#define HMC630X_DN HMC630X_PARAM(24, NO_OS_BIT(2))
208#define HMC630X_UP HMC630X_PARAM(24, NO_OS_BIT(1))
209#define HMC630X_CENTER HMC630X_PARAM(24, NO_OS_BIT(0))
210
211/* ROW25 */
212#define HMC630X_VTUNE_FLASHP HMC630X_PARAM(25, NO_OS_GENMASK(7, 0))
213
214/* ROW26 */
215#define HMC630X_VTUNE_FLASHN HMC630X_PARAM(26, NO_OS_GENMASK(7, 0))
216
217/* ROW27 */
218#define HMC630X_TEMPS HMC630X_PARAM(27, NO_OS_GENMASK(4, 0))
219
220/* Devices supported by this driver. */
225
226/* Possible values for receiver LNA attenuator. */
233
234/* Possible baseband attenuation values. */
241
242/* Possible baseband fine attenuation adjustment values. */
253
254/* Possible values for the low-pass corner of the baseband amplifiers. */
261
262/* Possible values for the high-pass corner of the baseband amplifiers. */
269
270/* Possible values for the external reference clock. */
277
279 uint8_t rf_attn;
280};
281
291
292/* Initialization parameters for hmc6300_init(). */
295 enum hmc630x_ref_clk ref_clk; /* Reference clock value. */
296 struct no_os_gpio_init_param en; /* EN GPIO signal of the digital interface. */
298 clk; /* CLK GPIO signal of the digital interface. */
300 data; /* DATA GPIO signal of the digital interface. */
302 scanout; /* SCANOUT GPIO signal of the digital interface. */
305 uint64_t vco;
306 uint8_t if_attn;
307 union {
310 };
311};
312
313struct hmc630x_dev;
314struct hmc630x_vco;
315
316/* Device driver init/remove API. */
317int hmc630x_init(struct hmc630x_dev **dev, struct hmc630x_init_param *init);
318int hmc630x_remove(struct hmc630x_dev *dev);
319enum hmc630x_type hmc630x_type(struct hmc630x_dev *dev);
320
321/* Register access API. */
322int hmc630x_write_row(struct hmc630x_dev *dev, uint8_t row, uint8_t val);
323int hmc630x_read_row(struct hmc630x_dev *dev, uint8_t row, uint8_t *val);
324int hmc630x_write(struct hmc630x_dev *dev, uint16_t param, uint8_t val);
325int hmc630x_read(struct hmc630x_dev *dev, uint16_t param, uint8_t *val);
326int hmc630x_write_regmap(struct hmc630x_dev *dev, const uint8_t *regmap);
327int hmc630x_read_regmap(struct hmc630x_dev *dev, uint8_t *regmap);
328
329/* hmc6300/hmc6301 API. */
330int hmc630x_set_temp_en(struct hmc630x_dev *dev, bool enable);
331int hmc630x_get_temp_en(struct hmc630x_dev *dev, bool *enable);
332int hmc630x_get_temp(struct hmc630x_dev *dev, uint8_t *temp);
333int hmc630x_set_enable(struct hmc630x_dev *dev, bool enable);
334int hmc630x_get_enable(struct hmc630x_dev *dev, bool *enable);
335int hmc630x_set_if_attn(struct hmc630x_dev *dev, uint8_t attn);
336int hmc630x_get_if_attn(struct hmc630x_dev *dev, uint8_t *attn);
337int hmc630x_set_vco(struct hmc630x_dev *dev, uint64_t frequency);
338int hmc630x_get_vco(struct hmc630x_dev *dev, uint64_t *frequency);
339int hmc630x_get_avail_vco(struct hmc630x_dev *dev, const uint64_t **avail,
340 uint8_t *avail_num);
341
342/* hmc6300-only API. */
343int hmc6300_set_fm_en(struct hmc630x_dev *dev, bool enable);
344int hmc6300_get_fm_en(struct hmc630x_dev *dev, bool *enable);
345int hmc6300_set_rf_attn(struct hmc630x_dev *dev, uint8_t attn);
346int hmc6300_get_rf_attn(struct hmc630x_dev *dev, uint8_t *attn);
347
348/* hmc6301-only API. */
349int hmc6301_set_lna_gain(struct hmc630x_dev *dev, enum hmc6301_lna_attn gain);
350int hmc6301_get_lna_gain(struct hmc630x_dev *dev, enum hmc6301_lna_attn *gain);
351int hmc6301_set_bb_attn(struct hmc630x_dev *dev, enum hmc6301_bb_attn attn1,
352 enum hmc6301_bb_attn attn2);
353int hmc6301_get_bb_attn(struct hmc630x_dev *dev, enum hmc6301_bb_attn *attn1,
354 enum hmc6301_bb_attn *attn2);
356 enum hmc6301_bb_attn_fine attn_i,
357 enum hmc6301_bb_attn_fine attn_q);
359 enum hmc6301_bb_attn_fine *attn_i,
360 enum hmc6301_bb_attn_fine *attn_q);
361int hmc6301_set_bb_lpc_hpc(struct hmc630x_dev *dev, enum hmc6301_bb_lpc lpc,
362 enum hmc6301_bb_hpc hpc);
363int hmc6301_get_bb_lpc_hpc(struct hmc630x_dev *dev, enum hmc6301_bb_lpc *lpc,
364 enum hmc6301_bb_hpc *hpc);
365
366#endif
int hmc630x_read_row(struct hmc630x_dev *dev, uint8_t row, uint8_t *val)
Definition hmc630x.c:324
int hmc630x_write(struct hmc630x_dev *dev, uint16_t param, uint8_t val)
Definition hmc630x.c:413
hmc6301_bb_lpc
Definition hmc630x.h:255
@ HMC6301_BB_LPC_500MHz
Definition hmc630x.h:258
@ HMC6301_BB_LPC_1400MHz
Definition hmc630x.h:256
@ HMC6301_BB_LPC_200MHz
Definition hmc630x.h:259
@ HMC6301_BB_LPC_300MHz
Definition hmc630x.h:257
int hmc630x_get_temp(struct hmc630x_dev *dev, uint8_t *temp)
Definition hmc630x.c:538
int hmc630x_read_regmap(struct hmc630x_dev *dev, uint8_t *regmap)
Definition hmc630x.c:447
int hmc630x_set_vco(struct hmc630x_dev *dev, uint64_t frequency)
Definition hmc630x.c:743
int hmc630x_set_enable(struct hmc630x_dev *dev, bool enable)
Definition hmc630x.c:570
hmc630x_ref_clk
Definition hmc630x.h:271
@ HMC6300_REF_CLK_142p8571MHz
Definition hmc630x.h:274
@ HMC6300_REF_CLK_71p42857MHz
Definition hmc630x.h:272
@ HMC6300_REF_CLK_75MHz
Definition hmc630x.h:273
@ HMC6300_REF_CLK_154p2857MHz
Definition hmc630x.h:275
int hmc6301_get_lna_gain(struct hmc630x_dev *dev, enum hmc6301_lna_attn *gain)
Definition hmc630x.c:878
int hmc630x_get_avail_vco(struct hmc630x_dev *dev, const uint64_t **avail, uint8_t *avail_num)
Definition hmc630x.c:852
int hmc630x_set_if_attn(struct hmc630x_dev *dev, uint8_t attn)
Definition hmc630x.c:675
int hmc630x_get_if_attn(struct hmc630x_dev *dev, uint8_t *attn)
Definition hmc630x.c:695
int hmc630x_get_temp_en(struct hmc630x_dev *dev, bool *enable)
Definition hmc630x.c:506
int hmc630x_write_regmap(struct hmc630x_dev *dev, const uint8_t *regmap)
Definition hmc630x.c:377
int hmc6300_get_rf_attn(struct hmc630x_dev *dev, uint8_t *attn)
Definition hmc630x.c:730
int hmc6301_get_bb_attn(struct hmc630x_dev *dev, enum hmc6301_bb_attn *attn1, enum hmc6301_bb_attn *attn2)
Definition hmc630x.c:914
int hmc6300_get_fm_en(struct hmc630x_dev *dev, bool *enable)
Definition hmc630x.c:557
int hmc630x_read(struct hmc630x_dev *dev, uint16_t param, uint8_t *val)
Definition hmc630x.c:430
int hmc6300_set_fm_en(struct hmc630x_dev *dev, bool enable)
Definition hmc630x.c:544
int hmc630x_init(struct hmc630x_dev **dev, struct hmc630x_init_param *init)
Definition hmc630x.c:109
hmc6301_bb_attn_fine
Definition hmc630x.h:243
@ HMC6301_BB_ATTN_FINE_2dB
Definition hmc630x.h:246
@ HMC6301_BB_ATTN_FINE_5dB
Definition hmc630x.h:249
@ HMC6301_BB_ATTN_FINE_RESERVED1
Definition hmc630x.h:247
@ HMC6301_BB_ATTN_FINE_RESERVED2
Definition hmc630x.h:251
@ HMC6301_BB_ATTN_FINE_3dB
Definition hmc630x.h:250
@ HMC6301_BB_ATTN_FINE_4dB
Definition hmc630x.h:245
@ HMC6301_BB_ATTN_FINE_0dB
Definition hmc630x.h:244
@ HMC6301_BB_ATTN_FINE_1dB
Definition hmc630x.h:248
hmc6301_bb_hpc
Definition hmc630x.h:263
@ HMC6301_BB_HPC_45kHz
Definition hmc630x.h:264
@ HMC6301_BB_HPC_1600kHz
Definition hmc630x.h:265
@ HMC6301_BB_HPC_350kHz
Definition hmc630x.h:266
@ HMC6301_BB_HPC_RESERVED
Definition hmc630x.h:267
int hmc6301_get_bb_lpc_hpc(struct hmc630x_dev *dev, enum hmc6301_bb_lpc *lpc, enum hmc6301_bb_hpc *hpc)
Definition hmc630x.c:1002
int hmc6301_get_bb_attn_fine(struct hmc630x_dev *dev, enum hmc6301_bb_attn_fine *attn_i, enum hmc6301_bb_attn_fine *attn_q)
Definition hmc630x.c:961
hmc630x_type
Definition hmc630x.h:221
@ HMC6300
Definition hmc630x.h:222
@ HMC6301
Definition hmc630x.h:223
int hmc6301_set_bb_attn(struct hmc630x_dev *dev, enum hmc6301_bb_attn attn1, enum hmc6301_bb_attn attn2)
Definition hmc630x.c:891
hmc6301_bb_attn
Definition hmc630x.h:235
@ HMC6301_BB_ATTN_0dB
Definition hmc630x.h:236
@ HMC6301_BB_ATTN_6dB
Definition hmc630x.h:238
@ HMC6301_BB_ATTN_18dB
Definition hmc630x.h:239
@ HMC6301_BB_ATTN_12dB
Definition hmc630x.h:237
int hmc630x_remove(struct hmc630x_dev *dev)
Definition hmc630x.c:254
int hmc6301_set_bb_lpc_hpc(struct hmc630x_dev *dev, enum hmc6301_bb_lpc lpc, enum hmc6301_bb_hpc hpc)
Definition hmc630x.c:982
int hmc630x_get_enable(struct hmc630x_dev *dev, bool *enable)
Definition hmc630x.c:619
int hmc630x_set_temp_en(struct hmc630x_dev *dev, bool enable)
Definition hmc630x.c:481
hmc6301_lna_attn
Definition hmc630x.h:227
@ HMC6301_LNA_ATTN_6dB
Definition hmc630x.h:229
@ HMC6301_LNA_ATTN_0dB
Definition hmc630x.h:228
@ HMC6301_LNA_ATTN_18dB
Definition hmc630x.h:231
@ HMC6301_LNA_ATTN_12dB
Definition hmc630x.h:230
int hmc630x_get_vco(struct hmc630x_dev *dev, uint64_t *frequency)
Definition hmc630x.c:811
int hmc6300_set_rf_attn(struct hmc630x_dev *dev, uint8_t attn)
Definition hmc630x.c:715
int hmc6301_set_bb_attn_fine(struct hmc630x_dev *dev, enum hmc6301_bb_attn_fine attn_i, enum hmc6301_bb_attn_fine attn_q)
Definition hmc630x.c:934
int hmc6301_set_lna_gain(struct hmc630x_dev *dev, enum hmc6301_lna_attn gain)
Definition hmc630x.c:865
int hmc630x_write_row(struct hmc630x_dev *dev, uint8_t row, uint8_t val)
Definition hmc630x.c:293
Header file of GPIO Interface.
Header file of utility functions.
Definition hmc630x.h:278
uint8_t rf_attn
Definition hmc630x.h:279
Definition hmc630x.h:282
enum hmc6301_bb_attn bb_attn1
Definition hmc630x.h:283
enum hmc6301_bb_hpc bb_hpc
Definition hmc630x.h:289
enum hmc6301_bb_attn bb_attn2
Definition hmc630x.h:284
enum hmc6301_bb_attn_fine bb_attnq_fine
Definition hmc630x.h:286
enum hmc6301_bb_attn_fine bb_attni_fine
Definition hmc630x.h:285
enum hmc6301_lna_attn lna_attn
Definition hmc630x.h:287
enum hmc6301_bb_lpc bb_lpc
Definition hmc630x.h:288
Definition hmc630x.c:57
Definition hmc630x.h:293
struct no_os_gpio_init_param en
Definition hmc630x.h:296
bool temp_en
Definition hmc630x.h:304
bool enabled
Definition hmc630x.h:303
struct hmc6300_attr tx
Definition hmc630x.h:308
struct no_os_gpio_init_param data
Definition hmc630x.h:299
uint64_t vco
Definition hmc630x.h:305
struct hmc6301_attr rx
Definition hmc630x.h:309
uint8_t if_attn
Definition hmc630x.h:306
struct no_os_gpio_init_param clk
Definition hmc630x.h:297
enum hmc630x_type type
Definition hmc630x.h:294
struct no_os_gpio_init_param scanout
Definition hmc630x.h:301
enum hmc630x_ref_clk ref_clk
Definition hmc630x.h:295
Definition hmc630x.c:50
Structure holding the parameters for GPIO initialization.
Definition no_os_gpio.h:67