Lines Matching refs:zr
75 zr36057_init_vfe (struct zoran *zr);
87 GPIO (struct zoran *zr, in GPIO() argument
111 post_office_wait (struct zoran *zr) in post_office_wait() argument
119 if ((por & ZR36057_POR_POTime) && !zr->card.gws_not_connected) { in post_office_wait()
121 dprintk(1, KERN_INFO "%s: pop timeout %08x\n", ZR_DEVNAME(zr), in post_office_wait()
130 post_office_write (struct zoran *zr, in post_office_write() argument
142 return post_office_wait(zr); in post_office_write()
146 post_office_read (struct zoran *zr, in post_office_read() argument
154 if (post_office_wait(zr) < 0) { in post_office_read()
166 dump_guests (struct zoran *zr) in dump_guests() argument
172 guest[i] = post_office_read(zr, i, 0); in dump_guests()
175 printk(KERN_INFO "%s: Guests:", ZR_DEVNAME(zr)); in dump_guests()
194 detect_guest_activity (struct zoran *zr) in detect_guest_activity() argument
199 dump_guests(zr); in detect_guest_activity()
201 ZR_DEVNAME(zr)); in detect_guest_activity()
203 guest0[i] = guest[i] = post_office_read(zr, i, 0); in detect_guest_activity()
213 res = post_office_read(zr, i, 0); in detect_guest_activity()
227 printk(KERN_INFO "%s: Guests:", ZR_DEVNAME(zr)); in detect_guest_activity()
234 printk(KERN_INFO "%s: No activity detected.\n", ZR_DEVNAME(zr)); in detect_guest_activity()
238 printk(KERN_INFO "%s: %6d: %d => 0x%02x\n", ZR_DEVNAME(zr), in detect_guest_activity()
248 jpeg_codec_sleep (struct zoran *zr, in jpeg_codec_sleep() argument
251 GPIO(zr, zr->card.gpio[ZR_GPIO_JPEG_SLEEP], !sleep); in jpeg_codec_sleep()
256 ZR_DEVNAME(zr), btread(ZR36057_GPPGCR1)); in jpeg_codec_sleep()
262 ZR_DEVNAME(zr), btread(ZR36057_GPPGCR1)); in jpeg_codec_sleep()
268 jpeg_codec_reset (struct zoran *zr) in jpeg_codec_reset() argument
271 jpeg_codec_sleep(zr, 0); in jpeg_codec_reset()
273 if (zr->card.gpcs[GPCS_JPEG_RESET] != 0xff) { in jpeg_codec_reset()
274 post_office_write(zr, zr->card.gpcs[GPCS_JPEG_RESET], 0, in jpeg_codec_reset()
278 GPIO(zr, zr->card.gpio[ZR_GPIO_JPEG_RESET], 0); in jpeg_codec_reset()
280 GPIO(zr, zr->card.gpio[ZR_GPIO_JPEG_RESET], 1); in jpeg_codec_reset()
297 zr36057_adjust_vfe (struct zoran *zr, in zr36057_adjust_vfe() argument
306 if ((reg & (1 << 10)) && zr->card.type != LML33R10) { in zr36057_adjust_vfe()
314 if ((zr->norm & V4L2_STD_NTSC) || in zr36057_adjust_vfe()
315 (zr->card.type == LML33R10 && in zr36057_adjust_vfe()
316 (zr->norm & V4L2_STD_PAL))) in zr36057_adjust_vfe()
321 if (!(reg & (1 << 10)) && zr->card.type != LML33R10) { in zr36057_adjust_vfe()
334 zr36057_set_vfe (struct zoran *zr, in zr36057_set_vfe() argument
349 tvn = zr->timing; in zr36057_set_vfe()
355 ZR_DEVNAME(zr), video_width, video_height); in zr36057_set_vfe()
361 ZR_DEVNAME(zr), video_width, video_height); in zr36057_set_vfe()
388 if (zr->card.vfe_pol.hsync_pol) in zr36057_set_vfe()
406 if (zr->card.vfe_pol.vsync_pol) in zr36057_set_vfe()
420 if (!(zr->norm & V4L2_STD_NTSC)) in zr36057_set_vfe()
445 if (zr->overlay_mask) { in zr36057_set_vfe()
451 reg = virt_to_bus(zr->overlay_mask); in zr36057_set_vfe()
453 reg = virt_to_bus(zr->overlay_mask + mask_line_size); in zr36057_set_vfe()
456 mask_line_size - (zr->overlay_settings.width + in zr36057_set_vfe()
464 zr36057_adjust_vfe(zr, zr->codec_mode); in zr36057_set_vfe()
472 zr36057_overlay (struct zoran *zr, in zr36057_overlay() argument
481 zr36057_set_vfe(zr, in zr36057_overlay()
482 zr->overlay_settings.width, in zr36057_overlay()
483 zr->overlay_settings.height, in zr36057_overlay()
484 zr->overlay_settings.format); in zr36057_overlay()
491 reg = (long) zr->vbuf_base + in zr36057_overlay()
492 zr->overlay_settings.x * in zr36057_overlay()
493 ((zr->overlay_settings.format->depth + 7) / 8) + in zr36057_overlay()
494 zr->overlay_settings.y * in zr36057_overlay()
495 zr->vbuf_bytesperline; in zr36057_overlay()
501 ZR_DEVNAME(zr)); in zr36057_overlay()
502 if (zr->overlay_settings.height > BUZ_MAX_HEIGHT / 2) in zr36057_overlay()
503 reg += zr->vbuf_bytesperline; in zr36057_overlay()
507 reg = zr->vbuf_bytesperline - in zr36057_overlay()
508 zr->overlay_settings.width * in zr36057_overlay()
509 ((zr->overlay_settings.format->depth + 7) / 8); in zr36057_overlay()
510 if (zr->overlay_settings.height > BUZ_MAX_HEIGHT / 2) in zr36057_overlay()
511 reg += zr->vbuf_bytesperline; in zr36057_overlay()
516 ZR_DEVNAME(zr)); in zr36057_overlay()
522 if (zr->overlay_settings.clipcount > 0) in zr36057_overlay()
540 struct zoran *zr = fh->zr; in write_overlay_mask() local
596 zr36057_set_memgrab (struct zoran *zr, in zr36057_set_memgrab() argument
611 ZR_DEVNAME(zr)); in zr36057_set_memgrab()
615 btor(zr->card.vsync_int, ZR36057_ICR); // SW in zr36057_set_memgrab()
621 zr36057_set_vfe(zr, zr->v4l_settings.width, in zr36057_set_memgrab()
622 zr->v4l_settings.height, in zr36057_set_memgrab()
623 zr->v4l_settings.format); in zr36057_set_memgrab()
625 zr->v4l_memgrab_active = 1; in zr36057_set_memgrab()
628 btand(~zr->card.vsync_int, ZR36057_ICR); // SW in zr36057_set_memgrab()
630 zr->v4l_memgrab_active = 0; in zr36057_set_memgrab()
631 zr->v4l_grab_frame = NO_GRAB_ACTIVE; in zr36057_set_memgrab()
634 if (zr->v4l_overlay_active) { in zr36057_set_memgrab()
635 zr36057_overlay(zr, 1); in zr36057_set_memgrab()
644 wait_grab_pending (struct zoran *zr) in wait_grab_pending() argument
650 if (!zr->v4l_memgrab_active) in wait_grab_pending()
653 wait_event_interruptible(zr->v4l_capq, in wait_grab_pending()
654 (zr->v4l_pend_tail == zr->v4l_pend_head)); in wait_grab_pending()
658 spin_lock_irqsave(&zr->spinlock, flags); in wait_grab_pending()
659 zr36057_set_memgrab(zr, 0); in wait_grab_pending()
660 spin_unlock_irqrestore(&zr->spinlock, flags); in wait_grab_pending()
672 set_frame (struct zoran *zr, in set_frame() argument
675 GPIO(zr, zr->card.gpio[ZR_GPIO_JPEG_FRAME], val); in set_frame()
679 set_videobus_dir (struct zoran *zr, in set_videobus_dir() argument
682 switch (zr->card.type) { in set_videobus_dir()
686 GPIO(zr, 5, val); in set_videobus_dir()
688 GPIO(zr, 5, 1); in set_videobus_dir()
691 GPIO(zr, zr->card.gpio[ZR_GPIO_VID_DIR], in set_videobus_dir()
692 zr->card.gpio_pol[ZR_GPIO_VID_DIR] ? !val : val); in set_videobus_dir()
698 init_jpeg_queue (struct zoran *zr) in init_jpeg_queue() argument
703 zr->jpg_que_head = 0; in init_jpeg_queue()
704 zr->jpg_dma_head = 0; in init_jpeg_queue()
705 zr->jpg_dma_tail = 0; in init_jpeg_queue()
706 zr->jpg_que_tail = 0; in init_jpeg_queue()
707 zr->jpg_seq_num = 0; in init_jpeg_queue()
708 zr->JPEG_error = 0; in init_jpeg_queue()
709 zr->num_errors = 0; in init_jpeg_queue()
710 zr->jpg_err_seq = 0; in init_jpeg_queue()
711 zr->jpg_err_shift = 0; in init_jpeg_queue()
712 zr->jpg_queued_num = 0; in init_jpeg_queue()
713 for (i = 0; i < zr->jpg_buffers.num_buffers; i++) { in init_jpeg_queue()
714 zr->jpg_buffers.buffer[i].state = BUZ_STATE_USER; /* nothing going on */ in init_jpeg_queue()
717 zr->stat_com[i] = cpu_to_le32(1); /* mark as unavailable to zr36057 */ in init_jpeg_queue()
722 zr36057_set_jpg (struct zoran *zr, in zr36057_set_jpg() argument
728 tvn = zr->timing; in zr36057_set_jpg()
758 if (zr->jpg_settings.field_per_buff == 1) in zr36057_set_jpg()
767 reg = ((zr->jpg_settings.img_y + tvn->VStart) << ZR36057_FVAP_NAY) | in zr36057_set_jpg()
768 (zr->jpg_settings.img_height << ZR36057_FVAP_PAY); in zr36057_set_jpg()
772 if (zr->card.vfe_pol.hsync_pol) in zr36057_set_jpg()
779 reg = ((zr->jpg_settings.img_x + in zr36057_set_jpg()
781 (zr->jpg_settings.img_width << ZR36057_FHAP_PAX); in zr36057_set_jpg()
785 if (zr->jpg_settings.odd_even) in zr36057_set_jpg()
796 reg = virt_to_bus(zr->stat_com); in zr36057_set_jpg()
805 if (zr->card.type != BUZ) in zr36057_set_jpg()
822 zr36057_adjust_vfe(zr, mode); in zr36057_set_jpg()
827 print_interrupts (struct zoran *zr) in print_interrupts() argument
831 printk(KERN_INFO "%s: interrupts received:", ZR_DEVNAME(zr)); in print_interrupts()
832 if ((res = zr->field_counter) < -1 || res > 1) { in print_interrupts()
835 if ((res = zr->intr_counter_GIRQ1) != 0) { in print_interrupts()
839 if ((res = zr->intr_counter_GIRQ0) != 0) { in print_interrupts()
843 if ((res = zr->intr_counter_CodRepIRQ) != 0) { in print_interrupts()
847 if ((res = zr->intr_counter_JPEGRepIRQ) != 0) { in print_interrupts()
851 if (zr->JPEG_max_missed) { in print_interrupts()
852 printk(" JPEG delays: max=%d min=%d", zr->JPEG_max_missed, in print_interrupts()
853 zr->JPEG_min_missed); in print_interrupts()
855 if (zr->END_event_missed) { in print_interrupts()
856 printk(" ENDs missed: %d", zr->END_event_missed); in print_interrupts()
859 printk(" queue_state=%ld/%ld/%ld/%ld", zr->jpg_que_tail, in print_interrupts()
860 zr->jpg_dma_tail, zr->jpg_dma_head, zr->jpg_que_head); in print_interrupts()
869 clear_interrupt_counters (struct zoran *zr) in clear_interrupt_counters() argument
871 zr->intr_counter_GIRQ1 = 0; in clear_interrupt_counters()
872 zr->intr_counter_GIRQ0 = 0; in clear_interrupt_counters()
873 zr->intr_counter_CodRepIRQ = 0; in clear_interrupt_counters()
874 zr->intr_counter_JPEGRepIRQ = 0; in clear_interrupt_counters()
875 zr->field_counter = 0; in clear_interrupt_counters()
876 zr->IRQ1_in = 0; in clear_interrupt_counters()
877 zr->IRQ1_out = 0; in clear_interrupt_counters()
878 zr->JPEG_in = 0; in clear_interrupt_counters()
879 zr->JPEG_out = 0; in clear_interrupt_counters()
880 zr->JPEG_0 = 0; in clear_interrupt_counters()
881 zr->JPEG_1 = 0; in clear_interrupt_counters()
882 zr->END_event_missed = 0; in clear_interrupt_counters()
883 zr->JPEG_missed = 0; in clear_interrupt_counters()
884 zr->JPEG_max_missed = 0; in clear_interrupt_counters()
885 zr->JPEG_min_missed = 0x7fffffff; in clear_interrupt_counters()
889 count_reset_interrupt (struct zoran *zr) in count_reset_interrupt() argument
896 zr->intr_counter_GIRQ1++; in count_reset_interrupt()
900 zr->intr_counter_GIRQ0++; in count_reset_interrupt()
904 zr->intr_counter_CodRepIRQ++; in count_reset_interrupt()
908 zr->intr_counter_JPEGRepIRQ++; in count_reset_interrupt()
915 jpeg_start (struct zoran *zr) in jpeg_start() argument
919 zr->frame_num = 0; in jpeg_start()
931 btwrite(zr->card.jpeg_int | in jpeg_start()
936 set_frame(zr, 0); // \FRAME in jpeg_start()
939 reg = (zr->card.gpcs[1] << ZR36057_JCGI_JPEGuestID) | in jpeg_start()
943 if (zr->card.video_vfe == CODEC_TYPE_ZR36016 && in jpeg_start()
944 zr->card.video_codec == CODEC_TYPE_ZR36050) { in jpeg_start()
946 if (zr->vfe) in jpeg_start()
947 zr36016_write(zr->vfe, 0, 1); in jpeg_start()
950 post_office_write(zr, 0, 0, 0); in jpeg_start()
960 set_frame(zr, 1); // /FRAME in jpeg_start()
962 dprintk(3, KERN_DEBUG "%s: jpeg_start\n", ZR_DEVNAME(zr)); in jpeg_start()
966 zr36057_enable_jpg (struct zoran *zr, in zr36057_enable_jpg() argument
971 zr->jpg_buffers.buffer_size / zr->jpg_settings.field_per_buff; in zr36057_enable_jpg()
973 zr->codec_mode = mode; in zr36057_enable_jpg()
975 cap.x = zr->jpg_settings.img_x; in zr36057_enable_jpg()
976 cap.y = zr->jpg_settings.img_y; in zr36057_enable_jpg()
977 cap.width = zr->jpg_settings.img_width; in zr36057_enable_jpg()
978 cap.height = zr->jpg_settings.img_height; in zr36057_enable_jpg()
980 zr->jpg_settings.HorDcm | (zr->jpg_settings.VerDcm << 8); in zr36057_enable_jpg()
981 cap.quality = zr->jpg_settings.jpg_comp.quality; in zr36057_enable_jpg()
992 set_videobus_dir(zr, 0); in zr36057_enable_jpg()
993 decoder_call(zr, video, s_stream, 1); in zr36057_enable_jpg()
994 encoder_call(zr, video, s_routing, 0, 0, 0); in zr36057_enable_jpg()
997 jpeg_codec_sleep(zr, 0); in zr36057_enable_jpg()
1000 app.appn = zr->jpg_settings.jpg_comp.APPn; in zr36057_enable_jpg()
1001 app.len = zr->jpg_settings.jpg_comp.APP_len; in zr36057_enable_jpg()
1002 memcpy(app.data, zr->jpg_settings.jpg_comp.APP_data, 60); in zr36057_enable_jpg()
1003 zr->codec->control(zr->codec, CODEC_S_JPEG_APP_DATA, in zr36057_enable_jpg()
1006 com.len = zr->jpg_settings.jpg_comp.COM_len; in zr36057_enable_jpg()
1007 memcpy(com.data, zr->jpg_settings.jpg_comp.COM_data, 60); in zr36057_enable_jpg()
1008 zr->codec->control(zr->codec, CODEC_S_JPEG_COM_DATA, in zr36057_enable_jpg()
1012 zr->codec->control(zr->codec, CODEC_S_JPEG_TDS_BYTE, in zr36057_enable_jpg()
1014 zr->codec->set_video(zr->codec, zr->timing, &cap, in zr36057_enable_jpg()
1015 &zr->card.vfe_pol); in zr36057_enable_jpg()
1016 zr->codec->set_mode(zr->codec, CODEC_DO_COMPRESSION); in zr36057_enable_jpg()
1019 if (zr->vfe) { in zr36057_enable_jpg()
1020 zr->vfe->control(zr->vfe, CODEC_S_JPEG_TDS_BYTE, in zr36057_enable_jpg()
1022 zr->vfe->set_video(zr->vfe, zr->timing, &cap, in zr36057_enable_jpg()
1023 &zr->card.vfe_pol); in zr36057_enable_jpg()
1024 zr->vfe->set_mode(zr->vfe, CODEC_DO_COMPRESSION); in zr36057_enable_jpg()
1027 init_jpeg_queue(zr); in zr36057_enable_jpg()
1028 zr36057_set_jpg(zr, mode); // \P_Reset, ... Video param, FIFO in zr36057_enable_jpg()
1030 clear_interrupt_counters(zr); in zr36057_enable_jpg()
1032 ZR_DEVNAME(zr)); in zr36057_enable_jpg()
1040 decoder_call(zr, video, s_stream, 0); in zr36057_enable_jpg()
1041 set_videobus_dir(zr, 1); in zr36057_enable_jpg()
1042 encoder_call(zr, video, s_routing, 1, 0, 0); in zr36057_enable_jpg()
1045 jpeg_codec_sleep(zr, 0); in zr36057_enable_jpg()
1047 if (zr->vfe) { in zr36057_enable_jpg()
1048 zr->vfe->set_video(zr->vfe, zr->timing, &cap, in zr36057_enable_jpg()
1049 &zr->card.vfe_pol); in zr36057_enable_jpg()
1050 zr->vfe->set_mode(zr->vfe, CODEC_DO_EXPANSION); in zr36057_enable_jpg()
1053 zr->codec->set_video(zr->codec, zr->timing, &cap, in zr36057_enable_jpg()
1054 &zr->card.vfe_pol); in zr36057_enable_jpg()
1055 zr->codec->set_mode(zr->codec, CODEC_DO_EXPANSION); in zr36057_enable_jpg()
1057 init_jpeg_queue(zr); in zr36057_enable_jpg()
1058 zr36057_set_jpg(zr, mode); // \P_Reset, ... Video param, FIFO in zr36057_enable_jpg()
1060 clear_interrupt_counters(zr); in zr36057_enable_jpg()
1062 ZR_DEVNAME(zr)); in zr36057_enable_jpg()
1068 btand(~(zr->card.jpeg_int | ZR36057_ICR_JPEGRepIRQ), in zr36057_enable_jpg()
1070 btwrite(zr->card.jpeg_int | ZR36057_ICR_JPEGRepIRQ, in zr36057_enable_jpg()
1076 set_videobus_dir(zr, 0); in zr36057_enable_jpg()
1077 set_frame(zr, 1); // /FRAME in zr36057_enable_jpg()
1082 jpeg_codec_reset(zr); in zr36057_enable_jpg()
1083 jpeg_codec_sleep(zr, 1); in zr36057_enable_jpg()
1084 zr36057_adjust_vfe(zr, mode); in zr36057_enable_jpg()
1086 decoder_call(zr, video, s_stream, 1); in zr36057_enable_jpg()
1087 encoder_call(zr, video, s_routing, 0, 0, 0); in zr36057_enable_jpg()
1089 dprintk(2, KERN_INFO "%s: enable_jpg(IDLE)\n", ZR_DEVNAME(zr)); in zr36057_enable_jpg()
1097 zoran_feed_stat_com (struct zoran *zr) in zoran_feed_stat_com() argument
1104 (zr->jpg_settings.TmpDcm == in zoran_feed_stat_com()
1107 while ((zr->jpg_dma_head - zr->jpg_dma_tail) < max_stat_com && in zoran_feed_stat_com()
1108 zr->jpg_dma_head < zr->jpg_que_head) { in zoran_feed_stat_com()
1110 frame = zr->jpg_pend[zr->jpg_dma_head & BUZ_MASK_FRAME]; in zoran_feed_stat_com()
1111 if (zr->jpg_settings.TmpDcm == 1) { in zoran_feed_stat_com()
1113 i = (zr->jpg_dma_head - in zoran_feed_stat_com()
1114 zr->jpg_err_shift) & BUZ_MASK_STAT_COM; 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()
1121 i = ((zr->jpg_dma_head - in zoran_feed_stat_com()
1122 zr->jpg_err_shift) & 1) * 2; in zoran_feed_stat_com()
1123 if (!(zr->stat_com[i] & cpu_to_le32(1))) in zoran_feed_stat_com()
1125 zr->stat_com[i] = in zoran_feed_stat_com()
1126 cpu_to_le32(zr->jpg_buffers.buffer[frame].jpg.frag_tab_bus); in zoran_feed_stat_com()
1127 zr->stat_com[i + 1] = in zoran_feed_stat_com()
1128 cpu_to_le32(zr->jpg_buffers.buffer[frame].jpg.frag_tab_bus); in zoran_feed_stat_com()
1130 zr->jpg_buffers.buffer[frame].state = BUZ_STATE_DMA; in zoran_feed_stat_com()
1131 zr->jpg_dma_head++; in zoran_feed_stat_com()
1134 if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS) in zoran_feed_stat_com()
1135 zr->jpg_queued_num++; in zoran_feed_stat_com()
1140 zoran_reap_stat_com (struct zoran *zr) in zoran_reap_stat_com() argument
1154 if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS) { in zoran_reap_stat_com()
1155 zr->jpg_seq_num++; in zoran_reap_stat_com()
1157 while (zr->jpg_dma_tail < zr->jpg_dma_head) { in zoran_reap_stat_com()
1158 if (zr->jpg_settings.TmpDcm == 1) in zoran_reap_stat_com()
1159 i = (zr->jpg_dma_tail - in zoran_reap_stat_com()
1160 zr->jpg_err_shift) & BUZ_MASK_STAT_COM; in zoran_reap_stat_com()
1162 i = ((zr->jpg_dma_tail - in zoran_reap_stat_com()
1163 zr->jpg_err_shift) & 1) * 2 + 1; in zoran_reap_stat_com()
1165 stat_com = le32_to_cpu(zr->stat_com[i]); in zoran_reap_stat_com()
1170 frame = zr->jpg_pend[zr->jpg_dma_tail & BUZ_MASK_FRAME]; in zoran_reap_stat_com()
1171 buffer = &zr->jpg_buffers.buffer[frame]; in zoran_reap_stat_com()
1174 if (zr->codec_mode == BUZ_MODE_MOTION_COMPRESS) { in zoran_reap_stat_com()
1179 seq = ((stat_com >> 24) + zr->jpg_err_seq) & 0xff; in zoran_reap_stat_com()
1180 dif = (seq - zr->jpg_seq_num) & 0xff; in zoran_reap_stat_com()
1181 zr->jpg_seq_num += dif; in zoran_reap_stat_com()
1186 zr->jpg_settings.TmpDcm == in zoran_reap_stat_com()
1187 2 ? (zr->jpg_seq_num >> 1) : zr->jpg_seq_num; in zoran_reap_stat_com()
1190 zr->jpg_dma_tail++; in zoran_reap_stat_com()
1194 static void zoran_restart(struct zoran *zr) in zoran_restart() argument
1200 if (zr->codec_mode == BUZ_MODE_MOTION_COMPRESS) { in zoran_restart()
1201 decoder_call(zr, video, g_input_status, &status); in zoran_restart()
1207 if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS || in zoran_restart()
1210 jpeg_codec_reset(zr); in zoran_restart()
1211 zr->codec->set_mode(zr->codec, mode); in zoran_restart()
1212 zr36057_set_jpg(zr, zr->codec_mode); in zoran_restart()
1213 jpeg_start(zr); in zoran_restart()
1215 if (zr->num_errors <= 8) in zoran_restart()
1217 ZR_DEVNAME(zr)); in zoran_restart()
1219 zr->JPEG_missed = 0; in zoran_restart()
1220 zr->JPEG_error = 2; in zoran_restart()
1226 error_handler (struct zoran *zr, in error_handler() argument
1233 if (zr->codec_mode != BUZ_MODE_MOTION_COMPRESS && in error_handler()
1234 zr->codec_mode != BUZ_MODE_MOTION_DECOMPRESS) { in error_handler()
1239 zr->codec_mode == BUZ_MODE_MOTION_COMPRESS && in error_handler()
1240 zr->jpg_dma_tail - zr->jpg_que_tail >= zr->jpg_buffers.num_buffers) { in error_handler()
1242 zoran_reap_stat_com(zr); in error_handler()
1243 zoran_feed_stat_com(zr); in error_handler()
1244 wake_up_interruptible(&zr->jpg_capq); in error_handler()
1245 zr->JPEG_missed = 0; in error_handler()
1249 if (zr->JPEG_error == 1) { in error_handler()
1250 zoran_restart(zr); in error_handler()
1270 stat = stat | (post_office_read(zr, 7, 0) & 3) << 8; in error_handler()
1273 jpeg_codec_reset(zr); in error_handler()
1274 jpeg_codec_sleep(zr, 1); in error_handler()
1275 zr->JPEG_error = 1; in error_handler()
1276 zr->num_errors++; in error_handler()
1279 if (zr36067_debug > 1 && zr->num_errors <= 8) { in error_handler()
1283 frame = zr->jpg_pend[zr->jpg_dma_tail & BUZ_MASK_FRAME]; in error_handler()
1286 ZR_DEVNAME(zr), stat, zr->last_isr, in error_handler()
1287 zr->jpg_que_tail, zr->jpg_dma_tail, in error_handler()
1288 zr->jpg_dma_head, zr->jpg_que_head, in error_handler()
1289 zr->jpg_seq_num, frame); in error_handler()
1292 for (i = 0; i < zr->jpg_buffers.num_buffers; i++) { in error_handler()
1293 if (le32_to_cpu(zr->stat_com[j]) == zr->jpg_buffers.buffer[i].jpg.frag_tab_bus) in error_handler()
1300 if (zr->jpg_settings.TmpDcm == 1) in error_handler()
1301 i = (zr->jpg_dma_tail - zr->jpg_err_shift) & BUZ_MASK_STAT_COM; in error_handler()
1303 i = ((zr->jpg_dma_tail - zr->jpg_err_shift) & 1) * 2; in error_handler()
1304 if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS) { in error_handler()
1306 zr->stat_com[i] |= cpu_to_le32(1); in error_handler()
1307 if (zr->jpg_settings.TmpDcm != 1) in error_handler()
1308 zr->stat_com[i + 1] |= cpu_to_le32(1); in error_handler()
1310 zoran_reap_stat_com(zr); in error_handler()
1311 zoran_feed_stat_com(zr); in error_handler()
1312 wake_up_interruptible(&zr->jpg_capq); in error_handler()
1314 if (zr->jpg_settings.TmpDcm == 1) in error_handler()
1315 i = (zr->jpg_dma_tail - zr->jpg_err_shift) & BUZ_MASK_STAT_COM; in error_handler()
1317 i = ((zr->jpg_dma_tail - zr->jpg_err_shift) & 1) * 2; in error_handler()
1328 memcpy(bus_addr, zr->stat_com, sizeof(bus_addr)); in error_handler()
1331 zr->stat_com[j] = bus_addr[(i + j) & BUZ_MASK_STAT_COM]; in error_handler()
1333 zr->jpg_err_shift += i; in error_handler()
1334 zr->jpg_err_shift &= BUZ_MASK_STAT_COM; in error_handler()
1336 if (zr->codec_mode == BUZ_MODE_MOTION_COMPRESS) in error_handler()
1337 zr->jpg_err_seq = zr->jpg_seq_num; /* + 1; */ in error_handler()
1338 zoran_restart(zr); in error_handler()
1347 struct zoran *zr; in zoran_irq() local
1350 zr = dev_id; in zoran_irq()
1353 if (zr->testing) { in zoran_irq()
1355 spin_lock_irqsave(&zr->spinlock, flags); in zoran_irq()
1356 while ((stat = count_reset_interrupt(zr))) { in zoran_irq()
1362 ZR_DEVNAME(zr), stat); in zoran_irq()
1363 wake_up_interruptible(&zr->test_q); in zoran_irq()
1366 zr->last_isr = stat; in zoran_irq()
1367 spin_unlock_irqrestore(&zr->spinlock, flags); in zoran_irq()
1371 spin_lock_irqsave(&zr->spinlock, flags); in zoran_irq()
1374 stat = count_reset_interrupt(zr); in zoran_irq()
1383 if (astat & zr->card.vsync_int) { // SW in zoran_irq()
1385 if (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS || in zoran_irq()
1386 zr->codec_mode == BUZ_MODE_MOTION_COMPRESS) { in zoran_irq()
1388 zr->JPEG_missed++; in zoran_irq()
1395 if (zr->v4l_memgrab_active) { in zoran_irq()
1401 ZR_DEVNAME(zr)); in zoran_irq()
1403 if (zr->v4l_grab_frame != NO_GRAB_ACTIVE) { in zoran_irq()
1408 zr->v4l_buffers.buffer[zr->v4l_grab_frame].state = BUZ_STATE_DONE; in zoran_irq()
1409 zr->v4l_buffers.buffer[zr->v4l_grab_frame].bs.seq = zr->v4l_grab_seq; in zoran_irq()
1410 v4l2_get_timestamp(&zr->v4l_buffers.buffer[zr->v4l_grab_frame].bs.timestamp); in zoran_irq()
1411 zr->v4l_grab_frame = NO_GRAB_ACTIVE; in zoran_irq()
1412 zr->v4l_pend_tail++; in zoran_irq()
1416 if (zr->v4l_grab_frame == NO_GRAB_ACTIVE) in zoran_irq()
1417 wake_up_interruptible(&zr->v4l_capq); in zoran_irq()
1421 if (zr->v4l_grab_frame == NO_GRAB_ACTIVE && in zoran_irq()
1422 zr->v4l_pend_tail != zr->v4l_pend_head) { in zoran_irq()
1423 int frame = zr->v4l_pend[zr->v4l_pend_tail & V4L_MASK_FRAME]; in zoran_irq()
1426 zr->v4l_grab_frame = frame; in zoran_irq()
1432 reg = zr->v4l_buffers.buffer[frame].v4l.fbuffer_bus; in zoran_irq()
1434 if (zr->v4l_settings.height > BUZ_MAX_HEIGHT / 2) in zoran_irq()
1435 reg += zr->v4l_settings.bytesperline; in zoran_irq()
1440 if (zr->v4l_settings.height > BUZ_MAX_HEIGHT / 2) in zoran_irq()
1441 reg += zr->v4l_settings.bytesperline; in zoran_irq()
1455 zr->v4l_grab_seq++; in zoran_irq()
1459 zr->intr_counter_CodRepIRQ++; in zoran_irq()
1461 ZR_DEVNAME(zr))); in zoran_irq()
1468 (zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS || in zoran_irq()
1469 zr->codec_mode == BUZ_MODE_MOTION_COMPRESS)) { in zoran_irq()
1470 if (zr36067_debug > 1 && (!zr->frame_num || zr->JPEG_error)) { in zoran_irq()
1476 ZR_DEVNAME(zr), stat, in zoran_irq()
1477 zr->jpg_settings.odd_even, in zoran_irq()
1478 zr->jpg_settings.field_per_buff, in zoran_irq()
1479 zr->JPEG_missed); in zoran_irq()
1482 sv[i] = le32_to_cpu(zr->stat_com[i]) & 1 ? '1' : '0'; in zoran_irq()
1486 ZR_DEVNAME(zr), sv, in zoran_irq()
1487 zr->jpg_que_tail, in zoran_irq()
1488 zr->jpg_dma_tail, in zoran_irq()
1489 zr->jpg_dma_head, in zoran_irq()
1490 zr->jpg_que_head); in zoran_irq()
1493 if (zr->JPEG_missed > zr->JPEG_max_missed) in zoran_irq()
1494 zr->JPEG_max_missed = zr->JPEG_missed; in zoran_irq()
1495 if (zr->JPEG_missed < zr->JPEG_min_missed) in zoran_irq()
1496 zr->JPEG_min_missed = zr->JPEG_missed; in zoran_irq()
1499 if (zr36067_debug > 2 && zr->frame_num < 6) { in zoran_irq()
1503 ZR_DEVNAME(zr), zr->jpg_seq_num); in zoran_irq()
1506 le32_to_cpu(zr->stat_com[i])); in zoran_irq()
1510 zr->frame_num++; in zoran_irq()
1511 zr->JPEG_missed = 0; in zoran_irq()
1512 zr->JPEG_error = 0; in zoran_irq()
1513 zoran_reap_stat_com(zr); in zoran_irq()
1514 zoran_feed_stat_com(zr); in zoran_irq()
1515 wake_up_interruptible(&zr->jpg_capq); in zoran_irq()
1520 if ((astat & zr->card.jpeg_int) || in zoran_irq()
1521 zr->JPEG_missed > 25 || in zoran_irq()
1522 zr->JPEG_error == 1 || in zoran_irq()
1523 ((zr->codec_mode == BUZ_MODE_MOTION_DECOMPRESS) && in zoran_irq()
1524 (zr->frame_num && (zr->JPEG_missed > zr->jpg_settings.field_per_buff)))) { in zoran_irq()
1525 error_handler(zr, astat, stat); in zoran_irq()
1531 ZR_DEVNAME(zr), count); in zoran_irq()
1537 ZR_DEVNAME(zr)); in zoran_irq()
1541 zr->last_isr = stat; in zoran_irq()
1543 spin_unlock_irqrestore(&zr->spinlock, flags); in zoran_irq()
1549 zoran_set_pci_master (struct zoran *zr, in zoran_set_pci_master() argument
1553 pci_set_master(zr->pci_dev); in zoran_set_pci_master()
1557 pci_read_config_word(zr->pci_dev, PCI_COMMAND, &command); in zoran_set_pci_master()
1559 pci_write_config_word(zr->pci_dev, PCI_COMMAND, command); in zoran_set_pci_master()
1564 zoran_init_hardware (struct zoran *zr) in zoran_init_hardware() argument
1567 zoran_set_pci_master(zr, 1); in zoran_init_hardware()
1570 if (zr->card.init) { in zoran_init_hardware()
1571 zr->card.init(zr); in zoran_init_hardware()
1574 decoder_call(zr, core, init, 0); in zoran_init_hardware()
1575 decoder_call(zr, video, s_std, zr->norm); in zoran_init_hardware()
1576 decoder_call(zr, video, s_routing, in zoran_init_hardware()
1577 zr->card.input[zr->input].muxsel, 0, 0); in zoran_init_hardware()
1579 encoder_call(zr, core, init, 0); in zoran_init_hardware()
1580 encoder_call(zr, video, s_std_output, zr->norm); in zoran_init_hardware()
1581 encoder_call(zr, video, s_routing, 0, 0, 0); in zoran_init_hardware()
1584 jpeg_codec_sleep(zr, 1); in zoran_init_hardware()
1585 jpeg_codec_sleep(zr, 0); in zoran_init_hardware()
1594 zr36057_init_vfe(zr); in zoran_init_hardware()
1596 zr36057_enable_jpg(zr, BUZ_MODE_IDLE); in zoran_init_hardware()
1602 zr36057_restart (struct zoran *zr) in zr36057_restart() argument
1623 zr36057_init_vfe (struct zoran *zr) in zr36057_init_vfe() argument