Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 138381
b: refs/heads/master
c: c0714f6
h: refs/heads/master
i:
  138379: 126c830
v: v3
  • Loading branch information
Hans Verkuil authored and Mauro Carvalho Chehab committed Mar 30, 2009
1 parent 2d873a2 commit 46f13b5
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 14 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8bbd90ce80d39d372857235f00c7abb208bd9e4f
refs/heads/master: c0714f6cc6a7850062db41d5b2b8b90e5682ae41
17 changes: 11 additions & 6 deletions trunk/drivers/media/video/cx23885/cx23885-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1739,16 +1739,20 @@ static int __devinit cx23885_initdev(struct pci_dev *pci_dev,
if (NULL == dev)
return -ENOMEM;

err = v4l2_device_register(&pci_dev->dev, &dev->v4l2_dev);
if (err < 0)
goto fail_free;

/* pci init */
dev->pci = pci_dev;
if (pci_enable_device(pci_dev)) {
err = -EIO;
goto fail_free;
goto fail_unreg;
}

if (cx23885_dev_setup(dev) < 0) {
err = -EINVAL;
goto fail_free;
goto fail_unreg;
}

/* print pci info */
Expand All @@ -1775,8 +1779,6 @@ static int __devinit cx23885_initdev(struct pci_dev *pci_dev,
goto fail_irq;
}

pci_set_drvdata(pci_dev, dev);

switch (dev->board) {
case CX23885_BOARD_NETUP_DUAL_DVBS2_CI:
cx_set(PCI_INT_MSK, 0x01800000); /* for NetUP */
Expand All @@ -1787,28 +1789,31 @@ static int __devinit cx23885_initdev(struct pci_dev *pci_dev,

fail_irq:
cx23885_dev_unregister(dev);
fail_unreg:
v4l2_device_unregister(&dev->v4l2_dev);
fail_free:
kfree(dev);
return err;
}

static void __devexit cx23885_finidev(struct pci_dev *pci_dev)
{
struct cx23885_dev *dev = pci_get_drvdata(pci_dev);
struct v4l2_device *v4l2_dev = pci_get_drvdata(pci_dev);
struct cx23885_dev *dev = to_cx23885(v4l2_dev);

cx23885_shutdown(dev);

pci_disable_device(pci_dev);

/* unregister stuff */
free_irq(pci_dev->irq, dev);
pci_set_drvdata(pci_dev, NULL);

mutex_lock(&devlist);
list_del(&dev->devlist);
mutex_unlock(&devlist);

cx23885_dev_unregister(dev);
v4l2_device_unregister(v4l2_dev);
kfree(dev);
}

Expand Down
9 changes: 5 additions & 4 deletions trunk/drivers/media/video/cx23885/cx23885-i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -270,8 +270,8 @@ static int i2c_xfer(struct i2c_adapter *i2c_adap,

static int attach_inform(struct i2c_client *client)
{
struct cx23885_i2c *bus = i2c_get_adapdata(client->adapter);
struct cx23885_dev *dev = bus->dev;
struct v4l2_device *v4l2_dev = i2c_get_adapdata(client->adapter);
struct cx23885_dev *dev = to_cx23885(v4l2_dev);
struct tuner_setup tun_setup;

dprintk(1, "%s i2c attach [addr=0x%x,client=%s]\n",
Expand Down Expand Up @@ -310,7 +310,8 @@ static int attach_inform(struct i2c_client *client)

static int detach_inform(struct i2c_client *client)
{
struct cx23885_dev *dev = i2c_get_adapdata(client->adapter);
struct v4l2_device *v4l2_dev = i2c_get_adapdata(client->adapter);
struct cx23885_dev *dev = to_cx23885(v4l2_dev);

dprintk(1, "i2c detach [client=%s]\n", client->name);

Expand Down Expand Up @@ -402,7 +403,7 @@ int cx23885_i2c_register(struct cx23885_i2c *bus)

bus->i2c_algo.data = bus;
bus->i2c_adap.algo_data = bus;
i2c_set_adapdata(&bus->i2c_adap, bus);
i2c_set_adapdata(&bus->i2c_adap, &dev->v4l2_dev);
i2c_add_adapter(&bus->i2c_adap);

bus->i2c_client.adapter = &bus->i2c_adap;
Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/media/video/cx23885/cx23885-video.c
Original file line number Diff line number Diff line change
Expand Up @@ -320,8 +320,8 @@ static struct video_device *cx23885_vdev_init(struct cx23885_dev *dev,
if (NULL == vfd)
return NULL;
*vfd = *template;
vfd->minor = -1;
vfd->parent = &pci->dev;
vfd->minor = -1;
vfd->v4l2_dev = &dev->v4l2_dev;
vfd->release = video_device_release;
snprintf(vfd->name, sizeof(vfd->name), "%s %s (%s)",
dev->name, type, cx23885_boards[dev->board].name);
Expand Down
8 changes: 7 additions & 1 deletion trunk/drivers/media/video/cx23885/cx23885.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
#include <linux/i2c-algo-bit.h>
#include <linux/kdev_t.h>

#include <media/v4l2-common.h>
#include <media/v4l2-device.h>
#include <media/tuner.h>
#include <media/tveeprom.h>
#include <media/videobuf-dma-sg.h>
Expand Down Expand Up @@ -277,6 +277,7 @@ struct cx23885_tsport {
struct cx23885_dev {
struct list_head devlist;
atomic_t refcount;
struct v4l2_device v4l2_dev;

/* pci stuff */
struct pci_dev *pci;
Expand Down Expand Up @@ -342,6 +343,11 @@ struct cx23885_dev {

};

static inline struct cx23885_dev *to_cx23885(struct v4l2_device *v4l2_dev)
{
return container_of(v4l2_dev, struct cx23885_dev, v4l2_dev);
}

extern struct list_head cx23885_devlist;

#define SRAM_CH01 0 /* Video A */
Expand Down

0 comments on commit 46f13b5

Please sign in to comment.