Blame view

kernel/linux-imx6_3.14.28/drivers/media/dvb-frontends/stb6100.h 2.86 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
  /*
  	STB6100 Silicon Tuner
  	Copyright (C) Manu Abraham (abraham.manu@gmail.com)
  
  	Copyright (C) ST Microelectronics
  
  	This program is free software; you can redistribute it and/or modify
  	it under the terms of the GNU General Public License as published by
  	the Free Software Foundation; either version 2 of the License, or
  	(at your option) any later version.
  
  	This program is distributed in the hope that it will be useful,
  	but WITHOUT ANY WARRANTY; without even the implied warranty of
  	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  	GNU General Public License for more details.
  
  	You should have received a copy of the GNU General Public License
  	along with this program; if not, write to the Free Software
  	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
  
  #ifndef __STB_6100_REG_H
  #define __STB_6100_REG_H
  
  #include <linux/dvb/frontend.h>
  #include "dvb_frontend.h"
  
  #define STB6100_LD			0x00
  #define STB6100_LD_LOCK			(1 << 0)
  
  #define STB6100_VCO			0x01
  #define STB6100_VCO_OSCH		(0x01 << 7)
  #define STB6100_VCO_OSCH_SHIFT		7
  #define STB6100_VCO_OCK			(0x03 << 5)
  #define STB6100_VCO_OCK_SHIFT		5
  #define STB6100_VCO_ODIV		(0x01 << 4)
  #define STB6100_VCO_ODIV_SHIFT		4
  #define STB6100_VCO_OSM			(0x0f << 0)
  
  #define STB6100_NI			0x02
  #define STB6100_NF_LSB			0x03
  
  #define STB6100_K			0x04
  #define STB6100_K_PSD2			(0x01 << 2)
  #define STB6100_K_PSD2_SHIFT            2
  #define STB6100_K_NF_MSB		(0x03 << 0)
  
  #define STB6100_G			0x05
  #define STB6100_G_G			(0x0f << 0)
  #define STB6100_G_GCT			(0x07 << 5)
  
  #define STB6100_F			0x06
  #define STB6100_F_F			(0x1f << 0)
  
  #define STB6100_DLB			0x07
  
  #define STB6100_TEST1			0x08
  
  #define STB6100_FCCK			0x09
  #define STB6100_FCCK_FCCK		(0x01 << 6)
  
  #define STB6100_LPEN			0x0a
  #define STB6100_LPEN_LPEN		(0x01 << 4)
  #define STB6100_LPEN_SYNP		(0x01 << 5)
  #define STB6100_LPEN_OSCP		(0x01 << 6)
  #define STB6100_LPEN_BEN		(0x01 << 7)
  
  #define STB6100_TEST3			0x0b
  
  #define STB6100_NUMREGS                 0x0c
  
  
  #define INRANGE(val, x, y)		(((x <= val) && (val <= y)) ||		\
  					 ((y <= val) && (val <= x)) ? 1 : 0)
  
  #define CHKRANGE(val, x, y)		(((val >= x) && (val < y)) ? 1 : 0)
  
  struct stb6100_config {
  	u8	tuner_address;
  	u32	refclock;
  };
  
  struct stb6100_state {
  	struct i2c_adapter *i2c;
  
  	const struct stb6100_config	*config;
  	struct dvb_tuner_ops		ops;
  	struct dvb_frontend		*frontend;
  	struct tuner_state		status;
  
  	u32 frequency;
  	u32 srate;
  	u32 bandwidth;
  	u32 reference;
  };
  
  #if IS_ENABLED(CONFIG_DVB_STB6100)
  
  extern struct dvb_frontend *stb6100_attach(struct dvb_frontend *fe,
  					   const struct stb6100_config *config,
  					   struct i2c_adapter *i2c);
  
  #else
  
  static inline struct dvb_frontend *stb6100_attach(struct dvb_frontend *fe,
  						  const struct stb6100_config *config,
  						  struct i2c_adapter *i2c)
  {
  	printk(KERN_WARNING "%s: Driver disabled by Kconfig
  ", __func__);
  	return NULL;
  }
  
  #endif //CONFIG_DVB_STB6100
  
  #endif