diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-04-03 20:16:59 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-04-03 20:16:59 -0400 |
commit | ef1c4a6fa91bbbe9b09f770d28eba31a9edf770c (patch) | |
tree | 52f5d175031c553160d14890e876ffc5432d2467 /drivers/media/common/siano/smscoreapi.c | |
parent | 147a89bc71e7db40f011454a40add7ff2d10f8d8 (diff) | |
parent | f8a695c4b43d02c89b8bba9ba6058fd5db1bc71d (diff) |
Merge tag 'media/v4.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab:
- new CEC pin injection code for testing purposes
- DVB frontend cxd2099 promoted from staging
- new platform driver for Sony cxd2880 DVB devices
- new sensor drivers: mt9t112, ov2685, ov5695, ov772x, tda1997x,
tw9910.c
- removal of unused cx18 and ivtv alsa mixers
- the reneseas-ceu driver doesn't depend on soc_camera anymore and
moved from staging
- removed the mantis_vp3028 driver, unused since 2009
- s5p-mfc: add support for version 10 of the MSP
- added a decoder for imon protocol
- atomisp: lots of cleanups
- imx074 and mt9t031: don't depend on soc_camera anymore, being
promoted from staging
- added helper functions to better support DVB I2C binding
- lots of driver improvements and cleanups
* tag 'media/v4.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (438 commits)
media: v4l2-ioctl: rename a temp var that stores _IOC_SIZE(cmd)
media: fimc-capture: get rid of two warnings
media: dvb-usb-v2: fix a missing dependency of I2C_MUX
media: uvc: to the right check at uvc_ioctl_enum_framesizes()
media: cec-core: fix a bug at cec_error_inj_write()
media: tda9840: cleanup a warning
media: tm6000: avoid casting just to print pointer address
media: em28xx-input: improve error handling code
media: zr364xx: avoid casting just to print pointer address
media: vivid-radio-rx: add a cast to avoid a warning
media: saa7134-alsa: don't use casts to print a buffer address
media: solo6x10: get rid of an address space warning
media: zoran: don't cast pointers to print them
media: ir-kbd-i2c: change the if logic to avoid a warning
media: ir-kbd-i2c: improve error handling code
media: saa7134-input: improve error handling
media: s2255drv: fix a casting warning
media: ivtvfb: Cleanup some warnings
media: videobuf-dma-sg: Fix a weird cast
soc_camera: fix a weird cast on printk
...
Diffstat (limited to 'drivers/media/common/siano/smscoreapi.c')
-rw-r--r-- | drivers/media/common/siano/smscoreapi.c | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/drivers/media/common/siano/smscoreapi.c b/drivers/media/common/siano/smscoreapi.c index c5c827e11b64..b5dcc6d1fe90 100644 --- a/drivers/media/common/siano/smscoreapi.c +++ b/drivers/media/common/siano/smscoreapi.c | |||
@@ -631,7 +631,8 @@ smscore_buffer_t *smscore_createbuffer(u8 *buffer, void *common_buffer, | |||
631 | 631 | ||
632 | cb->p = buffer; | 632 | cb->p = buffer; |
633 | cb->offset_in_common = buffer - (u8 *) common_buffer; | 633 | cb->offset_in_common = buffer - (u8 *) common_buffer; |
634 | cb->phys = common_buffer_phys + cb->offset_in_common; | 634 | if (common_buffer_phys) |
635 | cb->phys = common_buffer_phys + cb->offset_in_common; | ||
635 | 636 | ||
636 | return cb; | 637 | return cb; |
637 | } | 638 | } |
@@ -690,17 +691,21 @@ int smscore_register_device(struct smsdevice_params_t *params, | |||
690 | 691 | ||
691 | /* alloc common buffer */ | 692 | /* alloc common buffer */ |
692 | dev->common_buffer_size = params->buffer_size * params->num_buffers; | 693 | dev->common_buffer_size = params->buffer_size * params->num_buffers; |
693 | dev->common_buffer = dma_alloc_coherent(NULL, dev->common_buffer_size, | 694 | if (params->usb_device) |
694 | &dev->common_buffer_phys, | 695 | buffer = kzalloc(dev->common_buffer_size, GFP_KERNEL); |
695 | GFP_KERNEL | GFP_DMA); | 696 | else |
696 | if (!dev->common_buffer) { | 697 | buffer = dma_alloc_coherent(params->device, |
698 | dev->common_buffer_size, | ||
699 | &dev->common_buffer_phys, | ||
700 | GFP_KERNEL | GFP_DMA); | ||
701 | if (!buffer) { | ||
697 | smscore_unregister_device(dev); | 702 | smscore_unregister_device(dev); |
698 | return -ENOMEM; | 703 | return -ENOMEM; |
699 | } | 704 | } |
705 | dev->common_buffer = buffer; | ||
700 | 706 | ||
701 | /* prepare dma buffers */ | 707 | /* prepare dma buffers */ |
702 | for (buffer = dev->common_buffer; | 708 | for (; dev->num_buffers < params->num_buffers; |
703 | dev->num_buffers < params->num_buffers; | ||
704 | dev->num_buffers++, buffer += params->buffer_size) { | 709 | dev->num_buffers++, buffer += params->buffer_size) { |
705 | struct smscore_buffer_t *cb; | 710 | struct smscore_buffer_t *cb; |
706 | 711 | ||
@@ -720,6 +725,7 @@ int smscore_register_device(struct smsdevice_params_t *params, | |||
720 | dev->board_id = SMS_BOARD_UNKNOWN; | 725 | dev->board_id = SMS_BOARD_UNKNOWN; |
721 | dev->context = params->context; | 726 | dev->context = params->context; |
722 | dev->device = params->device; | 727 | dev->device = params->device; |
728 | dev->usb_device = params->usb_device; | ||
723 | dev->setmode_handler = params->setmode_handler; | 729 | dev->setmode_handler = params->setmode_handler; |
724 | dev->detectmode_handler = params->detectmode_handler; | 730 | dev->detectmode_handler = params->detectmode_handler; |
725 | dev->sendrequest_handler = params->sendrequest_handler; | 731 | dev->sendrequest_handler = params->sendrequest_handler; |
@@ -1231,10 +1237,15 @@ void smscore_unregister_device(struct smscore_device_t *coredev) | |||
1231 | 1237 | ||
1232 | pr_debug("freed %d buffers\n", num_buffers); | 1238 | pr_debug("freed %d buffers\n", num_buffers); |
1233 | 1239 | ||
1234 | if (coredev->common_buffer) | 1240 | if (coredev->common_buffer) { |
1235 | dma_free_coherent(NULL, coredev->common_buffer_size, | 1241 | if (coredev->usb_device) |
1236 | coredev->common_buffer, coredev->common_buffer_phys); | 1242 | kfree(coredev->common_buffer); |
1237 | 1243 | else | |
1244 | dma_free_coherent(coredev->device, | ||
1245 | coredev->common_buffer_size, | ||
1246 | coredev->common_buffer, | ||
1247 | coredev->common_buffer_phys); | ||
1248 | } | ||
1238 | kfree(coredev->fw_buf); | 1249 | kfree(coredev->fw_buf); |
1239 | 1250 | ||
1240 | list_del(&coredev->entry); | 1251 | list_del(&coredev->entry); |