mirror of
https://github.com/torvalds/linux.git
synced 2024-12-04 18:13:04 +00:00
[media] cx231xx: Improve the log message
Unfortunately, on devices that have multiple interfaces, udev->dev points to the parent device (usb) instead of the cx231xx specific one. Due to that the logs don't look too nice, as they'll print messages as if they were produced by USB core: usb-1-2: New device Conexant Corporation Polaris AV Capturb @ 480 Mbps (1554:5010) with 7 interfaces Instead of using the name of the parent device, let's use the name of the first cx231xx interface for all cx231xx sub-modules. With this path, the logs will be nicer: cx231xx 1-2:1.1: New device Conexant Corporation Polaris AV Capturb @ 480 Mbps (1554:5010) with 7 interfaces Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
parent
ac550faabd
commit
336fea9229
@ -987,25 +987,25 @@ static int cx231xx_load_firmware(struct cx231xx *dev)
|
|||||||
IVTV_REG_APU, 0);
|
IVTV_REG_APU, 0);
|
||||||
|
|
||||||
if (retval != 0) {
|
if (retval != 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: Error with mc417_register_write\n", __func__);
|
"%s: Error with mc417_register_write\n", __func__);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
retval = request_firmware(&firmware, CX231xx_FIRM_IMAGE_NAME,
|
retval = request_firmware(&firmware, CX231xx_FIRM_IMAGE_NAME,
|
||||||
&dev->udev->dev);
|
dev->dev);
|
||||||
|
|
||||||
if (retval != 0) {
|
if (retval != 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"ERROR: Hotplug firmware request failed (%s).\n",
|
"ERROR: Hotplug firmware request failed (%s).\n",
|
||||||
CX231xx_FIRM_IMAGE_NAME);
|
CX231xx_FIRM_IMAGE_NAME);
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"Please fix your hotplug setup, the board will not work without firmware loaded!\n");
|
"Please fix your hotplug setup, the board will not work without firmware loaded!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (firmware->size != CX231xx_FIRM_IMAGE_SIZE) {
|
if (firmware->size != CX231xx_FIRM_IMAGE_SIZE) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"ERROR: Firmware size mismatch (have %zd, expected %d)\n",
|
"ERROR: Firmware size mismatch (have %zd, expected %d)\n",
|
||||||
firmware->size, CX231xx_FIRM_IMAGE_SIZE);
|
firmware->size, CX231xx_FIRM_IMAGE_SIZE);
|
||||||
release_firmware(firmware);
|
release_firmware(firmware);
|
||||||
@ -1013,7 +1013,7 @@ static int cx231xx_load_firmware(struct cx231xx *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (0 != memcmp(firmware->data, magic, 8)) {
|
if (0 != memcmp(firmware->data, magic, 8)) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"ERROR: Firmware magic mismatch, wrong file?\n");
|
"ERROR: Firmware magic mismatch, wrong file?\n");
|
||||||
release_firmware(firmware);
|
release_firmware(firmware);
|
||||||
return -1;
|
return -1;
|
||||||
@ -1061,7 +1061,7 @@ static int cx231xx_load_firmware(struct cx231xx *dev)
|
|||||||
retval |= mc417_register_write(dev, IVTV_REG_HW_BLOCKS,
|
retval |= mc417_register_write(dev, IVTV_REG_HW_BLOCKS,
|
||||||
IVTV_CMD_HW_BLOCKS_RST);
|
IVTV_CMD_HW_BLOCKS_RST);
|
||||||
if (retval < 0) {
|
if (retval < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: Error with mc417_register_write\n",
|
"%s: Error with mc417_register_write\n",
|
||||||
__func__);
|
__func__);
|
||||||
return retval;
|
return retval;
|
||||||
@ -1074,7 +1074,7 @@ static int cx231xx_load_firmware(struct cx231xx *dev)
|
|||||||
retval |= mc417_register_write(dev, IVTV_REG_VPU, value & 0xFFFFFFE8);
|
retval |= mc417_register_write(dev, IVTV_REG_VPU, value & 0xFFFFFFE8);
|
||||||
|
|
||||||
if (retval < 0) {
|
if (retval < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: Error with mc417_register_write\n",
|
"%s: Error with mc417_register_write\n",
|
||||||
__func__);
|
__func__);
|
||||||
return retval;
|
return retval;
|
||||||
@ -1123,27 +1123,27 @@ static int cx231xx_initialize_codec(struct cx231xx *dev)
|
|||||||
dprintk(2, "%s: PING OK\n", __func__);
|
dprintk(2, "%s: PING OK\n", __func__);
|
||||||
retval = cx231xx_load_firmware(dev);
|
retval = cx231xx_load_firmware(dev);
|
||||||
if (retval < 0) {
|
if (retval < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: f/w load failed\n", __func__);
|
"%s: f/w load failed\n", __func__);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
retval = cx231xx_find_mailbox(dev);
|
retval = cx231xx_find_mailbox(dev);
|
||||||
if (retval < 0) {
|
if (retval < 0) {
|
||||||
dev_err(&dev->udev->dev, "%s: mailbox < 0, error\n",
|
dev_err(dev->dev, "%s: mailbox < 0, error\n",
|
||||||
__func__);
|
__func__);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
dev->cx23417_mailbox = retval;
|
dev->cx23417_mailbox = retval;
|
||||||
retval = cx231xx_api_cmd(dev, CX2341X_ENC_PING_FW, 0, 0);
|
retval = cx231xx_api_cmd(dev, CX2341X_ENC_PING_FW, 0, 0);
|
||||||
if (retval < 0) {
|
if (retval < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"ERROR: cx23417 firmware ping failed!\n");
|
"ERROR: cx23417 firmware ping failed!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
retval = cx231xx_api_cmd(dev, CX2341X_ENC_GET_VERSION, 0, 1,
|
retval = cx231xx_api_cmd(dev, CX2341X_ENC_GET_VERSION, 0, 1,
|
||||||
&version);
|
&version);
|
||||||
if (retval < 0) {
|
if (retval < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"ERROR: cx23417 firmware get encoder: version failed!\n");
|
"ERROR: cx23417 firmware get encoder: version failed!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -1425,7 +1425,7 @@ static int bb_buf_prepare(struct videobuf_queue *q,
|
|||||||
if (!dev->video_mode.bulk_ctl.num_bufs)
|
if (!dev->video_mode.bulk_ctl.num_bufs)
|
||||||
urb_init = 1;
|
urb_init = 1;
|
||||||
}
|
}
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"urb_init=%d dev->video_mode.max_pkt_size=%d\n",
|
"urb_init=%d dev->video_mode.max_pkt_size=%d\n",
|
||||||
urb_init, dev->video_mode.max_pkt_size);
|
urb_init, dev->video_mode.max_pkt_size);
|
||||||
dev->mode_tv = 1;
|
dev->mode_tv = 1;
|
||||||
@ -1698,7 +1698,7 @@ static int mpeg_open(struct file *file)
|
|||||||
sizeof(struct cx231xx_buffer), fh, &dev->lock);
|
sizeof(struct cx231xx_buffer), fh, &dev->lock);
|
||||||
/*
|
/*
|
||||||
videobuf_queue_sg_init(&fh->vidq, &cx231xx_qops,
|
videobuf_queue_sg_init(&fh->vidq, &cx231xx_qops,
|
||||||
&dev->udev->dev, &dev->ts1.slock,
|
dev->dev, &dev->ts1.slock,
|
||||||
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
V4L2_FIELD_INTERLACED,
|
V4L2_FIELD_INTERLACED,
|
||||||
sizeof(struct cx231xx_buffer),
|
sizeof(struct cx231xx_buffer),
|
||||||
|
@ -48,7 +48,7 @@ static int cx231xx_isoc_audio_deinit(struct cx231xx *dev)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "Stopping isoc\n");
|
dev_dbg(dev->dev, "Stopping isoc\n");
|
||||||
|
|
||||||
for (i = 0; i < CX231XX_AUDIO_BUFS; i++) {
|
for (i = 0; i < CX231XX_AUDIO_BUFS; i++) {
|
||||||
if (dev->adev.urb[i]) {
|
if (dev->adev.urb[i]) {
|
||||||
@ -72,7 +72,7 @@ static int cx231xx_bulk_audio_deinit(struct cx231xx *dev)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "Stopping bulk\n");
|
dev_dbg(dev->dev, "Stopping bulk\n");
|
||||||
|
|
||||||
for (i = 0; i < CX231XX_AUDIO_BUFS; i++) {
|
for (i = 0; i < CX231XX_AUDIO_BUFS; i++) {
|
||||||
if (dev->adev.urb[i]) {
|
if (dev->adev.urb[i]) {
|
||||||
@ -116,7 +116,7 @@ static void cx231xx_audio_isocirq(struct urb *urb)
|
|||||||
case -ESHUTDOWN:
|
case -ESHUTDOWN:
|
||||||
return;
|
return;
|
||||||
default: /* error */
|
default: /* error */
|
||||||
dev_dbg(&dev->udev->dev, "urb completition error %d.\n",
|
dev_dbg(dev->dev, "urb completition error %d.\n",
|
||||||
urb->status);
|
urb->status);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -176,7 +176,7 @@ static void cx231xx_audio_isocirq(struct urb *urb)
|
|||||||
|
|
||||||
status = usb_submit_urb(urb, GFP_ATOMIC);
|
status = usb_submit_urb(urb, GFP_ATOMIC);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"resubmit of audio urb failed (error=%i)\n",
|
"resubmit of audio urb failed (error=%i)\n",
|
||||||
status);
|
status);
|
||||||
}
|
}
|
||||||
@ -206,7 +206,7 @@ static void cx231xx_audio_bulkirq(struct urb *urb)
|
|||||||
case -ESHUTDOWN:
|
case -ESHUTDOWN:
|
||||||
return;
|
return;
|
||||||
default: /* error */
|
default: /* error */
|
||||||
dev_dbg(&dev->udev->dev, "urb completition error %d.\n",
|
dev_dbg(dev->dev, "urb completition error %d.\n",
|
||||||
urb->status);
|
urb->status);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -262,7 +262,7 @@ static void cx231xx_audio_bulkirq(struct urb *urb)
|
|||||||
|
|
||||||
status = usb_submit_urb(urb, GFP_ATOMIC);
|
status = usb_submit_urb(urb, GFP_ATOMIC);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"resubmit of audio urb failed (error=%i)\n",
|
"resubmit of audio urb failed (error=%i)\n",
|
||||||
status);
|
status);
|
||||||
}
|
}
|
||||||
@ -274,7 +274,7 @@ static int cx231xx_init_audio_isoc(struct cx231xx *dev)
|
|||||||
int i, errCode;
|
int i, errCode;
|
||||||
int sb_size;
|
int sb_size;
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"%s: Starting ISO AUDIO transfers\n", __func__);
|
"%s: Starting ISO AUDIO transfers\n", __func__);
|
||||||
|
|
||||||
if (dev->state & DEV_DISCONNECTED)
|
if (dev->state & DEV_DISCONNECTED)
|
||||||
@ -293,7 +293,7 @@ static int cx231xx_init_audio_isoc(struct cx231xx *dev)
|
|||||||
memset(dev->adev.transfer_buffer[i], 0x80, sb_size);
|
memset(dev->adev.transfer_buffer[i], 0x80, sb_size);
|
||||||
urb = usb_alloc_urb(CX231XX_ISO_NUM_AUDIO_PACKETS, GFP_ATOMIC);
|
urb = usb_alloc_urb(CX231XX_ISO_NUM_AUDIO_PACKETS, GFP_ATOMIC);
|
||||||
if (!urb) {
|
if (!urb) {
|
||||||
dev_err(&dev->udev->dev, "usb_alloc_urb failed!\n");
|
dev_err(dev->dev, "usb_alloc_urb failed!\n");
|
||||||
for (j = 0; j < i; j++) {
|
for (j = 0; j < i; j++) {
|
||||||
usb_free_urb(dev->adev.urb[j]);
|
usb_free_urb(dev->adev.urb[j]);
|
||||||
kfree(dev->adev.transfer_buffer[j]);
|
kfree(dev->adev.transfer_buffer[j]);
|
||||||
@ -336,7 +336,7 @@ static int cx231xx_init_audio_bulk(struct cx231xx *dev)
|
|||||||
int i, errCode;
|
int i, errCode;
|
||||||
int sb_size;
|
int sb_size;
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"%s: Starting BULK AUDIO transfers\n", __func__);
|
"%s: Starting BULK AUDIO transfers\n", __func__);
|
||||||
|
|
||||||
if (dev->state & DEV_DISCONNECTED)
|
if (dev->state & DEV_DISCONNECTED)
|
||||||
@ -355,7 +355,7 @@ static int cx231xx_init_audio_bulk(struct cx231xx *dev)
|
|||||||
memset(dev->adev.transfer_buffer[i], 0x80, sb_size);
|
memset(dev->adev.transfer_buffer[i], 0x80, sb_size);
|
||||||
urb = usb_alloc_urb(CX231XX_NUM_AUDIO_PACKETS, GFP_ATOMIC);
|
urb = usb_alloc_urb(CX231XX_NUM_AUDIO_PACKETS, GFP_ATOMIC);
|
||||||
if (!urb) {
|
if (!urb) {
|
||||||
dev_err(&dev->udev->dev, "usb_alloc_urb failed!\n");
|
dev_err(dev->dev, "usb_alloc_urb failed!\n");
|
||||||
for (j = 0; j < i; j++) {
|
for (j = 0; j < i; j++) {
|
||||||
usb_free_urb(dev->adev.urb[j]);
|
usb_free_urb(dev->adev.urb[j]);
|
||||||
kfree(dev->adev.transfer_buffer[j]);
|
kfree(dev->adev.transfer_buffer[j]);
|
||||||
@ -393,7 +393,7 @@ static int snd_pcm_alloc_vmalloc_buffer(struct snd_pcm_substream *subs,
|
|||||||
struct snd_pcm_runtime *runtime = subs->runtime;
|
struct snd_pcm_runtime *runtime = subs->runtime;
|
||||||
struct cx231xx *dev = snd_pcm_substream_chip(subs);
|
struct cx231xx *dev = snd_pcm_substream_chip(subs);
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "Allocating vbuffer\n");
|
dev_dbg(dev->dev, "Allocating vbuffer\n");
|
||||||
if (runtime->dma_area) {
|
if (runtime->dma_area) {
|
||||||
if (runtime->dma_bytes > size)
|
if (runtime->dma_bytes > size)
|
||||||
return 0;
|
return 0;
|
||||||
@ -436,17 +436,17 @@ static int snd_cx231xx_capture_open(struct snd_pcm_substream *substream)
|
|||||||
struct snd_pcm_runtime *runtime = substream->runtime;
|
struct snd_pcm_runtime *runtime = substream->runtime;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"opening device and trying to acquire exclusive lock\n");
|
"opening device and trying to acquire exclusive lock\n");
|
||||||
|
|
||||||
if (!dev) {
|
if (!dev) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"BUG: cx231xx can't find device struct. Can't proceed with open\n");
|
"BUG: cx231xx can't find device struct. Can't proceed with open\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dev->state & DEV_DISCONNECTED) {
|
if (dev->state & DEV_DISCONNECTED) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"Can't open. the device was removed.\n");
|
"Can't open. the device was removed.\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
@ -460,7 +460,7 @@ static int snd_cx231xx_capture_open(struct snd_pcm_substream *substream)
|
|||||||
ret = cx231xx_set_alt_setting(dev, INDEX_AUDIO, 0);
|
ret = cx231xx_set_alt_setting(dev, INDEX_AUDIO, 0);
|
||||||
mutex_unlock(&dev->lock);
|
mutex_unlock(&dev->lock);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"failed to set alternate setting !\n");
|
"failed to set alternate setting !\n");
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -487,7 +487,7 @@ static int snd_cx231xx_pcm_close(struct snd_pcm_substream *substream)
|
|||||||
int ret;
|
int ret;
|
||||||
struct cx231xx *dev = snd_pcm_substream_chip(substream);
|
struct cx231xx *dev = snd_pcm_substream_chip(substream);
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "closing device\n");
|
dev_dbg(dev->dev, "closing device\n");
|
||||||
|
|
||||||
/* inform hardware to stop streaming */
|
/* inform hardware to stop streaming */
|
||||||
mutex_lock(&dev->lock);
|
mutex_lock(&dev->lock);
|
||||||
@ -497,7 +497,7 @@ static int snd_cx231xx_pcm_close(struct snd_pcm_substream *substream)
|
|||||||
/* 1 - 48000 samples per sec */
|
/* 1 - 48000 samples per sec */
|
||||||
ret = cx231xx_set_alt_setting(dev, INDEX_AUDIO, 0);
|
ret = cx231xx_set_alt_setting(dev, INDEX_AUDIO, 0);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"failed to set alternate setting !\n");
|
"failed to set alternate setting !\n");
|
||||||
|
|
||||||
mutex_unlock(&dev->lock);
|
mutex_unlock(&dev->lock);
|
||||||
@ -508,10 +508,10 @@ static int snd_cx231xx_pcm_close(struct snd_pcm_substream *substream)
|
|||||||
mutex_unlock(&dev->lock);
|
mutex_unlock(&dev->lock);
|
||||||
|
|
||||||
if (dev->adev.users == 0 && dev->adev.shutdown == 1) {
|
if (dev->adev.users == 0 && dev->adev.shutdown == 1) {
|
||||||
dev_dbg(&dev->udev->dev, "audio users: %d\n", dev->adev.users);
|
dev_dbg(dev->dev, "audio users: %d\n", dev->adev.users);
|
||||||
dev_dbg(&dev->udev->dev, "disabling audio stream!\n");
|
dev_dbg(dev->dev, "disabling audio stream!\n");
|
||||||
dev->adev.shutdown = 0;
|
dev->adev.shutdown = 0;
|
||||||
dev_dbg(&dev->udev->dev, "released lock\n");
|
dev_dbg(dev->dev, "released lock\n");
|
||||||
if (atomic_read(&dev->stream_started) > 0) {
|
if (atomic_read(&dev->stream_started) > 0) {
|
||||||
atomic_set(&dev->stream_started, 0);
|
atomic_set(&dev->stream_started, 0);
|
||||||
schedule_work(&dev->wq_trigger);
|
schedule_work(&dev->wq_trigger);
|
||||||
@ -526,7 +526,7 @@ static int snd_cx231xx_hw_capture_params(struct snd_pcm_substream *substream,
|
|||||||
struct cx231xx *dev = snd_pcm_substream_chip(substream);
|
struct cx231xx *dev = snd_pcm_substream_chip(substream);
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "Setting capture parameters\n");
|
dev_dbg(dev->dev, "Setting capture parameters\n");
|
||||||
|
|
||||||
ret = snd_pcm_alloc_vmalloc_buffer(substream,
|
ret = snd_pcm_alloc_vmalloc_buffer(substream,
|
||||||
params_buffer_bytes(hw_params));
|
params_buffer_bytes(hw_params));
|
||||||
@ -548,7 +548,7 @@ static int snd_cx231xx_hw_capture_free(struct snd_pcm_substream *substream)
|
|||||||
{
|
{
|
||||||
struct cx231xx *dev = snd_pcm_substream_chip(substream);
|
struct cx231xx *dev = snd_pcm_substream_chip(substream);
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "Stop capture, if needed\n");
|
dev_dbg(dev->dev, "Stop capture, if needed\n");
|
||||||
|
|
||||||
if (atomic_read(&dev->stream_started) > 0) {
|
if (atomic_read(&dev->stream_started) > 0) {
|
||||||
atomic_set(&dev->stream_started, 0);
|
atomic_set(&dev->stream_started, 0);
|
||||||
@ -573,7 +573,7 @@ static void audio_trigger(struct work_struct *work)
|
|||||||
struct cx231xx *dev = container_of(work, struct cx231xx, wq_trigger);
|
struct cx231xx *dev = container_of(work, struct cx231xx, wq_trigger);
|
||||||
|
|
||||||
if (atomic_read(&dev->stream_started)) {
|
if (atomic_read(&dev->stream_started)) {
|
||||||
dev_dbg(&dev->udev->dev, "starting capture");
|
dev_dbg(dev->dev, "starting capture");
|
||||||
if (is_fw_load(dev) == 0)
|
if (is_fw_load(dev) == 0)
|
||||||
cx25840_call(dev, core, load_fw);
|
cx25840_call(dev, core, load_fw);
|
||||||
if (dev->USE_ISO)
|
if (dev->USE_ISO)
|
||||||
@ -581,7 +581,7 @@ static void audio_trigger(struct work_struct *work)
|
|||||||
else
|
else
|
||||||
cx231xx_init_audio_bulk(dev);
|
cx231xx_init_audio_bulk(dev);
|
||||||
} else {
|
} else {
|
||||||
dev_dbg(&dev->udev->dev, "stopping capture");
|
dev_dbg(dev->dev, "stopping capture");
|
||||||
cx231xx_isoc_audio_deinit(dev);
|
cx231xx_isoc_audio_deinit(dev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -667,10 +667,10 @@ static int cx231xx_audio_init(struct cx231xx *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"probing for cx231xx non standard usbaudio\n");
|
"probing for cx231xx non standard usbaudio\n");
|
||||||
|
|
||||||
err = snd_card_new(&dev->udev->dev, index[devnr], "Cx231xx Audio",
|
err = snd_card_new(dev->dev, index[devnr], "Cx231xx Audio",
|
||||||
THIS_MODULE, 0, &card);
|
THIS_MODULE, 0, &card);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
@ -712,7 +712,7 @@ static int cx231xx_audio_init(struct cx231xx *dev)
|
|||||||
bEndpointAddress;
|
bEndpointAddress;
|
||||||
|
|
||||||
adev->num_alt = uif->num_altsetting;
|
adev->num_alt = uif->num_altsetting;
|
||||||
dev_info(&dev->udev->dev,
|
dev_info(dev->dev,
|
||||||
"audio EndPoint Addr 0x%x, Alternate settings: %i\n",
|
"audio EndPoint Addr 0x%x, Alternate settings: %i\n",
|
||||||
adev->end_point_addr, adev->num_alt);
|
adev->end_point_addr, adev->num_alt);
|
||||||
adev->alt_max_pkt_size = kmalloc(32 * adev->num_alt, GFP_KERNEL);
|
adev->alt_max_pkt_size = kmalloc(32 * adev->num_alt, GFP_KERNEL);
|
||||||
@ -726,7 +726,7 @@ static int cx231xx_audio_init(struct cx231xx *dev)
|
|||||||
wMaxPacketSize);
|
wMaxPacketSize);
|
||||||
adev->alt_max_pkt_size[i] =
|
adev->alt_max_pkt_size[i] =
|
||||||
(tmp & 0x07ff) * (((tmp & 0x1800) >> 11) + 1);
|
(tmp & 0x07ff) * (((tmp & 0x1800) >> 11) + 1);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"audio alternate setting %i, max size= %i\n", i,
|
"audio alternate setting %i, max size= %i\n", i,
|
||||||
adev->alt_max_pkt_size[i]);
|
adev->alt_max_pkt_size[i]);
|
||||||
}
|
}
|
||||||
|
@ -82,10 +82,10 @@ void initGPIO(struct cx231xx *dev)
|
|||||||
cx231xx_send_gpio_cmd(dev, _gpio_direction, (u8 *)&value, 4, 0, 0);
|
cx231xx_send_gpio_cmd(dev, _gpio_direction, (u8 *)&value, 4, 0, 0);
|
||||||
|
|
||||||
verve_read_byte(dev, 0x07, &val);
|
verve_read_byte(dev, 0x07, &val);
|
||||||
dev_dbg(&dev->udev->dev, "verve_read_byte address0x07=0x%x\n", val);
|
dev_dbg(dev->dev, "verve_read_byte address0x07=0x%x\n", val);
|
||||||
verve_write_byte(dev, 0x07, 0xF4);
|
verve_write_byte(dev, 0x07, 0xF4);
|
||||||
verve_read_byte(dev, 0x07, &val);
|
verve_read_byte(dev, 0x07, &val);
|
||||||
dev_dbg(&dev->udev->dev, "verve_read_byte address0x07=0x%x\n", val);
|
dev_dbg(dev->dev, "verve_read_byte address0x07=0x%x\n", val);
|
||||||
|
|
||||||
cx231xx_capture_start(dev, 1, Vbi);
|
cx231xx_capture_start(dev, 1, Vbi);
|
||||||
|
|
||||||
@ -155,7 +155,7 @@ int cx231xx_afe_init_super_block(struct cx231xx *dev, u32 ref_count)
|
|||||||
while (afe_power_status != 0x18) {
|
while (afe_power_status != 0x18) {
|
||||||
status = afe_write_byte(dev, SUP_BLK_PWRDN, 0x18);
|
status = afe_write_byte(dev, SUP_BLK_PWRDN, 0x18);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"%s: Init Super Block failed in send cmd\n",
|
"%s: Init Super Block failed in send cmd\n",
|
||||||
__func__);
|
__func__);
|
||||||
break;
|
break;
|
||||||
@ -164,14 +164,14 @@ int cx231xx_afe_init_super_block(struct cx231xx *dev, u32 ref_count)
|
|||||||
status = afe_read_byte(dev, SUP_BLK_PWRDN, &afe_power_status);
|
status = afe_read_byte(dev, SUP_BLK_PWRDN, &afe_power_status);
|
||||||
afe_power_status &= 0xff;
|
afe_power_status &= 0xff;
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"%s: Init Super Block failed in receive cmd\n",
|
"%s: Init Super Block failed in receive cmd\n",
|
||||||
__func__);
|
__func__);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
if (i == 10) {
|
if (i == 10) {
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"%s: Init Super Block force break in loop !!!!\n",
|
"%s: Init Super Block force break in loop !!!!\n",
|
||||||
__func__);
|
__func__);
|
||||||
status = -1;
|
status = -1;
|
||||||
@ -412,7 +412,7 @@ int cx231xx_afe_update_power_control(struct cx231xx *dev,
|
|||||||
status |= afe_write_byte(dev, ADC_PWRDN_CLAMP_CH3,
|
status |= afe_write_byte(dev, ADC_PWRDN_CLAMP_CH3,
|
||||||
0x00);
|
0x00);
|
||||||
} else {
|
} else {
|
||||||
dev_dbg(&dev->udev->dev, "Invalid AV mode input\n");
|
dev_dbg(dev->dev, "Invalid AV mode input\n");
|
||||||
status = -1;
|
status = -1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -469,7 +469,7 @@ int cx231xx_afe_update_power_control(struct cx231xx *dev,
|
|||||||
status |= afe_write_byte(dev, ADC_PWRDN_CLAMP_CH3,
|
status |= afe_write_byte(dev, ADC_PWRDN_CLAMP_CH3,
|
||||||
0x40);
|
0x40);
|
||||||
} else {
|
} else {
|
||||||
dev_dbg(&dev->udev->dev, "Invalid AV mode input\n");
|
dev_dbg(dev->dev, "Invalid AV mode input\n");
|
||||||
status = -1;
|
status = -1;
|
||||||
}
|
}
|
||||||
} /* switch */
|
} /* switch */
|
||||||
@ -575,7 +575,7 @@ int cx231xx_set_video_input_mux(struct cx231xx *dev, u8 input)
|
|||||||
status = cx231xx_set_power_mode(dev,
|
status = cx231xx_set_power_mode(dev,
|
||||||
POLARIS_AVMODE_ENXTERNAL_AV);
|
POLARIS_AVMODE_ENXTERNAL_AV);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: Failed to set Power - errCode [%d]!\n",
|
"%s: Failed to set Power - errCode [%d]!\n",
|
||||||
__func__, status);
|
__func__, status);
|
||||||
return status;
|
return status;
|
||||||
@ -593,7 +593,7 @@ int cx231xx_set_video_input_mux(struct cx231xx *dev, u8 input)
|
|||||||
status = cx231xx_set_power_mode(dev,
|
status = cx231xx_set_power_mode(dev,
|
||||||
POLARIS_AVMODE_ANALOGT_TV);
|
POLARIS_AVMODE_ANALOGT_TV);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: Failed to set Power - errCode [%d]!\n",
|
"%s: Failed to set Power - errCode [%d]!\n",
|
||||||
__func__, status);
|
__func__, status);
|
||||||
return status;
|
return status;
|
||||||
@ -610,7 +610,7 @@ int cx231xx_set_video_input_mux(struct cx231xx *dev, u8 input)
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
dev_err(&dev->udev->dev, "%s: Unknown Input %d !\n",
|
dev_err(dev->dev, "%s: Unknown Input %d !\n",
|
||||||
__func__, INPUT(input)->type);
|
__func__, INPUT(input)->type);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -630,7 +630,7 @@ int cx231xx_set_decoder_video_input(struct cx231xx *dev,
|
|||||||
if (pin_type != dev->video_input) {
|
if (pin_type != dev->video_input) {
|
||||||
status = cx231xx_afe_adjust_ref_count(dev, pin_type);
|
status = cx231xx_afe_adjust_ref_count(dev, pin_type);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: adjust_ref_count :Failed to set AFE input mux - errCode [%d]!\n",
|
"%s: adjust_ref_count :Failed to set AFE input mux - errCode [%d]!\n",
|
||||||
__func__, status);
|
__func__, status);
|
||||||
return status;
|
return status;
|
||||||
@ -640,7 +640,7 @@ int cx231xx_set_decoder_video_input(struct cx231xx *dev,
|
|||||||
/* call afe block to set video inputs */
|
/* call afe block to set video inputs */
|
||||||
status = cx231xx_afe_set_input_mux(dev, input);
|
status = cx231xx_afe_set_input_mux(dev, input);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: set_input_mux :Failed to set AFE input mux - errCode [%d]!\n",
|
"%s: set_input_mux :Failed to set AFE input mux - errCode [%d]!\n",
|
||||||
__func__, status);
|
__func__, status);
|
||||||
return status;
|
return status;
|
||||||
@ -672,7 +672,7 @@ int cx231xx_set_decoder_video_input(struct cx231xx *dev,
|
|||||||
/* Tell DIF object to go to baseband mode */
|
/* Tell DIF object to go to baseband mode */
|
||||||
status = cx231xx_dif_set_standard(dev, DIF_USE_BASEBAND);
|
status = cx231xx_dif_set_standard(dev, DIF_USE_BASEBAND);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: cx231xx_dif set to By pass mode- errCode [%d]!\n",
|
"%s: cx231xx_dif set to By pass mode- errCode [%d]!\n",
|
||||||
__func__, status);
|
__func__, status);
|
||||||
return status;
|
return status;
|
||||||
@ -717,7 +717,7 @@ int cx231xx_set_decoder_video_input(struct cx231xx *dev,
|
|||||||
/* Tell DIF object to go to baseband mode */
|
/* Tell DIF object to go to baseband mode */
|
||||||
status = cx231xx_dif_set_standard(dev, DIF_USE_BASEBAND);
|
status = cx231xx_dif_set_standard(dev, DIF_USE_BASEBAND);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: cx231xx_dif set to By pass mode- errCode [%d]!\n",
|
"%s: cx231xx_dif set to By pass mode- errCode [%d]!\n",
|
||||||
__func__, status);
|
__func__, status);
|
||||||
return status;
|
return status;
|
||||||
@ -792,7 +792,7 @@ int cx231xx_set_decoder_video_input(struct cx231xx *dev,
|
|||||||
status = cx231xx_dif_set_standard(dev,
|
status = cx231xx_dif_set_standard(dev,
|
||||||
DIF_USE_BASEBAND);
|
DIF_USE_BASEBAND);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: cx231xx_dif set to By pass mode- errCode [%d]!\n",
|
"%s: cx231xx_dif set to By pass mode- errCode [%d]!\n",
|
||||||
__func__, status);
|
__func__, status);
|
||||||
return status;
|
return status;
|
||||||
@ -828,7 +828,7 @@ int cx231xx_set_decoder_video_input(struct cx231xx *dev,
|
|||||||
/* Reinitialize the DIF */
|
/* Reinitialize the DIF */
|
||||||
status = cx231xx_dif_set_standard(dev, dev->norm);
|
status = cx231xx_dif_set_standard(dev, dev->norm);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: cx231xx_dif set to By pass mode- errCode [%d]!\n",
|
"%s: cx231xx_dif set to By pass mode- errCode [%d]!\n",
|
||||||
__func__, status);
|
__func__, status);
|
||||||
return status;
|
return status;
|
||||||
@ -972,14 +972,14 @@ int cx231xx_do_mode_ctrl_overrides(struct cx231xx *dev)
|
|||||||
{
|
{
|
||||||
int status = 0;
|
int status = 0;
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "%s: 0x%x\n",
|
dev_dbg(dev->dev, "%s: 0x%x\n",
|
||||||
__func__, (unsigned int)dev->norm);
|
__func__, (unsigned int)dev->norm);
|
||||||
|
|
||||||
/* Change the DFE_CTRL3 bp_percent to fix flagging */
|
/* Change the DFE_CTRL3 bp_percent to fix flagging */
|
||||||
status = vid_blk_write_word(dev, DFE_CTRL3, 0xCD3F0280);
|
status = vid_blk_write_word(dev, DFE_CTRL3, 0xCD3F0280);
|
||||||
|
|
||||||
if (dev->norm & (V4L2_STD_NTSC | V4L2_STD_PAL_M)) {
|
if (dev->norm & (V4L2_STD_NTSC | V4L2_STD_PAL_M)) {
|
||||||
dev_dbg(&dev->udev->dev, "%s: NTSC\n", __func__);
|
dev_dbg(dev->dev, "%s: NTSC\n", __func__);
|
||||||
|
|
||||||
/* Move the close caption lines out of active video,
|
/* Move the close caption lines out of active video,
|
||||||
adjust the active video start point */
|
adjust the active video start point */
|
||||||
@ -1006,7 +1006,7 @@ int cx231xx_do_mode_ctrl_overrides(struct cx231xx *dev)
|
|||||||
(FLD_HBLANK_CNT, 0x79));
|
(FLD_HBLANK_CNT, 0x79));
|
||||||
|
|
||||||
} else if (dev->norm & V4L2_STD_SECAM) {
|
} else if (dev->norm & V4L2_STD_SECAM) {
|
||||||
dev_dbg(&dev->udev->dev, "%s: SECAM\n", __func__);
|
dev_dbg(dev->dev, "%s: SECAM\n", __func__);
|
||||||
status = cx231xx_read_modify_write_i2c_dword(dev,
|
status = cx231xx_read_modify_write_i2c_dword(dev,
|
||||||
VID_BLK_I2C_ADDRESS,
|
VID_BLK_I2C_ADDRESS,
|
||||||
VERT_TIM_CTRL,
|
VERT_TIM_CTRL,
|
||||||
@ -1033,7 +1033,7 @@ int cx231xx_do_mode_ctrl_overrides(struct cx231xx *dev)
|
|||||||
cx231xx_set_field
|
cx231xx_set_field
|
||||||
(FLD_HBLANK_CNT, 0x85));
|
(FLD_HBLANK_CNT, 0x85));
|
||||||
} else {
|
} else {
|
||||||
dev_dbg(&dev->udev->dev, "%s: PAL\n", __func__);
|
dev_dbg(dev->dev, "%s: PAL\n", __func__);
|
||||||
status = cx231xx_read_modify_write_i2c_dword(dev,
|
status = cx231xx_read_modify_write_i2c_dword(dev,
|
||||||
VID_BLK_I2C_ADDRESS,
|
VID_BLK_I2C_ADDRESS,
|
||||||
VERT_TIM_CTRL,
|
VERT_TIM_CTRL,
|
||||||
@ -1208,7 +1208,7 @@ int cx231xx_set_audio_decoder_input(struct cx231xx *dev,
|
|||||||
/* This is just a casual suggestion to people adding
|
/* This is just a casual suggestion to people adding
|
||||||
new boards in case they use a tuner type we don't
|
new boards in case they use a tuner type we don't
|
||||||
currently know about */
|
currently know about */
|
||||||
dev_info(&dev->udev->dev,
|
dev_info(dev->dev,
|
||||||
"Unknown tuner type configuring SIF");
|
"Unknown tuner type configuring SIF");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1334,127 +1334,127 @@ void cx231xx_dump_HH_reg(struct cx231xx *dev)
|
|||||||
|
|
||||||
for (i = 0x100; i < 0x140; i++) {
|
for (i = 0x100; i < 0x140; i++) {
|
||||||
vid_blk_read_word(dev, i, &value);
|
vid_blk_read_word(dev, i, &value);
|
||||||
dev_dbg(&dev->udev->dev, "reg0x%x=0x%x\n", i, value);
|
dev_dbg(dev->dev, "reg0x%x=0x%x\n", i, value);
|
||||||
i = i+3;
|
i = i+3;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0x300; i < 0x400; i++) {
|
for (i = 0x300; i < 0x400; i++) {
|
||||||
vid_blk_read_word(dev, i, &value);
|
vid_blk_read_word(dev, i, &value);
|
||||||
dev_dbg(&dev->udev->dev, "reg0x%x=0x%x\n", i, value);
|
dev_dbg(dev->dev, "reg0x%x=0x%x\n", i, value);
|
||||||
i = i+3;
|
i = i+3;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0x400; i < 0x440; i++) {
|
for (i = 0x400; i < 0x440; i++) {
|
||||||
vid_blk_read_word(dev, i, &value);
|
vid_blk_read_word(dev, i, &value);
|
||||||
dev_dbg(&dev->udev->dev, "reg0x%x=0x%x\n", i, value);
|
dev_dbg(dev->dev, "reg0x%x=0x%x\n", i, value);
|
||||||
i = i+3;
|
i = i+3;
|
||||||
}
|
}
|
||||||
|
|
||||||
vid_blk_read_word(dev, AFE_CTRL_C2HH_SRC_CTRL, &value);
|
vid_blk_read_word(dev, AFE_CTRL_C2HH_SRC_CTRL, &value);
|
||||||
dev_dbg(&dev->udev->dev, "AFE_CTRL_C2HH_SRC_CTRL=0x%x\n", value);
|
dev_dbg(dev->dev, "AFE_CTRL_C2HH_SRC_CTRL=0x%x\n", value);
|
||||||
vid_blk_write_word(dev, AFE_CTRL_C2HH_SRC_CTRL, 0x4485D390);
|
vid_blk_write_word(dev, AFE_CTRL_C2HH_SRC_CTRL, 0x4485D390);
|
||||||
vid_blk_read_word(dev, AFE_CTRL_C2HH_SRC_CTRL, &value);
|
vid_blk_read_word(dev, AFE_CTRL_C2HH_SRC_CTRL, &value);
|
||||||
dev_dbg(&dev->udev->dev, "AFE_CTRL_C2HH_SRC_CTRL=0x%x\n", value);
|
dev_dbg(dev->dev, "AFE_CTRL_C2HH_SRC_CTRL=0x%x\n", value);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
static void cx231xx_dump_SC_reg(struct cx231xx *dev)
|
static void cx231xx_dump_SC_reg(struct cx231xx *dev)
|
||||||
{
|
{
|
||||||
u8 value[4] = { 0, 0, 0, 0 };
|
u8 value[4] = { 0, 0, 0, 0 };
|
||||||
dev_dbg(&dev->udev->dev, "%s!\n", __func__);
|
dev_dbg(dev->dev, "%s!\n", __func__);
|
||||||
|
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, BOARD_CFG_STAT,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, BOARD_CFG_STAT,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", BOARD_CFG_STAT, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", BOARD_CFG_STAT, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, TS_MODE_REG,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, TS_MODE_REG,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", TS_MODE_REG, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", TS_MODE_REG, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, TS1_CFG_REG,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, TS1_CFG_REG,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", TS1_CFG_REG, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", TS1_CFG_REG, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, TS1_LENGTH_REG,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, TS1_LENGTH_REG,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", TS1_LENGTH_REG, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", TS1_LENGTH_REG, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
|
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, TS2_CFG_REG,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, TS2_CFG_REG,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", TS2_CFG_REG, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", TS2_CFG_REG, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, TS2_LENGTH_REG,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, TS2_LENGTH_REG,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", TS2_LENGTH_REG, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", TS2_LENGTH_REG, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, EP_MODE_SET,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, EP_MODE_SET,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", EP_MODE_SET, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", EP_MODE_SET, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_PWR_PTN1,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_PWR_PTN1,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_PWR_PTN1, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_PWR_PTN1, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
|
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_PWR_PTN2,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_PWR_PTN2,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_PWR_PTN2, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_PWR_PTN2, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_PWR_PTN3,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_PWR_PTN3,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_PWR_PTN3, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_PWR_PTN3, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_PWR_MASK0,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_PWR_MASK0,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_PWR_MASK0, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_PWR_MASK0, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_PWR_MASK1,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_PWR_MASK1,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_PWR_MASK1, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_PWR_MASK1, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
|
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_PWR_MASK2,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_PWR_MASK2,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_PWR_MASK2, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_PWR_MASK2, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_GAIN,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_GAIN,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_GAIN, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_GAIN, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_CAR_REG,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_CAR_REG,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_CAR_REG, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_CAR_REG, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_OT_CFG1,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_OT_CFG1,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_OT_CFG1, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_OT_CFG1, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
|
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_OT_CFG2,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, CIR_OT_CFG2,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_OT_CFG2, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", CIR_OT_CFG2, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, PWR_CTL_EN,
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, PWR_CTL_EN,
|
||||||
value, 4);
|
value, 4);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", PWR_CTL_EN, value[0],
|
"reg0x%x=0x%x 0x%x 0x%x 0x%x\n", PWR_CTL_EN, value[0],
|
||||||
value[1], value[2], value[3]);
|
value[1], value[2], value[3]);
|
||||||
}
|
}
|
||||||
@ -1524,7 +1524,7 @@ void cx231xx_set_Colibri_For_LowIF(struct cx231xx *dev, u32 if_freq,
|
|||||||
u32 standard = 0;
|
u32 standard = 0;
|
||||||
u8 value[4] = { 0, 0, 0, 0 };
|
u8 value[4] = { 0, 0, 0, 0 };
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "Enter cx231xx_set_Colibri_For_LowIF()\n");
|
dev_dbg(dev->dev, "Enter cx231xx_set_Colibri_For_LowIF()\n");
|
||||||
value[0] = (u8) 0x6F;
|
value[0] = (u8) 0x6F;
|
||||||
value[1] = (u8) 0x6F;
|
value[1] = (u8) 0x6F;
|
||||||
value[2] = (u8) 0x6F;
|
value[2] = (u8) 0x6F;
|
||||||
@ -1544,7 +1544,7 @@ void cx231xx_set_Colibri_For_LowIF(struct cx231xx *dev, u32 if_freq,
|
|||||||
colibri_carrier_offset = cx231xx_Get_Colibri_CarrierOffset(mode,
|
colibri_carrier_offset = cx231xx_Get_Colibri_CarrierOffset(mode,
|
||||||
standard);
|
standard);
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "colibri_carrier_offset=%d, standard=0x%x\n",
|
dev_dbg(dev->dev, "colibri_carrier_offset=%d, standard=0x%x\n",
|
||||||
colibri_carrier_offset, standard);
|
colibri_carrier_offset, standard);
|
||||||
|
|
||||||
/* Set the band Pass filter for DIF*/
|
/* Set the band Pass filter for DIF*/
|
||||||
@ -1578,7 +1578,7 @@ void cx231xx_set_DIF_bandpass(struct cx231xx *dev, u32 if_freq,
|
|||||||
u64 pll_freq_u64 = 0;
|
u64 pll_freq_u64 = 0;
|
||||||
u32 i = 0;
|
u32 i = 0;
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "if_freq=%d;spectral_invert=0x%x;mode=0x%x\n",
|
dev_dbg(dev->dev, "if_freq=%d;spectral_invert=0x%x;mode=0x%x\n",
|
||||||
if_freq, spectral_invert, mode);
|
if_freq, spectral_invert, mode);
|
||||||
|
|
||||||
|
|
||||||
@ -1622,7 +1622,7 @@ void cx231xx_set_DIF_bandpass(struct cx231xx *dev, u32 if_freq,
|
|||||||
if_freq = 16000000;
|
if_freq = 16000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "Enter IF=%zu\n", ARRAY_SIZE(Dif_set_array));
|
dev_dbg(dev->dev, "Enter IF=%zu\n", ARRAY_SIZE(Dif_set_array));
|
||||||
for (i = 0; i < ARRAY_SIZE(Dif_set_array); i++) {
|
for (i = 0; i < ARRAY_SIZE(Dif_set_array); i++) {
|
||||||
if (Dif_set_array[i].if_freq == if_freq) {
|
if (Dif_set_array[i].if_freq == if_freq) {
|
||||||
vid_blk_write_word(dev,
|
vid_blk_write_word(dev,
|
||||||
@ -1734,7 +1734,7 @@ int cx231xx_dif_set_standard(struct cx231xx *dev, u32 standard)
|
|||||||
u32 dif_misc_ctrl_value = 0;
|
u32 dif_misc_ctrl_value = 0;
|
||||||
u32 func_mode = 0;
|
u32 func_mode = 0;
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "%s: setStandard to %x\n", __func__, standard);
|
dev_dbg(dev->dev, "%s: setStandard to %x\n", __func__, standard);
|
||||||
|
|
||||||
status = vid_blk_read_word(dev, DIF_MISC_CTRL, &dif_misc_ctrl_value);
|
status = vid_blk_read_word(dev, DIF_MISC_CTRL, &dif_misc_ctrl_value);
|
||||||
if (standard != DIF_USE_BASEBAND)
|
if (standard != DIF_USE_BASEBAND)
|
||||||
@ -2137,7 +2137,7 @@ int cx231xx_tuner_post_channel_change(struct cx231xx *dev)
|
|||||||
{
|
{
|
||||||
int status = 0;
|
int status = 0;
|
||||||
u32 dwval;
|
u32 dwval;
|
||||||
dev_dbg(&dev->udev->dev, "%s: dev->tuner_type =0%d\n",
|
dev_dbg(dev->dev, "%s: dev->tuner_type =0%d\n",
|
||||||
__func__, dev->tuner_type);
|
__func__, dev->tuner_type);
|
||||||
/* Set the RF and IF k_agc values to 4 for PAL/NTSC and 8 for
|
/* Set the RF and IF k_agc values to 4 for PAL/NTSC and 8 for
|
||||||
* SECAM L/B/D standards */
|
* SECAM L/B/D standards */
|
||||||
@ -2239,7 +2239,7 @@ int cx231xx_set_power_mode(struct cx231xx *dev, enum AV_MODE mode)
|
|||||||
if (dev->power_mode != mode)
|
if (dev->power_mode != mode)
|
||||||
dev->power_mode = mode;
|
dev->power_mode = mode;
|
||||||
else {
|
else {
|
||||||
dev_dbg(&dev->udev->dev, "%s: mode = %d, No Change req.\n",
|
dev_dbg(dev->dev, "%s: mode = %d, No Change req.\n",
|
||||||
__func__, mode);
|
__func__, mode);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -2479,7 +2479,7 @@ int cx231xx_start_stream(struct cx231xx *dev, u32 ep_mask)
|
|||||||
u32 tmp = 0;
|
u32 tmp = 0;
|
||||||
int status = 0;
|
int status = 0;
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "%s: ep_mask = %x\n", __func__, ep_mask);
|
dev_dbg(dev->dev, "%s: ep_mask = %x\n", __func__, ep_mask);
|
||||||
status = cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, EP_MODE_SET,
|
status = cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, EP_MODE_SET,
|
||||||
value, 4);
|
value, 4);
|
||||||
if (status < 0)
|
if (status < 0)
|
||||||
@ -2504,7 +2504,7 @@ int cx231xx_stop_stream(struct cx231xx *dev, u32 ep_mask)
|
|||||||
u32 tmp = 0;
|
u32 tmp = 0;
|
||||||
int status = 0;
|
int status = 0;
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "%s: ep_mask = %x\n", __func__, ep_mask);
|
dev_dbg(dev->dev, "%s: ep_mask = %x\n", __func__, ep_mask);
|
||||||
status =
|
status =
|
||||||
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, EP_MODE_SET, value, 4);
|
cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, EP_MODE_SET, value, 4);
|
||||||
if (status < 0)
|
if (status < 0)
|
||||||
@ -2532,37 +2532,37 @@ int cx231xx_initialize_stream_xfer(struct cx231xx *dev, u32 media_type)
|
|||||||
if (dev->udev->speed == USB_SPEED_HIGH) {
|
if (dev->udev->speed == USB_SPEED_HIGH) {
|
||||||
switch (media_type) {
|
switch (media_type) {
|
||||||
case Audio:
|
case Audio:
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"%s: Audio enter HANC\n", __func__);
|
"%s: Audio enter HANC\n", __func__);
|
||||||
status =
|
status =
|
||||||
cx231xx_mode_register(dev, TS_MODE_REG, 0x9300);
|
cx231xx_mode_register(dev, TS_MODE_REG, 0x9300);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Vbi:
|
case Vbi:
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"%s: set vanc registers\n", __func__);
|
"%s: set vanc registers\n", __func__);
|
||||||
status = cx231xx_mode_register(dev, TS_MODE_REG, 0x300);
|
status = cx231xx_mode_register(dev, TS_MODE_REG, 0x300);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Sliced_cc:
|
case Sliced_cc:
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"%s: set hanc registers\n", __func__);
|
"%s: set hanc registers\n", __func__);
|
||||||
status =
|
status =
|
||||||
cx231xx_mode_register(dev, TS_MODE_REG, 0x1300);
|
cx231xx_mode_register(dev, TS_MODE_REG, 0x1300);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Raw_Video:
|
case Raw_Video:
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"%s: set video registers\n", __func__);
|
"%s: set video registers\n", __func__);
|
||||||
status = cx231xx_mode_register(dev, TS_MODE_REG, 0x100);
|
status = cx231xx_mode_register(dev, TS_MODE_REG, 0x100);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TS1_serial_mode:
|
case TS1_serial_mode:
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"%s: set ts1 registers", __func__);
|
"%s: set ts1 registers", __func__);
|
||||||
|
|
||||||
if (dev->board.has_417) {
|
if (dev->board.has_417) {
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"%s: MPEG\n", __func__);
|
"%s: MPEG\n", __func__);
|
||||||
value &= 0xFFFFFFFC;
|
value &= 0xFFFFFFFC;
|
||||||
value |= 0x3;
|
value |= 0x3;
|
||||||
@ -2586,7 +2586,7 @@ int cx231xx_initialize_stream_xfer(struct cx231xx *dev, u32 media_type)
|
|||||||
VRT_SET_REGISTER,
|
VRT_SET_REGISTER,
|
||||||
TS1_LENGTH_REG, val, 4);
|
TS1_LENGTH_REG, val, 4);
|
||||||
} else {
|
} else {
|
||||||
dev_dbg(&dev->udev->dev, "%s: BDA\n", __func__);
|
dev_dbg(dev->dev, "%s: BDA\n", __func__);
|
||||||
status = cx231xx_mode_register(dev,
|
status = cx231xx_mode_register(dev,
|
||||||
TS_MODE_REG, 0x101);
|
TS_MODE_REG, 0x101);
|
||||||
status = cx231xx_mode_register(dev,
|
status = cx231xx_mode_register(dev,
|
||||||
@ -2595,7 +2595,7 @@ int cx231xx_initialize_stream_xfer(struct cx231xx *dev, u32 media_type)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case TS1_parallel_mode:
|
case TS1_parallel_mode:
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"%s: set ts1 parallel mode registers\n",
|
"%s: set ts1 parallel mode registers\n",
|
||||||
__func__);
|
__func__);
|
||||||
status = cx231xx_mode_register(dev, TS_MODE_REG, 0x100);
|
status = cx231xx_mode_register(dev, TS_MODE_REG, 0x100);
|
||||||
@ -2950,7 +2950,7 @@ int cx231xx_gpio_i2c_read_ack(struct cx231xx *dev)
|
|||||||
(nCnt > 0));
|
(nCnt > 0));
|
||||||
|
|
||||||
if (nCnt == 0)
|
if (nCnt == 0)
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"No ACK after %d msec -GPIO I2C failed!",
|
"No ACK after %d msec -GPIO I2C failed!",
|
||||||
nInit * 10);
|
nInit * 10);
|
||||||
|
|
||||||
|
@ -855,7 +855,7 @@ int cx231xx_tuner_callback(void *ptr, int component, int command, int arg)
|
|||||||
|
|
||||||
if (dev->tuner_type == TUNER_XC5000) {
|
if (dev->tuner_type == TUNER_XC5000) {
|
||||||
if (command == XC5000_TUNER_RESET) {
|
if (command == XC5000_TUNER_RESET) {
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"Tuner CB: RESET: cmd %d : tuner type %d\n",
|
"Tuner CB: RESET: cmd %d : tuner type %d\n",
|
||||||
command, dev->tuner_type);
|
command, dev->tuner_type);
|
||||||
cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit,
|
cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit,
|
||||||
@ -915,7 +915,7 @@ void cx231xx_pre_card_setup(struct cx231xx *dev)
|
|||||||
|
|
||||||
cx231xx_set_model(dev);
|
cx231xx_set_model(dev);
|
||||||
|
|
||||||
dev_info(&dev->udev->dev, "Identified as %s (card=%d)\n",
|
dev_info(dev->dev, "Identified as %s (card=%d)\n",
|
||||||
dev->board.name, dev->model);
|
dev->board.name, dev->model);
|
||||||
|
|
||||||
/* set the direction for GPIO pins */
|
/* set the direction for GPIO pins */
|
||||||
@ -989,7 +989,7 @@ static int read_eeprom(struct cx231xx *dev, struct i2c_client *client,
|
|||||||
/* start reading at offset 0 */
|
/* start reading at offset 0 */
|
||||||
ret = i2c_transfer(client->adapter, &msg_write, 1);
|
ret = i2c_transfer(client->adapter, &msg_write, 1);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(&dev->udev->dev, "Can't read eeprom\n");
|
dev_err(dev->dev, "Can't read eeprom\n");
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -999,7 +999,7 @@ static int read_eeprom(struct cx231xx *dev, struct i2c_client *client,
|
|||||||
|
|
||||||
ret = i2c_transfer(client->adapter, &msg_read, 1);
|
ret = i2c_transfer(client->adapter, &msg_read, 1);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(&dev->udev->dev, "Can't read eeprom\n");
|
dev_err(dev->dev, "Can't read eeprom\n");
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
eedata_cur += msg_read.len;
|
eedata_cur += msg_read.len;
|
||||||
@ -1007,7 +1007,7 @@ static int read_eeprom(struct cx231xx *dev, struct i2c_client *client,
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i + 15 < len; i += 16)
|
for (i = 0; i + 15 < len; i += 16)
|
||||||
dev_dbg(&dev->udev->dev, "i2c eeprom %02x: %*ph\n",
|
dev_dbg(dev->dev, "i2c eeprom %02x: %*ph\n",
|
||||||
i, 16, &eedata[i]);
|
i, 16, &eedata[i]);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -1028,7 +1028,7 @@ void cx231xx_card_setup(struct cx231xx *dev)
|
|||||||
cx231xx_get_i2c_adap(dev, I2C_0),
|
cx231xx_get_i2c_adap(dev, I2C_0),
|
||||||
"cx25840", 0x88 >> 1, NULL);
|
"cx25840", 0x88 >> 1, NULL);
|
||||||
if (dev->sd_cx25840 == NULL)
|
if (dev->sd_cx25840 == NULL)
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"cx25840 subdev registration failure\n");
|
"cx25840 subdev registration failure\n");
|
||||||
cx25840_call(dev, core, load_fw);
|
cx25840_call(dev, core, load_fw);
|
||||||
|
|
||||||
@ -1043,7 +1043,7 @@ void cx231xx_card_setup(struct cx231xx *dev)
|
|||||||
"tuner",
|
"tuner",
|
||||||
dev->tuner_addr, NULL);
|
dev->tuner_addr, NULL);
|
||||||
if (dev->sd_tuner == NULL)
|
if (dev->sd_tuner == NULL)
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"tuner subdev registration failure\n");
|
"tuner subdev registration failure\n");
|
||||||
else
|
else
|
||||||
cx231xx_config_tuner(dev);
|
cx231xx_config_tuner(dev);
|
||||||
@ -1150,7 +1150,7 @@ static int cx231xx_init_dev(struct cx231xx *dev, struct usb_device *udev,
|
|||||||
/* Query cx231xx to find what pcb config it is related to */
|
/* Query cx231xx to find what pcb config it is related to */
|
||||||
retval = initialize_cx231xx(dev);
|
retval = initialize_cx231xx(dev);
|
||||||
if (retval < 0) {
|
if (retval < 0) {
|
||||||
dev_err(&udev->dev, "Failed to read PCB config\n");
|
dev_err(dev->dev, "Failed to read PCB config\n");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1166,7 +1166,7 @@ static int cx231xx_init_dev(struct cx231xx *dev, struct usb_device *udev,
|
|||||||
|
|
||||||
retval = cx231xx_config(dev);
|
retval = cx231xx_config(dev);
|
||||||
if (retval) {
|
if (retval) {
|
||||||
dev_err(&udev->dev, "error configuring device\n");
|
dev_err(dev->dev, "error configuring device\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1176,7 +1176,7 @@ static int cx231xx_init_dev(struct cx231xx *dev, struct usb_device *udev,
|
|||||||
/* register i2c bus */
|
/* register i2c bus */
|
||||||
retval = cx231xx_dev_init(dev);
|
retval = cx231xx_dev_init(dev);
|
||||||
if (retval) {
|
if (retval) {
|
||||||
dev_err(&udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: cx231xx_i2c_register - errCode [%d]!\n",
|
"%s: cx231xx_i2c_register - errCode [%d]!\n",
|
||||||
__func__, retval);
|
__func__, retval);
|
||||||
goto err_dev_init;
|
goto err_dev_init;
|
||||||
@ -1199,8 +1199,8 @@ static int cx231xx_init_dev(struct cx231xx *dev, struct usb_device *udev,
|
|||||||
|
|
||||||
retval = cx231xx_config(dev);
|
retval = cx231xx_config(dev);
|
||||||
if (retval) {
|
if (retval) {
|
||||||
dev_err(&udev->dev, "%s: cx231xx_config - errCode [%d]!\n",
|
dev_err(dev->dev, "%s: cx231xx_config - errCode [%d]!\n",
|
||||||
__func__, retval);
|
__func__, retval);
|
||||||
goto err_dev_init;
|
goto err_dev_init;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1216,9 +1216,9 @@ static int cx231xx_init_dev(struct cx231xx *dev, struct usb_device *udev,
|
|||||||
cx231xx_add_into_devlist(dev);
|
cx231xx_add_into_devlist(dev);
|
||||||
|
|
||||||
if (dev->board.has_417) {
|
if (dev->board.has_417) {
|
||||||
dev_info(&udev->dev, "attach 417 %d\n", dev->model);
|
dev_info(dev->dev, "attach 417 %d\n", dev->model);
|
||||||
if (cx231xx_417_register(dev) < 0) {
|
if (cx231xx_417_register(dev) < 0) {
|
||||||
dev_err(&udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s() Failed to register 417 on VID_B\n",
|
"%s() Failed to register 417 on VID_B\n",
|
||||||
__func__);
|
__func__);
|
||||||
}
|
}
|
||||||
@ -1284,7 +1284,7 @@ static int cx231xx_init_v4l2(struct cx231xx *dev,
|
|||||||
/* compute alternate max packet sizes for video */
|
/* compute alternate max packet sizes for video */
|
||||||
idx = dev->current_pcb_config.hs_config_info[0].interface_info.video_index + 1;
|
idx = dev->current_pcb_config.hs_config_info[0].interface_info.video_index + 1;
|
||||||
if (idx >= dev->max_iad_interface_count) {
|
if (idx >= dev->max_iad_interface_count) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"Video PCB interface #%d doesn't exist\n", idx);
|
"Video PCB interface #%d doesn't exist\n", idx);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
@ -1294,7 +1294,7 @@ static int cx231xx_init_v4l2(struct cx231xx *dev,
|
|||||||
dev->video_mode.end_point_addr = uif->altsetting[0].endpoint[isoc_pipe].desc.bEndpointAddress;
|
dev->video_mode.end_point_addr = uif->altsetting[0].endpoint[isoc_pipe].desc.bEndpointAddress;
|
||||||
dev->video_mode.num_alt = uif->num_altsetting;
|
dev->video_mode.num_alt = uif->num_altsetting;
|
||||||
|
|
||||||
dev_info(&dev->udev->dev,
|
dev_info(dev->dev,
|
||||||
"video EndPoint Addr 0x%x, Alternate settings: %i\n",
|
"video EndPoint Addr 0x%x, Alternate settings: %i\n",
|
||||||
dev->video_mode.end_point_addr,
|
dev->video_mode.end_point_addr,
|
||||||
dev->video_mode.num_alt);
|
dev->video_mode.num_alt);
|
||||||
@ -1306,7 +1306,7 @@ static int cx231xx_init_v4l2(struct cx231xx *dev,
|
|||||||
for (i = 0; i < dev->video_mode.num_alt; i++) {
|
for (i = 0; i < dev->video_mode.num_alt; i++) {
|
||||||
u16 tmp = le16_to_cpu(uif->altsetting[i].endpoint[isoc_pipe].desc.wMaxPacketSize);
|
u16 tmp = le16_to_cpu(uif->altsetting[i].endpoint[isoc_pipe].desc.wMaxPacketSize);
|
||||||
dev->video_mode.alt_max_pkt_size[i] = (tmp & 0x07ff) * (((tmp & 0x1800) >> 11) + 1);
|
dev->video_mode.alt_max_pkt_size[i] = (tmp & 0x07ff) * (((tmp & 0x1800) >> 11) + 1);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"Alternate setting %i, max size= %i\n", i,
|
"Alternate setting %i, max size= %i\n", i,
|
||||||
dev->video_mode.alt_max_pkt_size[i]);
|
dev->video_mode.alt_max_pkt_size[i]);
|
||||||
}
|
}
|
||||||
@ -1315,7 +1315,7 @@ static int cx231xx_init_v4l2(struct cx231xx *dev,
|
|||||||
|
|
||||||
idx = dev->current_pcb_config.hs_config_info[0].interface_info.vanc_index + 1;
|
idx = dev->current_pcb_config.hs_config_info[0].interface_info.vanc_index + 1;
|
||||||
if (idx >= dev->max_iad_interface_count) {
|
if (idx >= dev->max_iad_interface_count) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"VBI PCB interface #%d doesn't exist\n", idx);
|
"VBI PCB interface #%d doesn't exist\n", idx);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
@ -1326,7 +1326,7 @@ static int cx231xx_init_v4l2(struct cx231xx *dev,
|
|||||||
bEndpointAddress;
|
bEndpointAddress;
|
||||||
|
|
||||||
dev->vbi_mode.num_alt = uif->num_altsetting;
|
dev->vbi_mode.num_alt = uif->num_altsetting;
|
||||||
dev_info(&dev->udev->dev,
|
dev_info(dev->dev,
|
||||||
"VBI EndPoint Addr 0x%x, Alternate settings: %i\n",
|
"VBI EndPoint Addr 0x%x, Alternate settings: %i\n",
|
||||||
dev->vbi_mode.end_point_addr,
|
dev->vbi_mode.end_point_addr,
|
||||||
dev->vbi_mode.num_alt);
|
dev->vbi_mode.num_alt);
|
||||||
@ -1342,7 +1342,7 @@ static int cx231xx_init_v4l2(struct cx231xx *dev,
|
|||||||
desc.wMaxPacketSize);
|
desc.wMaxPacketSize);
|
||||||
dev->vbi_mode.alt_max_pkt_size[i] =
|
dev->vbi_mode.alt_max_pkt_size[i] =
|
||||||
(tmp & 0x07ff) * (((tmp & 0x1800) >> 11) + 1);
|
(tmp & 0x07ff) * (((tmp & 0x1800) >> 11) + 1);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"Alternate setting %i, max size= %i\n", i,
|
"Alternate setting %i, max size= %i\n", i,
|
||||||
dev->vbi_mode.alt_max_pkt_size[i]);
|
dev->vbi_mode.alt_max_pkt_size[i]);
|
||||||
}
|
}
|
||||||
@ -1352,7 +1352,7 @@ static int cx231xx_init_v4l2(struct cx231xx *dev,
|
|||||||
/* compute alternate max packet sizes for sliced CC */
|
/* compute alternate max packet sizes for sliced CC */
|
||||||
idx = dev->current_pcb_config.hs_config_info[0].interface_info.hanc_index + 1;
|
idx = dev->current_pcb_config.hs_config_info[0].interface_info.hanc_index + 1;
|
||||||
if (idx >= dev->max_iad_interface_count) {
|
if (idx >= dev->max_iad_interface_count) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"Sliced CC PCB interface #%d doesn't exist\n", idx);
|
"Sliced CC PCB interface #%d doesn't exist\n", idx);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
@ -1363,7 +1363,7 @@ static int cx231xx_init_v4l2(struct cx231xx *dev,
|
|||||||
bEndpointAddress;
|
bEndpointAddress;
|
||||||
|
|
||||||
dev->sliced_cc_mode.num_alt = uif->num_altsetting;
|
dev->sliced_cc_mode.num_alt = uif->num_altsetting;
|
||||||
dev_info(&dev->udev->dev,
|
dev_info(dev->dev,
|
||||||
"sliced CC EndPoint Addr 0x%x, Alternate settings: %i\n",
|
"sliced CC EndPoint Addr 0x%x, Alternate settings: %i\n",
|
||||||
dev->sliced_cc_mode.end_point_addr,
|
dev->sliced_cc_mode.end_point_addr,
|
||||||
dev->sliced_cc_mode.num_alt);
|
dev->sliced_cc_mode.num_alt);
|
||||||
@ -1376,7 +1376,7 @@ static int cx231xx_init_v4l2(struct cx231xx *dev,
|
|||||||
desc.wMaxPacketSize);
|
desc.wMaxPacketSize);
|
||||||
dev->sliced_cc_mode.alt_max_pkt_size[i] =
|
dev->sliced_cc_mode.alt_max_pkt_size[i] =
|
||||||
(tmp & 0x07ff) * (((tmp & 0x1800) >> 11) + 1);
|
(tmp & 0x07ff) * (((tmp & 0x1800) >> 11) + 1);
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"Alternate setting %i, max size= %i\n", i,
|
"Alternate setting %i, max size= %i\n", i,
|
||||||
dev->sliced_cc_mode.alt_max_pkt_size[i]);
|
dev->sliced_cc_mode.alt_max_pkt_size[i]);
|
||||||
}
|
}
|
||||||
@ -1392,6 +1392,7 @@ static int cx231xx_usb_probe(struct usb_interface *interface,
|
|||||||
const struct usb_device_id *id)
|
const struct usb_device_id *id)
|
||||||
{
|
{
|
||||||
struct usb_device *udev;
|
struct usb_device *udev;
|
||||||
|
struct device *d = &interface->dev;
|
||||||
struct usb_interface *uif;
|
struct usb_interface *uif;
|
||||||
struct cx231xx *dev = NULL;
|
struct cx231xx *dev = NULL;
|
||||||
int retval = -ENODEV;
|
int retval = -ENODEV;
|
||||||
@ -1416,7 +1417,7 @@ static int cx231xx_usb_probe(struct usb_interface *interface,
|
|||||||
nr = find_first_zero_bit(&cx231xx_devused, CX231XX_MAXBOARDS);
|
nr = find_first_zero_bit(&cx231xx_devused, CX231XX_MAXBOARDS);
|
||||||
if (nr >= CX231XX_MAXBOARDS) {
|
if (nr >= CX231XX_MAXBOARDS) {
|
||||||
/* No free device slots */
|
/* No free device slots */
|
||||||
dev_err(&udev->dev,
|
dev_err(d,
|
||||||
"Supports only %i devices.\n",
|
"Supports only %i devices.\n",
|
||||||
CX231XX_MAXBOARDS);
|
CX231XX_MAXBOARDS);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
@ -1434,6 +1435,7 @@ static int cx231xx_usb_probe(struct usb_interface *interface,
|
|||||||
dev->devno = nr;
|
dev->devno = nr;
|
||||||
dev->model = id->driver_info;
|
dev->model = id->driver_info;
|
||||||
dev->video_mode.alt = -1;
|
dev->video_mode.alt = -1;
|
||||||
|
dev->dev = d;
|
||||||
|
|
||||||
dev->interface_count++;
|
dev->interface_count++;
|
||||||
/* reset gpio dir and value */
|
/* reset gpio dir and value */
|
||||||
@ -1472,7 +1474,7 @@ static int cx231xx_usb_probe(struct usb_interface *interface,
|
|||||||
speed = "unknown";
|
speed = "unknown";
|
||||||
}
|
}
|
||||||
|
|
||||||
dev_info(&udev->dev,
|
dev_info(d,
|
||||||
"New device %s %s @ %s Mbps (%04x:%04x) with %d interfaces\n",
|
"New device %s %s @ %s Mbps (%04x:%04x) with %d interfaces\n",
|
||||||
udev->manufacturer ? udev->manufacturer : "",
|
udev->manufacturer ? udev->manufacturer : "",
|
||||||
udev->product ? udev->product : "",
|
udev->product ? udev->product : "",
|
||||||
@ -1489,12 +1491,12 @@ static int cx231xx_usb_probe(struct usb_interface *interface,
|
|||||||
|
|
||||||
assoc_desc = udev->actconfig->intf_assoc[0];
|
assoc_desc = udev->actconfig->intf_assoc[0];
|
||||||
if (assoc_desc->bFirstInterface != ifnum) {
|
if (assoc_desc->bFirstInterface != ifnum) {
|
||||||
dev_err(&udev->dev, "Not found matching IAD interface\n");
|
dev_err(d, "Not found matching IAD interface\n");
|
||||||
retval = -ENODEV;
|
retval = -ENODEV;
|
||||||
goto err_if;
|
goto err_if;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev_dbg(&udev->dev, "registering interface %d\n", ifnum);
|
dev_dbg(d, "registering interface %d\n", ifnum);
|
||||||
|
|
||||||
/* save our data pointer in this interface device */
|
/* save our data pointer in this interface device */
|
||||||
usb_set_intfdata(interface, dev);
|
usb_set_intfdata(interface, dev);
|
||||||
@ -1502,7 +1504,7 @@ static int cx231xx_usb_probe(struct usb_interface *interface,
|
|||||||
/* Create v4l2 device */
|
/* Create v4l2 device */
|
||||||
retval = v4l2_device_register(&interface->dev, &dev->v4l2_dev);
|
retval = v4l2_device_register(&interface->dev, &dev->v4l2_dev);
|
||||||
if (retval) {
|
if (retval) {
|
||||||
dev_err(&udev->dev, "v4l2_device_register failed\n");
|
dev_err(d, "v4l2_device_register failed\n");
|
||||||
goto err_v4l2;
|
goto err_v4l2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1519,8 +1521,8 @@ static int cx231xx_usb_probe(struct usb_interface *interface,
|
|||||||
/* compute alternate max packet sizes for TS1 */
|
/* compute alternate max packet sizes for TS1 */
|
||||||
idx = dev->current_pcb_config.hs_config_info[0].interface_info.ts1_index + 1;
|
idx = dev->current_pcb_config.hs_config_info[0].interface_info.ts1_index + 1;
|
||||||
if (idx >= dev->max_iad_interface_count) {
|
if (idx >= dev->max_iad_interface_count) {
|
||||||
dev_err(&udev->dev,
|
dev_err(d, "TS1 PCB interface #%d doesn't exist\n",
|
||||||
"TS1 PCB interface #%d doesn't exist\n", idx);
|
idx);
|
||||||
retval = -ENODEV;
|
retval = -ENODEV;
|
||||||
goto err_video_alt;
|
goto err_video_alt;
|
||||||
}
|
}
|
||||||
@ -1531,7 +1533,7 @@ static int cx231xx_usb_probe(struct usb_interface *interface,
|
|||||||
desc.bEndpointAddress;
|
desc.bEndpointAddress;
|
||||||
|
|
||||||
dev->ts1_mode.num_alt = uif->num_altsetting;
|
dev->ts1_mode.num_alt = uif->num_altsetting;
|
||||||
dev_info(&udev->dev,
|
dev_info(d,
|
||||||
"TS EndPoint Addr 0x%x, Alternate settings: %i\n",
|
"TS EndPoint Addr 0x%x, Alternate settings: %i\n",
|
||||||
dev->ts1_mode.end_point_addr,
|
dev->ts1_mode.end_point_addr,
|
||||||
dev->ts1_mode.num_alt);
|
dev->ts1_mode.num_alt);
|
||||||
@ -1548,9 +1550,8 @@ static int cx231xx_usb_probe(struct usb_interface *interface,
|
|||||||
wMaxPacketSize);
|
wMaxPacketSize);
|
||||||
dev->ts1_mode.alt_max_pkt_size[i] =
|
dev->ts1_mode.alt_max_pkt_size[i] =
|
||||||
(tmp & 0x07ff) * (((tmp & 0x1800) >> 11) + 1);
|
(tmp & 0x07ff) * (((tmp & 0x1800) >> 11) + 1);
|
||||||
dev_dbg(&udev->dev,
|
dev_dbg(d, "Alternate setting %i, max size= %i\n",
|
||||||
"Alternate setting %i, max size= %i\n", i,
|
i, dev->ts1_mode.alt_max_pkt_size[i]);
|
||||||
dev->ts1_mode.alt_max_pkt_size[i]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1614,7 +1615,7 @@ static void cx231xx_usb_disconnect(struct usb_interface *interface)
|
|||||||
wake_up_interruptible_all(&dev->open);
|
wake_up_interruptible_all(&dev->open);
|
||||||
|
|
||||||
if (dev->users) {
|
if (dev->users) {
|
||||||
dev_warn(&dev->udev->dev,
|
dev_warn(dev->dev,
|
||||||
"device %s is open! Deregistration and memory deallocation are deferred on close.\n",
|
"device %s is open! Deregistration and memory deallocation are deferred on close.\n",
|
||||||
video_device_node_name(dev->vdev));
|
video_device_node_name(dev->vdev));
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ int cx231xx_register_extension(struct cx231xx_ops *ops)
|
|||||||
list_add_tail(&ops->next, &cx231xx_extension_devlist);
|
list_add_tail(&ops->next, &cx231xx_extension_devlist);
|
||||||
list_for_each_entry(dev, &cx231xx_devlist, devlist) {
|
list_for_each_entry(dev, &cx231xx_devlist, devlist) {
|
||||||
ops->init(dev);
|
ops->init(dev);
|
||||||
dev_info(&dev->udev->dev, "%s initialized\n", ops->name);
|
dev_info(dev->dev, "%s initialized\n", ops->name);
|
||||||
}
|
}
|
||||||
mutex_unlock(&cx231xx_devlist_mutex);
|
mutex_unlock(&cx231xx_devlist_mutex);
|
||||||
return 0;
|
return 0;
|
||||||
@ -114,7 +114,7 @@ void cx231xx_unregister_extension(struct cx231xx_ops *ops)
|
|||||||
mutex_lock(&cx231xx_devlist_mutex);
|
mutex_lock(&cx231xx_devlist_mutex);
|
||||||
list_for_each_entry(dev, &cx231xx_devlist, devlist) {
|
list_for_each_entry(dev, &cx231xx_devlist, devlist) {
|
||||||
ops->fini(dev);
|
ops->fini(dev);
|
||||||
dev_info(&dev->udev->dev, "%s removed\n", ops->name);
|
dev_info(dev->dev, "%s removed\n", ops->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
list_del(&ops->next);
|
list_del(&ops->next);
|
||||||
@ -227,7 +227,7 @@ int cx231xx_send_usb_command(struct cx231xx_i2c *i2c_bus,
|
|||||||
/* call common vendor command request */
|
/* call common vendor command request */
|
||||||
status = cx231xx_send_vendor_cmd(dev, &ven_req);
|
status = cx231xx_send_vendor_cmd(dev, &ven_req);
|
||||||
if (status < 0 && !dev->i2c_scan_running) {
|
if (status < 0 && !dev->i2c_scan_running) {
|
||||||
dev_err(&dev->udev->dev, "%s: failed with status -%d\n",
|
dev_err(dev->dev, "%s: failed with status -%d\n",
|
||||||
__func__, status);
|
__func__, status);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -522,7 +522,7 @@ int cx231xx_set_video_alternate(struct cx231xx *dev)
|
|||||||
usb_set_interface(dev->udev, usb_interface_index,
|
usb_set_interface(dev->udev, usb_interface_index,
|
||||||
dev->video_mode.alt);
|
dev->video_mode.alt);
|
||||||
if (errCode < 0) {
|
if (errCode < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"cannot change alt number to %d (error=%i)\n",
|
"cannot change alt number to %d (error=%i)\n",
|
||||||
dev->video_mode.alt, errCode);
|
dev->video_mode.alt, errCode);
|
||||||
return errCode;
|
return errCode;
|
||||||
@ -598,7 +598,7 @@ int cx231xx_set_alt_setting(struct cx231xx *dev, u8 index, u8 alt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (alt > 0 && max_pkt_size == 0) {
|
if (alt > 0 && max_pkt_size == 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"can't change interface %d alt no. to %d: Max. Pkt size = 0\n",
|
"can't change interface %d alt no. to %d: Max. Pkt size = 0\n",
|
||||||
usb_interface_index, alt);
|
usb_interface_index, alt);
|
||||||
/*To workaround error number=-71 on EP0 for videograbber,
|
/*To workaround error number=-71 on EP0 for videograbber,
|
||||||
@ -614,7 +614,7 @@ int cx231xx_set_alt_setting(struct cx231xx *dev, u8 index, u8 alt)
|
|||||||
if (usb_interface_index > 0) {
|
if (usb_interface_index > 0) {
|
||||||
status = usb_set_interface(dev->udev, usb_interface_index, alt);
|
status = usb_set_interface(dev->udev, usb_interface_index, alt);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"can't change interface %d alt no. to %d (err=%i)\n",
|
"can't change interface %d alt no. to %d (err=%i)\n",
|
||||||
usb_interface_index, alt, status);
|
usb_interface_index, alt, status);
|
||||||
return status;
|
return status;
|
||||||
@ -773,7 +773,7 @@ int cx231xx_ep5_bulkout(struct cx231xx *dev, u8 *firmware, u16 size)
|
|||||||
buffer, 4096, &actlen, 2000);
|
buffer, 4096, &actlen, 2000);
|
||||||
|
|
||||||
if (ret)
|
if (ret)
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"bulk message failed: %d (%d/%d)", ret,
|
"bulk message failed: %d (%d/%d)", ret,
|
||||||
size, actlen);
|
size, actlen);
|
||||||
else {
|
else {
|
||||||
@ -1011,7 +1011,7 @@ int cx231xx_init_isoc(struct cx231xx *dev, int max_packets,
|
|||||||
dev->video_mode.isoc_ctl.urb =
|
dev->video_mode.isoc_ctl.urb =
|
||||||
kzalloc(sizeof(void *) * num_bufs, GFP_KERNEL);
|
kzalloc(sizeof(void *) * num_bufs, GFP_KERNEL);
|
||||||
if (!dev->video_mode.isoc_ctl.urb) {
|
if (!dev->video_mode.isoc_ctl.urb) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"cannot alloc memory for usb buffers\n");
|
"cannot alloc memory for usb buffers\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
@ -1019,7 +1019,7 @@ int cx231xx_init_isoc(struct cx231xx *dev, int max_packets,
|
|||||||
dev->video_mode.isoc_ctl.transfer_buffer =
|
dev->video_mode.isoc_ctl.transfer_buffer =
|
||||||
kzalloc(sizeof(void *) * num_bufs, GFP_KERNEL);
|
kzalloc(sizeof(void *) * num_bufs, GFP_KERNEL);
|
||||||
if (!dev->video_mode.isoc_ctl.transfer_buffer) {
|
if (!dev->video_mode.isoc_ctl.transfer_buffer) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"cannot allocate memory for usbtransfer\n");
|
"cannot allocate memory for usbtransfer\n");
|
||||||
kfree(dev->video_mode.isoc_ctl.urb);
|
kfree(dev->video_mode.isoc_ctl.urb);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
@ -1040,7 +1040,7 @@ int cx231xx_init_isoc(struct cx231xx *dev, int max_packets,
|
|||||||
for (i = 0; i < dev->video_mode.isoc_ctl.num_bufs; i++) {
|
for (i = 0; i < dev->video_mode.isoc_ctl.num_bufs; i++) {
|
||||||
urb = usb_alloc_urb(max_packets, GFP_KERNEL);
|
urb = usb_alloc_urb(max_packets, GFP_KERNEL);
|
||||||
if (!urb) {
|
if (!urb) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"cannot alloc isoc_ctl.urb %i\n", i);
|
"cannot alloc isoc_ctl.urb %i\n", i);
|
||||||
cx231xx_uninit_isoc(dev);
|
cx231xx_uninit_isoc(dev);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
@ -1051,7 +1051,7 @@ int cx231xx_init_isoc(struct cx231xx *dev, int max_packets,
|
|||||||
usb_alloc_coherent(dev->udev, sb_size, GFP_KERNEL,
|
usb_alloc_coherent(dev->udev, sb_size, GFP_KERNEL,
|
||||||
&urb->transfer_dma);
|
&urb->transfer_dma);
|
||||||
if (!dev->video_mode.isoc_ctl.transfer_buffer[i]) {
|
if (!dev->video_mode.isoc_ctl.transfer_buffer[i]) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"unable to allocate %i bytes for transfer buffer %i%s\n",
|
"unable to allocate %i bytes for transfer buffer %i%s\n",
|
||||||
sb_size, i,
|
sb_size, i,
|
||||||
in_interrupt() ? " while in int" : "");
|
in_interrupt() ? " while in int" : "");
|
||||||
@ -1086,7 +1086,7 @@ int cx231xx_init_isoc(struct cx231xx *dev, int max_packets,
|
|||||||
rc = usb_submit_urb(dev->video_mode.isoc_ctl.urb[i],
|
rc = usb_submit_urb(dev->video_mode.isoc_ctl.urb[i],
|
||||||
GFP_ATOMIC);
|
GFP_ATOMIC);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"submit of urb %i failed (error=%i)\n", i,
|
"submit of urb %i failed (error=%i)\n", i,
|
||||||
rc);
|
rc);
|
||||||
cx231xx_uninit_isoc(dev);
|
cx231xx_uninit_isoc(dev);
|
||||||
@ -1148,7 +1148,7 @@ int cx231xx_init_bulk(struct cx231xx *dev, int max_packets,
|
|||||||
dev->video_mode.bulk_ctl.urb =
|
dev->video_mode.bulk_ctl.urb =
|
||||||
kzalloc(sizeof(void *) * num_bufs, GFP_KERNEL);
|
kzalloc(sizeof(void *) * num_bufs, GFP_KERNEL);
|
||||||
if (!dev->video_mode.bulk_ctl.urb) {
|
if (!dev->video_mode.bulk_ctl.urb) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"cannot alloc memory for usb buffers\n");
|
"cannot alloc memory for usb buffers\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
@ -1156,7 +1156,7 @@ int cx231xx_init_bulk(struct cx231xx *dev, int max_packets,
|
|||||||
dev->video_mode.bulk_ctl.transfer_buffer =
|
dev->video_mode.bulk_ctl.transfer_buffer =
|
||||||
kzalloc(sizeof(void *) * num_bufs, GFP_KERNEL);
|
kzalloc(sizeof(void *) * num_bufs, GFP_KERNEL);
|
||||||
if (!dev->video_mode.bulk_ctl.transfer_buffer) {
|
if (!dev->video_mode.bulk_ctl.transfer_buffer) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"cannot allocate memory for usbtransfer\n");
|
"cannot allocate memory for usbtransfer\n");
|
||||||
kfree(dev->video_mode.bulk_ctl.urb);
|
kfree(dev->video_mode.bulk_ctl.urb);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
@ -1177,7 +1177,7 @@ int cx231xx_init_bulk(struct cx231xx *dev, int max_packets,
|
|||||||
for (i = 0; i < dev->video_mode.bulk_ctl.num_bufs; i++) {
|
for (i = 0; i < dev->video_mode.bulk_ctl.num_bufs; i++) {
|
||||||
urb = usb_alloc_urb(0, GFP_KERNEL);
|
urb = usb_alloc_urb(0, GFP_KERNEL);
|
||||||
if (!urb) {
|
if (!urb) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"cannot alloc bulk_ctl.urb %i\n", i);
|
"cannot alloc bulk_ctl.urb %i\n", i);
|
||||||
cx231xx_uninit_bulk(dev);
|
cx231xx_uninit_bulk(dev);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
@ -1189,7 +1189,7 @@ int cx231xx_init_bulk(struct cx231xx *dev, int max_packets,
|
|||||||
usb_alloc_coherent(dev->udev, sb_size, GFP_KERNEL,
|
usb_alloc_coherent(dev->udev, sb_size, GFP_KERNEL,
|
||||||
&urb->transfer_dma);
|
&urb->transfer_dma);
|
||||||
if (!dev->video_mode.bulk_ctl.transfer_buffer[i]) {
|
if (!dev->video_mode.bulk_ctl.transfer_buffer[i]) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"unable to allocate %i bytes for transfer buffer %i%s\n",
|
"unable to allocate %i bytes for transfer buffer %i%s\n",
|
||||||
sb_size, i,
|
sb_size, i,
|
||||||
in_interrupt() ? " while in int" : "");
|
in_interrupt() ? " while in int" : "");
|
||||||
@ -1212,7 +1212,7 @@ int cx231xx_init_bulk(struct cx231xx *dev, int max_packets,
|
|||||||
rc = usb_submit_urb(dev->video_mode.bulk_ctl.urb[i],
|
rc = usb_submit_urb(dev->video_mode.bulk_ctl.urb[i],
|
||||||
GFP_ATOMIC);
|
GFP_ATOMIC);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"submit of urb %i failed (error=%i)\n", i, rc);
|
"submit of urb %i failed (error=%i)\n", i, rc);
|
||||||
cx231xx_uninit_bulk(dev);
|
cx231xx_uninit_bulk(dev);
|
||||||
return rc;
|
return rc;
|
||||||
@ -1316,7 +1316,7 @@ int cx231xx_dev_init(struct cx231xx *dev)
|
|||||||
errCode = cx231xx_set_power_mode(dev,
|
errCode = cx231xx_set_power_mode(dev,
|
||||||
POLARIS_AVMODE_ENXTERNAL_AV);
|
POLARIS_AVMODE_ENXTERNAL_AV);
|
||||||
if (errCode < 0) {
|
if (errCode < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: Failed to set Power - errCode [%d]!\n",
|
"%s: Failed to set Power - errCode [%d]!\n",
|
||||||
__func__, errCode);
|
__func__, errCode);
|
||||||
return errCode;
|
return errCode;
|
||||||
@ -1325,7 +1325,7 @@ int cx231xx_dev_init(struct cx231xx *dev)
|
|||||||
errCode = cx231xx_set_power_mode(dev,
|
errCode = cx231xx_set_power_mode(dev,
|
||||||
POLARIS_AVMODE_ANALOGT_TV);
|
POLARIS_AVMODE_ANALOGT_TV);
|
||||||
if (errCode < 0) {
|
if (errCode < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: Failed to set Power - errCode [%d]!\n",
|
"%s: Failed to set Power - errCode [%d]!\n",
|
||||||
__func__, errCode);
|
__func__, errCode);
|
||||||
return errCode;
|
return errCode;
|
||||||
@ -1340,14 +1340,14 @@ int cx231xx_dev_init(struct cx231xx *dev)
|
|||||||
/* initialize Colibri block */
|
/* initialize Colibri block */
|
||||||
errCode = cx231xx_afe_init_super_block(dev, 0x23c);
|
errCode = cx231xx_afe_init_super_block(dev, 0x23c);
|
||||||
if (errCode < 0) {
|
if (errCode < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: cx231xx_afe init super block - errCode [%d]!\n",
|
"%s: cx231xx_afe init super block - errCode [%d]!\n",
|
||||||
__func__, errCode);
|
__func__, errCode);
|
||||||
return errCode;
|
return errCode;
|
||||||
}
|
}
|
||||||
errCode = cx231xx_afe_init_channels(dev);
|
errCode = cx231xx_afe_init_channels(dev);
|
||||||
if (errCode < 0) {
|
if (errCode < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: cx231xx_afe init channels - errCode [%d]!\n",
|
"%s: cx231xx_afe init channels - errCode [%d]!\n",
|
||||||
__func__, errCode);
|
__func__, errCode);
|
||||||
return errCode;
|
return errCode;
|
||||||
@ -1356,7 +1356,7 @@ int cx231xx_dev_init(struct cx231xx *dev)
|
|||||||
/* Set DIF in By pass mode */
|
/* Set DIF in By pass mode */
|
||||||
errCode = cx231xx_dif_set_standard(dev, DIF_USE_BASEBAND);
|
errCode = cx231xx_dif_set_standard(dev, DIF_USE_BASEBAND);
|
||||||
if (errCode < 0) {
|
if (errCode < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: cx231xx_dif set to By pass mode - errCode [%d]!\n",
|
"%s: cx231xx_dif set to By pass mode - errCode [%d]!\n",
|
||||||
__func__, errCode);
|
__func__, errCode);
|
||||||
return errCode;
|
return errCode;
|
||||||
@ -1365,7 +1365,7 @@ int cx231xx_dev_init(struct cx231xx *dev)
|
|||||||
/* I2S block related functions */
|
/* I2S block related functions */
|
||||||
errCode = cx231xx_i2s_blk_initialize(dev);
|
errCode = cx231xx_i2s_blk_initialize(dev);
|
||||||
if (errCode < 0) {
|
if (errCode < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: cx231xx_i2s block initialize - errCode [%d]!\n",
|
"%s: cx231xx_i2s block initialize - errCode [%d]!\n",
|
||||||
__func__, errCode);
|
__func__, errCode);
|
||||||
return errCode;
|
return errCode;
|
||||||
@ -1374,7 +1374,7 @@ int cx231xx_dev_init(struct cx231xx *dev)
|
|||||||
/* init control pins */
|
/* init control pins */
|
||||||
errCode = cx231xx_init_ctrl_pin_status(dev);
|
errCode = cx231xx_init_ctrl_pin_status(dev);
|
||||||
if (errCode < 0) {
|
if (errCode < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: cx231xx_init ctrl pins - errCode [%d]!\n",
|
"%s: cx231xx_init ctrl pins - errCode [%d]!\n",
|
||||||
__func__, errCode);
|
__func__, errCode);
|
||||||
return errCode;
|
return errCode;
|
||||||
@ -1401,7 +1401,7 @@ int cx231xx_dev_init(struct cx231xx *dev)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (errCode < 0) {
|
if (errCode < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: cx231xx_AGC mode to Analog - errCode [%d]!\n",
|
"%s: cx231xx_AGC mode to Analog - errCode [%d]!\n",
|
||||||
__func__, errCode);
|
__func__, errCode);
|
||||||
return errCode;
|
return errCode;
|
||||||
@ -1478,7 +1478,7 @@ int cx231xx_send_gpio_cmd(struct cx231xx *dev, u32 gpio_bit, u8 *gpio_val,
|
|||||||
/* call common vendor command request */
|
/* call common vendor command request */
|
||||||
status = cx231xx_send_vendor_cmd(dev, &ven_req);
|
status = cx231xx_send_vendor_cmd(dev, &ven_req);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
dev_err(&dev->udev->dev, "%s: failed with status -%d\n",
|
dev_err(dev->dev, "%s: failed with status -%d\n",
|
||||||
__func__, status);
|
__func__, status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,10 +191,10 @@ static inline void print_err_status(struct cx231xx *dev, int packet, int status)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (packet < 0) {
|
if (packet < 0) {
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"URB status %d [%s].\n", status, errmsg);
|
"URB status %d [%s].\n", status, errmsg);
|
||||||
} else {
|
} else {
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"URB packet %d, status %d [%s].\n",
|
"URB packet %d, status %d [%s].\n",
|
||||||
packet, status, errmsg);
|
packet, status, errmsg);
|
||||||
}
|
}
|
||||||
@ -261,7 +261,7 @@ static int start_streaming(struct cx231xx_dvb *dvb)
|
|||||||
struct cx231xx *dev = dvb->adapter.priv;
|
struct cx231xx *dev = dvb->adapter.priv;
|
||||||
|
|
||||||
if (dev->USE_ISO) {
|
if (dev->USE_ISO) {
|
||||||
dev_dbg(&dev->udev->dev, "DVB transfer mode is ISO.\n");
|
dev_dbg(dev->dev, "DVB transfer mode is ISO.\n");
|
||||||
cx231xx_set_alt_setting(dev, INDEX_TS1, 4);
|
cx231xx_set_alt_setting(dev, INDEX_TS1, 4);
|
||||||
rc = cx231xx_set_mode(dev, CX231XX_DIGITAL_MODE);
|
rc = cx231xx_set_mode(dev, CX231XX_DIGITAL_MODE);
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
@ -272,7 +272,7 @@ static int start_streaming(struct cx231xx_dvb *dvb)
|
|||||||
dev->ts1_mode.max_pkt_size,
|
dev->ts1_mode.max_pkt_size,
|
||||||
dvb_isoc_copy);
|
dvb_isoc_copy);
|
||||||
} else {
|
} else {
|
||||||
dev_dbg(&dev->udev->dev, "DVB transfer mode is BULK.\n");
|
dev_dbg(dev->dev, "DVB transfer mode is BULK.\n");
|
||||||
cx231xx_set_alt_setting(dev, INDEX_TS1, 0);
|
cx231xx_set_alt_setting(dev, INDEX_TS1, 0);
|
||||||
rc = cx231xx_set_mode(dev, CX231XX_DIGITAL_MODE);
|
rc = cx231xx_set_mode(dev, CX231XX_DIGITAL_MODE);
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
@ -374,21 +374,20 @@ static int attach_xc5000(u8 addr, struct cx231xx *dev)
|
|||||||
cfg.i2c_addr = addr;
|
cfg.i2c_addr = addr;
|
||||||
|
|
||||||
if (!dev->dvb->frontend) {
|
if (!dev->dvb->frontend) {
|
||||||
dev_err(&dev->udev->dev, "%s/2: dvb frontend not attached. "
|
dev_err(dev->dev, "%s/2: dvb frontend not attached. "
|
||||||
"Can't attach xc5000\n", dev->name);
|
"Can't attach xc5000\n", dev->name);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
fe = dvb_attach(xc5000_attach, dev->dvb->frontend, &cfg);
|
fe = dvb_attach(xc5000_attach, dev->dvb->frontend, &cfg);
|
||||||
if (!fe) {
|
if (!fe) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev, "%s/2: xc5000 attach failed\n", dev->name);
|
||||||
"%s/2: xc5000 attach failed\n", dev->name);
|
|
||||||
dvb_frontend_detach(dev->dvb->frontend);
|
dvb_frontend_detach(dev->dvb->frontend);
|
||||||
dev->dvb->frontend = NULL;
|
dev->dvb->frontend = NULL;
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev_info(&dev->udev->dev, "%s/2: xc5000 attached\n", dev->name);
|
dev_info(dev->dev, "%s/2: xc5000 attached\n", dev->name);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -427,16 +426,16 @@ int cx231xx_reset_analog_tuner(struct cx231xx *dev)
|
|||||||
|
|
||||||
if (dops->init != NULL && !dev->xc_fw_load_done) {
|
if (dops->init != NULL && !dev->xc_fw_load_done) {
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"Reloading firmware for XC5000\n");
|
"Reloading firmware for XC5000\n");
|
||||||
status = dops->init(dev->dvb->frontend);
|
status = dops->init(dev->dvb->frontend);
|
||||||
if (status == 0) {
|
if (status == 0) {
|
||||||
dev->xc_fw_load_done = 1;
|
dev->xc_fw_load_done = 1;
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"XC5000 firmware download completed\n");
|
"XC5000 firmware download completed\n");
|
||||||
} else {
|
} else {
|
||||||
dev->xc_fw_load_done = 0;
|
dev->xc_fw_load_done = 0;
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"XC5000 firmware download failed !!!\n");
|
"XC5000 firmware download failed !!!\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -460,7 +459,7 @@ static int register_dvb(struct cx231xx_dvb *dvb,
|
|||||||
result = dvb_register_adapter(&dvb->adapter, dev->name, module, device,
|
result = dvb_register_adapter(&dvb->adapter, dev->name, module, device,
|
||||||
adapter_nr);
|
adapter_nr);
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
dev_warn(&dev->udev->dev,
|
dev_warn(dev->dev,
|
||||||
"%s: dvb_register_adapter failed (errno = %d)\n",
|
"%s: dvb_register_adapter failed (errno = %d)\n",
|
||||||
dev->name, result);
|
dev->name, result);
|
||||||
goto fail_adapter;
|
goto fail_adapter;
|
||||||
@ -474,7 +473,7 @@ static int register_dvb(struct cx231xx_dvb *dvb,
|
|||||||
/* register frontend */
|
/* register frontend */
|
||||||
result = dvb_register_frontend(&dvb->adapter, dvb->frontend);
|
result = dvb_register_frontend(&dvb->adapter, dvb->frontend);
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
dev_warn(&dev->udev->dev,
|
dev_warn(dev->dev,
|
||||||
"%s: dvb_register_frontend failed (errno = %d)\n",
|
"%s: dvb_register_frontend failed (errno = %d)\n",
|
||||||
dev->name, result);
|
dev->name, result);
|
||||||
goto fail_frontend;
|
goto fail_frontend;
|
||||||
@ -492,7 +491,7 @@ static int register_dvb(struct cx231xx_dvb *dvb,
|
|||||||
|
|
||||||
result = dvb_dmx_init(&dvb->demux);
|
result = dvb_dmx_init(&dvb->demux);
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
dev_warn(&dev->udev->dev,
|
dev_warn(dev->dev,
|
||||||
"%s: dvb_dmx_init failed (errno = %d)\n",
|
"%s: dvb_dmx_init failed (errno = %d)\n",
|
||||||
dev->name, result);
|
dev->name, result);
|
||||||
goto fail_dmx;
|
goto fail_dmx;
|
||||||
@ -503,7 +502,7 @@ static int register_dvb(struct cx231xx_dvb *dvb,
|
|||||||
dvb->dmxdev.capabilities = 0;
|
dvb->dmxdev.capabilities = 0;
|
||||||
result = dvb_dmxdev_init(&dvb->dmxdev, &dvb->adapter);
|
result = dvb_dmxdev_init(&dvb->dmxdev, &dvb->adapter);
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
dev_warn(&dev->udev->dev,
|
dev_warn(dev->dev,
|
||||||
"%s: dvb_dmxdev_init failed (errno = %d)\n",
|
"%s: dvb_dmxdev_init failed (errno = %d)\n",
|
||||||
dev->name, result);
|
dev->name, result);
|
||||||
goto fail_dmxdev;
|
goto fail_dmxdev;
|
||||||
@ -512,7 +511,7 @@ static int register_dvb(struct cx231xx_dvb *dvb,
|
|||||||
dvb->fe_hw.source = DMX_FRONTEND_0;
|
dvb->fe_hw.source = DMX_FRONTEND_0;
|
||||||
result = dvb->demux.dmx.add_frontend(&dvb->demux.dmx, &dvb->fe_hw);
|
result = dvb->demux.dmx.add_frontend(&dvb->demux.dmx, &dvb->fe_hw);
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
dev_warn(&dev->udev->dev,
|
dev_warn(dev->dev,
|
||||||
"%s: add_frontend failed (DMX_FRONTEND_0, errno = %d)\n",
|
"%s: add_frontend failed (DMX_FRONTEND_0, errno = %d)\n",
|
||||||
dev->name, result);
|
dev->name, result);
|
||||||
goto fail_fe_hw;
|
goto fail_fe_hw;
|
||||||
@ -521,7 +520,7 @@ static int register_dvb(struct cx231xx_dvb *dvb,
|
|||||||
dvb->fe_mem.source = DMX_MEMORY_FE;
|
dvb->fe_mem.source = DMX_MEMORY_FE;
|
||||||
result = dvb->demux.dmx.add_frontend(&dvb->demux.dmx, &dvb->fe_mem);
|
result = dvb->demux.dmx.add_frontend(&dvb->demux.dmx, &dvb->fe_mem);
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
dev_warn(&dev->udev->dev,
|
dev_warn(dev->dev,
|
||||||
"%s: add_frontend failed (DMX_MEMORY_FE, errno = %d)\n",
|
"%s: add_frontend failed (DMX_MEMORY_FE, errno = %d)\n",
|
||||||
dev->name, result);
|
dev->name, result);
|
||||||
goto fail_fe_mem;
|
goto fail_fe_mem;
|
||||||
@ -529,7 +528,7 @@ static int register_dvb(struct cx231xx_dvb *dvb,
|
|||||||
|
|
||||||
result = dvb->demux.dmx.connect_frontend(&dvb->demux.dmx, &dvb->fe_hw);
|
result = dvb->demux.dmx.connect_frontend(&dvb->demux.dmx, &dvb->fe_hw);
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
dev_warn(&dev->udev->dev,
|
dev_warn(dev->dev,
|
||||||
"%s: connect_frontend failed (errno = %d)\n",
|
"%s: connect_frontend failed (errno = %d)\n",
|
||||||
dev->name, result);
|
dev->name, result);
|
||||||
goto fail_fe_conn;
|
goto fail_fe_conn;
|
||||||
@ -590,7 +589,7 @@ static int dvb_init(struct cx231xx *dev)
|
|||||||
dvb = kzalloc(sizeof(struct cx231xx_dvb), GFP_KERNEL);
|
dvb = kzalloc(sizeof(struct cx231xx_dvb), GFP_KERNEL);
|
||||||
|
|
||||||
if (dvb == NULL) {
|
if (dvb == NULL) {
|
||||||
dev_info(&dev->udev->dev,
|
dev_info(dev->dev,
|
||||||
"cx231xx_dvb: memory allocation failed\n");
|
"cx231xx_dvb: memory allocation failed\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
@ -613,7 +612,7 @@ static int dvb_init(struct cx231xx *dev)
|
|||||||
demod_i2c);
|
demod_i2c);
|
||||||
|
|
||||||
if (dev->dvb->frontend == NULL) {
|
if (dev->dvb->frontend == NULL) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"Failed to attach s5h1432 front end\n");
|
"Failed to attach s5h1432 front end\n");
|
||||||
result = -EINVAL;
|
result = -EINVAL;
|
||||||
goto out_free;
|
goto out_free;
|
||||||
@ -638,7 +637,7 @@ static int dvb_init(struct cx231xx *dev)
|
|||||||
demod_i2c);
|
demod_i2c);
|
||||||
|
|
||||||
if (dev->dvb->frontend == NULL) {
|
if (dev->dvb->frontend == NULL) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"Failed to attach s5h1411 front end\n");
|
"Failed to attach s5h1411 front end\n");
|
||||||
result = -EINVAL;
|
result = -EINVAL;
|
||||||
goto out_free;
|
goto out_free;
|
||||||
@ -661,7 +660,7 @@ static int dvb_init(struct cx231xx *dev)
|
|||||||
demod_i2c);
|
demod_i2c);
|
||||||
|
|
||||||
if (dev->dvb->frontend == NULL) {
|
if (dev->dvb->frontend == NULL) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"Failed to attach s5h1432 front end\n");
|
"Failed to attach s5h1432 front end\n");
|
||||||
result = -EINVAL;
|
result = -EINVAL;
|
||||||
goto out_free;
|
goto out_free;
|
||||||
@ -685,7 +684,7 @@ static int dvb_init(struct cx231xx *dev)
|
|||||||
demod_i2c);
|
demod_i2c);
|
||||||
|
|
||||||
if (dev->dvb->frontend == NULL) {
|
if (dev->dvb->frontend == NULL) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"Failed to attach s5h1411 front end\n");
|
"Failed to attach s5h1411 front end\n");
|
||||||
result = -EINVAL;
|
result = -EINVAL;
|
||||||
goto out_free;
|
goto out_free;
|
||||||
@ -703,7 +702,7 @@ static int dvb_init(struct cx231xx *dev)
|
|||||||
break;
|
break;
|
||||||
case CX231XX_BOARD_HAUPPAUGE_EXETER:
|
case CX231XX_BOARD_HAUPPAUGE_EXETER:
|
||||||
|
|
||||||
dev_info(&dev->udev->dev,
|
dev_info(dev->dev,
|
||||||
"%s: looking for tuner / demod on i2c bus: %d\n",
|
"%s: looking for tuner / demod on i2c bus: %d\n",
|
||||||
__func__, i2c_adapter_id(tuner_i2c));
|
__func__, i2c_adapter_id(tuner_i2c));
|
||||||
|
|
||||||
@ -712,7 +711,7 @@ static int dvb_init(struct cx231xx *dev)
|
|||||||
tuner_i2c);
|
tuner_i2c);
|
||||||
|
|
||||||
if (dev->dvb->frontend == NULL) {
|
if (dev->dvb->frontend == NULL) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"Failed to attach LG3305 front end\n");
|
"Failed to attach LG3305 front end\n");
|
||||||
result = -EINVAL;
|
result = -EINVAL;
|
||||||
goto out_free;
|
goto out_free;
|
||||||
@ -734,7 +733,7 @@ static int dvb_init(struct cx231xx *dev)
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (dev->dvb->frontend == NULL) {
|
if (dev->dvb->frontend == NULL) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"Failed to attach SI2165 front end\n");
|
"Failed to attach SI2165 front end\n");
|
||||||
result = -EINVAL;
|
result = -EINVAL;
|
||||||
goto out_free;
|
goto out_free;
|
||||||
@ -767,7 +766,7 @@ static int dvb_init(struct cx231xx *dev)
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (dev->dvb->frontend == NULL) {
|
if (dev->dvb->frontend == NULL) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"Failed to attach SI2165 front end\n");
|
"Failed to attach SI2165 front end\n");
|
||||||
result = -EINVAL;
|
result = -EINVAL;
|
||||||
goto out_free;
|
goto out_free;
|
||||||
@ -812,7 +811,7 @@ static int dvb_init(struct cx231xx *dev)
|
|||||||
case CX231XX_BOARD_PV_PLAYTV_USB_HYBRID:
|
case CX231XX_BOARD_PV_PLAYTV_USB_HYBRID:
|
||||||
case CX231XX_BOARD_KWORLD_UB430_USB_HYBRID:
|
case CX231XX_BOARD_KWORLD_UB430_USB_HYBRID:
|
||||||
|
|
||||||
dev_info(&dev->udev->dev,
|
dev_info(dev->dev,
|
||||||
"%s: looking for demod on i2c bus: %d\n",
|
"%s: looking for demod on i2c bus: %d\n",
|
||||||
__func__, i2c_adapter_id(tuner_i2c));
|
__func__, i2c_adapter_id(tuner_i2c));
|
||||||
|
|
||||||
@ -821,7 +820,7 @@ static int dvb_init(struct cx231xx *dev)
|
|||||||
demod_i2c);
|
demod_i2c);
|
||||||
|
|
||||||
if (dev->dvb->frontend == NULL) {
|
if (dev->dvb->frontend == NULL) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"Failed to attach mb86a20s demod\n");
|
"Failed to attach mb86a20s demod\n");
|
||||||
result = -EINVAL;
|
result = -EINVAL;
|
||||||
goto out_free;
|
goto out_free;
|
||||||
@ -836,26 +835,26 @@ static int dvb_init(struct cx231xx *dev)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s/2: The frontend of your DVB/ATSC card isn't supported yet\n",
|
"%s/2: The frontend of your DVB/ATSC card isn't supported yet\n",
|
||||||
dev->name);
|
dev->name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (NULL == dvb->frontend) {
|
if (NULL == dvb->frontend) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s/2: frontend initialization failed\n", dev->name);
|
"%s/2: frontend initialization failed\n", dev->name);
|
||||||
result = -EINVAL;
|
result = -EINVAL;
|
||||||
goto out_free;
|
goto out_free;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* register everything */
|
/* register everything */
|
||||||
result = register_dvb(dvb, THIS_MODULE, dev, &dev->udev->dev);
|
result = register_dvb(dvb, THIS_MODULE, dev, dev->dev);
|
||||||
|
|
||||||
if (result < 0)
|
if (result < 0)
|
||||||
goto out_free;
|
goto out_free;
|
||||||
|
|
||||||
|
|
||||||
dev_info(&dev->udev->dev, "Successfully loaded cx231xx-dvb\n");
|
dev_info(dev->dev, "Successfully loaded cx231xx-dvb\n");
|
||||||
|
|
||||||
ret:
|
ret:
|
||||||
cx231xx_set_mode(dev, CX231XX_SUSPEND);
|
cx231xx_set_mode(dev, CX231XX_SUSPEND);
|
||||||
|
@ -507,7 +507,7 @@ void cx231xx_do_i2c_scan(struct cx231xx *dev, int i2c_port)
|
|||||||
rc = i2c_master_recv(&client, &buf, 0);
|
rc = i2c_master_recv(&client, &buf, 0);
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
continue;
|
continue;
|
||||||
dev_info(&dev->udev->dev,
|
dev_info(dev->dev,
|
||||||
"i2c scan: found device @ port %d addr 0x%x [%s]\n",
|
"i2c scan: found device @ port %d addr 0x%x [%s]\n",
|
||||||
i2c_port,
|
i2c_port,
|
||||||
i << 1,
|
i << 1,
|
||||||
@ -528,7 +528,7 @@ int cx231xx_i2c_register(struct cx231xx_i2c *bus)
|
|||||||
BUG_ON(!dev->cx231xx_send_usb_command);
|
BUG_ON(!dev->cx231xx_send_usb_command);
|
||||||
|
|
||||||
bus->i2c_adap = cx231xx_adap_template;
|
bus->i2c_adap = cx231xx_adap_template;
|
||||||
bus->i2c_adap.dev.parent = &dev->udev->dev;
|
bus->i2c_adap.dev.parent = dev->dev;
|
||||||
|
|
||||||
snprintf(bus->i2c_adap.name, sizeof(bus->i2c_adap.name), "%s-%d", bus->dev->name, bus->nr);
|
snprintf(bus->i2c_adap.name, sizeof(bus->i2c_adap.name), "%s-%d", bus->dev->name, bus->nr);
|
||||||
|
|
||||||
@ -537,7 +537,7 @@ int cx231xx_i2c_register(struct cx231xx_i2c *bus)
|
|||||||
i2c_add_adapter(&bus->i2c_adap);
|
i2c_add_adapter(&bus->i2c_adap);
|
||||||
|
|
||||||
if (0 != bus->i2c_rc)
|
if (0 != bus->i2c_rc)
|
||||||
dev_warn(&dev->udev->dev,
|
dev_warn(dev->dev,
|
||||||
"i2c bus %d register FAILED\n", bus->nr);
|
"i2c bus %d register FAILED\n", bus->nr);
|
||||||
|
|
||||||
return bus->i2c_rc;
|
return bus->i2c_rc;
|
||||||
@ -569,7 +569,7 @@ int cx231xx_i2c_mux_register(struct cx231xx *dev, int mux_no)
|
|||||||
{
|
{
|
||||||
struct i2c_adapter *i2c_parent = &dev->i2c_bus[1].i2c_adap;
|
struct i2c_adapter *i2c_parent = &dev->i2c_bus[1].i2c_adap;
|
||||||
/* what is the correct mux_dev? */
|
/* what is the correct mux_dev? */
|
||||||
struct device *mux_dev = &dev->udev->dev;
|
struct device *mux_dev = dev->dev;
|
||||||
|
|
||||||
dev->i2c_mux_adap[mux_no] = i2c_add_mux_adapter(i2c_parent,
|
dev->i2c_mux_adap[mux_no] = i2c_add_mux_adapter(i2c_parent,
|
||||||
mux_dev,
|
mux_dev,
|
||||||
@ -581,7 +581,7 @@ int cx231xx_i2c_mux_register(struct cx231xx *dev, int mux_no)
|
|||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
if (!dev->i2c_mux_adap[mux_no])
|
if (!dev->i2c_mux_adap[mux_no])
|
||||||
dev_warn(&dev->udev->dev,
|
dev_warn(dev->dev,
|
||||||
"i2c mux %d register FAILED\n", mux_no);
|
"i2c mux %d register FAILED\n", mux_no);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -62,7 +62,7 @@ int cx231xx_ir_init(struct cx231xx *dev)
|
|||||||
struct i2c_board_info info;
|
struct i2c_board_info info;
|
||||||
u8 ir_i2c_bus;
|
u8 ir_i2c_bus;
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "%s\n", __func__);
|
dev_dbg(dev->dev, "%s\n", __func__);
|
||||||
|
|
||||||
/* Only initialize if a rc keycode map is defined */
|
/* Only initialize if a rc keycode map is defined */
|
||||||
if (!cx231xx_boards[dev->model].rc_map_name)
|
if (!cx231xx_boards[dev->model].rc_map_name)
|
||||||
@ -97,7 +97,7 @@ int cx231xx_ir_init(struct cx231xx *dev)
|
|||||||
|
|
||||||
/* Load and bind ir-kbd-i2c */
|
/* Load and bind ir-kbd-i2c */
|
||||||
ir_i2c_bus = cx231xx_boards[dev->model].ir_i2c_master;
|
ir_i2c_bus = cx231xx_boards[dev->model].ir_i2c_master;
|
||||||
dev_dbg(&dev->udev->dev, "Trying to bind ir at bus %d, addr 0x%02x\n",
|
dev_dbg(dev->dev, "Trying to bind ir at bus %d, addr 0x%02x\n",
|
||||||
ir_i2c_bus, info.addr);
|
ir_i2c_bus, info.addr);
|
||||||
dev->ir_i2c_client = i2c_new_device(
|
dev->ir_i2c_client = i2c_new_device(
|
||||||
cx231xx_get_i2c_adap(dev, ir_i2c_bus), &info);
|
cx231xx_get_i2c_adap(dev, ir_i2c_bus), &info);
|
||||||
|
@ -703,7 +703,7 @@ int initialize_cx231xx(struct cx231xx *dev)
|
|||||||
_current_scenario_idx = INDEX_BUSPOWER_DIF_ONLY;
|
_current_scenario_idx = INDEX_BUSPOWER_DIF_ONLY;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"bad config in buspower!!!!\nconfig_info=%x\n",
|
"bad config in buspower!!!!\nconfig_info=%x\n",
|
||||||
config_info & BUSPOWER_MASK);
|
config_info & BUSPOWER_MASK);
|
||||||
return 1;
|
return 1;
|
||||||
@ -768,7 +768,7 @@ int initialize_cx231xx(struct cx231xx *dev)
|
|||||||
_current_scenario_idx = INDEX_SELFPOWER_COMPRESSOR;
|
_current_scenario_idx = INDEX_SELFPOWER_COMPRESSOR;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"bad senario!!!!!\nconfig_info=%x\n",
|
"bad senario!!!!!\nconfig_info=%x\n",
|
||||||
config_info & SELFPOWER_MASK);
|
config_info & SELFPOWER_MASK);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
@ -781,27 +781,27 @@ int initialize_cx231xx(struct cx231xx *dev)
|
|||||||
sizeof(struct pcb_config));
|
sizeof(struct pcb_config));
|
||||||
|
|
||||||
if (pcb_debug) {
|
if (pcb_debug) {
|
||||||
dev_info(&dev->udev->dev,
|
dev_info(dev->dev,
|
||||||
"SC(0x00) register = 0x%x\n", config_info);
|
"SC(0x00) register = 0x%x\n", config_info);
|
||||||
dev_info(&dev->udev->dev,
|
dev_info(dev->dev,
|
||||||
"scenario %d\n",
|
"scenario %d\n",
|
||||||
(dev->current_pcb_config.index) + 1);
|
(dev->current_pcb_config.index) + 1);
|
||||||
dev_info(&dev->udev->dev,
|
dev_info(dev->dev,
|
||||||
"type=%x\n",
|
"type=%x\n",
|
||||||
dev->current_pcb_config.type);
|
dev->current_pcb_config.type);
|
||||||
dev_info(&dev->udev->dev,
|
dev_info(dev->dev,
|
||||||
"mode=%x\n",
|
"mode=%x\n",
|
||||||
dev->current_pcb_config.mode);
|
dev->current_pcb_config.mode);
|
||||||
dev_info(&dev->udev->dev,
|
dev_info(dev->dev,
|
||||||
"speed=%x\n",
|
"speed=%x\n",
|
||||||
dev->current_pcb_config.speed);
|
dev->current_pcb_config.speed);
|
||||||
dev_info(&dev->udev->dev,
|
dev_info(dev->dev,
|
||||||
"ts1_source=%x\n",
|
"ts1_source=%x\n",
|
||||||
dev->current_pcb_config.ts1_source);
|
dev->current_pcb_config.ts1_source);
|
||||||
dev_info(&dev->udev->dev,
|
dev_info(dev->dev,
|
||||||
"ts2_source=%x\n",
|
"ts2_source=%x\n",
|
||||||
dev->current_pcb_config.ts2_source);
|
dev->current_pcb_config.ts2_source);
|
||||||
dev_info(&dev->udev->dev,
|
dev_info(dev->dev,
|
||||||
"analog_source=%x\n",
|
"analog_source=%x\n",
|
||||||
dev->current_pcb_config.analog_source);
|
dev->current_pcb_config.analog_source);
|
||||||
}
|
}
|
||||||
|
@ -68,10 +68,10 @@ static inline void print_err_status(struct cx231xx *dev, int packet, int status)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (packet < 0) {
|
if (packet < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"URB status %d [%s].\n", status, errmsg);
|
"URB status %d [%s].\n", status, errmsg);
|
||||||
} else {
|
} else {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"URB packet %d, status %d [%s].\n",
|
"URB packet %d, status %d [%s].\n",
|
||||||
packet, status, errmsg);
|
packet, status, errmsg);
|
||||||
}
|
}
|
||||||
@ -316,7 +316,7 @@ static void cx231xx_irq_vbi_callback(struct urb *urb)
|
|||||||
case -ESHUTDOWN:
|
case -ESHUTDOWN:
|
||||||
return;
|
return;
|
||||||
default: /* error */
|
default: /* error */
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"urb completition error %d.\n", urb->status);
|
"urb completition error %d.\n", urb->status);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -331,7 +331,7 @@ static void cx231xx_irq_vbi_callback(struct urb *urb)
|
|||||||
|
|
||||||
urb->status = usb_submit_urb(urb, GFP_ATOMIC);
|
urb->status = usb_submit_urb(urb, GFP_ATOMIC);
|
||||||
if (urb->status) {
|
if (urb->status) {
|
||||||
dev_err(&dev->udev->dev, "urb resubmit failed (error=%i)\n",
|
dev_err(dev->dev, "urb resubmit failed (error=%i)\n",
|
||||||
urb->status);
|
urb->status);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -344,7 +344,7 @@ void cx231xx_uninit_vbi_isoc(struct cx231xx *dev)
|
|||||||
struct urb *urb;
|
struct urb *urb;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "called cx231xx_uninit_vbi_isoc\n");
|
dev_dbg(dev->dev, "called cx231xx_uninit_vbi_isoc\n");
|
||||||
|
|
||||||
dev->vbi_mode.bulk_ctl.nfields = -1;
|
dev->vbi_mode.bulk_ctl.nfields = -1;
|
||||||
for (i = 0; i < dev->vbi_mode.bulk_ctl.num_bufs; i++) {
|
for (i = 0; i < dev->vbi_mode.bulk_ctl.num_bufs; i++) {
|
||||||
@ -393,7 +393,7 @@ int cx231xx_init_vbi_isoc(struct cx231xx *dev, int max_packets,
|
|||||||
struct urb *urb;
|
struct urb *urb;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "called cx231xx_vbi_isoc\n");
|
dev_dbg(dev->dev, "called cx231xx_vbi_isoc\n");
|
||||||
|
|
||||||
/* De-allocates all pending stuff */
|
/* De-allocates all pending stuff */
|
||||||
cx231xx_uninit_vbi_isoc(dev);
|
cx231xx_uninit_vbi_isoc(dev);
|
||||||
@ -419,7 +419,7 @@ int cx231xx_init_vbi_isoc(struct cx231xx *dev, int max_packets,
|
|||||||
dev->vbi_mode.bulk_ctl.urb = kzalloc(sizeof(void *) * num_bufs,
|
dev->vbi_mode.bulk_ctl.urb = kzalloc(sizeof(void *) * num_bufs,
|
||||||
GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
if (!dev->vbi_mode.bulk_ctl.urb) {
|
if (!dev->vbi_mode.bulk_ctl.urb) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"cannot alloc memory for usb buffers\n");
|
"cannot alloc memory for usb buffers\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
@ -427,7 +427,7 @@ int cx231xx_init_vbi_isoc(struct cx231xx *dev, int max_packets,
|
|||||||
dev->vbi_mode.bulk_ctl.transfer_buffer =
|
dev->vbi_mode.bulk_ctl.transfer_buffer =
|
||||||
kzalloc(sizeof(void *) * num_bufs, GFP_KERNEL);
|
kzalloc(sizeof(void *) * num_bufs, GFP_KERNEL);
|
||||||
if (!dev->vbi_mode.bulk_ctl.transfer_buffer) {
|
if (!dev->vbi_mode.bulk_ctl.transfer_buffer) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"cannot allocate memory for usbtransfer\n");
|
"cannot allocate memory for usbtransfer\n");
|
||||||
kfree(dev->vbi_mode.bulk_ctl.urb);
|
kfree(dev->vbi_mode.bulk_ctl.urb);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
@ -443,7 +443,7 @@ int cx231xx_init_vbi_isoc(struct cx231xx *dev, int max_packets,
|
|||||||
|
|
||||||
urb = usb_alloc_urb(0, GFP_KERNEL);
|
urb = usb_alloc_urb(0, GFP_KERNEL);
|
||||||
if (!urb) {
|
if (!urb) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"cannot alloc bulk_ctl.urb %i\n", i);
|
"cannot alloc bulk_ctl.urb %i\n", i);
|
||||||
cx231xx_uninit_vbi_isoc(dev);
|
cx231xx_uninit_vbi_isoc(dev);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
@ -454,7 +454,7 @@ int cx231xx_init_vbi_isoc(struct cx231xx *dev, int max_packets,
|
|||||||
dev->vbi_mode.bulk_ctl.transfer_buffer[i] =
|
dev->vbi_mode.bulk_ctl.transfer_buffer[i] =
|
||||||
kzalloc(sb_size, GFP_KERNEL);
|
kzalloc(sb_size, GFP_KERNEL);
|
||||||
if (!dev->vbi_mode.bulk_ctl.transfer_buffer[i]) {
|
if (!dev->vbi_mode.bulk_ctl.transfer_buffer[i]) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"unable to allocate %i bytes for transfer buffer %i%s\n",
|
"unable to allocate %i bytes for transfer buffer %i%s\n",
|
||||||
sb_size, i,
|
sb_size, i,
|
||||||
in_interrupt() ? " while in int" : "");
|
in_interrupt() ? " while in int" : "");
|
||||||
@ -474,7 +474,7 @@ int cx231xx_init_vbi_isoc(struct cx231xx *dev, int max_packets,
|
|||||||
for (i = 0; i < dev->vbi_mode.bulk_ctl.num_bufs; i++) {
|
for (i = 0; i < dev->vbi_mode.bulk_ctl.num_bufs; i++) {
|
||||||
rc = usb_submit_urb(dev->vbi_mode.bulk_ctl.urb[i], GFP_ATOMIC);
|
rc = usb_submit_urb(dev->vbi_mode.bulk_ctl.urb[i], GFP_ATOMIC);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"submit of urb %i failed (error=%i)\n", i, rc);
|
"submit of urb %i failed (error=%i)\n", i, rc);
|
||||||
cx231xx_uninit_vbi_isoc(dev);
|
cx231xx_uninit_vbi_isoc(dev);
|
||||||
return rc;
|
return rc;
|
||||||
@ -526,7 +526,7 @@ static inline void vbi_buffer_filled(struct cx231xx *dev,
|
|||||||
struct cx231xx_buffer *buf)
|
struct cx231xx_buffer *buf)
|
||||||
{
|
{
|
||||||
/* Advice that buffer was filled */
|
/* Advice that buffer was filled */
|
||||||
/* dev_dbg(&dev->udev->dev, "[%p/%d] wakeup\n", buf, buf->vb.i); */
|
/* dev_dbg(dev->dev, "[%p/%d] wakeup\n", buf, buf->vb.i); */
|
||||||
|
|
||||||
buf->vb.state = VIDEOBUF_DONE;
|
buf->vb.state = VIDEOBUF_DONE;
|
||||||
buf->vb.field_count++;
|
buf->vb.field_count++;
|
||||||
@ -618,7 +618,7 @@ static inline void get_next_vbi_buf(struct cx231xx_dmaqueue *dma_q,
|
|||||||
char *outp;
|
char *outp;
|
||||||
|
|
||||||
if (list_empty(&dma_q->active)) {
|
if (list_empty(&dma_q->active)) {
|
||||||
dev_err(&dev->udev->dev, "No active queue to serve\n");
|
dev_err(dev->dev, "No active queue to serve\n");
|
||||||
dev->vbi_mode.bulk_ctl.buf = NULL;
|
dev->vbi_mode.bulk_ctl.buf = NULL;
|
||||||
*buf = NULL;
|
*buf = NULL;
|
||||||
return;
|
return;
|
||||||
|
@ -736,7 +736,7 @@ buffer_prepare(struct videobuf_queue *vq, struct videobuf_buffer *vb,
|
|||||||
if (!dev->video_mode.bulk_ctl.num_bufs)
|
if (!dev->video_mode.bulk_ctl.num_bufs)
|
||||||
urb_init = 1;
|
urb_init = 1;
|
||||||
}
|
}
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"urb_init=%d dev->video_mode.max_pkt_size=%d\n",
|
"urb_init=%d dev->video_mode.max_pkt_size=%d\n",
|
||||||
urb_init, dev->video_mode.max_pkt_size);
|
urb_init, dev->video_mode.max_pkt_size);
|
||||||
if (urb_init) {
|
if (urb_init) {
|
||||||
@ -809,7 +809,7 @@ void video_mux(struct cx231xx *dev, int index)
|
|||||||
|
|
||||||
cx231xx_set_audio_input(dev, dev->ctl_ainput);
|
cx231xx_set_audio_input(dev, dev->ctl_ainput);
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "video_mux : %d\n", index);
|
dev_dbg(dev->dev, "video_mux : %d\n", index);
|
||||||
|
|
||||||
/* do mode control overrides if required */
|
/* do mode control overrides if required */
|
||||||
cx231xx_do_mode_ctrl_overrides(dev);
|
cx231xx_do_mode_ctrl_overrides(dev);
|
||||||
@ -861,7 +861,7 @@ static void res_free(struct cx231xx_fh *fh)
|
|||||||
static int check_dev(struct cx231xx *dev)
|
static int check_dev(struct cx231xx *dev)
|
||||||
{
|
{
|
||||||
if (dev->state & DEV_DISCONNECTED) {
|
if (dev->state & DEV_DISCONNECTED) {
|
||||||
dev_err(&dev->udev->dev, "v4l2 ioctl: device not present\n");
|
dev_err(dev->dev, "v4l2 ioctl: device not present\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -953,12 +953,12 @@ static int vidioc_s_fmt_vid_cap(struct file *file, void *priv,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (videobuf_queue_is_busy(&fh->vb_vidq)) {
|
if (videobuf_queue_is_busy(&fh->vb_vidq)) {
|
||||||
dev_err(&dev->udev->dev, "%s: queue busy\n", __func__);
|
dev_err(dev->dev, "%s: queue busy\n", __func__);
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dev->stream_on && !fh->stream_on) {
|
if (dev->stream_on && !fh->stream_on) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s: device in use by another fh\n", __func__);
|
"%s: device in use by another fh\n", __func__);
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
}
|
}
|
||||||
@ -1177,7 +1177,7 @@ int cx231xx_s_frequency(struct file *file, void *priv,
|
|||||||
int rc;
|
int rc;
|
||||||
u32 if_frequency = 5400000;
|
u32 if_frequency = 5400000;
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"Enter vidioc_s_frequency()f->frequency=%d;f->type=%d\n",
|
"Enter vidioc_s_frequency()f->frequency=%d;f->type=%d\n",
|
||||||
f->frequency, f->type);
|
f->frequency, f->type);
|
||||||
|
|
||||||
@ -1214,14 +1214,14 @@ int cx231xx_s_frequency(struct file *file, void *priv,
|
|||||||
else if (dev->norm & V4L2_STD_SECAM_LC)
|
else if (dev->norm & V4L2_STD_SECAM_LC)
|
||||||
if_frequency = 1250000; /*1.25MHz */
|
if_frequency = 1250000; /*1.25MHz */
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev,
|
dev_dbg(dev->dev,
|
||||||
"if_frequency is set to %d\n", if_frequency);
|
"if_frequency is set to %d\n", if_frequency);
|
||||||
cx231xx_set_Colibri_For_LowIF(dev, if_frequency, 1, 1);
|
cx231xx_set_Colibri_For_LowIF(dev, if_frequency, 1, 1);
|
||||||
|
|
||||||
update_HH_register_after_set_DIF(dev);
|
update_HH_register_after_set_DIF(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
dev_dbg(&dev->udev->dev, "Set New FREQUENCY to %d\n", f->frequency);
|
dev_dbg(dev->dev, "Set New FREQUENCY to %d\n", f->frequency);
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@ -1525,7 +1525,7 @@ static int vidioc_s_fmt_vbi_cap(struct file *file, void *priv,
|
|||||||
struct cx231xx *dev = fh->dev;
|
struct cx231xx *dev = fh->dev;
|
||||||
|
|
||||||
if (dev->vbi_stream_on && !fh->stream_on) {
|
if (dev->vbi_stream_on && !fh->stream_on) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"%s device in use by another fh\n", __func__);
|
"%s device in use by another fh\n", __func__);
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
}
|
}
|
||||||
@ -1645,7 +1645,7 @@ static int cx231xx_v4l2_open(struct file *filp)
|
|||||||
#if 0
|
#if 0
|
||||||
errCode = cx231xx_set_mode(dev, CX231XX_ANALOG_MODE);
|
errCode = cx231xx_set_mode(dev, CX231XX_ANALOG_MODE);
|
||||||
if (errCode < 0) {
|
if (errCode < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"Device locked on digital mode. Can't open analog\n");
|
"Device locked on digital mode. Can't open analog\n");
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
}
|
}
|
||||||
@ -1737,7 +1737,7 @@ void cx231xx_release_analog_resources(struct cx231xx *dev)
|
|||||||
dev->radio_dev = NULL;
|
dev->radio_dev = NULL;
|
||||||
}
|
}
|
||||||
if (dev->vbi_dev) {
|
if (dev->vbi_dev) {
|
||||||
dev_info(&dev->udev->dev, "V4L2 device %s deregistered\n",
|
dev_info(dev->dev, "V4L2 device %s deregistered\n",
|
||||||
video_device_node_name(dev->vbi_dev));
|
video_device_node_name(dev->vbi_dev));
|
||||||
if (video_is_registered(dev->vbi_dev))
|
if (video_is_registered(dev->vbi_dev))
|
||||||
video_unregister_device(dev->vbi_dev);
|
video_unregister_device(dev->vbi_dev);
|
||||||
@ -1746,7 +1746,7 @@ void cx231xx_release_analog_resources(struct cx231xx *dev)
|
|||||||
dev->vbi_dev = NULL;
|
dev->vbi_dev = NULL;
|
||||||
}
|
}
|
||||||
if (dev->vdev) {
|
if (dev->vdev) {
|
||||||
dev_info(&dev->udev->dev, "V4L2 device %s deregistered\n",
|
dev_info(dev->dev, "V4L2 device %s deregistered\n",
|
||||||
video_device_node_name(dev->vdev));
|
video_device_node_name(dev->vdev));
|
||||||
|
|
||||||
if (dev->board.has_417)
|
if (dev->board.has_417)
|
||||||
@ -2081,7 +2081,7 @@ int cx231xx_register_analog_devices(struct cx231xx *dev)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
dev_info(&dev->udev->dev, "v4l2 driver version %s\n", CX231XX_VERSION);
|
dev_info(dev->dev, "v4l2 driver version %s\n", CX231XX_VERSION);
|
||||||
|
|
||||||
/* set default norm */
|
/* set default norm */
|
||||||
dev->norm = V4L2_STD_PAL;
|
dev->norm = V4L2_STD_PAL;
|
||||||
@ -2119,7 +2119,7 @@ int cx231xx_register_analog_devices(struct cx231xx *dev)
|
|||||||
/* allocate and fill video video_device struct */
|
/* allocate and fill video video_device struct */
|
||||||
dev->vdev = cx231xx_vdev_init(dev, &cx231xx_video_template, "video");
|
dev->vdev = cx231xx_vdev_init(dev, &cx231xx_video_template, "video");
|
||||||
if (!dev->vdev) {
|
if (!dev->vdev) {
|
||||||
dev_err(&dev->udev->dev, "cannot allocate video_device.\n");
|
dev_err(dev->dev, "cannot allocate video_device.\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2128,13 +2128,13 @@ int cx231xx_register_analog_devices(struct cx231xx *dev)
|
|||||||
ret = video_register_device(dev->vdev, VFL_TYPE_GRABBER,
|
ret = video_register_device(dev->vdev, VFL_TYPE_GRABBER,
|
||||||
video_nr[dev->devno]);
|
video_nr[dev->devno]);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"unable to register video device (error=%i).\n",
|
"unable to register video device (error=%i).\n",
|
||||||
ret);
|
ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev_info(&dev->udev->dev, "Registered video device %s [v4l2]\n",
|
dev_info(dev->dev, "Registered video device %s [v4l2]\n",
|
||||||
video_device_node_name(dev->vdev));
|
video_device_node_name(dev->vdev));
|
||||||
|
|
||||||
/* Initialize VBI template */
|
/* Initialize VBI template */
|
||||||
@ -2145,7 +2145,7 @@ int cx231xx_register_analog_devices(struct cx231xx *dev)
|
|||||||
dev->vbi_dev = cx231xx_vdev_init(dev, &cx231xx_vbi_template, "vbi");
|
dev->vbi_dev = cx231xx_vdev_init(dev, &cx231xx_vbi_template, "vbi");
|
||||||
|
|
||||||
if (!dev->vbi_dev) {
|
if (!dev->vbi_dev) {
|
||||||
dev_err(&dev->udev->dev, "cannot allocate video_device.\n");
|
dev_err(dev->dev, "cannot allocate video_device.\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
dev->vbi_dev->ctrl_handler = &dev->ctrl_handler;
|
dev->vbi_dev->ctrl_handler = &dev->ctrl_handler;
|
||||||
@ -2153,18 +2153,18 @@ int cx231xx_register_analog_devices(struct cx231xx *dev)
|
|||||||
ret = video_register_device(dev->vbi_dev, VFL_TYPE_VBI,
|
ret = video_register_device(dev->vbi_dev, VFL_TYPE_VBI,
|
||||||
vbi_nr[dev->devno]);
|
vbi_nr[dev->devno]);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(&dev->udev->dev, "unable to register vbi device\n");
|
dev_err(dev->dev, "unable to register vbi device\n");
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev_info(&dev->udev->dev, "Registered VBI device %s\n",
|
dev_info(dev->dev, "Registered VBI device %s\n",
|
||||||
video_device_node_name(dev->vbi_dev));
|
video_device_node_name(dev->vbi_dev));
|
||||||
|
|
||||||
if (cx231xx_boards[dev->model].radio.type == CX231XX_RADIO) {
|
if (cx231xx_boards[dev->model].radio.type == CX231XX_RADIO) {
|
||||||
dev->radio_dev = cx231xx_vdev_init(dev, &cx231xx_radio_template,
|
dev->radio_dev = cx231xx_vdev_init(dev, &cx231xx_radio_template,
|
||||||
"radio");
|
"radio");
|
||||||
if (!dev->radio_dev) {
|
if (!dev->radio_dev) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"cannot allocate video_device.\n");
|
"cannot allocate video_device.\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
@ -2172,11 +2172,11 @@ int cx231xx_register_analog_devices(struct cx231xx *dev)
|
|||||||
ret = video_register_device(dev->radio_dev, VFL_TYPE_RADIO,
|
ret = video_register_device(dev->radio_dev, VFL_TYPE_RADIO,
|
||||||
radio_nr[dev->devno]);
|
radio_nr[dev->devno]);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(&dev->udev->dev,
|
dev_err(dev->dev,
|
||||||
"can't register radio device\n");
|
"can't register radio device\n");
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
dev_info(&dev->udev->dev, "Registered radio device as %s\n",
|
dev_info(dev->dev, "Registered radio device as %s\n",
|
||||||
video_device_node_name(dev->radio_dev));
|
video_device_node_name(dev->radio_dev));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -597,6 +597,7 @@ struct cx231xx {
|
|||||||
char name[30]; /* name (including minor) of the device */
|
char name[30]; /* name (including minor) of the device */
|
||||||
int model; /* index in the device_data struct */
|
int model; /* index in the device_data struct */
|
||||||
int devno; /* marks the number of this device */
|
int devno; /* marks the number of this device */
|
||||||
|
struct device *dev; /* pointer to USB interface's dev */
|
||||||
|
|
||||||
struct cx231xx_board board;
|
struct cx231xx_board board;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user