Lines Matching refs:zr

76 zr36057_init_vfe (struct zoran *zr);
88 GPIO (struct zoran *zr, in GPIO() argument
112 post_office_wait (struct zoran *zr) in post_office_wait() argument
120 if ((por & ZR36057_POR_POTime) && !zr->card.gws_not_connected) { in post_office_wait()
122 dprintk(1, KERN_INFO "%s: pop timeout %08x\n", ZR_DEVNAME(zr), in post_office_wait()
131 post_office_write (struct zoran *zr, in post_office_write() argument
143 return post_office_wait(zr); in post_office_write()
147 post_office_read (struct zoran *zr, in post_office_read() argument
155 if (post_office_wait(zr) < 0) { in post_office_read()
167 dump_guests (struct zoran *zr) in dump_guests() argument
173 guest[i] = post_office_read(zr, i, 0); in dump_guests()
176 printk(KERN_INFO "%s: Guests:", ZR_DEVNAME(zr)); in dump_guests()
186 detect_guest_activity (struct zoran *zr) in detect_guest_activity() argument
191 dump_guests(zr); in detect_guest_activity()
193 ZR_DEVNAME(zr)); in detect_guest_activity()
195 guest0[i] = guest[i] = post_office_read(zr, i, 0); in detect_guest_activity()
205 res = post_office_read(zr, i, 0); in detect_guest_activity()
219 printk(KERN_INFO "%s: Guests:", ZR_DEVNAME(zr)); in detect_guest_activity()
226 printk(KERN_INFO "%s: No activity detected.\n", ZR_DEVNAME(zr)); in detect_guest_activity()
230 printk(KERN_INFO "%s: %6d: %d => 0x%02x\n", ZR_DEVNAME(zr), in detect_guest_activity()
240 jpeg_codec_sleep (struct zoran *zr, in jpeg_codec_sleep() argument
243 GPIO(zr, zr->card.gpio[ZR_GPIO_JPEG_SLEEP], !sleep); in jpeg_codec_sleep()
248 ZR_DEVNAME(zr), btread(ZR36057_GPPGCR1)); in jpeg_codec_sleep()
254 ZR_DEVNAME(zr), btread(ZR36057_GPPGCR1)); in jpeg_codec_sleep()
260 jpeg_codec_reset (struct zoran *zr) in jpeg_codec_reset() argument
263 jpeg_codec_sleep(zr, 0); in jpeg_codec_reset()
265 if (zr->card.gpcs[GPCS_JPEG_RESET] != 0xff) { in jpeg_codec_reset()
266 post_office_write(zr, zr->card.gpcs[GPCS_JPEG_RESET], 0, in jpeg_codec_reset()
270 GPIO(zr, zr->card.gpio[ZR_GPIO_JPEG_RESET], 0); in jpeg_codec_reset()
272 GPIO(zr, zr->card.gpio[ZR_GPIO_JPEG_RESET], 1); in jpeg_codec_reset()
289 zr36057_adjust_vfe (struct zoran *zr, in zr36057_adjust_vfe() argument
298 if ((reg & (1 << 10)) && zr->card.type != LML33R10) { in zr36057_adjust_vfe()
306 if ((zr->norm & V4L2_STD_NTSC) || in zr36057_adjust_vfe()
307 (zr->card.type == LML33R10 && in zr36057_adjust_vfe()
308 (zr->norm & V4L2_STD_PAL))) in zr36057_adjust_vfe()
313 if (!(reg & (1 << 10)) && zr->card.type != LML33R10) { in zr36057_adjust_vfe()
326 zr36057_set_vfe (struct zoran *zr, in zr36057_set_vfe() argument
341 tvn = zr->timing; in zr36057_set_vfe()
347 ZR_DEVNAME(zr), video_width, video_height); in zr36057_set_vfe()
353 ZR_DEVNAME(zr), video_width, video_height); in zr36057_set_vfe()
380 if (zr->card.vfe_pol.hsync_pol) in zr36057_set_vfe()
398 if (zr->card.vfe_pol.vsync_pol) in zr36057_set_vfe()
412 if (!(zr->norm & V4L2_STD_NTSC)) in zr36057_set_vfe()
437 if (zr->overlay_mask) { in zr36057_set_vfe()
443 reg = virt_to_bus(zr->overlay_mask); in zr36057_set_vfe()
445 reg = virt_to_bus(zr->overlay_mask + mask_line_size); in zr36057_set_vfe()
448 mask_line_size - (zr->overlay_settings.width + in zr36057_set_vfe()
456 zr36057_adjust_vfe(zr, zr->codec_mode); in zr36057_set_vfe()
464 zr36057_overlay (struct zoran *zr, in zr36057_overlay() argument
473 zr36057_set_vfe(zr, in zr36057_overlay()
474 zr->overlay_settings.width, in zr36057_overlay()
475 zr->overlay_settings.height, in zr36057_overlay()
476 zr->overlay_settings.format); in zr36057_overlay()
483 reg = (long) zr->vbuf_base + in zr36057_overlay()
484 zr->overlay_settings.x * in zr36057_overlay()
485 ((zr->overlay_settings.format->depth + 7) / 8) + in zr36057_overlay()
486 zr->overlay_settings.y * in zr36057_overlay()
487 zr->vbuf_bytesperline; in zr36057_overlay()
493 ZR_DEVNAME(zr)); in zr36057_overlay()
494 if (zr->overlay_settings.height > BUZ_MAX_HEIGHT / 2) in zr36057_overlay()
495 reg += zr->vbuf_bytesperline; in zr36057_overlay()
499 reg = zr->vbuf_bytesperline - in zr36057_overlay()
500 zr->overlay_settings.width * in zr36057_overlay()
501 ((zr->overlay_settings.format->depth + 7) / 8); in zr36057_overlay()
502 if (zr->overlay_settings.height > BUZ_MAX_HEIGHT / 2) in zr36057_overlay()
503 reg += zr->vbuf_bytesperline; in zr36057_overlay()
508 ZR_DEVNAME(zr)); in zr36057_overlay()
514 if (zr->overlay_settings.clipcount > 0) in zr36057_overlay()
532 struct zoran *zr = fh->zr; in write_overlay_mask() local
588 zr36057_set_memgrab (struct zoran *zr, in zr36057_set_memgrab() argument
603 ZR_DEVNAME(zr)); in zr36057_set_memgrab()
607 btor(zr->card.vsync_int, ZR36057_ICR); // SW in zr36057_set_memgrab()
613 zr36057_set_vfe(zr, zr->v4l_settings.width, in zr36057_set_memgrab()
614 zr->v4l_settings.height, in zr36057_set_memgrab()
615 zr->v4l_settings.format); in zr36057_set_memgrab()
617 zr->v4l_memgrab_active = 1; in zr36057_set_memgrab()
620 btand(~zr->card.vsync_int, ZR36057_ICR); // SW in zr36057_set_memgrab()
622 zr->v4l_memgrab_active = 0; in zr36057_set_memgrab()
623 zr->v4l_grab_frame = NO_GRAB_ACTIVE; in zr36057_set_memgrab()
626 if (zr->v4l_overlay_active) { in zr36057_set_memgrab()
627 zr36057_overlay(zr, 1); in zr36057_set_memgrab()
636 wait_grab_pending (struct zoran *zr) in wait_grab_pending() argument
642 if (!zr->v4l_memgrab_active) in wait_grab_pending()
645 wait_event_interruptible(zr->v4l_capq, in wait_grab_pending()
646 (zr->v4l_pend_tail == zr->v4l_pend_head)); in wait_grab_pending()
650 spin_lock_irqsave(&zr->spinlock, flags); in wait_grab_pending()
651 zr36057_set_memgrab(zr, 0); in wait_grab_pending()
652 spin_unlock_irqrestore(&zr->spinlock, flags); in wait_grab_pending()
664 set_frame (struct zoran *zr, in set_frame() argument
667 GPIO(zr, zr->card.gpio[ZR_GPIO_JPEG_FRAME], val); in set_frame()
671 set_videobus_dir (struct zoran *zr, in set_videobus_dir() argument
674 switch (zr->card.type) { in set_videobus_dir()
678 GPIO(zr, 5, val); in set_videobus_dir()
680 GPIO(zr, 5, 1); in set_videobus_dir()
683 GPIO(zr, zr->card.gpio[ZR_GPIO_VID_DIR], in set_videobus_dir()
684 zr->card.gpio_pol[ZR_GPIO_VID_DIR] ? !val : val); in set_videobus_dir()
690 init_jpeg_queue (struct zoran *zr) in init_jpeg_queue() argument
695 zr->jpg_que_head = 0; in init_jpeg_queue()
696 zr->jpg_dma_head = 0; in init_jpeg_queue()
697 zr->jpg_dma_tail = 0; in init_jpeg_queue()
698 zr->jpg_que_tail = 0; in init_jpeg_queue()
699 zr->jpg_seq_num = 0; in init_jpeg_queue()
700 zr->JPEG_error = 0; in init_jpeg_queue()
701 zr->num_errors = 0; in init_jpeg_queue()
702 zr->jpg_err_seq = 0; in init_jpeg_queue()
703 zr->jpg_err_shift = 0; in init_jpeg_queue()
704 zr->jpg_queued_num = 0; in init_jpeg_queue()
705 for (i = 0; i < zr->jpg_buffers.num_buffers; i++) { in init_jpeg_queue()
706 zr->jpg_buffers.buffer[i].state = BUZ_STATE_USER; /* nothing going on */ in init_jpeg_queue()
709 zr->stat_com[i] = cpu_to_le32(1); /* mark as unavailable to zr36057 */ in init_jpeg_queue()
714 zr36057_set_jpg (struct zoran *zr, in zr36057_set_jpg() argument
720 tvn = zr->timing; in zr36057_set_jpg()
750 if (zr->jpg_settings.field_per_buff == 1) in zr36057_set_jpg()
759 reg = ((zr->jpg_settings.img_y + tvn->VStart) << ZR36057_FVAP_NAY) | in zr36057_set_jpg()
760 (zr->jpg_settings.img_height << ZR36057_FVAP_PAY); in zr36057_set_jpg()
764 if (zr->card.vfe_pol.hsync_pol) in zr36057_set_jpg()
771 reg = ((zr->jpg_settings.img_x + in zr36057_set_jpg()
773 (zr->jpg_settings.img_width << ZR36057_FHAP_PAX); in zr36057_set_jpg()
777 if (zr->jpg_settings.odd_even) in zr36057_set_jpg()
788 reg = virt_to_bus(zr->stat_com); in zr36057_set_jpg()
797 if (zr->card.type != BUZ) in zr36057_set_jpg()
814 zr36057_adjust_vfe(zr, mode); in zr36057_set_jpg()
819 print_interrupts (struct zoran *zr) in print_interrupts() argument
823 printk(KERN_INFO "%s: interrupts received:", ZR_DEVNAME(zr)); in print_interrupts()
824 if ((res = zr->field_counter) < -1 || res > 1) { in print_interrupts()
827 if ((res = zr->intr_counter_GIRQ1) != 0) { in print_interrupts()
831 if ((res = zr->intr_counter_GIRQ0) != 0) { in print_interrupts()
835 if ((res = zr->intr_counter_CodRepIRQ) != 0) { in print_interrupts()
839 if ((res = zr->intr_counter_JPEGRepIRQ) != 0) { in print_interrupts()
843 if (zr->JPEG_max_missed) { in print_interrupts()
844 printk(" JPEG delays: max=%d min=%d", zr->JPEG_max_missed, in print_interrupts()
845 zr->JPEG_min_missed); in print_interrupts()
847 if (zr->END_event_missed) { in print_interrupts()
848 printk(" ENDs missed: %d", zr->END_event_missed); in print_interrupts()
851 printk(" queue_state=%ld/%ld/%ld/%ld", zr->jpg_que_tail, in print_interrupts()
852 zr->jpg_dma_tail, zr->jpg_dma_head, zr->jpg_que_head); in print_interrupts()
861 clear_interrupt_counters (struct zoran *zr) in clear_interrupt_counters() argument
863 zr->intr_counter_GIRQ1 = 0; in clear_interrupt_counters()
864 zr->intr_counter_GIRQ0 = 0; in clear_interrupt_counters()
865 zr->intr_counter_CodRepIRQ = 0; in clear_interrupt_counters()
866 zr->intr_counter_JPEGRepIRQ = 0; in clear_interrupt_counters()
867 zr->field_counter = 0; in clear_interrupt_counters()
868 zr->IRQ1_in = 0; in clear_interrupt_counters()
869 zr->IRQ1_out = 0; in clear_interrupt_counters()
870 zr->JPEG_in = 0; in clear_interrupt_counters()
871 zr->JPEG_out = 0; in clear_interrupt_counters()
872 zr->JPEG_0 = 0; in clear_interrupt_counters()
873 zr->JPEG_1 = 0; in clear_interrupt_counters()
874 zr->END_event_missed = 0; in clear_interrupt_counters()
875 zr->JPEG_missed = 0; in clear_interrupt_counters()
876 zr->JPEG_max_missed = 0; in clear_interrupt_counters()
877 zr->JPEG_min_missed = 0x7fffffff; in clear_interrupt_counters()
881 count_reset_interrupt (struct zoran *zr) in count_reset_interrupt() argument
888 zr->intr_counter_GIRQ1++; in count_reset_interrupt()
892 zr->intr_counter_GIRQ0++; in count_reset_interrupt()
896 zr->intr_counter_CodRepIRQ++; in count_reset_interrupt()
900 zr->intr_counter_JPEGRepIRQ++; in count_reset_interrupt()
907 jpeg_start (struct zoran *zr) in jpeg_start() argument
911 zr->frame_num = 0; in jpeg_start()
923 btwrite(zr->card.jpeg_int | in jpeg_start()
928 set_frame(zr, 0); // \FRAME in jpeg_start()
931 reg = (zr->card.gpcs[1] << ZR36057_JCGI_JPEGuestID) | in jpeg_start()
935 if (zr->card.video_vfe == CODEC_TYPE_ZR36016 && in jpeg_start()
936 zr->card.video_codec == CODEC_TYPE_ZR36050) { in jpeg_start()
938 if (zr->vfe) in jpeg_start()
939 zr36016_write(zr->vfe, 0, 1); in jpeg_start()
942 post_office_write(zr, 0, 0, 0); in jpeg_start()
952 set_frame(zr, 1); // /FRAME in jpeg_start()
954 dprintk(3, KERN_DEBUG "%s: jpeg_start\n", ZR_DEVNAME(zr)); in jpeg_start()
958 zr36057_enable_jpg (struct zoran *zr, in zr36057_enable_jpg() argument
963 zr->jpg_buffers.buffer_size / zr->jpg_settings.field_per_buff; in zr36057_enable_jpg()
965 zr->codec_mode = mode; in zr36057_enable_jpg()
967 cap.x = zr->jpg_settings.img_x; in zr36057_enable_jpg()
968 cap.y = zr->jpg_settings.img_y; in zr36057_enable_jpg()
969 cap.width = zr->jpg_settings.img_width; in zr36057_enable_jpg()
970 cap.height = zr->jpg_settings.img_height; in zr36057_enable_jpg()
972 zr->jpg_settings.HorDcm | (zr->jpg_settings.VerDcm << 8); in zr36057_enable_jpg()
973 cap.quality = zr->jpg_settings.jpg_comp.quality; in zr36057_enable_jpg()
984 set_videobus_dir(zr, 0); in zr36057_enable_jpg()
985 decoder_call(zr, video, s_stream, 1); in zr36057_enable_jpg()
986 encoder_call(zr, video, s_routing, 0, 0, 0); in zr36057_enable_jpg()
989 jpeg_codec_sleep(zr, 0); in zr36057_enable_jpg()
992 app.appn = zr->jpg_settings.jpg_comp.APPn; in zr36057_enable_jpg()
993 app.len = zr->jpg_settings.jpg_comp.APP_len; in zr36057_enable_jpg()
994 memcpy(app.data, zr->jpg_settings.jpg_comp.APP_data, 60); in zr36057_enable_jpg()
995 zr->codec->control(zr->codec, CODEC_S_JPEG_APP_DATA, in zr36057_enable_jpg()
998 com.len = zr->jpg_settings.jpg_comp.COM_len; in zr36057_enable_jpg()
999 memcpy(com.data, zr->jpg_settings.jpg_comp.COM_data, 60); in zr36057_enable_jpg()
1000 zr->codec->control(zr->codec, CODEC_S_JPEG_COM_DATA, in zr36057_enable_jpg()
1004 zr->codec->control(zr->codec, CODEC_S_JPEG_TDS_BYTE, in zr36057_enable_jpg()
1006 zr->codec->set_video(zr->codec, zr->timing, &cap, in zr36057_enable_jpg()
1007 &zr->card.vfe_pol); in zr36057_enable_jpg()
1008 zr->codec->set_mode(zr->codec, CODEC_DO_COMPRESSION); in zr36057_enable_jpg()
1011 if (zr->vfe) { in zr36057_enable_jpg()
1012 zr->vfe->control(zr->vfe, CODEC_S_JPEG_TDS_BYTE, in zr36057_enable_jpg()
1014 zr->vfe->set_video(zr->vfe, zr->timing, &cap, in zr36057_enable_jpg()
1015 &zr->card.vfe_pol); in zr36057_enable_jpg()
1016 zr->vfe->set_mode(zr->vfe, CODEC_DO_COMPRESSION); in zr36057_enable_jpg()
1019 init_jpeg_queue(zr); in zr36057_enable_jpg()
1020 zr36057_set_jpg(zr, mode); // \P_Reset, ... Video param, FIFO in zr36057_enable_jpg()
1022 clear_interrupt_counters(zr); in zr36057_enable_jpg()
1024 ZR_DEVNAME(zr)); in zr36057_enable_jpg()
1032 decoder_call(zr, video, s_stream, 0); in zr36057_enable_jpg()
1033 set_videobus_dir(zr, 1); in zr36057_enable_jpg()
1034 encoder_call(zr, video, s_routing, 1, 0, 0); in zr36057_enable_jpg()
1037 jpeg_codec_sleep(zr, 0); in zr36057_enable_jpg()
1039 if (zr->vfe) { in zr36057_enable_jpg()
1040 zr->vfe->set_video(zr->vfe, zr->timing, &cap, in zr36057_enable_jpg()
1041 &zr->card.vfe_pol); in zr36057_enable_jpg()
1042 zr->vfe->set_mode(zr->vfe, CODEC_DO_EXPANSION); in zr36057_enable_jpg()
1045 zr->codec->set_video(zr->codec, zr->timing, &cap, in zr36057_enable_jpg()
1046 &zr->card.vfe_pol); in zr36057_enable_jpg()
1047 zr->codec->set_mode(zr->codec, CODEC_DO_EXPANSION); in zr36057_enable_jpg()
1049 init_jpeg_queue(zr); in zr36057_enable_jpg()
1050 zr36057_set_jpg(zr, mode); // \P_Reset, ... Video param, FIFO in zr36057_enable_jpg()
1052 clear_interrupt_counters(zr); in zr36057_enable_jpg()
1054 ZR_DEVNAME(zr)); in zr36057_enable_jpg()
1060 btand(~(zr->card.jpeg_int | ZR36057_ICR_JPEGRepIRQ), in zr36057_enable_jpg()
1062 btwrite(zr->card.jpeg_int | ZR36057_ICR_JPEGRepIRQ, in zr36057_enable_jpg()
1068 set_videobus_dir(zr, 0); in zr36057_enable_jpg()
1069 set_frame(zr, 1); // /FRAME in zr36057_enable_jpg()
1074 jpeg_codec_reset(zr); in zr36057_enable_jpg()
1075 jpeg_codec_sleep(zr, 1); in zr36057_enable_jpg()
1076 zr36057_adjust_vfe(zr, mode); in zr36057_enable_jpg()
1078 decoder_call(zr, video, s_stream, 1); in zr36057_enable_jpg()
1079 encoder_call(zr, video, s_routing, 0, 0, 0); in zr36057_enable_jpg()
1081 dprintk(2, KERN_INFO "%s: enable_jpg(IDLE)\n", ZR_DEVNAME(zr)); in zr36057_enable_jpg()
1089 zoran_feed_stat_com (struct zoran *zr) in zoran_feed_stat_com() argument
1096 (zr->jpg_settings.TmpDcm == in zoran_feed_stat_com()
1099 while ((zr->jpg_dma_head - zr->jpg_dma_tail) < max_stat_com && in zoran_feed_stat_com()
1100 zr->jpg_dma_head < zr->jpg_que_head) { in zoran_feed_stat_com()
1102 frame = zr->jpg_pend[zr->jpg_dma_head & BUZ_MASK_FRAME]; in zoran_feed_stat_com()
1103 if (zr->jpg_settings.TmpDcm == 1) { in zoran_feed_stat_com()
1105 i = (zr->jpg_dma_head - in zoran_feed_stat_com()
1106 zr->jpg_err_shift) & BUZ_MASK_STAT_COM; in zoran_feed_stat_com()
1107 if (!(zr->stat_com[i] & cpu_to_le32(1))) in zoran_feed_stat_com()
1109 zr->stat_com[i] = in zoran_feed_stat_com()
1110 cpu_to_le32(zr->jpg_buffers.buffer[frame].jpg.frag_tab_bus); in zoran_feed_stat_com()
1113 i = ((zr->jpg_dma_head - in zoran_feed_stat_com()
1114 zr->jpg_err_shift) & 1) * 2; in zoran_feed_stat_com()
1115 if (!(zr->stat_com[i] & cpu_to_le32(1))) in zoran_feed_stat_com()
1117 zr->stat_com[i] = in zoran_feed_stat_com()
1118 cpu_to_le32(zr->jpg_buffers.buffer[frame].jpg.frag_tab_bus); in zoran_feed_stat_com()
1119 zr->stat_com[i + 1] = in zoran_feed_stat_com()
1120 cpu_to_le32(zr->jpg_buffers.buffer[frame].jpg.frag_tab_bus); in zoran_feed_stat_com()
1122 zr->jpg_buffers.buffer[frame].state = BUZ_STATE_DMA; in zoran_feed_stat_com()
1123 zr->jpg_dma_head++; in zoran_feed_stat_com()
1126 if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS) in zoran_feed_stat_com()
1127 zr->jpg_queued_num++; in zoran_feed_stat_com()
1132 zoran_reap_stat_com (struct zoran *zr) in zoran_reap_stat_com() argument
1146 if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS) { in zoran_reap_stat_com()
1147 zr->jpg_seq_num++; in zoran_reap_stat_com()
1149 while (zr->jpg_dma_tail < zr->jpg_dma_head) { in zoran_reap_stat_com()
1150 if (zr->jpg_settings.TmpDcm == 1) in zoran_reap_stat_com()
1151 i = (zr->jpg_dma_tail - in zoran_reap_stat_com()
1152 zr->jpg_err_shift) & BUZ_MASK_STAT_COM; in zoran_reap_stat_com()
1154 i = ((zr->jpg_dma_tail - in zoran_reap_stat_com()
1155 zr->jpg_err_shift) & 1) * 2 + 1; in zoran_reap_stat_com()
1157 stat_com = le32_to_cpu(zr->stat_com[i]); in zoran_reap_stat_com()
1162 frame = zr->jpg_pend[zr->jpg_dma_tail & BUZ_MASK_FRAME]; in zoran_reap_stat_com()
1163 buffer = &zr->jpg_buffers.buffer[frame]; in zoran_reap_stat_com()
1166 if (zr->codec_mode == BUZ_MODE_MOTION_COMPRESS) { in zoran_reap_stat_com()
1171 seq = ((stat_com >> 24) + zr->jpg_err_seq) & 0xff; in zoran_reap_stat_com()
1172 dif = (seq - zr->jpg_seq_num) & 0xff; in zoran_reap_stat_com()
1173 zr->jpg_seq_num += dif; in zoran_reap_stat_com()
1178 zr->jpg_settings.TmpDcm == in zoran_reap_stat_com()
1179 2 ? (zr->jpg_seq_num >> 1) : zr->jpg_seq_num; in zoran_reap_stat_com()
1182 zr->jpg_dma_tail++; in zoran_reap_stat_com()
1186 static void zoran_restart(struct zoran *zr) in zoran_restart() argument
1192 if (zr->codec_mode == BUZ_MODE_MOTION_COMPRESS) { in zoran_restart()
1193 decoder_call(zr, video, g_input_status, &status); in zoran_restart()
1199 if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS || in zoran_restart()
1202 jpeg_codec_reset(zr); in zoran_restart()
1203 zr->codec->set_mode(zr->codec, mode); in zoran_restart()
1204 zr36057_set_jpg(zr, zr->codec_mode); in zoran_restart()
1205 jpeg_start(zr); in zoran_restart()
1207 if (zr->num_errors <= 8) in zoran_restart()
1209 ZR_DEVNAME(zr)); in zoran_restart()
1211 zr->JPEG_missed = 0; in zoran_restart()
1212 zr->JPEG_error = 2; in zoran_restart()
1218 error_handler (struct zoran *zr, in error_handler() argument
1225 if (zr->codec_mode != BUZ_MODE_MOTION_COMPRESS && in error_handler()
1226 zr->codec_mode != BUZ_MODE_MOTION_DECOMPRESS) { in error_handler()
1231 zr->codec_mode == BUZ_MODE_MOTION_COMPRESS && in error_handler()
1232 zr->jpg_dma_tail - zr->jpg_que_tail >= zr->jpg_buffers.num_buffers) { in error_handler()
1234 zoran_reap_stat_com(zr); in error_handler()
1235 zoran_feed_stat_com(zr); in error_handler()
1236 wake_up_interruptible(&zr->jpg_capq); in error_handler()
1237 zr->JPEG_missed = 0; in error_handler()
1241 if (zr->JPEG_error == 1) { in error_handler()
1242 zoran_restart(zr); in error_handler()
1262 stat = stat | (post_office_read(zr, 7, 0) & 3) << 8; in error_handler()
1265 jpeg_codec_reset(zr); in error_handler()
1266 jpeg_codec_sleep(zr, 1); in error_handler()
1267 zr->JPEG_error = 1; in error_handler()
1268 zr->num_errors++; in error_handler()
1271 if (zr36067_debug > 1 && zr->num_errors <= 8) { in error_handler()
1275 frame = zr->jpg_pend[zr->jpg_dma_tail & BUZ_MASK_FRAME]; in error_handler()
1278 ZR_DEVNAME(zr), stat, zr->last_isr, in error_handler()
1279 zr->jpg_que_tail, zr->jpg_dma_tail, in error_handler()
1280 zr->jpg_dma_head, zr->jpg_que_head, in error_handler()
1281 zr->jpg_seq_num, frame); in error_handler()
1284 for (i = 0; i < zr->jpg_buffers.num_buffers; i++) { in error_handler()
1285 if (le32_to_cpu(zr->stat_com[j]) == zr->jpg_buffers.buffer[i].jpg.frag_tab_bus) in error_handler()
1292 if (zr->jpg_settings.TmpDcm == 1) in error_handler()
1293 i = (zr->jpg_dma_tail - zr->jpg_err_shift) & BUZ_MASK_STAT_COM; in error_handler()
1295 i = ((zr->jpg_dma_tail - zr->jpg_err_shift) & 1) * 2; in error_handler()
1296 if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS) { in error_handler()
1298 zr->stat_com[i] |= cpu_to_le32(1); in error_handler()
1299 if (zr->jpg_settings.TmpDcm != 1) in error_handler()
1300 zr->stat_com[i + 1] |= cpu_to_le32(1); in error_handler()
1302 zoran_reap_stat_com(zr); in error_handler()
1303 zoran_feed_stat_com(zr); in error_handler()
1304 wake_up_interruptible(&zr->jpg_capq); in error_handler()
1306 if (zr->jpg_settings.TmpDcm == 1) in error_handler()
1307 i = (zr->jpg_dma_tail - zr->jpg_err_shift) & BUZ_MASK_STAT_COM; in error_handler()
1309 i = ((zr->jpg_dma_tail - zr->jpg_err_shift) & 1) * 2; in error_handler()
1320 memcpy(bus_addr, zr->stat_com, sizeof(bus_addr)); in error_handler()
1323 zr->stat_com[j] = bus_addr[(i + j) & BUZ_MASK_STAT_COM]; in error_handler()
1325 zr->jpg_err_shift += i; in error_handler()
1326 zr->jpg_err_shift &= BUZ_MASK_STAT_COM; in error_handler()
1328 if (zr->codec_mode == BUZ_MODE_MOTION_COMPRESS) in error_handler()
1329 zr->jpg_err_seq = zr->jpg_seq_num; /* + 1; */ in error_handler()
1330 zoran_restart(zr); in error_handler()
1339 struct zoran *zr; in zoran_irq() local
1342 zr = dev_id; in zoran_irq()
1345 if (zr->testing) { in zoran_irq()
1347 spin_lock_irqsave(&zr->spinlock, flags); in zoran_irq()
1348 while ((stat = count_reset_interrupt(zr))) { in zoran_irq()
1354 ZR_DEVNAME(zr), stat); in zoran_irq()
1355 wake_up_interruptible(&zr->test_q); in zoran_irq()
1358 zr->last_isr = stat; in zoran_irq()
1359 spin_unlock_irqrestore(&zr->spinlock, flags); in zoran_irq()
1363 spin_lock_irqsave(&zr->spinlock, flags); in zoran_irq()
1366 stat = count_reset_interrupt(zr); in zoran_irq()
1375 if (astat & zr->card.vsync_int) { // SW in zoran_irq()
1377 if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS || in zoran_irq()
1378 zr->codec_mode == BUZ_MODE_MOTION_COMPRESS) { in zoran_irq()
1380 zr->JPEG_missed++; in zoran_irq()
1387 if (zr->v4l_memgrab_active) { in zoran_irq()
1393 ZR_DEVNAME(zr)); in zoran_irq()
1395 if (zr->v4l_grab_frame != NO_GRAB_ACTIVE) { in zoran_irq()
1400 zr->v4l_buffers.buffer[zr->v4l_grab_frame].state = BUZ_STATE_DONE; in zoran_irq()
1401 zr->v4l_buffers.buffer[zr->v4l_grab_frame].bs.seq = zr->v4l_grab_seq; in zoran_irq()
1402 v4l2_get_timestamp(&zr->v4l_buffers.buffer[zr->v4l_grab_frame].bs.timestamp); in zoran_irq()
1403 zr->v4l_grab_frame = NO_GRAB_ACTIVE; in zoran_irq()
1404 zr->v4l_pend_tail++; in zoran_irq()
1408 if (zr->v4l_grab_frame == NO_GRAB_ACTIVE) in zoran_irq()
1409 wake_up_interruptible(&zr->v4l_capq); in zoran_irq()
1413 if (zr->v4l_grab_frame == NO_GRAB_ACTIVE && in zoran_irq()
1414 zr->v4l_pend_tail != zr->v4l_pend_head) { in zoran_irq()
1415 int frame = zr->v4l_pend[zr->v4l_pend_tail & V4L_MASK_FRAME]; in zoran_irq()
1418 zr->v4l_grab_frame = frame; in zoran_irq()
1424 reg = zr->v4l_buffers.buffer[frame].v4l.fbuffer_bus; in zoran_irq()
1426 if (zr->v4l_settings.height > BUZ_MAX_HEIGHT / 2) in zoran_irq()
1427 reg += zr->v4l_settings.bytesperline; in zoran_irq()
1432 if (zr->v4l_settings.height > BUZ_MAX_HEIGHT / 2) in zoran_irq()
1433 reg += zr->v4l_settings.bytesperline; in zoran_irq()
1447 zr->v4l_grab_seq++; in zoran_irq()
1451 zr->intr_counter_CodRepIRQ++; in zoran_irq()
1453 ZR_DEVNAME(zr))); in zoran_irq()
1460 (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS || in zoran_irq()
1461 zr->codec_mode == BUZ_MODE_MOTION_COMPRESS)) { in zoran_irq()
1462 if (zr36067_debug > 1 && (!zr->frame_num || zr->JPEG_error)) { in zoran_irq()
1468 ZR_DEVNAME(zr), stat, in zoran_irq()
1469 zr->jpg_settings.odd_even, in zoran_irq()
1470 zr->jpg_settings.field_per_buff, in zoran_irq()
1471 zr->JPEG_missed); in zoran_irq()
1474 sv[i] = le32_to_cpu(zr->stat_com[i]) & 1 ? '1' : '0'; in zoran_irq()
1478 ZR_DEVNAME(zr), sv, in zoran_irq()
1479 zr->jpg_que_tail, in zoran_irq()
1480 zr->jpg_dma_tail, in zoran_irq()
1481 zr->jpg_dma_head, in zoran_irq()
1482 zr->jpg_que_head); in zoran_irq()
1485 if (zr->JPEG_missed > zr->JPEG_max_missed) in zoran_irq()
1486 zr->JPEG_max_missed = zr->JPEG_missed; in zoran_irq()
1487 if (zr->JPEG_missed < zr->JPEG_min_missed) in zoran_irq()
1488 zr->JPEG_min_missed = zr->JPEG_missed; in zoran_irq()
1491 if (zr36067_debug > 2 && zr->frame_num < 6) { in zoran_irq()
1495 ZR_DEVNAME(zr), zr->jpg_seq_num); in zoran_irq()
1498 le32_to_cpu(zr->stat_com[i])); in zoran_irq()
1502 zr->frame_num++; in zoran_irq()
1503 zr->JPEG_missed = 0; in zoran_irq()
1504 zr->JPEG_error = 0; in zoran_irq()
1505 zoran_reap_stat_com(zr); in zoran_irq()
1506 zoran_feed_stat_com(zr); in zoran_irq()
1507 wake_up_interruptible(&zr->jpg_capq); in zoran_irq()
1512 if ((astat & zr->card.jpeg_int) || in zoran_irq()
1513 zr->JPEG_missed > 25 || in zoran_irq()
1514 zr->JPEG_error == 1 || in zoran_irq()
1515 ((zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS) && in zoran_irq()
1516 (zr->frame_num && (zr->JPEG_missed > zr->jpg_settings.field_per_buff)))) { in zoran_irq()
1517 error_handler(zr, astat, stat); in zoran_irq()
1523 ZR_DEVNAME(zr), count); in zoran_irq()
1529 ZR_DEVNAME(zr)); in zoran_irq()
1533 zr->last_isr = stat; in zoran_irq()
1535 spin_unlock_irqrestore(&zr->spinlock, flags); in zoran_irq()
1541 zoran_set_pci_master (struct zoran *zr, in zoran_set_pci_master() argument
1545 pci_set_master(zr->pci_dev); in zoran_set_pci_master()
1549 pci_read_config_word(zr->pci_dev, PCI_COMMAND, &command); in zoran_set_pci_master()
1551 pci_write_config_word(zr->pci_dev, PCI_COMMAND, command); in zoran_set_pci_master()
1556 zoran_init_hardware (struct zoran *zr) in zoran_init_hardware() argument
1559 zoran_set_pci_master(zr, 1); in zoran_init_hardware()
1562 if (zr->card.init) { in zoran_init_hardware()
1563 zr->card.init(zr); in zoran_init_hardware()
1566 decoder_call(zr, core, init, 0); in zoran_init_hardware()
1567 decoder_call(zr, video, s_std, zr->norm); in zoran_init_hardware()
1568 decoder_call(zr, video, s_routing, in zoran_init_hardware()
1569 zr->card.input[zr->input].muxsel, 0, 0); in zoran_init_hardware()
1571 encoder_call(zr, core, init, 0); in zoran_init_hardware()
1572 encoder_call(zr, video, s_std_output, zr->norm); in zoran_init_hardware()
1573 encoder_call(zr, video, s_routing, 0, 0, 0); in zoran_init_hardware()
1576 jpeg_codec_sleep(zr, 1); in zoran_init_hardware()
1577 jpeg_codec_sleep(zr, 0); in zoran_init_hardware()
1583 zr36057_init_vfe(zr); in zoran_init_hardware()
1585 zr36057_enable_jpg(zr, BUZ_MODE_IDLE); in zoran_init_hardware()
1591 zr36057_restart (struct zoran *zr) in zr36057_restart() argument
1612 zr36057_init_vfe (struct zoran *zr) in zr36057_init_vfe() argument