Deleted Added
full compact
bktr_core.c (106519) bktr_core.c (107668)
1/* $FreeBSD: head/sys/dev/bktr/bktr_core.c 106519 2002-11-06 20:16:39Z jhb $ */
1/* $FreeBSD: head/sys/dev/bktr/bktr_core.c 107668 2002-12-07 09:00:19Z roger $ */
2
3/*
4 * This is part of the Driver for Video Capture Cards (Frame grabbers)
5 * and TV Tuner cards using the Brooktree Bt848, Bt848A, Bt849A, Bt878, Bt879
6 * chipset.
7 * Copyright Roger Hardiman and Amancio Hasty.
8 *
9 * bktr_core : This deals with the Bt848/849/878/879 PCI Frame Grabber,

--- 795 unchanged lines hidden (view full) ---

805 /* If someone has a select() on /dev/vbi, inform them */
806 if (SEL_WAITING(&bktr->vbi_select)) {
807 selwakeup(&bktr->vbi_select);
808 }
809
810
811 }
812
2
3/*
4 * This is part of the Driver for Video Capture Cards (Frame grabbers)
5 * and TV Tuner cards using the Brooktree Bt848, Bt848A, Bt849A, Bt878, Bt879
6 * chipset.
7 * Copyright Roger Hardiman and Amancio Hasty.
8 *
9 * bktr_core : This deals with the Bt848/849/878/879 PCI Frame Grabber,

--- 795 unchanged lines hidden (view full) ---

805 /* If someone has a select() on /dev/vbi, inform them */
806 if (SEL_WAITING(&bktr->vbi_select)) {
807 selwakeup(&bktr->vbi_select);
808 }
809
810
811 }
812
813
814 /*
815 * Register the completed field
816 * (For dual-field mode, require fields from the same frame)
817 */
818 switch ( bktr->flags & METEOR_WANT_MASK ) {
819 case METEOR_WANT_ODD : w_field = ODD_F ; break;
820 case METEOR_WANT_EVEN : w_field = EVEN_F ; break;
821 default : w_field = (ODD_F|EVEN_F); break;

--- 2260 unchanged lines hidden (view full) ---

3082 target_buffer = (u_long) bktr->video.addr;
3083 else
3084 target_buffer = (u_long) vtophys(bktr->bigbuf);
3085
3086 buffer = target_buffer;
3087
3088 /* contruct sync : for video packet format */
3089 /* sync, mode indicator packed data */
813 /*
814 * Register the completed field
815 * (For dual-field mode, require fields from the same frame)
816 */
817 switch ( bktr->flags & METEOR_WANT_MASK ) {
818 case METEOR_WANT_ODD : w_field = ODD_F ; break;
819 case METEOR_WANT_EVEN : w_field = EVEN_F ; break;
820 default : w_field = (ODD_F|EVEN_F); break;

--- 2260 unchanged lines hidden (view full) ---

3081 target_buffer = (u_long) bktr->video.addr;
3082 else
3083 target_buffer = (u_long) vtophys(bktr->bigbuf);
3084
3085 buffer = target_buffer;
3086
3087 /* contruct sync : for video packet format */
3088 /* sync, mode indicator packed data */
3090 *dma_prog++ = OP_SYNC | 1 << 15 | BKTR_FM1;
3089 *dma_prog++ = OP_SYNC | BKTR_RESYNC | BKTR_FM1;
3091 *dma_prog++ = 0; /* NULL WORD */
3092
3093 b = cols;
3094
3095 for (i = 0; i < (rows/interlace); i++) {
3096 *dma_prog++ = inst;
3097 *dma_prog++ = target_buffer;
3098 *dma_prog++ = inst3;
3099 *dma_prog++ = target_buffer + b;
3100 target_buffer += interlace*(cols * 2);
3101 }
3102
3103 switch (i_flag) {
3104 case 1:
3105 /* sync vre */
3090 *dma_prog++ = 0; /* NULL WORD */
3091
3092 b = cols;
3093
3094 for (i = 0; i < (rows/interlace); i++) {
3095 *dma_prog++ = inst;
3096 *dma_prog++ = target_buffer;
3097 *dma_prog++ = inst3;
3098 *dma_prog++ = target_buffer + b;
3099 target_buffer += interlace*(cols * 2);
3100 }
3101
3102 switch (i_flag) {
3103 case 1:
3104 /* sync vre */
3106 *dma_prog++ = OP_SYNC | 1 << 24 | BKTR_VRE;
3105 *dma_prog++ = OP_SYNC | BKTR_GEN_IRQ | BKTR_VRE;
3107 *dma_prog++ = 0; /* NULL WORD */
3108
3109 *dma_prog++ = OP_JUMP;
3110 *dma_prog++ = (u_long ) vtophys(bktr->dma_prog);
3111 return;
3112
3113 case 2:
3114 /* sync vro */
3106 *dma_prog++ = 0; /* NULL WORD */
3107
3108 *dma_prog++ = OP_JUMP;
3109 *dma_prog++ = (u_long ) vtophys(bktr->dma_prog);
3110 return;
3111
3112 case 2:
3113 /* sync vro */
3115 *dma_prog++ = OP_SYNC | 1 << 24 | BKTR_VRO;
3114 *dma_prog++ = OP_SYNC | BKTR_GEN_IRQ | BKTR_VRO;
3116 *dma_prog++ = 0; /* NULL WORD */
3117 *dma_prog++ = OP_JUMP;
3118 *dma_prog++ = (u_long ) vtophys(bktr->dma_prog);
3119 return;
3120
3121 case 3:
3122 /* sync vro */
3115 *dma_prog++ = 0; /* NULL WORD */
3116 *dma_prog++ = OP_JUMP;
3117 *dma_prog++ = (u_long ) vtophys(bktr->dma_prog);
3118 return;
3119
3120 case 3:
3121 /* sync vro */
3123 *dma_prog++ = OP_SYNC | 1 << 24 | 1 << 15 | BKTR_VRO;
3122 *dma_prog++ = OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRO;
3124 *dma_prog++ = 0; /* NULL WORD */
3125 *dma_prog++ = OP_JUMP ;
3126 *dma_prog = (u_long ) vtophys(bktr->odd_dma_prog);
3127 break;
3128 }
3129
3130 if (interlace == 2) {
3131
3132 target_buffer = (u_long) buffer + cols*2;
3133
3134 dma_prog = (u_long * ) bktr->odd_dma_prog;
3135
3136 /* sync vre */
3123 *dma_prog++ = 0; /* NULL WORD */
3124 *dma_prog++ = OP_JUMP ;
3125 *dma_prog = (u_long ) vtophys(bktr->odd_dma_prog);
3126 break;
3127 }
3128
3129 if (interlace == 2) {
3130
3131 target_buffer = (u_long) buffer + cols*2;
3132
3133 dma_prog = (u_long * ) bktr->odd_dma_prog;
3134
3135 /* sync vre */
3137 *dma_prog++ = OP_SYNC | 1 << 24 | 1 << 15 | BKTR_FM1;
3136 *dma_prog++ = OP_SYNC | BKTR_RESYNC | BKTR_FM1;
3138 *dma_prog++ = 0; /* NULL WORD */
3139
3140 for (i = 0; i < (rows/interlace) ; i++) {
3141 *dma_prog++ = inst;
3142 *dma_prog++ = target_buffer;
3143 *dma_prog++ = inst3;
3144 *dma_prog++ = target_buffer + b;
3145 target_buffer += interlace * ( cols*2);
3146 }
3147 }
3148
3149 /* sync vro IRQ bit */
3137 *dma_prog++ = 0; /* NULL WORD */
3138
3139 for (i = 0; i < (rows/interlace) ; i++) {
3140 *dma_prog++ = inst;
3141 *dma_prog++ = target_buffer;
3142 *dma_prog++ = inst3;
3143 *dma_prog++ = target_buffer + b;
3144 target_buffer += interlace * ( cols*2);
3145 }
3146 }
3147
3148 /* sync vro IRQ bit */
3150 *dma_prog++ = OP_SYNC | 1 << 24 | 1 << 15 | BKTR_VRE;
3149 *dma_prog++ = OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRE;
3151 *dma_prog++ = 0; /* NULL WORD */
3152 *dma_prog++ = OP_JUMP ;
3153 *dma_prog++ = (u_long ) vtophys(bktr->dma_prog);
3154
3155 *dma_prog++ = OP_JUMP;
3156 *dma_prog++ = (u_long ) vtophys(bktr->dma_prog);
3157 *dma_prog++ = 0; /* NULL WORD */
3158}

--- 1104 unchanged lines hidden ---
3150 *dma_prog++ = 0; /* NULL WORD */
3151 *dma_prog++ = OP_JUMP ;
3152 *dma_prog++ = (u_long ) vtophys(bktr->dma_prog);
3153
3154 *dma_prog++ = OP_JUMP;
3155 *dma_prog++ = (u_long ) vtophys(bktr->dma_prog);
3156 *dma_prog++ = 0; /* NULL WORD */
3157}

--- 1104 unchanged lines hidden ---