[media] rtl2832: cleanups and minor changes
[firefly-linux-kernel-4.4.55.git] / drivers / media / dvb-frontends / rtl2832.h
index 5254c1dfc8deb193b36bb7844c269bc0e4a57f7c..73e2717330658099b83994e1ceb0099dd003f4fb 100644 (file)
 #ifndef RTL2832_H
 #define RTL2832_H
 
-#include <linux/kconfig.h>
 #include <linux/dvb/frontend.h>
+#include <linux/i2c-mux.h>
 
-struct rtl2832_config {
+struct rtl2832_platform_data {
        /*
-        * Demodulator I2C address.
-        */
-       u8 i2c_addr;
-
-       /*
-        * Xtal frequency.
+        * Clock frequency.
         * Hz
         * 4000000, 16000000, 25000000, 28800000
         */
-       u32 xtal;
+       u32 clk;
 
        /*
-        * tuner
-        * XXX: This must be keep sync with dvb_usb_rtl28xxu demod driver.
+        * Tuner.
+        * XXX: This list must be kept sync with dvb_usb_rtl28xxu USB IF driver.
         */
 #define RTL2832_TUNER_TUA9001   0x24
 #define RTL2832_TUNER_FC0012    0x26
 #define RTL2832_TUNER_E4000     0x27
 #define RTL2832_TUNER_FC0013    0x29
-#define RTL2832_TUNER_R820T    0x2a
-#define RTL2832_TUNER_R828D    0x2b
+#define RTL2832_TUNER_R820T     0x2a
+#define RTL2832_TUNER_R828D     0x2b
        u8 tuner;
-};
-
-#if IS_ENABLED(CONFIG_DVB_RTL2832)
-struct dvb_frontend *rtl2832_attach(
-       const struct rtl2832_config *cfg,
-       struct i2c_adapter *i2c
-);
-
-extern struct i2c_adapter *rtl2832_get_i2c_adapter(
-       struct dvb_frontend *fe
-);
-
-extern struct i2c_adapter *rtl2832_get_private_i2c_adapter(
-       struct dvb_frontend *fe
-);
-
-extern int rtl2832_enable_external_ts_if(
-       struct dvb_frontend *fe
-);
-
-#else
-
-static inline struct dvb_frontend *rtl2832_attach(
-       const struct rtl2832_config *config,
-       struct i2c_adapter *i2c
-)
-{
-       pr_warn("%s: driver disabled by Kconfig\n", __func__);
-       return NULL;
-}
-
-static inline struct i2c_adapter *rtl2832_get_i2c_adapter(
-       struct dvb_frontend *fe
-)
-{
-       return NULL;
-}
-
-static inline struct i2c_adapter *rtl2832_get_private_i2c_adapter(
-       struct dvb_frontend *fe
-)
-{
-       return NULL;
-}
-
-static inline int rtl2832_enable_external_ts_if(
-       struct dvb_frontend *fe
-)
-{
-       return -ENODEV;
-}
-
-#endif
 
+       /*
+        * Callbacks.
+        */
+       struct dvb_frontend* (*get_dvb_frontend)(struct i2c_client *);
+       struct i2c_adapter* (*get_i2c_adapter)(struct i2c_client *);
+       int (*enable_slave_ts)(struct i2c_client *);
+       int (*pid_filter)(struct dvb_frontend *, u8, u16, int);
+       int (*pid_filter_ctrl)(struct dvb_frontend *, int);
+       /* Register access for SDR module */
+       int (*bulk_read)(struct i2c_client *, unsigned int, void *, size_t);
+       int (*bulk_write)(struct i2c_client *, unsigned int, const void *, size_t);
+       int (*update_bits)(struct i2c_client *, unsigned int, unsigned int, unsigned int);
+};
 
 #endif /* RTL2832_H */