diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2013-03-25 04:36:44 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-03-25 07:40:29 -0400 |
commit | d9ebd623c1912f8f02fc71d4e645973f51f83362 (patch) | |
tree | a1094767910fbb7c53a242766b1c4c3bb62fc53f | |
parent | 20c5f4925e96719eb83a4f15765a6e653d24bfde (diff) |
[media] solo6x10: add v4l2_device
Add support for struct v4l2_device.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/staging/media/solo6x10/core.c | 8 | ||||
-rw-r--r-- | drivers/staging/media/solo6x10/solo6x10.h | 2 | ||||
-rw-r--r-- | drivers/staging/media/solo6x10/v4l2-enc.c | 2 | ||||
-rw-r--r-- | drivers/staging/media/solo6x10/v4l2.c | 2 |
4 files changed, 10 insertions, 4 deletions
diff --git a/drivers/staging/media/solo6x10/core.c b/drivers/staging/media/solo6x10/core.c index 75d98cc61c40..05ecd48e5507 100644 --- a/drivers/staging/media/solo6x10/core.c +++ b/drivers/staging/media/solo6x10/core.c | |||
@@ -181,6 +181,7 @@ static void free_solo_dev(struct solo_dev *solo_dev) | |||
181 | 181 | ||
182 | pci_release_regions(pdev); | 182 | pci_release_regions(pdev); |
183 | pci_disable_device(pdev); | 183 | pci_disable_device(pdev); |
184 | v4l2_device_unregister(&solo_dev->v4l2_dev); | ||
184 | pci_set_drvdata(pdev, NULL); | 185 | pci_set_drvdata(pdev, NULL); |
185 | 186 | ||
186 | kfree(solo_dev); | 187 | kfree(solo_dev); |
@@ -511,7 +512,9 @@ static int solo_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
511 | solo_dev->type = id->driver_data; | 512 | solo_dev->type = id->driver_data; |
512 | solo_dev->pdev = pdev; | 513 | solo_dev->pdev = pdev; |
513 | spin_lock_init(&solo_dev->reg_io_lock); | 514 | spin_lock_init(&solo_dev->reg_io_lock); |
514 | pci_set_drvdata(pdev, solo_dev); | 515 | ret = v4l2_device_register(&pdev->dev, &solo_dev->v4l2_dev); |
516 | if (ret) | ||
517 | goto fail_probe; | ||
515 | 518 | ||
516 | /* Only for during init */ | 519 | /* Only for during init */ |
517 | solo_dev->p2m_jiffies = msecs_to_jiffies(100); | 520 | solo_dev->p2m_jiffies = msecs_to_jiffies(100); |
@@ -678,7 +681,8 @@ fail_probe: | |||
678 | 681 | ||
679 | static void solo_pci_remove(struct pci_dev *pdev) | 682 | static void solo_pci_remove(struct pci_dev *pdev) |
680 | { | 683 | { |
681 | struct solo_dev *solo_dev = pci_get_drvdata(pdev); | 684 | struct v4l2_device *v4l2_dev = pci_get_drvdata(pdev); |
685 | struct solo_dev *solo_dev = container_of(v4l2_dev, struct solo_dev, v4l2_dev); | ||
682 | 686 | ||
683 | free_solo_dev(solo_dev); | 687 | free_solo_dev(solo_dev); |
684 | } | 688 | } |
diff --git a/drivers/staging/media/solo6x10/solo6x10.h b/drivers/staging/media/solo6x10/solo6x10.h index d8d61deb7237..6501cb9afba3 100644 --- a/drivers/staging/media/solo6x10/solo6x10.h +++ b/drivers/staging/media/solo6x10/solo6x10.h | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <linux/videodev2.h> | 37 | #include <linux/videodev2.h> |
38 | 38 | ||
39 | #include <media/v4l2-dev.h> | 39 | #include <media/v4l2-dev.h> |
40 | #include <media/v4l2-device.h> | ||
40 | #include <media/videobuf-core.h> | 41 | #include <media/videobuf-core.h> |
41 | 42 | ||
42 | #include "registers.h" | 43 | #include "registers.h" |
@@ -178,6 +179,7 @@ struct solo_dev { | |||
178 | u32 irq_mask; | 179 | u32 irq_mask; |
179 | u32 motion_mask; | 180 | u32 motion_mask; |
180 | spinlock_t reg_io_lock; | 181 | spinlock_t reg_io_lock; |
182 | struct v4l2_device v4l2_dev; | ||
181 | 183 | ||
182 | /* tw28xx accounting */ | 184 | /* tw28xx accounting */ |
183 | u8 tw2865, tw2864, tw2815; | 185 | u8 tw2865, tw2864, tw2815; |
diff --git a/drivers/staging/media/solo6x10/v4l2-enc.c b/drivers/staging/media/solo6x10/v4l2-enc.c index bb5f1b82ddcd..d085e386e087 100644 --- a/drivers/staging/media/solo6x10/v4l2-enc.c +++ b/drivers/staging/media/solo6x10/v4l2-enc.c | |||
@@ -1670,7 +1670,7 @@ static struct solo_enc_dev *solo_enc_alloc(struct solo_dev *solo_dev, | |||
1670 | solo_enc->ch = ch; | 1670 | solo_enc->ch = ch; |
1671 | 1671 | ||
1672 | *solo_enc->vfd = solo_enc_template; | 1672 | *solo_enc->vfd = solo_enc_template; |
1673 | solo_enc->vfd->parent = &solo_dev->pdev->dev; | 1673 | solo_enc->vfd->v4l2_dev = &solo_dev->v4l2_dev; |
1674 | ret = video_register_device(solo_enc->vfd, VFL_TYPE_GRABBER, nr); | 1674 | ret = video_register_device(solo_enc->vfd, VFL_TYPE_GRABBER, nr); |
1675 | if (ret < 0) { | 1675 | if (ret < 0) { |
1676 | video_device_release(solo_enc->vfd); | 1676 | video_device_release(solo_enc->vfd); |
diff --git a/drivers/staging/media/solo6x10/v4l2.c b/drivers/staging/media/solo6x10/v4l2.c index 70da9e2187d2..33171161002f 100644 --- a/drivers/staging/media/solo6x10/v4l2.c +++ b/drivers/staging/media/solo6x10/v4l2.c | |||
@@ -823,7 +823,7 @@ int solo_v4l2_init(struct solo_dev *solo_dev, unsigned nr) | |||
823 | return -ENOMEM; | 823 | return -ENOMEM; |
824 | 824 | ||
825 | *solo_dev->vfd = solo_v4l2_template; | 825 | *solo_dev->vfd = solo_v4l2_template; |
826 | solo_dev->vfd->parent = &solo_dev->pdev->dev; | 826 | solo_dev->vfd->v4l2_dev = &solo_dev->v4l2_dev; |
827 | 827 | ||
828 | ret = video_register_device(solo_dev->vfd, VFL_TYPE_GRABBER, nr); | 828 | ret = video_register_device(solo_dev->vfd, VFL_TYPE_GRABBER, nr); |
829 | if (ret < 0) { | 829 | if (ret < 0) { |