xref: /openbmc/linux/drivers/media/i2c/max2175.h (revision 59d8bf5d)
159d8bf5dSNishad Kamdar /* SPDX-License-Identifier: GPL-2.0 */
259d8bf5dSNishad Kamdar /*
3b47b79d8SRamesh Shanmugasundaram  * Maxim Integrated MAX2175 RF to Bits tuner driver
4b47b79d8SRamesh Shanmugasundaram  *
5b47b79d8SRamesh Shanmugasundaram  * This driver & most of the hard coded values are based on the reference
6b47b79d8SRamesh Shanmugasundaram  * application delivered by Maxim for this device.
7b47b79d8SRamesh Shanmugasundaram  *
8b47b79d8SRamesh Shanmugasundaram  * Copyright (C) 2016 Maxim Integrated Products
9b47b79d8SRamesh Shanmugasundaram  * Copyright (C) 2017 Renesas Electronics Corporation
10b47b79d8SRamesh Shanmugasundaram  */
11b47b79d8SRamesh Shanmugasundaram 
12b47b79d8SRamesh Shanmugasundaram #ifndef __MAX2175_H__
13b47b79d8SRamesh Shanmugasundaram #define __MAX2175_H__
14b47b79d8SRamesh Shanmugasundaram 
15b47b79d8SRamesh Shanmugasundaram #define MAX2175_EU_XTAL_FREQ	36864000	/* In Hz */
16b47b79d8SRamesh Shanmugasundaram #define MAX2175_NA_XTAL_FREQ	40186125	/* In Hz */
17b47b79d8SRamesh Shanmugasundaram 
18b47b79d8SRamesh Shanmugasundaram enum max2175_region {
19b47b79d8SRamesh Shanmugasundaram 	MAX2175_REGION_EU = 0,	/* Europe */
20b47b79d8SRamesh Shanmugasundaram 	MAX2175_REGION_NA,	/* North America */
21b47b79d8SRamesh Shanmugasundaram };
22b47b79d8SRamesh Shanmugasundaram 
23b47b79d8SRamesh Shanmugasundaram enum max2175_band {
24b47b79d8SRamesh Shanmugasundaram 	MAX2175_BAND_AM = 0,
25b47b79d8SRamesh Shanmugasundaram 	MAX2175_BAND_FM,
26b47b79d8SRamesh Shanmugasundaram 	MAX2175_BAND_VHF,
27b47b79d8SRamesh Shanmugasundaram 	MAX2175_BAND_L,
28b47b79d8SRamesh Shanmugasundaram };
29b47b79d8SRamesh Shanmugasundaram 
30b47b79d8SRamesh Shanmugasundaram enum max2175_eu_mode {
31b47b79d8SRamesh Shanmugasundaram 	/* EU modes */
32b47b79d8SRamesh Shanmugasundaram 	MAX2175_EU_FM_1_2 = 0,
33b47b79d8SRamesh Shanmugasundaram 	MAX2175_DAB_1_2,
34b47b79d8SRamesh Shanmugasundaram 
35b47b79d8SRamesh Shanmugasundaram 	/*
36b47b79d8SRamesh Shanmugasundaram 	 * Other possible modes to add in future
37b47b79d8SRamesh Shanmugasundaram 	 * MAX2175_DAB_1_0,
38b47b79d8SRamesh Shanmugasundaram 	 * MAX2175_DAB_1_3,
39b47b79d8SRamesh Shanmugasundaram 	 * MAX2175_EU_FM_2_2,
40b47b79d8SRamesh Shanmugasundaram 	 * MAX2175_EU_FMHD_4_0,
41b47b79d8SRamesh Shanmugasundaram 	 * MAX2175_EU_AM_1_0,
42b47b79d8SRamesh Shanmugasundaram 	 * MAX2175_EU_AM_2_2,
43b47b79d8SRamesh Shanmugasundaram 	 */
44b47b79d8SRamesh Shanmugasundaram };
45b47b79d8SRamesh Shanmugasundaram 
46b47b79d8SRamesh Shanmugasundaram enum max2175_na_mode {
47b47b79d8SRamesh Shanmugasundaram 	/* NA modes */
48b47b79d8SRamesh Shanmugasundaram 	MAX2175_NA_FM_1_0 = 0,
49b47b79d8SRamesh Shanmugasundaram 	MAX2175_NA_FM_2_0,
50b47b79d8SRamesh Shanmugasundaram 
51b47b79d8SRamesh Shanmugasundaram 	/*
52b47b79d8SRamesh Shanmugasundaram 	 * Other possible modes to add in future
53b47b79d8SRamesh Shanmugasundaram 	 * MAX2175_NA_FMHD_1_0,
54b47b79d8SRamesh Shanmugasundaram 	 * MAX2175_NA_FMHD_1_2,
55b47b79d8SRamesh Shanmugasundaram 	 * MAX2175_NA_AM_1_0,
56b47b79d8SRamesh Shanmugasundaram 	 * MAX2175_NA_AM_1_2,
57b47b79d8SRamesh Shanmugasundaram 	 */
58b47b79d8SRamesh Shanmugasundaram };
59b47b79d8SRamesh Shanmugasundaram 
60b47b79d8SRamesh Shanmugasundaram /* Supported I2S modes */
61b47b79d8SRamesh Shanmugasundaram enum {
62b47b79d8SRamesh Shanmugasundaram 	MAX2175_I2S_MODE0 = 0,
63b47b79d8SRamesh Shanmugasundaram 	MAX2175_I2S_MODE1,
64b47b79d8SRamesh Shanmugasundaram 	MAX2175_I2S_MODE2,
65b47b79d8SRamesh Shanmugasundaram 	MAX2175_I2S_MODE3,
66b47b79d8SRamesh Shanmugasundaram 	MAX2175_I2S_MODE4,
67b47b79d8SRamesh Shanmugasundaram };
68b47b79d8SRamesh Shanmugasundaram 
69b47b79d8SRamesh Shanmugasundaram /* Coefficient table groups */
70b47b79d8SRamesh Shanmugasundaram enum {
71b47b79d8SRamesh Shanmugasundaram 	MAX2175_CH_MSEL = 0,
72b47b79d8SRamesh Shanmugasundaram 	MAX2175_EQ_MSEL,
73b47b79d8SRamesh Shanmugasundaram 	MAX2175_AA_MSEL,
74b47b79d8SRamesh Shanmugasundaram };
75b47b79d8SRamesh Shanmugasundaram 
76b47b79d8SRamesh Shanmugasundaram /* HSLS LO injection polarity */
77b47b79d8SRamesh Shanmugasundaram enum {
78b47b79d8SRamesh Shanmugasundaram 	MAX2175_LO_BELOW_DESIRED = 0,
79b47b79d8SRamesh Shanmugasundaram 	MAX2175_LO_ABOVE_DESIRED,
80b47b79d8SRamesh Shanmugasundaram };
81b47b79d8SRamesh Shanmugasundaram 
82b47b79d8SRamesh Shanmugasundaram /* Channel FSM modes */
83b47b79d8SRamesh Shanmugasundaram enum max2175_csm_mode {
84b47b79d8SRamesh Shanmugasundaram 	MAX2175_LOAD_TO_BUFFER = 0,
85b47b79d8SRamesh Shanmugasundaram 	MAX2175_PRESET_TUNE,
86b47b79d8SRamesh Shanmugasundaram 	MAX2175_SEARCH,
87b47b79d8SRamesh Shanmugasundaram 	MAX2175_AF_UPDATE,
88b47b79d8SRamesh Shanmugasundaram 	MAX2175_JUMP_FAST_TUNE,
89b47b79d8SRamesh Shanmugasundaram 	MAX2175_CHECK,
90b47b79d8SRamesh Shanmugasundaram 	MAX2175_LOAD_AND_SWAP,
91b47b79d8SRamesh Shanmugasundaram 	MAX2175_END,
92b47b79d8SRamesh Shanmugasundaram 	MAX2175_BUFFER_PLUS_PRESET_TUNE,
93b47b79d8SRamesh Shanmugasundaram 	MAX2175_BUFFER_PLUS_SEARCH,
94b47b79d8SRamesh Shanmugasundaram 	MAX2175_BUFFER_PLUS_AF_UPDATE,
95b47b79d8SRamesh Shanmugasundaram 	MAX2175_BUFFER_PLUS_JUMP_FAST_TUNE,
96b47b79d8SRamesh Shanmugasundaram 	MAX2175_BUFFER_PLUS_CHECK,
97b47b79d8SRamesh Shanmugasundaram 	MAX2175_BUFFER_PLUS_LOAD_AND_SWAP,
98b47b79d8SRamesh Shanmugasundaram 	MAX2175_NO_ACTION
99b47b79d8SRamesh Shanmugasundaram };
100b47b79d8SRamesh Shanmugasundaram 
101b47b79d8SRamesh Shanmugasundaram #endif /* __MAX2175_H__ */
102