aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@osg.samsung.com>2016-02-22 10:10:49 -0500
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2016-02-23 05:19:39 -0500
commit6cf5dad17e913fce1ccb0c38e199eff15b0f03cc (patch)
treeb039fae16d8290e8d54e4e614a1a0fb3dfd7e34a
parent41b44e35ba9b34e50a65c05ecf7642c07bd3e8aa (diff)
[media] media_device: move allocation out of media_device_*_init
Right now, media_device_pci_init and media_device_usb_init does media_device allocation internaly. That preents its usage when the media_device struct is embedded on some other structure. Move memory allocation outside it, to make it more generic. Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
-rw-r--r--drivers/media/media-device.c32
-rw-r--r--drivers/media/pci/saa7134/saa7134-core.c3
-rw-r--r--drivers/media/usb/au0828/au0828-core.c10
-rw-r--r--drivers/media/usb/cx231xx/cx231xx-cards.c4
-rw-r--r--drivers/media/usb/dvb-usb-v2/dvb_usb_core.c4
-rw-r--r--drivers/media/usb/dvb-usb/dvb-usb-dvb.c6
-rw-r--r--drivers/media/usb/em28xx/em28xx-cards.c16
-rw-r--r--drivers/media/usb/siano/smsusb.c4
-rw-r--r--include/media/media-device.h32
9 files changed, 55 insertions, 56 deletions
diff --git a/drivers/media/media-device.c b/drivers/media/media-device.c
index fe376b6b5244..6613723f5eb8 100644
--- a/drivers/media/media-device.c
+++ b/drivers/media/media-device.c
@@ -755,16 +755,11 @@ struct media_device *media_device_find_devres(struct device *dev)
755} 755}
756EXPORT_SYMBOL_GPL(media_device_find_devres); 756EXPORT_SYMBOL_GPL(media_device_find_devres);
757 757
758struct media_device *media_device_pci_init(struct pci_dev *pci_dev, 758void media_device_pci_init(struct media_device *mdev,
759 const char *name) 759 struct pci_dev *pci_dev,
760 const char *name)
760{ 761{
761#ifdef CONFIG_PCI 762#ifdef CONFIG_PCI
762 struct media_device *mdev;
763
764 mdev = kzalloc(sizeof(*mdev), GFP_KERNEL);
765 if (!mdev)
766 return NULL;
767
768 mdev->dev = &pci_dev->dev; 763 mdev->dev = &pci_dev->dev;
769 764
770 if (name) 765 if (name)
@@ -780,25 +775,16 @@ struct media_device *media_device_pci_init(struct pci_dev *pci_dev,
780 mdev->driver_version = LINUX_VERSION_CODE; 775 mdev->driver_version = LINUX_VERSION_CODE;
781 776
782 media_device_init(mdev); 777 media_device_init(mdev);
783
784 return mdev;
785#else
786 return NULL;
787#endif 778#endif
788} 779}
789EXPORT_SYMBOL_GPL(media_device_pci_init); 780EXPORT_SYMBOL_GPL(media_device_pci_init);
790 781
791struct media_device *__media_device_usb_init(struct usb_device *udev, 782void __media_device_usb_init(struct media_device *mdev,
792 const char *board_name, 783 struct usb_device *udev,
793 const char *driver_name) 784 const char *board_name,
785 const char *driver_name)
794{ 786{
795#ifdef CONFIG_USB 787#ifdef CONFIG_USB
796 struct media_device *mdev;
797
798 mdev = kzalloc(sizeof(*mdev), GFP_KERNEL);
799 if (!mdev)
800 return NULL;
801
802 mdev->dev = &udev->dev; 788 mdev->dev = &udev->dev;
803 789
804 if (driver_name) 790 if (driver_name)
@@ -818,10 +804,6 @@ struct media_device *__media_device_usb_init(struct usb_device *udev,
818 mdev->driver_version = LINUX_VERSION_CODE; 804 mdev->driver_version = LINUX_VERSION_CODE;
819 805
820 media_device_init(mdev); 806 media_device_init(mdev);
821
822 return mdev;
823#else
824 return NULL;
825#endif 807#endif
826} 808}
827EXPORT_SYMBOL_GPL(__media_device_usb_init); 809EXPORT_SYMBOL_GPL(__media_device_usb_init);
diff --git a/drivers/media/pci/saa7134/saa7134-core.c b/drivers/media/pci/saa7134/saa7134-core.c
index 8ae65bb320a3..2e77a5a80119 100644
--- a/drivers/media/pci/saa7134/saa7134-core.c
+++ b/drivers/media/pci/saa7134/saa7134-core.c
@@ -1043,11 +1043,12 @@ static int saa7134_initdev(struct pci_dev *pci_dev,
1043 sprintf(dev->name, "saa%x[%d]", pci_dev->device, dev->nr); 1043 sprintf(dev->name, "saa%x[%d]", pci_dev->device, dev->nr);
1044 1044
1045#ifdef CONFIG_MEDIA_CONTROLLER 1045#ifdef CONFIG_MEDIA_CONTROLLER
1046 dev->media_dev = media_device_pci_init(pci_dev, dev->name); 1046 dev->media_dev = kzalloc(sizeof(*dev->media_dev), GFP_KERNEL);
1047 if (!dev->media_dev) { 1047 if (!dev->media_dev) {
1048 err = -ENOMEM; 1048 err = -ENOMEM;
1049 goto fail0; 1049 goto fail0;
1050 } 1050 }
1051 media_device_pci_init(dev->media_dev, pci_dev, dev->name);
1051 dev->v4l2_dev.mdev = dev->media_dev; 1052 dev->v4l2_dev.mdev = dev->media_dev;
1052#endif 1053#endif
1053 1054
diff --git a/drivers/media/usb/au0828/au0828-core.c b/drivers/media/usb/au0828/au0828-core.c
index cfcd08ec388f..5fea4adef90b 100644
--- a/drivers/media/usb/au0828/au0828-core.c
+++ b/drivers/media/usb/au0828/au0828-core.c
@@ -191,13 +191,15 @@ static int au0828_media_device_init(struct au0828_dev *dev,
191#ifdef CONFIG_MEDIA_CONTROLLER 191#ifdef CONFIG_MEDIA_CONTROLLER
192 struct media_device *mdev; 192 struct media_device *mdev;
193 193
194 if (!dev->board.name) 194 mdev = kzalloc(sizeof(*mdev), GFP_KERNEL);
195 mdev = media_device_usb_init(udev, "unknown au0828");
196 else
197 mdev = media_device_usb_init(udev, dev->board.name);
198 if (!mdev) 195 if (!mdev)
199 return -ENOMEM; 196 return -ENOMEM;
200 197
198 if (!dev->board.name)
199 media_device_usb_init(mdev, udev, "unknown au0828");
200 else
201 media_device_usb_init(mdev, udev, dev->board.name);
202
201 dev->media_dev = mdev; 203 dev->media_dev = mdev;
202#endif 204#endif
203 return 0; 205 return 0;
diff --git a/drivers/media/usb/cx231xx/cx231xx-cards.c b/drivers/media/usb/cx231xx/cx231xx-cards.c
index 29bd7536feed..c63248a18823 100644
--- a/drivers/media/usb/cx231xx/cx231xx-cards.c
+++ b/drivers/media/usb/cx231xx/cx231xx-cards.c
@@ -1212,10 +1212,12 @@ static int cx231xx_media_device_init(struct cx231xx *dev,
1212#ifdef CONFIG_MEDIA_CONTROLLER 1212#ifdef CONFIG_MEDIA_CONTROLLER
1213 struct media_device *mdev; 1213 struct media_device *mdev;
1214 1214
1215 mdev = media_device_usb_init(udev, dev->board.name); 1215 mdev = kzalloc(sizeof(*mdev), GFP_KERNEL);
1216 if (!mdev) 1216 if (!mdev)
1217 return -ENOMEM; 1217 return -ENOMEM;
1218 1218
1219 media_device_usb_init(mdev, udev, dev->board.name);
1220
1219 dev->media_dev = mdev; 1221 dev->media_dev = mdev;
1220#endif 1222#endif
1221 return 0; 1223 return 0;
diff --git a/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c b/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
index 58250250a443..3fbb2cd19f5e 100644
--- a/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
+++ b/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
@@ -408,10 +408,12 @@ static int dvb_usbv2_media_device_init(struct dvb_usb_adapter *adap)
408 struct dvb_usb_device *d = adap_to_d(adap); 408 struct dvb_usb_device *d = adap_to_d(adap);
409 struct usb_device *udev = d->udev; 409 struct usb_device *udev = d->udev;
410 410
411 mdev = media_device_usb_init(udev, d->name); 411 mdev = kzalloc(sizeof(*mdev), GFP_KERNEL);
412 if (!mdev) 412 if (!mdev)
413 return -ENOMEM; 413 return -ENOMEM;
414 414
415 media_device_usb_init(mdev, udev, d->name);
416
415 dvb_register_media_controller(&adap->dvb_adap, mdev); 417 dvb_register_media_controller(&adap->dvb_adap, mdev);
416 418
417 dev_info(&d->udev->dev, "media controller created\n"); 419 dev_info(&d->udev->dev, "media controller created\n");
diff --git a/drivers/media/usb/dvb-usb/dvb-usb-dvb.c b/drivers/media/usb/dvb-usb/dvb-usb-dvb.c
index 7509408b0b8e..6477b04e95c7 100644
--- a/drivers/media/usb/dvb-usb/dvb-usb-dvb.c
+++ b/drivers/media/usb/dvb-usb/dvb-usb-dvb.c
@@ -103,7 +103,11 @@ static int dvb_usb_media_device_init(struct dvb_usb_adapter *adap)
103 struct dvb_usb_device *d = adap->dev; 103 struct dvb_usb_device *d = adap->dev;
104 struct usb_device *udev = d->udev; 104 struct usb_device *udev = d->udev;
105 105
106 mdev = media_device_usb_init(udev, d->desc->name); 106 mdev = kzalloc(sizeof(*mdev), GFP_KERNEL);
107 if (!mdev)
108 return -ENOMEM;
109
110 media_device_usb_init(mdev, udev, d->desc->name);
107 111
108 dvb_register_media_controller(&adap->dvb_adap, mdev); 112 dvb_register_media_controller(&adap->dvb_adap, mdev);
109 113
diff --git a/drivers/media/usb/em28xx/em28xx-cards.c b/drivers/media/usb/em28xx/em28xx-cards.c
index 0bae26325253..1f4047b3f3f7 100644
--- a/drivers/media/usb/em28xx/em28xx-cards.c
+++ b/drivers/media/usb/em28xx/em28xx-cards.c
@@ -3019,17 +3019,17 @@ static int em28xx_media_device_init(struct em28xx *dev,
3019#ifdef CONFIG_MEDIA_CONTROLLER 3019#ifdef CONFIG_MEDIA_CONTROLLER
3020 struct media_device *mdev; 3020 struct media_device *mdev;
3021 3021
3022 if (udev->product) { 3022 mdev = kzalloc(sizeof(*mdev), GFP_KERNEL);
3023 mdev = media_device_usb_init(udev, udev->product);
3024 } else if (udev->manufacturer) {
3025 mdev = media_device_usb_init(udev, udev->manufacturer);
3026 } else {
3027 mdev = media_device_usb_init(udev, dev->name);
3028 }
3029
3030 if (!mdev) 3023 if (!mdev)
3031 return -ENOMEM; 3024 return -ENOMEM;
3032 3025
3026 if (udev->product)
3027 media_device_usb_init(mdev, udev, udev->product);
3028 else if (udev->manufacturer)
3029 media_device_usb_init(mdev, udev, udev->manufacturer);
3030 else
3031 media_device_usb_init(mdev, udev, dev->name);
3032
3033 dev->media_dev = mdev; 3033 dev->media_dev = mdev;
3034#endif 3034#endif
3035 return 0; 3035 return 0;
diff --git a/drivers/media/usb/siano/smsusb.c b/drivers/media/usb/siano/smsusb.c
index 4a0def1e1528..c2e25876e93b 100644
--- a/drivers/media/usb/siano/smsusb.c
+++ b/drivers/media/usb/siano/smsusb.c
@@ -367,10 +367,12 @@ static void *siano_media_device_register(struct smsusb_device_t *dev,
367 struct sms_board *board = sms_get_board(board_id); 367 struct sms_board *board = sms_get_board(board_id);
368 int ret; 368 int ret;
369 369
370 mdev = media_device_usb_init(udev, board->name); 370 mdev = kzalloc(sizeof(*mdev), GFP_KERNEL);
371 if (!mdev) 371 if (!mdev)
372 return NULL; 372 return NULL;
373 373
374 media_device_usb_init(mdev, udev, board->name);
375
374 ret = media_device_register(mdev); 376 ret = media_device_register(mdev);
375 if (ret) { 377 if (ret) {
376 media_device_cleanup(mdev); 378 media_device_cleanup(mdev);
diff --git a/include/media/media-device.h b/include/media/media-device.h
index 2d144fed936e..49dda6c7e664 100644
--- a/include/media/media-device.h
+++ b/include/media/media-device.h
@@ -550,16 +550,19 @@ struct media_device *media_device_find_devres(struct device *dev);
550 * media_device_pci_init() - create and initialize a 550 * media_device_pci_init() - create and initialize a
551 * struct &media_device from a PCI device. 551 * struct &media_device from a PCI device.
552 * 552 *
553 * @mdev: pointer to struct &media_device
553 * @pci_dev: pointer to struct pci_dev 554 * @pci_dev: pointer to struct pci_dev
554 * @name: media device name. If %NULL, the routine will use the default 555 * @name: media device name. If %NULL, the routine will use the default
555 * name for the pci device, given by pci_name() macro. 556 * name for the pci device, given by pci_name() macro.
556 */ 557 */
557struct media_device *media_device_pci_init(struct pci_dev *pci_dev, 558void media_device_pci_init(struct media_device *mdev,
558 const char *name); 559 struct pci_dev *pci_dev,
560 const char *name);
559/** 561/**
560 * __media_device_usb_init() - create and initialize a 562 * __media_device_usb_init() - create and initialize a
561 * struct &media_device from a PCI device. 563 * struct &media_device from a PCI device.
562 * 564 *
565 * @mdev: pointer to struct &media_device
563 * @udev: pointer to struct usb_device 566 * @udev: pointer to struct usb_device
564 * @board_name: media device name. If %NULL, the routine will use the usb 567 * @board_name: media device name. If %NULL, the routine will use the usb
565 * product name, if available. 568 * product name, if available.
@@ -570,9 +573,10 @@ struct media_device *media_device_pci_init(struct pci_dev *pci_dev,
570 * NOTE: It is better to call media_device_usb_init() instead, as 573 * NOTE: It is better to call media_device_usb_init() instead, as
571 * such macro fills driver_name with %KBUILD_MODNAME. 574 * such macro fills driver_name with %KBUILD_MODNAME.
572 */ 575 */
573struct media_device *__media_device_usb_init(struct usb_device *udev, 576void __media_device_usb_init(struct media_device *mdev,
574 const char *board_name, 577 struct usb_device *udev,
575 const char *driver_name); 578 const char *board_name,
579 const char *driver_name);
576 580
577#else 581#else
578static inline int media_device_register(struct media_device *mdev) 582static inline int media_device_register(struct media_device *mdev)
@@ -599,24 +603,24 @@ static inline struct media_device *media_device_find_devres(struct device *dev)
599 return NULL; 603 return NULL;
600} 604}
601 605
602static inline 606static inline void media_device_pci_init(struct media_device *mdev,
603struct media_device *media_device_pci_init(struct pci_dev *pci_dev, 607 struct pci_dev *pci_dev,
604 char *name) 608 char *name)
605{ 609{
606 return NULL; 610 return NULL;
607} 611}
608 612
609static inline 613static inline void __media_device_usb_init(struct media_device *mdev,
610struct media_device *__media_device_usb_init(struct usb_device *udev, 614 struct usb_device *udev,
611 char *board_name, 615 char *board_name,
612 char *driver_name) 616 char *driver_name)
613{ 617{
614 return NULL; 618 return NULL;
615} 619}
616 620
617#endif /* CONFIG_MEDIA_CONTROLLER */ 621#endif /* CONFIG_MEDIA_CONTROLLER */
618 622
619#define media_device_usb_init(udev, name) \ 623#define media_device_usb_init(mdev, udev, name) \
620 __media_device_usb_init(udev, name, KBUILD_MODNAME) 624 __media_device_usb_init(mdev, udev, name, KBUILD_MODNAME)
621 625
622#endif 626#endif