diff options
-rw-r--r-- | drivers/media/dvb-frontends/rtl2832_sdr.c | 151 |
1 files changed, 86 insertions, 65 deletions
diff --git a/drivers/media/dvb-frontends/rtl2832_sdr.c b/drivers/media/dvb-frontends/rtl2832_sdr.c index 6c5b2944ecb2..361b1eb7cbb7 100644 --- a/drivers/media/dvb-frontends/rtl2832_sdr.c +++ b/drivers/media/dvb-frontends/rtl2832_sdr.c @@ -224,6 +224,7 @@ leave: static unsigned int rtl2832_sdr_convert_stream(struct rtl2832_sdr_dev *dev, void *dst, const u8 *src, unsigned int src_len) { + struct platform_device *pdev = dev->pdev; unsigned int dst_len; if (dev->pixelformat == V4L2_SDR_FMT_CU8) { @@ -251,10 +252,9 @@ static unsigned int rtl2832_sdr_convert_stream(struct rtl2832_sdr_dev *dev, dev->jiffies_next = jiffies + msecs_to_jiffies(MSECS); dev->sample_measured = dev->sample; - dev_dbg(&dev->udev->dev, - "slen=%u samples=%u msecs=%u sample rate=%lu\n", - src_len, samples, msecs, - samples * 1000UL / msecs); + dev_dbg(&pdev->dev, + "slen=%u samples=%u msecs=%u sample rate=%lu\n", + src_len, samples, msecs, samples * 1000UL / msecs); } /* total number of I+Q pairs */ @@ -270,12 +270,12 @@ static unsigned int rtl2832_sdr_convert_stream(struct rtl2832_sdr_dev *dev, static void rtl2832_sdr_urb_complete(struct urb *urb) { struct rtl2832_sdr_dev *dev = urb->context; + struct platform_device *pdev = dev->pdev; struct rtl2832_sdr_frame_buf *fbuf; - dev_dbg_ratelimited(&dev->udev->dev, - "status=%d length=%d/%d errors=%d\n", - urb->status, urb->actual_length, - urb->transfer_buffer_length, urb->error_count); + dev_dbg_ratelimited(&pdev->dev, "status=%d length=%d/%d errors=%d\n", + urb->status, urb->actual_length, + urb->transfer_buffer_length, urb->error_count); switch (urb->status) { case 0: /* success */ @@ -286,8 +286,7 @@ static void rtl2832_sdr_urb_complete(struct urb *urb) case -ESHUTDOWN: return; default: /* error */ - dev_err_ratelimited(&dev->udev->dev, "urb failed=%d\n", - urb->status); + dev_err_ratelimited(&pdev->dev, "urb failed=%d\n", urb->status); break; } @@ -298,9 +297,9 @@ static void rtl2832_sdr_urb_complete(struct urb *urb) fbuf = rtl2832_sdr_get_next_fill_buf(dev); if (unlikely(fbuf == NULL)) { dev->vb_full++; - dev_notice_ratelimited(&dev->udev->dev, - "videobuf is full, %d packets dropped\n", - dev->vb_full); + dev_notice_ratelimited(&pdev->dev, + "videobuf is full, %d packets dropped\n", + dev->vb_full); goto skip; } @@ -319,10 +318,11 @@ skip: static int rtl2832_sdr_kill_urbs(struct rtl2832_sdr_dev *dev) { + struct platform_device *pdev = dev->pdev; int i; for (i = dev->urbs_submitted - 1; i >= 0; i--) { - dev_dbg(&dev->udev->dev, "kill urb=%d\n", i); + dev_dbg(&pdev->dev, "kill urb=%d\n", i); /* stop the URB */ usb_kill_urb(dev->urb_list[i]); } @@ -333,15 +333,16 @@ static int rtl2832_sdr_kill_urbs(struct rtl2832_sdr_dev *dev) static int rtl2832_sdr_submit_urbs(struct rtl2832_sdr_dev *dev) { + struct platform_device *pdev = dev->pdev; int i, ret; for (i = 0; i < dev->urbs_initialized; i++) { - dev_dbg(&dev->udev->dev, "submit urb=%d\n", i); + dev_dbg(&pdev->dev, "submit urb=%d\n", i); ret = usb_submit_urb(dev->urb_list[i], GFP_ATOMIC); if (ret) { - dev_err(&dev->udev->dev, - "Could not submit urb no. %d - get them all back\n", - i); + dev_err(&pdev->dev, + "Could not submit urb no. %d - get them all back\n", + i); rtl2832_sdr_kill_urbs(dev); return ret; } @@ -353,10 +354,11 @@ static int rtl2832_sdr_submit_urbs(struct rtl2832_sdr_dev *dev) static int rtl2832_sdr_free_stream_bufs(struct rtl2832_sdr_dev *dev) { + struct platform_device *pdev = dev->pdev; if (dev->flags & USB_STATE_URB_BUF) { while (dev->buf_num) { dev->buf_num--; - dev_dbg(&dev->udev->dev, "free buf=%d\n", dev->buf_num); + dev_dbg(&pdev->dev, "free buf=%d\n", dev->buf_num); usb_free_coherent(dev->udev, dev->buf_size, dev->buf_list[dev->buf_num], dev->dma_addr[dev->buf_num]); @@ -369,26 +371,27 @@ static int rtl2832_sdr_free_stream_bufs(struct rtl2832_sdr_dev *dev) static int rtl2832_sdr_alloc_stream_bufs(struct rtl2832_sdr_dev *dev) { + struct platform_device *pdev = dev->pdev; dev->buf_num = 0; dev->buf_size = BULK_BUFFER_SIZE; - dev_dbg(&dev->udev->dev, "all in all I will use %u bytes for streaming\n", - MAX_BULK_BUFS * BULK_BUFFER_SIZE); + dev_dbg(&pdev->dev, "all in all I will use %u bytes for streaming\n", + MAX_BULK_BUFS * BULK_BUFFER_SIZE); for (dev->buf_num = 0; dev->buf_num < MAX_BULK_BUFS; dev->buf_num++) { dev->buf_list[dev->buf_num] = usb_alloc_coherent(dev->udev, BULK_BUFFER_SIZE, GFP_ATOMIC, &dev->dma_addr[dev->buf_num]); if (!dev->buf_list[dev->buf_num]) { - dev_dbg(&dev->udev->dev, "alloc buf=%d failed\n", - dev->buf_num); + dev_dbg(&pdev->dev, "alloc buf=%d failed\n", + dev->buf_num); rtl2832_sdr_free_stream_bufs(dev); return -ENOMEM; } - dev_dbg(&dev->udev->dev, "alloc buf=%d %p (dma %llu)\n", - dev->buf_num, dev->buf_list[dev->buf_num], - (long long)dev->dma_addr[dev->buf_num]); + dev_dbg(&pdev->dev, "alloc buf=%d %p (dma %llu)\n", + dev->buf_num, dev->buf_list[dev->buf_num], + (long long)dev->dma_addr[dev->buf_num]); dev->flags |= USB_STATE_URB_BUF; } @@ -397,13 +400,14 @@ static int rtl2832_sdr_alloc_stream_bufs(struct rtl2832_sdr_dev *dev) static int rtl2832_sdr_free_urbs(struct rtl2832_sdr_dev *dev) { + struct platform_device *pdev = dev->pdev; int i; rtl2832_sdr_kill_urbs(dev); for (i = dev->urbs_initialized - 1; i >= 0; i--) { if (dev->urb_list[i]) { - dev_dbg(&dev->udev->dev, "free urb=%d\n", i); + dev_dbg(&pdev->dev, "free urb=%d\n", i); /* free the URBs */ usb_free_urb(dev->urb_list[i]); } @@ -415,14 +419,15 @@ static int rtl2832_sdr_free_urbs(struct rtl2832_sdr_dev *dev) static int rtl2832_sdr_alloc_urbs(struct rtl2832_sdr_dev *dev) { + struct platform_device *pdev = dev->pdev; int i, j; /* allocate the URBs */ for (i = 0; i < MAX_BULK_BUFS; i++) { - dev_dbg(&dev->udev->dev, "alloc urb=%d\n", i); + dev_dbg(&pdev->dev, "alloc urb=%d\n", i); dev->urb_list[i] = usb_alloc_urb(0, GFP_ATOMIC); if (!dev->urb_list[i]) { - dev_dbg(&dev->udev->dev, "failed\n"); + dev_dbg(&pdev->dev, "failed\n"); for (j = 0; j < i; j++) usb_free_urb(dev->urb_list[j]); return -ENOMEM; @@ -445,9 +450,10 @@ static int rtl2832_sdr_alloc_urbs(struct rtl2832_sdr_dev *dev) /* Must be called with vb_queue_lock hold */ static void rtl2832_sdr_cleanup_queued_bufs(struct rtl2832_sdr_dev *dev) { + struct platform_device *pdev = dev->pdev; unsigned long flags; - dev_dbg(&dev->udev->dev, "\n"); + dev_dbg(&pdev->dev, "\n"); spin_lock_irqsave(&dev->queued_bufs_lock, flags); while (!list_empty(&dev->queued_bufs)) { @@ -465,8 +471,9 @@ static int rtl2832_sdr_querycap(struct file *file, void *fh, struct v4l2_capability *cap) { struct rtl2832_sdr_dev *dev = video_drvdata(file); + struct platform_device *pdev = dev->pdev; - dev_dbg(&dev->udev->dev, "\n"); + dev_dbg(&pdev->dev, "\n"); strlcpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver)); strlcpy(cap->card, dev->vdev.name, sizeof(cap->card)); @@ -483,16 +490,16 @@ static int rtl2832_sdr_queue_setup(struct vb2_queue *vq, unsigned int *nplanes, unsigned int sizes[], void *alloc_ctxs[]) { struct rtl2832_sdr_dev *dev = vb2_get_drv_priv(vq); + struct platform_device *pdev = dev->pdev; - dev_dbg(&dev->udev->dev, "nbuffers=%d\n", *nbuffers); + dev_dbg(&pdev->dev, "nbuffers=%d\n", *nbuffers); /* Need at least 8 buffers */ if (vq->num_buffers + *nbuffers < 8) *nbuffers = 8 - vq->num_buffers; *nplanes = 1; sizes[0] = PAGE_ALIGN(dev->buffersize); - dev_dbg(&dev->udev->dev, "nbuffers=%d sizes[0]=%d\n", - *nbuffers, sizes[0]); + dev_dbg(&pdev->dev, "nbuffers=%d sizes[0]=%d\n", *nbuffers, sizes[0]); return 0; } @@ -536,7 +543,7 @@ static int rtl2832_sdr_set_adc(struct rtl2832_sdr_dev *dev) u64 u64tmp; u32 u32tmp; - dev_dbg(&dev->udev->dev, "f_adc=%u\n", dev->f_adc); + dev_dbg(&pdev->dev, "f_adc=%u\n", dev->f_adc); if (!test_bit(POWER_ON, &dev->flags)) return 0; @@ -570,7 +577,7 @@ static int rtl2832_sdr_set_adc(struct rtl2832_sdr_dev *dev) u64tmp = -u64tmp; u32tmp = u64tmp & 0x3fffff; - dev_dbg(&dev->udev->dev, "f_if=%u if_ctl=%08x\n", f_if, u32tmp); + dev_dbg(&pdev->dev, "f_if=%u if_ctl=%08x\n", f_if, u32tmp); buf[0] = (u32tmp >> 16) & 0xff; buf[1] = (u32tmp >> 8) & 0xff; @@ -739,7 +746,7 @@ static int rtl2832_sdr_set_adc(struct rtl2832_sdr_dev *dev) ret = rtl2832_sdr_wr_regs(dev, 0x011, "\xf4", 1); break; default: - dev_notice(&dev->udev->dev, "Unsupported tuner\n"); + dev_notice(&pdev->dev, "Unsupported tuner\n"); } /* software reset */ @@ -756,9 +763,10 @@ err: static void rtl2832_sdr_unset_adc(struct rtl2832_sdr_dev *dev) { + struct platform_device *pdev = dev->pdev; int ret; - dev_dbg(&dev->udev->dev, "\n"); + dev_dbg(&pdev->dev, "\n"); /* PID filter */ ret = rtl2832_sdr_wr_regs(dev, 0x061, "\xe0", 1); @@ -792,6 +800,7 @@ err: static int rtl2832_sdr_set_tuner_freq(struct rtl2832_sdr_dev *dev) { + struct platform_device *pdev = dev->pdev; struct dvb_frontend *fe = dev->fe; struct dtv_frontend_properties *c = &fe->dtv_property_cache; struct v4l2_ctrl *bandwidth_auto; @@ -819,8 +828,8 @@ static int rtl2832_sdr_set_tuner_freq(struct rtl2832_sdr_dev *dev) c->frequency = dev->f_tuner; c->delivery_system = SYS_DVBT; - dev_dbg(&dev->udev->dev, "frequency=%u bandwidth=%d\n", - c->frequency, c->bandwidth_hz); + dev_dbg(&pdev->dev, "frequency=%u bandwidth=%d\n", + c->frequency, c->bandwidth_hz); if (!test_bit(POWER_ON, &dev->flags)) return 0; @@ -833,9 +842,10 @@ static int rtl2832_sdr_set_tuner_freq(struct rtl2832_sdr_dev *dev) static int rtl2832_sdr_set_tuner(struct rtl2832_sdr_dev *dev) { + struct platform_device *pdev = dev->pdev; struct dvb_frontend *fe = dev->fe; - dev_dbg(&dev->udev->dev, "\n"); + dev_dbg(&pdev->dev, "\n"); if (fe->ops.tuner_ops.init) fe->ops.tuner_ops.init(fe); @@ -845,9 +855,10 @@ static int rtl2832_sdr_set_tuner(struct rtl2832_sdr_dev *dev) static void rtl2832_sdr_unset_tuner(struct rtl2832_sdr_dev *dev) { + struct platform_device *pdev = dev->pdev; struct dvb_frontend *fe = dev->fe; - dev_dbg(&dev->udev->dev, "\n"); + dev_dbg(&pdev->dev, "\n"); if (fe->ops.tuner_ops.sleep) fe->ops.tuner_ops.sleep(fe); @@ -858,9 +869,10 @@ static void rtl2832_sdr_unset_tuner(struct rtl2832_sdr_dev *dev) static int rtl2832_sdr_start_streaming(struct vb2_queue *vq, unsigned int count) { struct rtl2832_sdr_dev *dev = vb2_get_drv_priv(vq); + struct platform_device *pdev = dev->pdev; int ret; - dev_dbg(&dev->udev->dev, "\n"); + dev_dbg(&pdev->dev, "\n"); if (!dev->udev) return -ENODEV; @@ -912,8 +924,9 @@ err: static void rtl2832_sdr_stop_streaming(struct vb2_queue *vq) { struct rtl2832_sdr_dev *dev = vb2_get_drv_priv(vq); + struct platform_device *pdev = dev->pdev; - dev_dbg(&dev->udev->dev, "\n"); + dev_dbg(&pdev->dev, "\n"); mutex_lock(&dev->v4l2_lock); @@ -950,8 +963,9 @@ static int rtl2832_sdr_g_tuner(struct file *file, void *priv, struct v4l2_tuner *v) { struct rtl2832_sdr_dev *dev = video_drvdata(file); + struct platform_device *pdev = dev->pdev; - dev_dbg(&dev->udev->dev, "index=%d type=%d\n", v->index, v->type); + dev_dbg(&pdev->dev, "index=%d type=%d\n", v->index, v->type); if (v->index == 0) { strlcpy(v->name, "ADC: Realtek RTL2832", sizeof(v->name)); @@ -976,8 +990,9 @@ static int rtl2832_sdr_s_tuner(struct file *file, void *priv, const struct v4l2_tuner *v) { struct rtl2832_sdr_dev *dev = video_drvdata(file); + struct platform_device *pdev = dev->pdev; - dev_dbg(&dev->udev->dev, "\n"); + dev_dbg(&pdev->dev, "\n"); if (v->index > 1) return -EINVAL; @@ -988,9 +1003,10 @@ static int rtl2832_sdr_enum_freq_bands(struct file *file, void *priv, struct v4l2_frequency_band *band) { struct rtl2832_sdr_dev *dev = video_drvdata(file); + struct platform_device *pdev = dev->pdev; - dev_dbg(&dev->udev->dev, "tuner=%d type=%d index=%d\n", - band->tuner, band->type, band->index); + dev_dbg(&pdev->dev, "tuner=%d type=%d index=%d\n", + band->tuner, band->type, band->index); if (band->tuner == 0) { if (band->index >= ARRAY_SIZE(bands_adc)) @@ -1013,10 +1029,10 @@ static int rtl2832_sdr_g_frequency(struct file *file, void *priv, struct v4l2_frequency *f) { struct rtl2832_sdr_dev *dev = video_drvdata(file); + struct platform_device *pdev = dev->pdev; int ret = 0; - dev_dbg(&dev->udev->dev, "tuner=%d type=%d\n", - f->tuner, f->type); + dev_dbg(&pdev->dev, "tuner=%d type=%d\n", f->tuner, f->type); if (f->tuner == 0) { f->frequency = dev->f_adc; @@ -1035,10 +1051,11 @@ static int rtl2832_sdr_s_frequency(struct file *file, void *priv, const struct v4l2_frequency *f) { struct rtl2832_sdr_dev *dev = video_drvdata(file); + struct platform_device *pdev = dev->pdev; int ret, band; - dev_dbg(&dev->udev->dev, "tuner=%d type=%d frequency=%u\n", - f->tuner, f->type, f->frequency); + dev_dbg(&pdev->dev, "tuner=%d type=%d frequency=%u\n", + f->tuner, f->type, f->frequency); /* ADC band midpoints */ #define BAND_ADC_0 ((bands_adc[0].rangehigh + bands_adc[1].rangelow) / 2) @@ -1056,13 +1073,13 @@ static int rtl2832_sdr_s_frequency(struct file *file, void *priv, bands_adc[band].rangelow, bands_adc[band].rangehigh); - dev_dbg(&dev->udev->dev, "ADC frequency=%u Hz\n", dev->f_adc); + dev_dbg(&pdev->dev, "ADC frequency=%u Hz\n", dev->f_adc); ret = rtl2832_sdr_set_adc(dev); } else if (f->tuner == 1) { dev->f_tuner = clamp_t(unsigned int, f->frequency, bands_fm[0].rangelow, bands_fm[0].rangehigh); - dev_dbg(&dev->udev->dev, "RF frequency=%u Hz\n", f->frequency); + dev_dbg(&pdev->dev, "RF frequency=%u Hz\n", f->frequency); ret = rtl2832_sdr_set_tuner_freq(dev); } else { @@ -1076,8 +1093,9 @@ static int rtl2832_sdr_enum_fmt_sdr_cap(struct file *file, void *priv, struct v4l2_fmtdesc *f) { struct rtl2832_sdr_dev *dev = video_drvdata(file); + struct platform_device *pdev = dev->pdev; - dev_dbg(&dev->udev->dev, "\n"); + dev_dbg(&pdev->dev, "\n"); if (f->index >= dev->num_formats) return -EINVAL; @@ -1092,8 +1110,9 @@ static int rtl2832_sdr_g_fmt_sdr_cap(struct file *file, void *priv, struct v4l2_format *f) { struct rtl2832_sdr_dev *dev = video_drvdata(file); + struct platform_device *pdev = dev->pdev; - dev_dbg(&dev->udev->dev, "\n"); + dev_dbg(&pdev->dev, "\n"); f->fmt.sdr.pixelformat = dev->pixelformat; f->fmt.sdr.buffersize = dev->buffersize; @@ -1107,11 +1126,12 @@ static int rtl2832_sdr_s_fmt_sdr_cap(struct file *file, void *priv, struct v4l2_format *f) { struct rtl2832_sdr_dev *dev = video_drvdata(file); + struct platform_device *pdev = dev->pdev; struct vb2_queue *q = &dev->vb_queue; int i; - dev_dbg(&dev->udev->dev, "pixelformat fourcc %4.4s\n", - (char *)&f->fmt.sdr.pixelformat); + dev_dbg(&pdev->dev, "pixelformat fourcc %4.4s\n", + (char *)&f->fmt.sdr.pixelformat); if (vb2_is_busy(q)) return -EBUSY; @@ -1138,10 +1158,11 @@ static int rtl2832_sdr_try_fmt_sdr_cap(struct file *file, void *priv, struct v4l2_format *f) { struct rtl2832_sdr_dev *dev = video_drvdata(file); + struct platform_device *pdev = dev->pdev; int i; - dev_dbg(&dev->udev->dev, "pixelformat fourcc %4.4s\n", - (char *)&f->fmt.sdr.pixelformat); + dev_dbg(&pdev->dev, "pixelformat fourcc %4.4s\n", + (char *)&f->fmt.sdr.pixelformat); memset(f->fmt.sdr.reserved, 0, sizeof(f->fmt.sdr.reserved)); for (i = 0; i < dev->num_formats; i++) { @@ -1210,13 +1231,13 @@ static int rtl2832_sdr_s_ctrl(struct v4l2_ctrl *ctrl) container_of(ctrl->handler, struct rtl2832_sdr_dev, hdl); struct dvb_frontend *fe = dev->fe; + struct platform_device *pdev = dev->pdev; struct dtv_frontend_properties *c = &fe->dtv_property_cache; int ret; - dev_dbg(&dev->udev->dev, - "id=%d name=%s val=%d min=%lld max=%lld step=%lld\n", - ctrl->id, ctrl->name, ctrl->val, - ctrl->minimum, ctrl->maximum, ctrl->step); + dev_dbg(&pdev->dev, "id=%d name=%s val=%d min=%lld max=%lld step=%lld\n", + ctrl->id, ctrl->name, ctrl->val, ctrl->minimum, ctrl->maximum, + ctrl->step); switch (ctrl->id) { case V4L2_CID_RF_TUNER_BANDWIDTH_AUTO: @@ -1375,7 +1396,7 @@ static int rtl2832_sdr_probe(struct platform_device *pdev) /* Register the v4l2_device structure */ dev->v4l2_dev.release = rtl2832_sdr_video_release; - ret = v4l2_device_register(&dev->udev->dev, &dev->v4l2_dev); + ret = v4l2_device_register(&pdev->dev, &dev->v4l2_dev); if (ret) { dev_err(&pdev->dev, "Failed to register v4l2-device %d\n", ret); goto err_v4l2_ctrl_handler_free; |