The patch number 7894 was added via Mauro Carvalho Chehab <[EMAIL PROTECTED]>
to http://linuxtv.org/hg/v4l-dvb master development tree.

Kernel patches in this development tree may be modified to be backward
compatible with older kernels. Compatibility modifications will be
removed before inclusion into the mainstream Kernel

If anyone has any objections, please let us know by sending a message to:
        [EMAIL PROTECTED]

------

From: Mauro Carvalho Chehab  <[EMAIL PROTECTED]>
merge: http://linuxtv.org/hg/~mkrufky/xc5000




Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>


---

 linux/drivers/media/common/tuners/xc5000.c      |    9 +++---
 linux/drivers/media/common/tuners/xc5000.h      |   22 ++++++++--------
 linux/drivers/media/common/tuners/xc5000_priv.h |    2 +
 linux/drivers/media/video/au0828/au0828-dvb.c   |    6 +---
 linux/drivers/media/video/cx23885/cx23885-dvb.c |    6 +---
 linux/drivers/media/video/cx88/cx88-dvb.c       |   10 ++-----
 linux/drivers/media/video/tuner-core.c          |    4 +-
 7 files changed, 29 insertions(+), 30 deletions(-)

diff -r 1ef54d1daa8e -r 52dee89a50e3 linux/drivers/media/common/tuners/xc5000.c
--- a/linux/drivers/media/common/tuners/xc5000.c        Tue May 13 00:01:54 
2008 -0300
+++ b/linux/drivers/media/common/tuners/xc5000.c        Tue May 13 00:05:47 
2008 -0300
@@ -212,7 +212,7 @@ static void xc5000_TunerReset(struct dvb
        dprintk(1, "%s()\n", __func__);
 
        if (priv->cfg->tuner_callback) {
-               ret = priv->cfg->tuner_callback(priv->cfg->priv,
+               ret = priv->cfg->tuner_callback(priv->devptr,
                                                XC5000_TUNER_RESET, 0);
                if (ret)
                        printk(KERN_ERR "xc5000: reset failed\n");
@@ -919,9 +919,9 @@ static const struct dvb_tuner_ops xc5000
        .get_status        = xc5000_get_status
 };
 
-struct dvb_frontend * xc5000_attach(struct dvb_frontend *fe,
-       struct i2c_adapter *i2c,
-       struct xc5000_config *cfg)
+struct dvb_frontend *xc5000_attach(struct dvb_frontend *fe,
+                                  struct i2c_adapter *i2c,
+                                  struct xc5000_config *cfg, void *devptr)
 {
        struct xc5000_priv *priv = NULL;
        u16 id = 0;
@@ -935,6 +935,7 @@ struct dvb_frontend * xc5000_attach(stru
        priv->cfg = cfg;
        priv->bandwidth = BANDWIDTH_6_MHZ;
        priv->i2c = i2c;
+       priv->devptr = devptr;
 
        /* Check if firmware has been loaded. It is possible that another
           instance of the driver has loaded the firmware.
diff -r 1ef54d1daa8e -r 52dee89a50e3 linux/drivers/media/common/tuners/xc5000.h
--- a/linux/drivers/media/common/tuners/xc5000.h        Tue May 13 00:01:54 
2008 -0300
+++ b/linux/drivers/media/common/tuners/xc5000.h        Tue May 13 00:05:47 
2008 -0300
@@ -31,29 +31,31 @@ struct xc5000_config {
        u8   i2c_address;
        u32  if_khz;
 
-       /* For each bridge framework, when it attaches either analog or digital,
-        * it has to store a reference back to its _core equivalent structure,
-        * so that it can service the hardware by steering gpio's etc.
-        * Each bridge implementation is different so cast priv accordingly.
-        * The xc5000 driver cares not for this value, other than ensuring
-        * it's passed back to a bridge during tuner_callback().
-        */
-       void *priv;
        int  (*tuner_callback) (void *priv, int command, int arg);
 };
 
 /* xc5000 callback command */
 #define XC5000_TUNER_RESET             0
 
+/* For each bridge framework, when it attaches either analog or digital,
+ * it has to store a reference back to its _core equivalent structure,
+ * so that it can service the hardware by steering gpio's etc.
+ * Each bridge implementation is different so cast devptr accordingly.
+ * The xc5000 driver cares not for this value, other than ensuring
+ * it's passed back to a bridge during tuner_callback().
+ */
+
 #if defined(CONFIG_MEDIA_TUNER_XC5000) || \
     (defined(CONFIG_MEDIA_TUNER_XC5000_MODULE) && defined(MODULE))
 extern struct dvb_frontend* xc5000_attach(struct dvb_frontend *fe,
                                          struct i2c_adapter *i2c,
-                                         struct xc5000_config *cfg);
+                                         struct xc5000_config *cfg,
+                                         void *devptr);
 #else
 static inline struct dvb_frontend* xc5000_attach(struct dvb_frontend *fe,
                                                 struct i2c_adapter *i2c,
-                                                struct xc5000_config *cfg)
+                                                struct xc5000_config *cfg,
+                                                void *devptr)
 {
        printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
        return NULL;
diff -r 1ef54d1daa8e -r 52dee89a50e3 
linux/drivers/media/common/tuners/xc5000_priv.h
--- a/linux/drivers/media/common/tuners/xc5000_priv.h   Tue May 13 00:01:54 
2008 -0300
+++ b/linux/drivers/media/common/tuners/xc5000_priv.h   Tue May 13 00:05:47 
2008 -0300
@@ -31,6 +31,8 @@ struct xc5000_priv {
        u8  video_standard;
        u8  rf_mode;
        u8  fwloaded;
+
+       void *devptr;
 };
 
 #endif
diff -r 1ef54d1daa8e -r 52dee89a50e3 
linux/drivers/media/video/au0828/au0828-dvb.c
--- a/linux/drivers/media/video/au0828/au0828-dvb.c     Tue May 13 00:01:54 
2008 -0300
+++ b/linux/drivers/media/video/au0828/au0828-dvb.c     Tue May 13 00:05:47 
2008 -0300
@@ -365,12 +365,10 @@ int au0828_dvb_register(struct au0828_de
                dvb->frontend = dvb_attach(au8522_attach,
                                &hauppauge_hvr950q_config,
                                &dev->i2c_adap);
-               if (dvb->frontend != NULL) {
-                       hauppauge_hvr950q_tunerconfig.priv = dev;
+               if (dvb->frontend != NULL)
                        dvb_attach(xc5000_attach, dvb->frontend,
                                &dev->i2c_adap,
-                               &hauppauge_hvr950q_tunerconfig);
-               }
+                               &hauppauge_hvr950q_tunerconfig, dev);
                break;
        default:
                printk(KERN_WARNING "The frontend of your DVB/ATSC card "
diff -r 1ef54d1daa8e -r 52dee89a50e3 
linux/drivers/media/video/cx23885/cx23885-dvb.c
--- a/linux/drivers/media/video/cx23885/cx23885-dvb.c   Tue May 13 00:01:54 
2008 -0300
+++ b/linux/drivers/media/video/cx23885/cx23885-dvb.c   Tue May 13 00:05:47 
2008 -0300
@@ -385,12 +385,10 @@ static int dvb_register(struct cx23885_t
                port->dvb.frontend = dvb_attach(s5h1409_attach,
                                                &hauppauge_hvr1500q_config,
                                                &dev->i2c_bus[0].i2c_adap);
-               if (port->dvb.frontend != NULL) {
-                       hauppauge_hvr1500q_tunerconfig.priv = i2c_bus;
+               if (port->dvb.frontend != NULL)
                        dvb_attach(xc5000_attach, port->dvb.frontend,
                                &i2c_bus->i2c_adap,
-                               &hauppauge_hvr1500q_tunerconfig);
-               }
+                               &hauppauge_hvr1500q_tunerconfig, i2c_bus);
                break;
        case CX23885_BOARD_HAUPPAUGE_HVR1500:
                i2c_bus = &dev->i2c_bus[1];
diff -r 1ef54d1daa8e -r 52dee89a50e3 linux/drivers/media/video/cx88/cx88-dvb.c
--- a/linux/drivers/media/video/cx88/cx88-dvb.c Tue May 13 00:01:54 2008 -0300
+++ b/linux/drivers/media/video/cx88/cx88-dvb.c Tue May 13 00:05:47 2008 -0300
@@ -823,11 +823,10 @@ static int dvb_register(struct cx8802_de
                        /* tuner_config.video_dev must point to
                         * i2c_adap.algo_data
                         */
-                       pinnacle_pctv_hd_800i_tuner_config.priv =
-                                               core->i2c_adap.algo_data;
                        if (!dvb_attach(xc5000_attach, dev->dvb.frontend,
                                        &core->i2c_adap,
-                                       &pinnacle_pctv_hd_800i_tuner_config))
+                                       &pinnacle_pctv_hd_800i_tuner_config,
+                                       core->i2c_adap.algo_data))
                                goto frontend_detach;
                }
                break;
@@ -885,11 +884,10 @@ static int dvb_register(struct cx8802_de
                        /* tuner_config.video_dev must point to
                         * i2c_adap.algo_data
                         */
-                       dvico_fusionhdtv7_tuner_config.priv =
-                                               core->i2c_adap.algo_data;
                        if (!dvb_attach(xc5000_attach, dev->dvb.frontend,
                                        &core->i2c_adap,
-                                       &dvico_fusionhdtv7_tuner_config))
+                                       &dvico_fusionhdtv7_tuner_config,
+                                       core->i2c_adap.algo_data))
                                goto frontend_detach;
                }
                break;
diff -r 1ef54d1daa8e -r 52dee89a50e3 linux/drivers/media/video/tuner-core.c
--- a/linux/drivers/media/video/tuner-core.c    Tue May 13 00:01:54 2008 -0300
+++ b/linux/drivers/media/video/tuner-core.c    Tue May 13 00:05:47 2008 -0300
@@ -477,10 +477,10 @@ static void set_type(struct i2c_client *
 
                xc5000_cfg.i2c_address    = t->i2c->addr;
                xc5000_cfg.if_khz         = 5380;
-               xc5000_cfg.priv           = c->adapter->algo_data;
                xc5000_cfg.tuner_callback = t->tuner_callback;
                if (!dvb_attach(xc5000_attach,
-                               &t->fe, t->i2c->adapter, &xc5000_cfg))
+                               &t->fe, t->i2c->adapter, &xc5000_cfg,
+                               c->adapter->algo_data))
                        goto attach_failed;
 
                xc_tuner_ops = &t->fe.ops.tuner_ops;


---

Patch is available at: 
http://linuxtv.org/hg/v4l-dvb/rev/52dee89a50e3c3d1f5f3fd89c17d645ecde118f5

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to