]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/media/dvb/frontends/stb0899_drv.h
V4L/DVB (9462): Allow specifying clock per device
[karo-tx-linux.git] / drivers / media / dvb / frontends / stb0899_drv.h
index 52c2ce17f856d3a0875443129eb33bdebc8eaf29..98b200ce0c345460a773010a984cff99d9469367 100644 (file)
@@ -44,6 +44,53 @@ struct stb0899_s2_reg {
        u32     data;
 };
 
+enum stb0899_inversion {
+       IQ_SWAP_OFF     = 0,
+       IQ_SWAP_ON,
+       IQ_SWAP_AUTO
+};
+
+#define STB0899_GPIO00                         0xf140
+#define STB0899_GPIO01                         0xf141
+#define STB0899_GPIO02                         0xf142
+#define STB0899_GPIO03                         0xf143
+#define STB0899_GPIO04                         0xf144
+#define STB0899_GPIO05                         0xf145
+#define STB0899_GPIO06                         0xf146
+#define STB0899_GPIO07                         0xf147
+#define STB0899_GPIO08                         0xf148
+#define STB0899_GPIO09                         0xf149
+#define STB0899_GPIO10                         0xf14a
+#define STB0899_GPIO11                         0xf14b
+#define STB0899_GPIO12                         0xf14c
+#define STB0899_GPIO13                         0xf14d
+#define STB0899_GPIO14                         0xf14e
+#define STB0899_GPIO15                         0xf14f
+#define STB0899_GPIO16                         0xf150
+#define STB0899_GPIO17                         0xf151
+#define STB0899_GPIO18                         0xf152
+#define STB0899_GPIO19                         0xf153
+#define STB0899_GPIO20                         0xf154
+
+#define STB0899_GPIOPULLUP                     0x01 /* Output device is connected to Vdd */
+#define STB0899_GPIOPULLDN                     0x00 /* Output device is connected to Vss */
+
+#define STB0899_POSTPROC_GPIO_POWER            0x00
+#define STB0899_POSTPROC_GPIO_LOCK             0x01
+
+/*
+ * Post process output configuration control
+ * 1. POWER ON/OFF             (index 0)
+ * 2. FE_HAS_LOCK/LOCK_LOSS    (index 1)
+ *
+ * @gpio       = one of the above listed GPIO's
+ * @level      = output state: pulled up or low
+ */
+struct stb0899_postproc {
+       u16     gpio;
+       u8      level;
+};
+
 struct stb0899_config {
        const struct stb0899_s1_reg     *init_dev;
        const struct stb0899_s2_reg     *init_s2_demod;
@@ -51,6 +98,10 @@ struct stb0899_config {
        const struct stb0899_s2_reg     *init_s2_fec;
        const struct stb0899_s1_reg     *init_tst;
 
+       const struct stb0899_postproc   *postproc;
+
+       enum stb0899_inversion          inversion;
+
        u32     xtal_freq;
 
        u8      demod_address;
@@ -65,7 +116,9 @@ struct stb0899_config {
        u8      data_fifo_mode;
        u8      out_rate_comp;
        u8      i2c_repeater;
-       int     inversion;
+//     int     inversion;
+       int     lo_clk;
+       int     hi_clk;
 
        u32     esno_ave;
        u32     esno_quant;
@@ -89,6 +142,21 @@ struct stb0899_config {
        int (*tuner_set_rfsiggain)(struct dvb_frontend *fe, u32 rf_gain);
 };
 
-extern struct dvb_frontend *stb0899_attach(struct stb0899_config *config, struct i2c_adapter *i2c);
+#if defined(CONFIG_DVB_STB0899) || (defined(CONFIG_DVB_STB0899_MODULE) && defined(MODULE))
+
+extern struct dvb_frontend *stb0899_attach(struct stb0899_config *config,
+                                          struct i2c_adapter *i2c);
+
+#else
+
+static inline struct dvb_frontend *stb0899_attach(struct stb0899_config *config,
+                                                 struct i2c_adapter *i2c)
+{
+       printk(KERN_WARNING "%s: Driver disabled by Kconfig\n", __func__);
+       return NULL;
+}
+
+#endif //CONFIG_DVB_STB0899
+
 
 #endif