Lines Matching defs:adder
106 u_short adder_ie; /* shadowing for adder intrpt enbl reg */
237 static void qdaint(void *); /* Dragon ADDER intrpt service */
262 #define ADDER (REGSTART+0x000)
329 void scroll_up(volatile struct adder *);
330 void write_ID(volatile struct adder *, short, short);
331 int wait_status(volatile struct adder *, int);
505 qdmap[unit].adder = qdbase[unit] + ADDER;
524 setup_dragon(unit); /* init the ADDER/VIPER stuff */
635 qdmap[unit].adder = qdbase[unit] + ADDER;
648 setup_dragon(unit); /* init the ADDER/VIPER stuff */
691 * (ADDER) and xx8 (DUART). Therefore, we take three
887 volatile struct adder *adder;
921 * ADDER
923 mapix = VTOP((int)qd->adder) - VTOP(qvmem[0]);
947 adder = (struct adder *) qdmap[unit].adder;
950 adder->command = CANCEL;
988 adder = (struct adder *) qdmap[unit].adder;
990 adder->interrupt_enable = qdflags[unit].adder_ie;
1001 adder = (struct adder *) qdmap[unit].adder;
1003 adder->interrupt_enable = qdflags[unit].adder_ie;
1015 adder = (struct adder *) qdmap[unit].adder;
1019 adder->command = CANCEL;
1031 setup_dragon(unit); /* init ADDER/VIPER */
1084 volatile struct adder *adder; /* ADDER reg structure pointer */
1123 setup_dragon(unit); /* init the ADDER/VIPER stuff */
1209 mapix = VTOP((int)qd->adder) - VTOP(qvmem[0]);
1285 adder = (struct adder *) qdmap[unit].adder;
1287 adder->interrupt_enable = qdflags[unit].adder_ie;
1304 adder = (struct adder *) qdmap[unit].adder;
1306 adder->interrupt_enable = qdflags[unit].adder_ie;
1323 adder = (struct adder *) qdmap[unit].adder;
1325 adder->interrupt_enable = qdflags[unit].adder_ie;
1346 adder = (struct adder *) qdmap[unit].adder;
1348 adder->interrupt_enable = qdflags[unit].adder_ie;
1694 volatile struct adder *adder;
1739 adder = (struct adder *) qdmap[unit].adder;
1740 adder->command = CANCEL; /* cancel adder activity */
1823 volatile struct adder *adder;
1829 adder = (struct adder *)qdmap[unit].adder;
1894 scroll_up(adder);
1956 write_ID(adder, CS_UPDATE_MASK, 0x0001); /* select plane #0 */
1957 write_ID(adder, SRC1_OCR_B,
1959 write_ID(adder, CS_UPDATE_MASK, 0x00FE); /* select other planes */
1960 write_ID(adder, SRC1_OCR_B,
1962 write_ID(adder, CS_UPDATE_MASK, 0x00FF); /* select all planes */
1963 write_ID(adder, DST_OCR_B,
1965 write_ID(adder, MASK_1, 0xFFFF);
1966 write_ID(adder, VIPER_Z_LOAD | FOREGROUND_COLOR_Z, 1);
1967 write_ID(adder, VIPER_Z_LOAD | BACKGROUND_COLOR_Z, 0);
1968 adder->x_clip_min = 0;
1969 adder->x_clip_max = 1024;
1970 adder->y_clip_min = 0;
1971 adder->y_clip_max = 864;
1975 adder->fast_dest_dy = 0;
1976 adder->slow_dest_dx = 0;
1977 adder->error_1 = 0;
1978 adder->error_2 = 0;
1979 adder->rasterop_mode = DST_WRITE_ENABLE | NORMAL;
1980 (void)wait_status(adder, RASTEROP_COMPLETE);
1981 adder->destination_x = cursor[unit].x;
1982 adder->fast_dest_dx = CHAR_WIDTH;
1983 adder->destination_y = cursor[unit].y;
1984 adder->slow_dest_dy = CHAR_HEIGHT;
1995 adder->source_1_x = FONT_X +
2000 adder->source_1_y = 2048 - 15 *
2002 adder->source_1_dx = CHAR_WIDTH;
2003 adder->source_1_dy = CHAR_HEIGHT;
2004 write_ID(adder, LU_FUNCTION_R1, FULL_SRC_RESOLUTION | LF_SOURCE);
2005 adder->cmd = RASTEROP | OCRB | 0 | S1E | DTE;
2034 volatile struct adder *adder;
2045 adder = (struct adder *) qdmap[unit].adder;
2083 adder->command = CANCEL; /* cancel adder activity */
2133 adder->command = CANCEL; /* cancel adder activity */
2202 * ADDER interrupt service routine
2208 volatile struct adder *adder;
2219 adder = (struct adder *) qdmap[unit].adder;
2225 if (adder->status & VSYNC) {
2226 adder->status &= ~VSYNC; /* clear the interrupt */
2248 if (adder->status & FRAME_SYNC) {
2249 adder->status &= ~FRAME_SYNC; /* clear the interrupt */
2253 for (i = 1000, adder->status = 0; i > 0 &&
2254 !(adder->status&ID_SCROLL_READY); --i)
2263 adder->ID_scroll_data = scroll[unit]->viper_constant;
2264 adder->ID_scroll_command = ID_LOAD | SCROLL_CONSTANT;
2266 adder->y_scroll_constant =
2268 adder->y_offset_pending = scroll[unit]->y_offset;
2272 adder->x_index_pending =
2274 adder->y_index_pending =
2873 * This code requires that certain adder initialization be valid. To
2886 volatile struct adder *adder;
2887 adder = (struct adder *) qdmap[unit].adder;
2889 adder->x_limit = 1024;
2890 adder->y_limit = 2048 - CHAR_HEIGHT;
2891 adder->y_offset_pending = 0;
2892 #define WSV (void)wait_status(adder, VSYNC); (void)wait_status(adder, VSYNC)
2894 adder->y_scroll_constant = SCROLL_ERASE;
2896 adder->y_offset_pending = 864;
2898 adder->y_scroll_constant = SCROLL_ERASE;
2900 adder->y_offset_pending = 1728;
2902 adder->y_scroll_constant = SCROLL_ERASE;
2904 adder->y_offset_pending = 0; /* back to normal */
2906 adder->x_limit = MAX_SCREEN_X;
2907 adder->y_limit = MAX_SCREEN_Y + FONT_HEIGHT;
2970 volatile struct adder *adder;
2975 adder = (struct adder *) qdmap[unit].adder;
2980 write_ID(adder, MASK_1, 0xFFFF);
2981 write_ID(adder, VIPER_Z_LOAD | FOREGROUND_COLOR_Z, 255);
2982 write_ID(adder, VIPER_Z_LOAD | BACKGROUND_COLOR_Z, 0);
2984 write_ID(adder, SRC1_OCR_B,
2986 write_ID(adder, SRC2_OCR_B,
2988 write_ID(adder, DST_OCR_B,
2991 adder->rasterop_mode = DST_WRITE_ENABLE | DST_INDEX_ENABLE | NORMAL;
2996 (void)wait_status(adder, RASTEROP_COMPLETE);
2998 adder->destination_x = FONT_X;
2999 adder->destination_y = FONT_Y;
3001 adder->fast_dest_dx = MAX_SCREEN_X;
3003 adder->fast_dest_dx = FONT_WIDTH;
3005 adder->slow_dest_dy = CHAR_HEIGHT;
3010 write_ID(adder, CS_UPDATE_MASK, 0x0001);
3011 adder->cmd = PBT | OCRB | 2 | DTE | 2;
3036 (void)wait_status(adder, TX_READY);
3037 adder->id_data = packed;
3059 adder->destination_x = FONT_X;
3060 adder->destination_y = FONT_Y - CHAR_HEIGHT;
3061 adder->fast_dest_dx = max_chars_line * CHAR_WIDTH * 2;
3062 adder->slow_dest_dy = CHAR_HEIGHT;
3067 write_ID(adder, CS_UPDATE_MASK, 0x0001);
3068 adder->cmd = PBT | OCRB | 2 | DTE | 2;
3085 (void)wait_status(adder, TX_READY);
3086 adder->id_data = packed;
3232 scroll_up(volatile struct adder *adder)
3237 (void)wait_status(adder, ADDRESS_COMPLETE);
3238 write_ID(adder, CS_UPDATE_MASK, 0x00FF); /* select all planes */
3239 write_ID(adder, MASK_1, 0xFFFF);
3240 write_ID(adder, VIPER_Z_LOAD | FOREGROUND_COLOR_Z, 255);
3241 write_ID(adder, VIPER_Z_LOAD | BACKGROUND_COLOR_Z, 0);
3242 write_ID(adder, SRC1_OCR_B,
3244 write_ID(adder, DST_OCR_B,
3249 adder->fast_dest_dy = 0;
3250 adder->slow_dest_dx = 0;
3251 adder->error_1 = 0;
3252 adder->error_2 = 0;
3253 adder->rasterop_mode = DST_WRITE_ENABLE | NORMAL;
3254 adder->destination_x = 0;
3255 adder->fast_dest_dx = 1024;
3256 adder->destination_y = 0;
3257 adder->slow_dest_dy = 864 - CHAR_HEIGHT;
3261 adder->source_1_x = 0;
3262 adder->source_1_dx = 1024;
3263 adder->source_1_y = 0 + CHAR_HEIGHT;
3264 adder->source_1_dy = 864 - CHAR_HEIGHT;
3265 write_ID(adder, LU_FUNCTION_R1, FULL_SRC_RESOLUTION | LF_SOURCE);
3266 adder->cmd = RASTEROP | OCRB | 0 | S1E | DTE;
3270 write_ID(adder, MASK_1, 0xffff);
3271 write_ID(adder, SOURCE, 0xffff);
3272 write_ID(adder,DST_OCR_B,
3274 write_ID(adder, VIPER_Z_LOAD | FOREGROUND_COLOR_Z, 0);
3275 adder->error_1 = 0;
3276 adder->error_2 = 0;
3277 adder->slow_dest_dx = 0; /* set up the width of */
3278 adder->slow_dest_dy = CHAR_HEIGHT; /* rectangle */
3279 adder->rasterop_mode = (NORMAL | DST_WRITE_ENABLE) ;
3280 (void)wait_status(adder, RASTEROP_COMPLETE);
3281 adder->destination_x = 0;
3282 adder->destination_y = 864 - CHAR_HEIGHT;
3283 adder->fast_dest_dx = 1024; /* set up the height */
3284 adder->fast_dest_dy = 0; /* of rectangle */
3285 write_ID(adder, LU_FUNCTION_R2, (FULL_SRC_RESOLUTION | LF_SOURCE));
3286 adder->cmd = (RASTEROP | OCRB | LF_R2 | DTE ) ;
3353 * init the ADDER, VIPER, bitmaps, & color map
3359 volatile struct adder *adder;
3374 adder = (struct adder *) qdmap[unit].adder;
3379 adder->command = CANCEL;
3383 adder->x_scan_count_0 = 0x2800;
3384 adder->x_scan_count_1 = 0x1020;
3385 adder->x_scan_count_2 = 0x003A;
3386 adder->x_scan_count_3 = 0x38F0;
3387 adder->x_scan_count_4 = 0x6128;
3388 adder->x_scan_count_5 = 0x093A;
3389 adder->x_scan_count_6 = 0x313C;
3390 adder->sync_phase_adj = 0x0100;
3391 adder->x_scan_conf = 0x00C8;
3393 * got a bug in second pass ADDER! lets take care of it
3399 adder->y_scan_count_0 = 0x135F;
3400 adder->y_scan_count_1 = 0x3363;
3401 adder->y_scan_count_2 = 0x2366;
3402 adder->y_scan_count_3 = 0x0388;
3406 if (wait_status(adder, VSYNC) == BAD) {
3409 * to fix the pass 2 Adder initialization bug (synchronizes
3412 adder->y_scan_count_0 = 0x01;
3413 adder->y_scan_count_1 = 0x01;
3414 adder->y_scan_count_2 = 0x01;
3415 adder->y_scan_count_3 = 0x01;
3419 (void)wait_status(adder, VSYNC);
3420 (void)wait_status(adder, VSYNC);
3425 adder->y_scan_count_3 = 0x0388;
3426 adder->y_scan_count_2 = 0x2366;
3427 adder->y_scan_count_1 = 0x3363;
3428 adder->y_scan_count_0 = 0x135F;
3434 adder->x_index_pending = 0;
3435 adder->y_index_pending = 0;
3436 adder->x_index_new = 0;
3437 adder->y_index_new = 0;
3438 adder->x_index_old = 0;
3439 adder->y_index_old = 0;
3440 adder->pause = 0;
3444 adder->rasterop_mode = DST_WRITE_ENABLE | DST_INDEX_ENABLE | NORMAL;
3448 adder->source_1_dx = 1;
3449 adder->source_1_dy = 1;
3450 adder->source_1_x = 0;
3451 adder->source_1_y = 0;
3452 adder->destination_x = 0;
3453 adder->destination_y = 0;
3454 adder->fast_dest_dx = 1;
3455 adder->fast_dest_dy = 0;
3456 adder->slow_dest_dx = 0;
3457 adder->slow_dest_dy = 1;
3458 adder->error_1 = 0;
3459 adder->error_2 = 0;
3463 adder->fast_scale = UNITY;
3464 adder->slow_scale = UNITY;
3468 adder->source_2_x = 0;
3469 adder->source_2_y = 0;
3470 adder->source_2_size = 0x0022;
3474 write_ID(adder, CS_UPDATE_MASK, 0x0001);
3475 write_ID(adder, PLANE_ADDRESS, 0x0000);
3476 write_ID(adder, CS_UPDATE_MASK, 0x0002);
3477 write_ID(adder, PLANE_ADDRESS, 0x0001);
3478 write_ID(adder, CS_UPDATE_MASK, 0x0004);
3479 write_ID(adder, PLANE_ADDRESS, 0x0002);
3480 write_ID(adder, CS_UPDATE_MASK, 0x0008);
3481 write_ID(adder, PLANE_ADDRESS, 0x0003);
3482 write_ID(adder, CS_UPDATE_MASK, 0x0010);
3483 write_ID(adder, PLANE_ADDRESS, 0x0004);
3484 write_ID(adder, CS_UPDATE_MASK, 0x0020);
3485 write_ID(adder, PLANE_ADDRESS, 0x0005);
3486 write_ID(adder, CS_UPDATE_MASK, 0x0040);
3487 write_ID(adder, PLANE_ADDRESS, 0x0006);
3488 write_ID(adder, CS_UPDATE_MASK, 0x0080);
3489 write_ID(adder, PLANE_ADDRESS, 0x0007);
3493 write_ID(adder, CS_UPDATE_MASK, 0x00FF);
3494 write_ID(adder, CS_SCROLL_MASK, 0x00FF);
3498 write_ID(adder, MEMORY_BUS_WIDTH, 0x000C); /* bus width = 16 */
3499 write_ID(adder, RESOLUTION_MODE, 0x0000); /* one bit/pixel */
3503 write_ID(adder, SCROLL_CONSTANT, SCROLL_ENABLE|VIPER_LEFT|VIPER_UP);
3504 write_ID(adder, SCROLL_FILL, 0x0000);
3508 for (i = 1000, adder->status = 0;
3509 i > 0 && !(adder->status&ADDRESS_COMPLETE); --i)
3517 adder->x_clip_min = left;
3518 adder->x_clip_max = right;
3519 adder->y_clip_min = top;
3520 adder->y_clip_max = bottom;
3521 adder->scroll_x_min = left;
3522 adder->scroll_x_max = right;
3523 adder->scroll_y_min = top;
3524 adder->scroll_y_max = bottom;
3525 (void)wait_status(adder, VSYNC); /* wait at LEAST 1 full frame */
3526 (void)wait_status(adder, VSYNC);
3527 adder->x_index_pending = left;
3528 adder->y_index_pending = top;
3529 adder->x_index_new = left;
3530 adder->y_index_new = top;
3531 adder->x_index_old = left;
3532 adder->y_index_old = top;
3534 for (i = 1000, adder->status = 0; i > 0 &&
3535 !(adder->status&ADDRESS_COMPLETE) ; --i)
3540 write_ID(adder, LEFT_SCROLL_MASK, 0x0000);
3541 write_ID(adder, RIGHT_SCROLL_MASK, 0x0000);
3545 write_ID(adder, SOURCE, 0xFFFF);
3546 write_ID(adder, MASK_1, 0xFFFF);
3547 write_ID(adder, VIPER_Z_LOAD | FOREGROUND_COLOR_Z, 255);
3548 write_ID(adder, VIPER_Z_LOAD | BACKGROUND_COLOR_Z, 0);
3552 write_ID(adder, SRC1_OCR_A, EXT_NONE | INT_M1_M2 | NO_ID | WAIT);
3553 write_ID(adder, SRC2_OCR_A, EXT_NONE | INT_SOURCE | NO_ID | NO_WAIT);
3554 write_ID(adder, DST_OCR_A, EXT_NONE | INT_NONE | NO_ID | NO_WAIT);
3555 write_ID(adder, SRC1_OCR_B, EXT_NONE | INT_SOURCE | NO_ID | WAIT);
3556 write_ID(adder, SRC2_OCR_B, EXT_NONE | INT_M1_M2 | NO_ID | NO_WAIT);
3557 write_ID(adder, DST_OCR_B, EXT_NONE | INT_NONE | NO_ID | NO_WAIT);
3562 write_ID(adder, LU_FUNCTION_R1, FULL_SRC_RESOLUTION | LF_SOURCE);
3563 write_ID(adder, LU_FUNCTION_R2, FULL_SRC_RESOLUTION | LF_SOURCE |
3565 write_ID(adder, LU_FUNCTION_R3, FULL_SRC_RESOLUTION | LF_D_OR_S);
3566 write_ID(adder, LU_FUNCTION_R4, FULL_SRC_RESOLUTION | LF_D_XOR_S);
3570 for (i = 0, adder->status = 0; i < 10000 && !(adder->status&VSYNC); ++i)
3776 wait_status(volatile struct adder *adder, int mask)
3780 for (i = 10000, adder->status = 0 ; i > 0 &&
3781 !(adder->status&mask) ; --i)
3785 printf("wait_status: timeout polling for 0x%x in adder->status\n", mask);
3797 write_ID(volatile struct adder *adder, short adrs, short data)
3801 for (i = 100000, adder->status = 0 ;
3802 i > 0 && !(adder->status&ADDRESS_COMPLETE) ; --i)
3808 for (i = 100000, adder->status = 0 ;
3809 i > 0 && !(adder->status&TX_READY) ; --i)
3813 adder->id_data = data;
3814 adder->command = ID_LOAD | adrs;