vasvk vasvk
unread,Feb 4, 2012, 2:10:07 PM2/4/12Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to avreg-users
С понятием staging driver разобрался (это такой недоделанный драйвер
лежит в папке .../staging, так-сказать бета-версия). В убунте, как я
понял, staging драйвера по возможности подгружаются. У меня не
выводятся в конечном результате устройства /dev/videox Ниже
приводится процесс загрузки драйвера cx25821. У кого есть опыт, на что
обратить внимание (может какой патч известный или проверенный для
определенного ядра имеется).
Так вот что сообщает мой dmesg по этому поводу
dmesg | grep cx*
cx25821video:drivers/staging/cx25821/cx25821-video-upstream.c | 121 ++
+++++++++----------
cx25821video:diff --git a/drivers/staging/cx25821/cx25821-video-
upstream.c b/drivers/staging/cx25821/cx25821-video-upstream.c
cx25821video:--- a/drivers/staging/cx25821/cx25821-video-upstream.c
cx25821video:+++ b/drivers/staging/cx25821/cx25821-video-upstream.c
cx25821video: MODULE_DESCRIPTION("v4l2 driver module for cx25821 based
TV cards");
cx25821video:@@ -59,9 +59,8 @@ int
cx25821_sram_channel_setup_upstream(struct cx25821_dev *dev,
cx25821video:@@ -96,7 +95,7 @@ int
cx25821_sram_channel_setup_upstream(struct cx25821_dev *dev,
cx25821video: static __le32 *cx25821_update_riscprogram(struct
cx25821_dev *dev,
cx25821video:@@ -107,9 +106,8 @@ static __le32
*cx25821_update_riscprogram(struct cx25821_dev *dev,
cx25821video:@@ -139,14 +137,12 @@ static __le32
*cx25821_risc_field_upstream(struct cx25821_dev *dev, __le32 * rp,
cx25821video:@@ -156,12 +152,13 @@ static __le32
*cx25821_risc_field_upstream(struct cx25821_dev *dev, __le32 * rp,
cx25821video:@@ -180,7 +177,8 @@ int
cx25821_risc_buffer_upstream(struct cx25821_dev *dev,
cx25821video:@@ -224,7 +222,7 @@ int
cx25821_risc_buffer_upstream(struct cx25821_dev *dev,
cx25821video: rp = cx25821_risc_field_upstream(dev,
rp,
cx25821video:@@ -240,7 +238,9 @@ int
cx25821_risc_buffer_upstream(struct cx25821_dev *dev,
cx25821video:@@ -257,18 +257,18 @@ void
cx25821_stop_upstream_video_ch1(struct cx25821_dev *dev)
cx25821video:- ("cx25821: No video file is currently
running so return!\n");
cx25821video:+ ("cx25821: No video file is currently
running so return!\n");
cx25821video: tmp = cx_read(sram_ch->int_msk);
cx25821video: cx_write(sram_ch->int_msk, tmp & ~_intr_msk);
cx25821video: tmp = cx_read(sram_ch->dma_ctl);
cx25821video: cx_write(sram_ch->dma_ctl, tmp &
~(FLD_VID_FIFO_EN | FLD_VID_RISC_EN));
cx25821video:@@ -291,9 +291,8 @@ void
cx25821_stop_upstream_video_ch1(struct cx25821_dev *dev)
cx25821video: void cx25821_free_mem_upstream_ch1(struct cx25821_dev
*dev)
cx25821video: cx25821_stop_upstream_video_ch1(dev);
cx25821video:@@ -346,7 +345,7 @@ int cx25821_get_frame(struct
cx25821_dev *dev, struct sram_channel *sram_ch)
cx25821video:@@ -411,7 +410,7 @@ static void
cx25821_vidups_handler(struct work_struct *work)
cx25821video: container_of(work, struct cx25821_dev,
_irq_work_entry);
cx25821video:@@ -437,7 +436,7 @@ int cx25821_openfile(struct
cx25821_dev *dev, struct sram_channel *sram_ch)
cx25821video:@@ -489,9 +488,8 @@ int cx25821_openfile(struct
cx25821_dev *dev, struct sram_channel *sram_ch)
cx25821video:@@ -531,7 +529,7 @@ int
cx25821_upstream_buffer_prepare(struct cx25821_dev *dev,
cx25821video:@@ -539,7 +537,7 @@ int
cx25821_upstream_buffer_prepare(struct cx25821_dev *dev,
cx25821video:@@ -552,26 +550,26 @@ int
cx25821_upstream_buffer_prepare(struct cx25821_dev *dev,
cx25821video: ret = cx25821_openfile(dev, sram_ch);
cx25821video: cx25821_risc_buffer_upstream(dev, dev->pci,
0, bpl,
cx25821video:- "cx25821: Failed creating Video
Upstream Risc programs! \n");
cx25821video:+ "cx25821: Failed creating Video
Upstream Risc programs!\n");
cx25821video:@@ -587,10 +585,11 @@ int
cx25821_video_upstream_irq(struct cx25821_dev *dev, int chan_num,
cx25821video: u32 prog_cnt = cx_read(channel->gpcnt);
cx25821video: int_msk_tmp = cx_read(channel->int_msk);
cx25821video: cx_write(channel->int_msk, int_msk_tmp &
~_intr_msk);
cx25821video: cx_write(channel->int_stat, _intr_msk);
cx25821video:@@ -631,7 +630,7 @@ int cx25821_video_upstream_irq(struct
cx25821_dev *dev, int chan_num,
cx25821video:@@ -659,7 +658,7 @@ int cx25821_video_upstream_irq(struct
cx25821_dev *dev, int chan_num,
cx25821video: int_msk_tmp = cx_read(channel->int_msk);
cx25821video: cx_write(channel->int_msk, int_msk_tmp |=
_intr_msk);
cx25821video:@@ -684,17 +683,16 @@ static irqreturn_t
cx25821_upstream_irq(int irq, void *dev_id)
cx25821video: msk_stat = cx_read(sram_ch->int_mstat);
cx25821video: vid_status = cx_read(sram_ch->int_stat);
cx25821video: cx25821_video_upstream_irq(dev,
channel_num, vid_status);
cx25821video: cx25821_stop_upstream_video_ch1(dev);
cx25821video:@@ -713,19 +711,19 @@ void cx25821_set_pixelengine(struct
cx25821_dev *dev, struct sram_channel *ch,
cx25821video: cx_write(ch->vid_fmt_ctl, value);
cx25821video: cx_write(ch->vid_active_ctl1, width);
cx25821video: cx_write(ch->vid_active_ctl2, value);
cx25821video: cx_write(ch->vid_cdt_size, VID_CDT_SIZE >> 3);
cx25821video:@@ -737,21 +735,26 @@ int
cx25821_start_video_dma_upstream(struct cx25821_dev *dev,
cx25821video: tmp = cx_read(VID_CH_MODE_SEL);
cx25821video: cx_write(VID_CH_MODE_SEL, tmp | 0x1B0001FF);
cx25821video: cx_write(sram_ch->cmds_start + 0, dev-
>_dma_phys_addr);
cx25821video:- cx_write(sram_ch->cmds_start + 4, 0); /*
Risc IPC High 64 bits 63-32 */
cx25821video:+ cx_write(sram_ch->cmds_start + 4, 0);
cx25821video: cx_write(sram_ch->gpcnt_ctl, 3);
cx25821video: cx_write(sram_ch->int_stat, _intr_msk);
cx25821video: cx_set(PCI_INT_MSK, cx_read(PCI_INT_MSK) | (1 <<
sram_ch->irq_bit));
cx25821video: tmp = cx_read(sram_ch->int_msk);
cx25821video: cx_write(sram_ch->int_msk, tmp |= _intr_msk);
cx25821video:@@ -765,7 +768,7 @@ int
cx25821_start_video_dma_upstream(struct cx25821_dev *dev,
cx25821video: tmp = cx_read(sram_ch->dma_ctl);
cx25821video: cx_set(sram_ch->dma_ctl, tmp | FLD_VID_RISC_EN);
cx25821video:@@ -774,7 +777,7 @@ int
cx25821_start_video_dma_upstream(struct cx25821_dev *dev,
cx25821video: cx25821_dev_unregister(dev);
cx25821video:@@ -806,7 +809,9 @@ int
cx25821_vidupstream_init_ch1(struct cx25821_dev *dev, int
channel_select,
cx25821video: ("cx25821:
create_singlethread_workqueue() for Video FAILED!\n");
cx25821video: tmp = cx_read(VID_CH_MODE_SEL);
cx25821video: cx_write(VID_CH_MODE_SEL, tmp | 0x1B0001FF);
cx25821video:@@ -840,7 +845,7 @@ int
cx25821_vidupstream_init_ch1(struct cx25821_dev *dev, int
channel_select,
cx25821video:@@ -874,7 +879,7 @@ int
cx25821_vidupstream_init_ch1(struct cx25821_dev *dev, int
channel_select,
cx25821video: retval = cx25821_upstream_buffer_prepare(dev,
sram_ch, dev->_line_size);
cx25821video:@@ -887,7 +892,7 @@ int
cx25821_vidupstream_init_ch1(struct cx25821_dev *dev, int
channel_select,
cx25821video: cx25821_dev_unregister(dev);