Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 137852
b: refs/heads/master
c: ef77a26
h: refs/heads/master
v: v3
  • Loading branch information
Hans Verkuil authored and Mauro Carvalho Chehab committed Mar 30, 2009
1 parent 9c82c08 commit dc81405
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 8 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: 80b36e0fcfe7520ee92f648148d091ad880ae711
refs/heads/master: ef77a26be1883366bb78741d1808e5c86a14ec76
17 changes: 10 additions & 7 deletions trunk/drivers/media/common/saa7146_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -363,13 +363,16 @@ static int saa7146_init_one(struct pci_dev *pci, const struct pci_device_id *ent
ERR(("out of memory.\n"));
goto out;
}
err = v4l2_device_register(&pci->dev, &dev->v4l2_dev);
if (err)
goto err_free;

DEB_EE(("pci:%p\n",pci));

err = pci_enable_device(pci);
if (err < 0) {
ERR(("pci_enable_device() failed.\n"));
goto err_free;
goto err_unreg;
}

/* enable bus-mastering */
Expand Down Expand Up @@ -452,8 +455,6 @@ static int saa7146_init_one(struct pci_dev *pci, const struct pci_device_id *ent
INFO(("found saa7146 @ mem %p (revision %d, irq %d) (0x%04x,0x%04x).\n", dev->mem, dev->revision, pci->irq, pci->subsystem_vendor, pci->subsystem_device));
dev->ext = ext;

pci_set_drvdata(pci, dev);

mutex_init(&dev->lock);
spin_lock_init(&dev->int_slock);
spin_lock_init(&dev->slock);
Expand All @@ -477,7 +478,7 @@ static int saa7146_init_one(struct pci_dev *pci, const struct pci_device_id *ent

if (ext->attach(dev, pci_ext)) {
DEB_D(("ext->attach() failed for %p. skipping device.\n",dev));
goto err_unprobe;
goto err_free_i2c;
}

INIT_LIST_HEAD(&dev->item);
Expand All @@ -488,8 +489,6 @@ static int saa7146_init_one(struct pci_dev *pci, const struct pci_device_id *ent
out:
return err;

err_unprobe:
pci_set_drvdata(pci, NULL);
err_free_i2c:
pci_free_consistent(pci, SAA7146_RPS_MEM, dev->d_i2c.cpu_addr,
dev->d_i2c.dma_handle);
Expand All @@ -507,14 +506,17 @@ static int saa7146_init_one(struct pci_dev *pci, const struct pci_device_id *ent
pci_release_region(pci, 0);
err_disable:
pci_disable_device(pci);
err_unreg:
v4l2_device_unregister(&dev->v4l2_dev);
err_free:
kfree(dev);
goto out;
}

static void saa7146_remove_one(struct pci_dev *pdev)
{
struct saa7146_dev* dev = pci_get_drvdata(pdev);
struct v4l2_device *v4l2_dev = pci_get_drvdata(pdev);
struct saa7146_dev *dev = container_of(v4l2_dev, struct saa7146_dev, v4l2_dev);
struct {
void *addr;
dma_addr_t dma;
Expand All @@ -528,6 +530,7 @@ static void saa7146_remove_one(struct pci_dev *pdev)
DEB_EE(("dev:%p\n",dev));

dev->ext->detach(dev);
v4l2_device_unregister(&dev->v4l2_dev);

/* shut down all video dma transfers */
saa7146_write(dev, MC1, 0x00ff0000);
Expand Down
3 changes: 3 additions & 0 deletions trunk/include/media/saa7146.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include <linux/stringify.h>
#include <linux/mutex.h>
#include <linux/scatterlist.h>
#include <media/v4l2-device.h>

#include <linux/vmalloc.h> /* for vmalloc() */
#include <linux/mm.h> /* for vmalloc_to_page() */
Expand Down Expand Up @@ -110,6 +111,8 @@ struct saa7146_dev

struct list_head item;

struct v4l2_device v4l2_dev;

/* different device locks */
spinlock_t slock;
struct mutex lock;
Expand Down

0 comments on commit dc81405

Please sign in to comment.