Lines Matching refs:regs

1100   sanei_rts88xx_get_lamp_status (dev->devnum, dev->regs);
1101 if ((dev->regs[0x8e] & 0x60) != 0x60)
1104 dev->regs[0x8e]);
1129 rts8891_wait_for_home (dev, dev->regs);
1133 rts8891_set_default_regs (dev->regs);
1168 dev->regs[LAMP_BRIGHT_REG] = 0xA7;
1170 dev->regs + LAMP_BRIGHT_REG);
1271 dev->regs[LAMP_BRIGHT_REG] = 0xA7;
1273 dev->regs + LAMP_BRIGHT_REG);
1316 sanei_rts88xx_set_offset (dev->regs, dev->red_offset, dev->green_offset,
1318 sanei_rts88xx_set_gain (dev->regs, dev->red_gain, dev->green_gain,
1774 dev->regs[LAMP_REG] = 0xad;
1775 sanei_rts88xx_write_reg (dev->devnum, LAMP_REG, &(dev->regs[LAMP_REG]));
1833 dev->regs[LAMP_REG] = 0x8d;
1834 sanei_rts88xx_write_reg (dev->devnum, LAMP_REG, &(dev->regs[LAMP_REG]));
2201 rts8891_wait_for_home (dev, dev->regs);
2941 dev->regs[LAMP_REG] = reg;
2945 sanei_rts88xx_get_status (dev->devnum, dev->regs);
2946 DBG (DBG_io, "set_lamp_brightness: status=0x%02x 0x%02x\n", dev->regs[0x10],
2947 dev->regs[0x11]);
2950 dev->regs[0x10] = 0x28;
2951 dev->regs[0x11] = 0x3f;
2955 dev->regs[0x10] = 0x10;
2956 dev->regs[0x11] = 0x2f;
2958 reg = dev->regs[LAMP_REG];
2984 dev->regs[0x12] = 0xff;
2985 dev->regs[0x13] = 0x20;
2986 sanei_rts88xx_write_regs (dev->devnum, 0x12, dev->regs + 0x12, 2);
2988 sanei_rts88xx_write_regs (dev->devnum, 0x14, dev->regs + 0x14, 2);
2993 sanei_rts88xx_set_status (dev->devnum, dev->regs, 0x28, 0x3f);
2994 dev->regs[0x11] = 0x3f;
2998 sanei_rts88xx_set_status (dev->devnum, dev->regs, 0x10, 0x22);
2999 dev->regs[0x11] = 0x22;
3003 dev->regs[LAMP_REG] = 0xa2;
3004 dev->regs[LAMP_BRIGHT_REG] = 0xa0;
3005 rts8891_write_all (dev->devnum, dev->regs, dev->reg_count);
3051 sanei_rts88xx_reset_lamp (dev->devnum, dev->regs);
3058 sanei_rts88xx_reset_lamp (dev->devnum, dev->regs);
3064 dev->regs[0x00] = 0xe5;
3065 dev->regs[0x32] = 0x80;
3066 dev->regs[0x33] = 0x81;
3067 dev->regs[0x39] = 0x02;
3068 dev->regs[0x64] = 0x01;
3069 dev->regs[0x65] = 0x20;
3070 dev->regs[0x79] = 0x20;
3071 dev->regs[0x7a] = 0x01;
3072 dev->regs[0x90] = 0x1c;
3074 dev->regs[0x35] = 0x1b;
3075 dev->regs[0x36] = 0x29;
3076 dev->regs[0x3a] = 0x1b;
3078 dev->regs[0x85] = 0x00;
3079 dev->regs[0x86] = 0x06;
3080 dev->regs[0x87] = 0x00;
3081 dev->regs[0x88] = 0x06;
3082 dev->regs[0x8d] = 0x80;
3083 dev->regs[0x8e] = 0x68;
3085 dev->regs[0xb2] = 0x02; /* 0x04 -> no data */
3087 dev->regs[0xc0] = 0xff;
3088 dev->regs[0xc1] = 0x0f;
3089 dev->regs[0xc3] = 0xff;
3090 dev->regs[0xc4] = 0xff;
3091 dev->regs[0xc5] = 0xff;
3092 dev->regs[0xc6] = 0xff;
3093 dev->regs[0xc7] = 0xff;
3094 dev->regs[0xc8] = 0xff;
3095 dev->regs[0xc9] = 0x00;
3096 dev->regs[0xca] = 0x0e;
3097 dev->regs[0xcb] = 0x00;
3098 dev->regs[0xcd] = 0xf0;
3099 dev->regs[0xce] = 0xff;
3100 dev->regs[0xcf] = 0xf5;
3101 dev->regs[0xd0] = 0xf7;
3102 dev->regs[0xd1] = 0xea;
3103 dev->regs[0xd2] = 0x0b;
3104 dev->regs[0xd3] = 0x03;
3105 dev->regs[0xd4] = 0x05;
3106 dev->regs[0xd6] = 0xab;
3107 dev->regs[0xd7] = 0x30;
3108 dev->regs[0xd8] = 0xf6;
3109 dev->regs[0xe2] = 0x01;
3110 dev->regs[0xe3] = 0x00;
3111 dev->regs[0xe4] = 0x00;
3112 SET_DOUBLE (dev->regs, EXPOSURE_REG, 4124);
3113 /* dev->regs[0xe5] = 0x1c;
3114 dev->regs[0xe6] = 0x10; 101c=4124 */
3115 dev->regs[0xe7] = 0x00;
3116 dev->regs[0xe8] = 0x00;
3117 dev->regs[0xe9] = 0x00;
3121 dev->regs[0xc3] = 0x00;
3122 dev->regs[0xc4] = 0xf0;
3123 dev->regs[0xc7] = 0x0f;
3124 dev->regs[0xc8] = 0x00;
3125 dev->regs[0xc9] = 0xff;
3126 dev->regs[0xca] = 0xf1;
3127 dev->regs[0xcb] = 0xff;
3128 dev->regs[0xd7] = 0x10;
3133 dev->regs[0x13] = 0x39; /* 0x20 */
3134 dev->regs[0x14] = 0xf0; /* 0xf8 */
3135 dev->regs[0x15] = 0x29; /* 0x28 */
3136 dev->regs[0x16] = 0x0f; /* 0x07 */
3137 dev->regs[0x17] = 0x10; /* 0x00 */
3139 dev->regs[0x23] = 0x00; /* 0xff */
3141 dev->regs[0x39] = 0x00; /* 0x02 */
3145 dev->regs[0xc3] = 0xff; /* 0x00 */
3146 dev->regs[0xc4] = 0xff; /* 0xf0 */
3147 dev->regs[0xc7] = 0xff; /* 0x0f */
3148 dev->regs[0xc8] = 0xff; /* 0x00 */
3149 dev->regs[0xc9] = 0x00; /* 0xff */
3150 dev->regs[0xca] = 0x0e; /* 0xf1 */
3151 dev->regs[0xcb] = 0x00; /* 0xff */
3152 dev->regs[0xd7] = 0x30; /* 0x10 */
3153 dev->regs[0xda] = 0xa7; /* 0xa0 */
3155 SET_DOUBLE (dev->regs, TIMING_REG, timing);
3156 SET_DOUBLE (dev->regs, TIMING1_REG, timing+1);
3157 SET_DOUBLE (dev->regs, TIMING2_REG, timing+2);
3177 sanei_rts88xx_set_scan_area (dev->regs, starty, starty + height, startx,
3179 sanei_rts88xx_set_offset (dev->regs, 0x7f, 0x7f, 0x7f);
3180 sanei_rts88xx_set_gain (dev->regs, 0x10, 0x10, 0x10);
3183 dev->regs[LAMP_REG] = 0xad;
3184 sanei_rts88xx_write_reg (dev->devnum, LAMP_REG, dev->regs + LAMP_REG);
3188 sanei_rts88xx_set_status (dev->devnum, dev->regs, 0x20, 0x3b);
3192 sanei_rts88xx_set_status (dev->devnum, dev->regs, 0x10, 0x22);
3196 rts8891_simple_scan (dev->devnum, dev->regs, dev->reg_count, 0x03,
3279 dev->regs[0x35] = 0x0e;
3280 dev->regs[0x3a] = 0x0e;
3282 dev->regs[0xb2] = 0x06; /* no data (0x04) */
3286 dev->regs[0x36] = 0x21; /* direction reverse (& ~0x08) */
3288 dev->regs[0xe2] = 0x03; /* 0x01 */
3290 /* dev->regs[0xe5] = 0x0d; 0x1c
3291 dev->regs[0xe6] = 0x08; 0x10 080d=2061=1030*2+1 */
3292 SET_DOUBLE (dev->regs, EXPOSURE_REG, 2061);
3296 dev->regs[0x11] = 0x3f; /* 0x3b */
3298 dev->regs[0x36] = 0x24; /* direction reverse (& ~0x08) */
3300 dev->regs[0xe2] = 0x07;
3303 dev->regs[0xe5] = 0x06;
3304 dev->regs[0xe6] = 0x04; 406=1030 */
3305 SET_DOUBLE (dev->regs, EXPOSURE_REG, 1030);
3309 sanei_rts88xx_set_scan_area (dev->regs, height - sum + 10,
3311 rts8891_write_all (dev->devnum, dev->regs, dev->reg_count);
3353 sanei_rts88xx_set_status (dev->devnum, dev->regs, 0x10, 0x23);
3357 sanei_rts88xx_set_status (dev->devnum, dev->regs, 0x28, 0x3b);
3360 sanei_rts88xx_set_gain (dev->regs, 0x3f, 0x3f, 0x3f);
3363 dev->regs[0x33] = 0x01;
3364 dev->regs[0x34] = 0x10;
3365 dev->regs[0x35] = 0x1b;
3366 dev->regs[0x3a] = 0x1b;
3368 dev->regs[0x72] = 0x3a;
3369 dev->regs[0x73] = 0x15;
3370 dev->regs[0x74] = 0x62;
3374 dev->regs[0xc0] = 0xff;
3375 dev->regs[0xc1] = 0xff;
3376 dev->regs[0xc2] = 0xff;
3377 dev->regs[0xc3] = 0x00;
3378 dev->regs[0xc4] = 0xf0;
3379 dev->regs[0xc7] = 0x0f;
3380 dev->regs[0xc8] = 0x00;
3381 dev->regs[0xcb] = 0xe0;
3382 dev->regs[0xcc] = 0xff;
3383 dev->regs[0xcd] = 0xff;
3384 dev->regs[0xce] = 0xff;
3385 dev->regs[0xcf] = 0xe9;
3386 dev->regs[0xd0] = 0xeb;
3387 dev->regs[0xd3] = 0x0c;
3388 dev->regs[0xd4] = 0x0e;
3389 dev->regs[0xd6] = 0xab;
3390 dev->regs[0xd7] = 0x14;
3391 dev->regs[0xd8] = 0xf6;
3393 dev->regs[0xda] = 0xa7; /* XXX STEF XXX à l'origine, pas 'bare' */
3395 dev->regs[0xe2] = 0x01;
3397 /* dev->regs[0xe5] = 0x7b;
3398 dev->regs[0xe6] = 0x15; 157b=5499 */
3399 SET_DOUBLE (dev->regs, EXPOSURE_REG, 5499);
3401 dev->regs[0xe7] = 0x00;
3402 dev->regs[0xe8] = 0x00;
3403 dev->regs[0xe9] = 0x00;
3404 dev->regs[0xea] = 0x00;
3405 dev->regs[0xeb] = 0x00;
3406 dev->regs[0xec] = 0x00;
3407 dev->regs[0xed] = 0x00;
3408 dev->regs[0xef] = 0x00;
3409 dev->regs[0xf0] = 0x00;
3410 dev->regs[0xf2] = 0x00;
3413 dev->regs[0xc0] = 0x00;
3414 dev->regs[0xc1] = 0xf8;
3415 dev->regs[0xc2] = 0x7f;
3416 dev->regs[0xc4] = 0xf8;
3417 dev->regs[0xc5] = 0x7f;
3418 dev->regs[0xc6] = 0x00;
3419 dev->regs[0xc7] = 0xf8;
3420 dev->regs[0xc8] = 0x7f;
3421 dev->regs[0xc9] = 0xff;
3422 dev->regs[0xca] = 0xff;
3423 dev->regs[0xcb] = 0x8f;
3424 dev->regs[0xcd] = 0x07;
3425 dev->regs[0xce] = 0x80;
3426 dev->regs[0xcf] = 0xea;
3427 dev->regs[0xd0] = 0xec;
3428 dev->regs[0xd1] = 0xf7;
3429 dev->regs[0xd2] = 0x00;
3430 dev->regs[0xd3] = 0x10;
3431 dev->regs[0xd4] = 0x12;
3432 dev->regs[0xd7] = 0x31;
3436 dev->regs[0x13] = 0x39; /* 0x20 */
3437 dev->regs[0x14] = 0xf0; /* 0xf8 */
3438 dev->regs[0x15] = 0x29; /* 0x28 */
3439 dev->regs[0x16] = 0x0f; /* 0x07 */
3440 dev->regs[0x17] = 0x10; /* 0x00 */
3441 dev->regs[0x23] = 0x00; /* 0xff */
3442 dev->regs[0x39] = 0x00; /* 0x02 */
3443 dev->regs[0x85] = 0x46; /* 0x00 */
3444 dev->regs[0x86] = 0x0b; /* 0x06 */
3445 dev->regs[0x87] = 0x8c; /* 0x00 */
3446 dev->regs[0x88] = 0x10; /* 0x06 */
3447 dev->regs[0x8d] = 0x3b; /* 0x00 */
3450 SET_DOUBLE (dev->regs, TIMING_REG, timing);
3451 SET_DOUBLE (dev->regs, TIMING1_REG, timing+1);
3452 SET_DOUBLE (dev->regs, TIMING2_REG, timing+2);
3455 sanei_rts88xx_set_scan_area (dev->regs, starty, starty + height, startx,
3469 rts8891_simple_scan (dev->devnum, dev->regs, dev->reg_count, 0x0c,
3523 sanei_rts88xx_set_status (dev->devnum, dev->regs, 0x20, 0x28);
3542 status = sanei_rts88xx_get_lamp_status (dev->devnum, dev->regs);
3548 DBG (DBG_io, "initialize_device: lamp status=0x%02x\n", dev->regs[0x8e]);
3559 DBG (DBG_info, "initialize_device: reg[8e]=0x%02x\n", dev->regs[0x8e]);
3562 if ((dev->regs[0x8e] & 0x60) != 0x60)
3597 dev->regs[0x00] = 0xe5; /* 0xf5 */
3598 dev->regs[0x02] = 0x1f; /* 0x00 */
3599 dev->regs[0x03] = 0x1f; /* 0x00 */
3600 dev->regs[0x04] = 0x1f; /* 0x00 */
3601 dev->regs[0x05] = 0x1f; /* 0x00 */
3602 dev->regs[0x06] = 0x1f; /* 0x00 */
3603 dev->regs[0x07] = 0x1f; /* 0x00 */
3604 dev->regs[0x08] = 0x0a; /* 0x00 */
3605 dev->regs[0x09] = 0x0a; /* 0x00 */
3606 dev->regs[0x0a] = 0x0a; /* 0x00 */
3607 dev->regs[0x10] = 0x28; /* 0x60 */
3608 dev->regs[0x11] = 0x28; /* 0x1b */
3609 dev->regs[0x13] = 0x20; /* 0x3e */
3610 dev->regs[0x14] = 0xf8; /* 0x00 */
3611 dev->regs[0x15] = 0x28; /* 0x00 */
3612 dev->regs[0x16] = 0x07; /* 0xff */
3613 dev->regs[0x17] = 0x00; /* 0x3e */
3614 dev->regs[0x18] = 0xff; /* 0x00 */
3615 dev->regs[0x1d] = 0x20; /* 0x22 */
3618 dev->regs[0x20] = 0x3a; /* 0x00 */
3619 dev->regs[0x21] = 0xf2; /* 0x00 */
3620 dev->regs[0x24] = 0xff; /* 0x00 */
3621 dev->regs[0x25] = 0x00; /* 0xff */
3623 dev->regs[0x30] = 0x00; /* 0x01 */
3624 dev->regs[0x31] = 0x00; /* 0x42 */
3625 dev->regs[0x36] = 0x07; /* 0x00 */
3626 dev->regs[0x39] = 0x00; /* 0x02 */
3627 dev->regs[0x40] = 0x20; /* 0x80 */
3628 dev->regs[0x44] = 0x8c; /* 0x18 */
3629 dev->regs[0x45] = 0x76; /* 0x00 */
3630 dev->regs[0x50] = 0x00; /* 0x20 */
3631 dev->regs[0x51] = 0x00; /* 0x24 */
3632 dev->regs[0x52] = 0x00; /* 0x04 */
3633 dev->regs[0x64] = 0x00; /* 0x10 */
3634 dev->regs[0x68] = 0x00; /* 0x10 */
3635 dev->regs[0x6a] = 0x00; /* 0x01 */
3636 dev->regs[0x70] = 0x00; /* 0x20 */
3637 dev->regs[0x71] = 0x00; /* 0x20 */
3638 dev->regs[0x72] = 0xe1; /* 0x00 */
3639 dev->regs[0x73] = 0x14; /* 0x00 */
3640 dev->regs[0x74] = 0x18; /* 0x00 */
3641 dev->regs[0x75] = 0x15; /* 0x00 */
3642 dev->regs[0x76] = 0x00; /* 0x20 */
3643 dev->regs[0x77] = 0x00; /* 0x01 */
3644 dev->regs[0x79] = 0x00; /* 0x02 */
3645 dev->regs[0x81] = 0x00; /* 0x41 */
3646 dev->regs[0x83] = 0x00; /* 0x10 */
3647 dev->regs[0x84] = 0x00; /* 0x21 */
3648 dev->regs[0x85] = 0x00; /* 0x20 */
3649 dev->regs[0x87] = 0x00; /* 0x20 */
3650 dev->regs[0x88] = 0x00; /* 0x81 */
3651 dev->regs[0x89] = 0x00; /* 0x20 */
3652 dev->regs[0x8a] = 0x00; /* 0x01 */
3653 dev->regs[0x8b] = 0x00; /* 0x01 */
3654 dev->regs[0x8d] = 0x80; /* 0x22 */
3655 dev->regs[0x8e] = 0x68; /* 0x00 */
3656 dev->regs[0x8f] = 0x00; /* 0x40 */
3657 dev->regs[0x90] = 0x00; /* 0x05 */
3658 dev->regs[0x93] = 0x02; /* 0x01 */
3659 dev->regs[0x94] = 0x0e; /* 0x1e */
3660 dev->regs[0xb0] = 0x00; /* 0x80 */
3661 dev->regs[0xb2] = 0x02; /* 0x06 */
3662 dev->regs[0xc0] = 0xff; /* 0x00 */
3663 dev->regs[0xc1] = 0x0f; /* 0x00 */
3664 dev->regs[0xc3] = 0xff; /* 0x00 */
3665 dev->regs[0xc4] = 0xff; /* 0x00 */
3666 dev->regs[0xc5] = 0xff; /* 0x00 */
3667 dev->regs[0xc6] = 0xff; /* 0x00 */
3668 dev->regs[0xc7] = 0xff; /* 0x00 */
3669 dev->regs[0xc8] = 0xff; /* 0x00 */
3670 dev->regs[0xca] = 0x0e; /* 0x00 */
3671 dev->regs[0xcd] = 0xf0; /* 0x00 */
3672 dev->regs[0xce] = 0xff; /* 0x00 */
3673 dev->regs[0xcf] = 0xf5; /* 0x00 */
3674 dev->regs[0xd0] = 0xf7; /* 0x00 */
3675 dev->regs[0xd1] = 0xea; /* 0x00 */
3676 dev->regs[0xd2] = 0x0b; /* 0x00 */
3677 dev->regs[0xd3] = 0x03; /* 0x00 */
3678 dev->regs[0xd4] = 0x05; /* 0x01 */
3679 dev->regs[0xd5] = 0x86; /* 0x06 */
3680 dev->regs[0xd7] = 0x30; /* 0x10 */
3681 dev->regs[0xd8] = 0xf6; /* 0x7a */
3682 dev->regs[0xd9] = 0x80; /* 0x00 */
3683 dev->regs[0xda] = 0x00; /* 0x15 */
3684 dev->regs[0xe2] = 0x01; /* 0x00 */
3685 /* dev->regs[0xe5] = 0x14; 0x0f */
3686 SET_DOUBLE (dev->regs, EXPOSURE_REG, 20);
3688 status = rts8891_write_all (dev->devnum, dev->regs, dev->reg_count);
3711 dev->regs[0x01] = 0x41;
3712 dev->regs[0x0b] = 0x70;
3713 dev->regs[0x0c] = 0x00;
3714 dev->regs[0x0d] = 0x00;
3715 dev->regs[0x0e] = 0x00;
3716 dev->regs[0x0f] = 0x00;
3718 dev->regs[0x12] = 0x00;
3719 dev->regs[0x13] = 0x20;
3720 dev->regs[0x14] = 0x00;
3721 dev->regs[0x15] = 0x20;
3722 dev->regs[0x16] = 0x00;
3723 dev->regs[0x17] = 0x00;
3724 dev->regs[0x18] = 0x00;
3725 dev->regs[0x19] = 0x00;
3726 dev->regs[0x1a] = 0x00;
3727 dev->regs[0x1b] = 0x00;
3728 dev->regs[0x1c] = 0x00;
3729 dev->regs[0x1d] = 0x20;
3730 dev->regs[0x1e] = 0x00;
3731 dev->regs[0x1f] = 0x00;
3734 dev->regs[0x20] = 0x3a;
3735 dev->regs[0x21] = 0xf2;
3736 dev->regs[0x22] = 0x00;
3738 dev->regs[0x23] = 0x00;
3739 dev->regs[0x24] = 0x00;
3740 dev->regs[0x25] = 0x00;
3741 dev->regs[0x26] = 0x00;
3742 dev->regs[0x27] = 0x00;
3743 dev->regs[0x28] = 0x00;
3744 dev->regs[0x29] = 0x00;
3745 dev->regs[0x2a] = 0x00;
3746 dev->regs[0x2b] = 0x00;
3747 dev->regs[0x2c] = 0x00;
3748 dev->regs[0x2d] = 0x00;
3749 dev->regs[0x2e] = 0x00;
3750 dev->regs[0x2f] = 0x00;
3751 dev->regs[0x30] = 0x00;
3752 dev->regs[0x31] = 0x00;
3753 dev->regs[0x32] = 0x00;
3754 dev->regs[0x33] = 0x00;
3755 dev->regs[0x34] = 0x10;
3756 dev->regs[0x35] = 0x00;
3757 dev->regs[0x36] = 0x07;
3758 dev->regs[0x37] = 0x00;
3759 dev->regs[0x38] = 0x00;
3760 dev->regs[0x39] = 0x00;
3761 dev->regs[0x3a] = 0x00;
3762 dev->regs[0x3b] = 0x00;
3763 dev->regs[0x3c] = 0x00;
3764 dev->regs[0x3d] = 0x00;
3765 dev->regs[0x3e] = 0x00;
3766 dev->regs[0x3f] = 0x00;
3767 dev->regs[0x40] = 0x20;
3768 dev->regs[0x41] = 0x00;
3769 dev->regs[0x42] = 0x00;
3770 dev->regs[0x43] = 0x00;
3771 dev->regs[0x44] = 0x8c;
3772 dev->regs[0x45] = 0x76;
3773 dev->regs[0x46] = 0x00;
3774 dev->regs[0x47] = 0x00;
3775 dev->regs[0x48] = 0x00;
3776 dev->regs[0x49] = 0x00;
3777 dev->regs[0x4a] = 0x00;
3778 dev->regs[0x4b] = 0x00;
3779 dev->regs[0x4c] = 0x00;
3780 dev->regs[0x4d] = 0x00;
3781 dev->regs[0x4e] = 0x00;
3782 dev->regs[0x4f] = 0x00;
3783 dev->regs[0x50] = 0x00;
3784 dev->regs[0x51] = 0x00;
3785 dev->regs[0x52] = 0x00;
3786 dev->regs[0x53] = 0x00;
3787 dev->regs[0x54] = 0x00;
3788 dev->regs[0x55] = 0x00;
3789 dev->regs[0x56] = 0x00;
3790 dev->regs[0x57] = 0x00;
3791 dev->regs[0x58] = 0x00;
3792 dev->regs[0x59] = 0x00;
3793 dev->regs[0x5a] = 0x00;
3794 dev->regs[0x5b] = 0x00;
3795 dev->regs[0x5c] = 0x00;
3796 dev->regs[0x5d] = 0x00;
3797 dev->regs[0x5e] = 0x00;
3798 dev->regs[0x5f] = 0x00;
3799 dev->regs[0x64] = 0x00;
3800 dev->regs[0x65] = 0x00;
3801 dev->regs[0x66] = 0x00;
3802 dev->regs[0x67] = 0x00;
3803 dev->regs[0x68] = 0x00;
3804 dev->regs[0x69] = 0x00;
3805 dev->regs[0x6a] = 0x00;
3806 dev->regs[0x6b] = 0x00;
3807 dev->regs[0x6e] = 0x00;
3808 dev->regs[0x6f] = 0x00;
3809 dev->regs[0x70] = 0x00;
3810 dev->regs[0x71] = 0x00;
3811 dev->regs[0x72] = 0x00;
3812 dev->regs[0x73] = 0x00;
3813 dev->regs[0x74] = 0x00;
3814 dev->regs[0x75] = 0x00;
3815 dev->regs[0x76] = 0x00;
3816 dev->regs[0x77] = 0x00;
3817 dev->regs[0x78] = 0x00;
3818 dev->regs[0x79] = 0x00;
3819 dev->regs[0x7a] = 0x00;
3820 dev->regs[0x7b] = 0x00;
3821 dev->regs[0x7c] = 0x00;
3822 dev->regs[0x7d] = 0x00;
3823 dev->regs[0x7e] = 0x00;
3824 dev->regs[0x7f] = 0x00;
3825 dev->regs[0x80] = 0x00;
3826 dev->regs[0x81] = 0x00;
3827 dev->regs[0x82] = 0x00;
3828 dev->regs[0x83] = 0x00;
3829 dev->regs[0x84] = 0x00;
3830 dev->regs[0x85] = 0x00;
3831 dev->regs[0x86] = 0x00;
3832 dev->regs[0x87] = 0x00;
3833 dev->regs[0x88] = 0x00;
3834 dev->regs[0x89] = 0x00;
3835 dev->regs[0x8a] = 0x00;
3836 dev->regs[0x8b] = 0x00;
3837 dev->regs[0x8c] = 0x00;
3838 dev->regs[0x8d] = 0x80;
3839 dev->regs[0x8e] = 0x68;
3840 dev->regs[0x8f] = 0x00;
3841 dev->regs[0x90] = 0x00;
3842 dev->regs[0x91] = 0x00;
3843 dev->regs[0x92] = 0x00;
3844 dev->regs[0x93] = 0x02;
3845 dev->regs[0x94] = 0x0e;
3846 dev->regs[0x95] = 0x00;
3847 dev->regs[0x96] = 0x00;
3848 dev->regs[0x97] = 0x00;
3849 dev->regs[0x98] = 0x00;
3850 dev->regs[0x99] = 0x00;
3851 dev->regs[0x9a] = 0x00;
3852 dev->regs[0x9b] = 0x00;
3853 dev->regs[0x9c] = 0x00;
3854 dev->regs[0x9d] = 0x00;
3855 dev->regs[0x9e] = 0x00;
3856 dev->regs[0x9f] = 0x00;
3857 dev->regs[0xa0] = 0x00;
3858 dev->regs[0xa1] = 0x00;
3859 dev->regs[0xa2] = 0x00;
3860 dev->regs[0xa3] = 0xcc;
3861 dev->regs[0xa4] = 0x27;
3862 dev->regs[0xa5] = 0x64;
3863 dev->regs[0xa6] = 0x00;
3864 dev->regs[0xa7] = 0x00;
3865 dev->regs[0xa8] = 0x00;
3866 dev->regs[0xa9] = 0x00;
3867 dev->regs[0xaa] = 0x00;
3868 dev->regs[0xab] = 0x00;
3869 dev->regs[0xac] = 0x00;
3870 dev->regs[0xad] = 0x00;
3871 dev->regs[0xae] = 0x00;
3872 dev->regs[0xaf] = 0x00;
3873 dev->regs[0xb0] = 0x00;
3874 dev->regs[0xb1] = 0x00;
3875 dev->regs[0xb2] = 0x02;
3876 dev->regs[0xb4] = 0x00;
3877 dev->regs[0xb5] = 0x00;
3878 dev->regs[0xb6] = 0x00;
3879 dev->regs[0xb7] = 0x00;
3880 dev->regs[0xb8] = 0x00;
3881 dev->regs[0xb9] = 0x00;
3882 dev->regs[0xba] = 0x00;
3883 dev->regs[0xbb] = 0x00;
3884 dev->regs[0xbc] = 0x00;
3885 dev->regs[0xbd] = 0x00;
3886 dev->regs[0xbe] = 0x00;
3887 dev->regs[0xbf] = 0x00;
3888 dev->regs[0xc0] = 0x00;
3889 dev->regs[0xc1] = 0x00;
3890 dev->regs[0xc2] = 0x00;
3891 dev->regs[0xc3] = 0x00;
3892 dev->regs[0xc4] = 0x00;
3893 dev->regs[0xc5] = 0x00;
3894 dev->regs[0xc6] = 0x00;
3895 dev->regs[0xc7] = 0x00;
3896 dev->regs[0xc8] = 0x00;
3897 dev->regs[0xc9] = 0x00;
3898 dev->regs[0xca] = 0x00;
3899 dev->regs[0xcb] = 0x00;
3900 dev->regs[0xcc] = 0x00;
3901 dev->regs[0xcd] = 0x00;
3902 dev->regs[0xce] = 0x00;
3903 dev->regs[0xcf] = 0x00;
3904 dev->regs[0xd0] = 0x00;
3905 dev->regs[0xd1] = 0x00;
3906 dev->regs[0xd2] = 0x00;
3907 dev->regs[0xd3] = 0x00;
3908 dev->regs[0xd4] = 0x00;
3909 dev->regs[0xd5] = 0x86;
3910 dev->regs[0xd6] = 0x1b;
3911 dev->regs[0xd7] = 0x00;
3912 dev->regs[0xd8] = 0xff;
3913 dev->regs[0xd9] = 0x00;
3914 dev->regs[0xda] = 0x27;
3915 dev->regs[0xdb] = 0x00;
3916 dev->regs[0xdc] = 0x00;
3917 dev->regs[0xdd] = 0x00;
3918 dev->regs[0xde] = 0x00;
3919 dev->regs[0xdf] = 0x00;
3920 dev->regs[0xe0] = 0x00;
3921 dev->regs[0xe1] = 0x00;
3922 dev->regs[0xe2] = 0x01;
3923 dev->regs[0xe3] = 0x00;
3924 dev->regs[0xe4] = 0x00;
3926 /*dev->regs[0xe5] = 0x14;
3927 dev->regs[0xe6] = 0x00; 14=20 */
3928 SET_DOUBLE (dev->regs, EXPOSURE_REG, 20);
3930 dev->regs[0xe7] = 0x00;
3931 dev->regs[0xe8] = 0x00;
3932 dev->regs[0xe9] = 0x00;
3933 dev->regs[0xea] = 0x00;
3934 dev->regs[0xeb] = 0x00;
3935 dev->regs[0xec] = 0x00;
3936 dev->regs[0xed] = 0x00;
3937 dev->regs[0xee] = 0x00;
3938 dev->regs[0xef] = 0x00;
3939 dev->regs[0xf0] = 0x00;
3940 dev->regs[0xf1] = 0x00;
3941 dev->regs[0xf2] = 0x00;
3942 dev->regs[0xf3] = 0x00;
3947 dev->regs[i] = 0x00;
3949 dev->regs[0x00] = 0xf5;
3950 dev->regs[0x01] = 0x41;
3951 dev->regs[0x0b] = 0x70;
3952 dev->regs[0x10] = 0x50;
3953 dev->regs[0x11] = 0x03;
3954 dev->regs[0x12] = 0xff;
3955 dev->regs[0x13] = 0x3e;
3956 dev->regs[0x16] = 0xff;
3957 dev->regs[0x17] = 0x3e;
3958 dev->regs[0x1d] = 0x22;
3959 dev->regs[0x22] = 0x01;
3960 dev->regs[0x23] = 0xff;
3961 dev->regs[0x25] = 0xfe;
3962 dev->regs[0x34] = 0x10;
3963 dev->regs[0x39] = 0x02;
3964 dev->regs[0x40] = 0x80;
3965 dev->regs[0x44] = 0x8c;
3966 dev->regs[0x45] = 0x76;
3967 dev->regs[0x50] = 0x20;
3968 dev->regs[0x8b] = 0xff;
3969 dev->regs[0x8c] = 0x3f;
3970 dev->regs[0x8d] = 0x80;
3971 dev->regs[0x8e] = 0x68;
3972 dev->regs[0x93] = 0x01;
3973 dev->regs[0x94] = 0x1e;
3974 dev->regs[0xa3] = 0xcc;
3975 dev->regs[0xa4] = 0x27;
3976 dev->regs[0xa5] = 0x64;
3977 dev->regs[0xb0] = 0x80;
3978 dev->regs[0xb1] = 0x01;
3979 dev->regs[0xb2] = 0x06;
3980 dev->regs[0xd4] = 0x01;
3981 dev->regs[0xd5] = 0x06;
3982 dev->regs[0xd6] = 0x1b;
3983 dev->regs[0xd7] = 0x10;
3984 dev->regs[0xd8] = 0x7a;
3985 dev->regs[0xda] = 0xa7;
3986 dev->regs[0xe5] = 0x0f;
3989 dev->regs[0x30] = 0x40; /* 0x00 */
3990 dev->regs[0x31] = 0x80; /* 0x00 */
3991 dev->regs[0x44] = 0x00; /* 0x8c */
3992 dev->regs[0x45] = 0x00; /* 0x76 */
3993 dev->regs[0x52] = 0x04; /* 0x00 */
3994 dev->regs[0x69] = 0x01; /* 0x00 */
3995 dev->regs[0x6a] = 0x10; /* 0x00 */
3996 dev->regs[0x6e] = 0x08; /* 0x00 */
3997 dev->regs[0x70] = 0x40; /* 0x00 */
3998 dev->regs[0x71] = 0x08; /* 0x00 */
3999 dev->regs[0x78] = 0x08; /* 0x00 */
4000 dev->regs[0x79] = 0x11; /* 0x00 */
4001 dev->regs[0x82] = 0x40; /* 0x00 */
4002 dev->regs[0x83] = 0x30; /* 0x00 */
4003 dev->regs[0x84] = 0x45; /* 0x00 */
4004 dev->regs[0x87] = 0x02; /* 0x00 */
4005 dev->regs[0x88] = 0x05; /* 0x00 */
4006 dev->regs[0x8b] = 0x01; /* 0xff */
4007 dev->regs[0x8c] = 0x80; /* 0x3f */
4008 dev->regs[0x8d] = 0x04; /* 0x80 */
4009 dev->regs[0x8e] = 0x10; /* 0x68 */
4010 dev->regs[0x8f] = 0x01; /* 0x00 */
4011 dev->regs[0x90] = 0x80; /* 0x00 */
4092 sanei_rts88xx_get_status (dev->devnum, dev->regs);
4093 DBG (DBG_io, "init_device: status=0x%02x 0x%02x\n", dev->regs[0x10],
4094 dev->regs[0x11]);
4097 sanei_rts88xx_get_lamp_status (dev->devnum, dev->regs);
4098 DBG (DBG_io, "init_device: lamp status=0x%02x\n", dev->regs[0x8e]);
4102 DBG (DBG_info, "init_device: reg[8e]=0x%02x\n", dev->regs[0x8e]);
4105 sanei_rts88xx_reset_lamp (dev->devnum, dev->regs);
4106 if ((dev->regs[0x8e] & 0x60) != 0x60)
4117 sanei_rts88xx_get_lcd (dev->devnum, dev->regs);
4119 dev->regs[0x20], dev->regs[0x21], dev->regs[0x22]);
4138 sanei_rts88xx_read_regs (dev->devnum, 0, dev->regs, dev->reg_count);
4143 sprintf (message + strlen (message), "0x%02x ", dev->regs[i]);
4149 val = dev->regs[0x44] + 256 * dev->regs[0x45];
4166 sanei_rts88xx_set_offset (dev->regs, 31, 31, 31);
4167 sanei_rts88xx_set_gain (dev->regs, 10, 10, 10);
4168 dev->regs[0] = dev->regs[0] & 0xef;
4170 rts8891_write_all (dev->devnum, dev->regs, dev->reg_count);
4172 sanei_rts88xx_read_regs (dev->devnum, 0x1a, dev->regs + 0x1a, 2);
4174 DBG (DBG_io, "init_device: 0x%02x 0x%02x\n", dev->regs[0x1a],
4175 dev->regs[0x1b]);
4177 dev->regs[0xcf] = 0x00;
4178 dev->regs[0xd0] = 0xe0;
4179 rts8891_write_all (dev->devnum, dev->regs, dev->reg_count);
4180 sanei_rts88xx_read_regs (dev->devnum, 0x1a, dev->regs + 0x1a, 2);
4182 DBG (DBG_io, "init_device: 0x%02x 0x%02x\n", dev->regs[0x1a],
4183 dev->regs[0x1b]);
4185 sanei_rts88xx_set_status (dev->devnum, dev->regs, 0x20, 0x28);
4186 sanei_rts88xx_set_status (dev->devnum, dev->regs, 0x28, 0x28);
4198 dev->regs[0x12] = 0xff;
4199 dev->regs[0x14] = 0xf8;
4200 dev->regs[0x15] = 0x28;
4201 dev->regs[0x16] = 0x07;
4202 dev->regs[0x18] = 0xff;
4203 dev->regs[0x23] = 0xff;
4204 dev->regs[0x24] = 0xff;
4206 dev->regs[0x72] = 0xe1;
4207 dev->regs[0x73] = 0x14;
4208 dev->regs[0x74] = 0x18;
4209 dev->regs[0x75] = 0x15;
4210 dev->regs[0xc0] = 0xff;
4211 dev->regs[0xc1] = 0x0f;
4212 dev->regs[0xc3] = 0xff;
4213 dev->regs[0xc4] = 0xff;
4214 dev->regs[0xc5] = 0xff;
4215 dev->regs[0xc6] = 0xff;
4216 dev->regs[0xc7] = 0xff;
4217 dev->regs[0xc8] = 0xff;
4218 dev->regs[0xca] = 0x0e;
4219 dev->regs[0xcd] = 0xf0;
4220 dev->regs[0xce] = 0xff;
4221 dev->regs[0xcf] = 0xf5;
4222 dev->regs[0xd0] = 0xf7;
4223 dev->regs[0xd1] = 0xea;
4224 dev->regs[0xd2] = 0x0b;
4225 dev->regs[0xd3] = 0x03;
4226 dev->regs[0xd4] = 0x05;
4227 dev->regs[0xd7] = 0x30;
4228 dev->regs[0xd8] = 0xf6;
4229 dev->regs[0xd9] = 0x80;
4230 rts8891_write_all (dev->devnum, dev->regs, dev->reg_count);
4313 dev->regs[0x91] = 0x00; /* page 0 ? */
4314 dev->regs[0x92] = 0x00;
4315 dev->regs[0x93] = 0x01;
4316 rts8891_write_all (dev->devnum, dev->regs, dev->reg_count);
4377 sanei_rts88xx_read_regs (dev->devnum, 0x14, dev->regs + 0x14, 2);
4379 dev->regs[0x14] = dev->regs[0x14] & 0x7F;
4380 sanei_rts88xx_write_regs (dev->devnum, 0x14, dev->regs + 0x14, 2);
4383 sanei_rts88xx_get_status (dev->devnum, dev->regs);
4384 DBG (DBG_io, "init_device: status=0x%02x 0x%02x\n", dev->regs[0x10],
4385 dev->regs[0x11]);
4389 sanei_rts88xx_reset_lamp (dev->devnum, dev->regs);
4408 sanei_rts88xx_reset_lamp (dev->devnum, dev->regs);
4429 sanei_rts88xx_set_status (dev->devnum, dev->regs, 0x28, 0x28);
4438 sanei_rts88xx_reset_lamp (dev->devnum, dev->regs);
4460 sanei_rts88xx_set_status (dev->devnum, dev->regs, 0x28, 0x28);
4469 sanei_rts88xx_reset_lamp (dev->devnum, dev->regs);
4480 dev->regs[0x12] = 0xff;
4481 dev->regs[0x13] = 0x20;
4482 sanei_rts88xx_write_regs (dev->devnum, 0x12, dev->regs + 0x12, 2);
4483 dev->regs[0x14] = 0xf8;
4484 dev->regs[0x15] = 0x28;
4485 sanei_rts88xx_write_regs (dev->devnum, 0x14, dev->regs + 0x14, 2);
4489 sanei_rts88xx_set_status (dev->devnum, dev->regs, 0x28, 0x28);
4493 dev->regs[0x8b] = 0xff;
4494 dev->regs[0x8c] = 0x3f;
4495 dev->regs[LAMP_REG] = 0xad;
4496 rts8891_write_all (dev->devnum, dev->regs, dev->reg_count);
4572 sanei_rts88xx_read_regs (dev->devnum, 0, dev->regs, dev->reg_count);
4577 sprintf (message + strlen (message), "0x%02x ", dev->regs[i]);
4583 val = dev->regs[0x44] + 256 * dev->regs[0x45];
4591 DBG (DBG_io, "detect_device: status=0x%02x 0x%02x\n", dev->regs[0x10],
4592 dev->regs[0x11]);
4593 DBG (DBG_io, "detect_device: lamp status=0x%02x\n", dev->regs[0x8e]);
4630 sanei_rts88xx_set_gain (dev->regs, 0, 0, 0);
4631 sanei_rts88xx_set_scan_area (dev->regs, 1, 2, 4, 4 + CALIBRATION_WIDTH);
4633 sanei_rts88xx_set_status (dev->devnum, dev->regs, mode, light);
4635 dev->regs[0x00] = 0xe5; /* scan */
4636 dev->regs[0x32] = 0x00;
4637 dev->regs[0x33] = 0x03;
4638 dev->regs[0x35] = 0x45;
4639 dev->regs[0x36] = 0x22;
4640 dev->regs[0x3a] = 0x43;
4642 dev->regs[0x8d] = 0x00;
4643 dev->regs[0x8e] = 0x60;
4645 dev->regs[0xb2] = 0x02;
4647 dev->regs[0xc0] = 0x06;
4648 dev->regs[0xc1] = 0xe6;
4649 dev->regs[0xc2] = 0x67;
4650 dev->regs[0xc9] = 0x07;
4651 dev->regs[0xca] = 0x00;
4652 dev->regs[0xcb] = 0xfe;
4653 dev->regs[0xcc] = 0xf9;
4654 dev->regs[0xcd] = 0x19;
4655 dev->regs[0xce] = 0x98;
4656 dev->regs[0xcf] = 0xe8;
4657 dev->regs[0xd0] = 0xea;
4658 dev->regs[0xd1] = 0xf3;
4659 dev->regs[0xd2] = 0x14;
4660 dev->regs[0xd3] = 0x02;
4661 dev->regs[0xd4] = 0x04;
4662 dev->regs[0xd6] = 0x0f;
4663 dev->regs[0xd8] = 0x52;
4664 dev->regs[0xe2] = 0x1f;
4666 /*dev->regs[0xe5] = 0x28; 28=40
4667 dev->regs[0xe6] = 0x00; */
4668 SET_DOUBLE (dev->regs, EXPOSURE_REG, 40);
4670 dev->regs[0xe7] = 0x75;
4671 dev->regs[0xe8] = 0x01;
4672 dev->regs[0xe9] = 0x0b;
4673 dev->regs[0xea] = 0x54;
4674 dev->regs[0xeb] = 0x01;
4675 dev->regs[0xec] = 0x04;
4676 dev->regs[0xed] = 0xb8;
4677 dev->regs[0xef] = 0x03;
4678 dev->regs[0xf0] = 0x70;
4679 dev->regs[0xf2] = 0x01;
4684 dev->regs[0xc0] = 0x67;
4685 dev->regs[0xc1] = 0x06;
4686 dev->regs[0xc2] = 0xe6;
4687 dev->regs[0xc3] = 0x98;
4688 dev->regs[0xc4] = 0xf9;
4689 dev->regs[0xc5] = 0x19;
4690 dev->regs[0xc6] = 0x67;
4691 dev->regs[0xc7] = 0x06;
4692 dev->regs[0xc8] = 0xe6;
4693 dev->regs[0xc9] = 0x01;
4694 dev->regs[0xca] = 0xf8;
4695 dev->regs[0xcb] = 0xff;
4696 dev->regs[0xcc] = 0x98;
4697 dev->regs[0xcd] = 0xf9;
4698 dev->regs[0xce] = 0x19;
4699 dev->regs[0xcf] = 0xe0;
4700 dev->regs[0xd0] = 0xe2;
4701 dev->regs[0xd1] = 0xeb;
4702 dev->regs[0xd2] = 0x0c;
4703 dev->regs[0xd7] = 0x10;
4704 dev->regs[0xda] = 0xa7;
4708 dev->regs[0x13] = 0x39; /* 0x20 */
4709 dev->regs[0x14] = 0xf0; /* 0xf8 */
4710 dev->regs[0x15] = 0x29; /* 0x28 */
4711 dev->regs[0x16] = 0x0f; /* 0x07 */
4712 dev->regs[0x17] = 0x10; /* 0x00 */
4713 dev->regs[0x23] = 0x00; /* 0xff */
4714 dev->regs[0x35] = 0x48; /* 0x45 */
4715 dev->regs[0x39] = 0x00; /* 0x02 */
4716 dev->regs[0xe2] = 0x0f; /* 0x1f */
4717 /* dev->regs[0xe5] = 0x52; 0x28 */
4718 SET_DOUBLE (dev->regs, EXPOSURE_REG, 82); /* 2*40+2 */
4719 dev->regs[0xe7] = 0x0e; /* 0x75 */
4720 dev->regs[0xe9] = 0x0a; /* 0x0b */
4721 dev->regs[0xea] = 0xc2; /* 0x54 */
4722 dev->regs[0xed] = 0xf6; /* 0xb8 */
4723 dev->regs[0xef] = 0x02; /* 0x03 */
4724 dev->regs[0xf0] = 0xa8; /* 0x70 */
4728 dev->regs[0x13] = 0x39; /* 0x20 */
4729 dev->regs[0x14] = 0xf0; /* 0xf8 */
4730 dev->regs[0x15] = 0x29; /* 0x28 */
4731 dev->regs[0x16] = 0x0f; /* 0x07 */
4732 dev->regs[0x17] = 0x10; /* 0x00 */
4733 dev->regs[0x23] = 0x00; /* 0xff */
4734 dev->regs[0x35] = 0x48; /* 0x45 */
4735 dev->regs[0x39] = 0x00; /* 0x02 */
4736 dev->regs[0xda] = 0xa7; /* 0xa0 */
4737 dev->regs[0xe2] = 0x0f; /* 0x1f */
4738 SET_DOUBLE (dev->regs, EXPOSURE_REG, 82);
4739 dev->regs[0xe7] = 0x0e; /* 0x75 */
4740 dev->regs[0xe9] = 0x0a; /* 0x0b */
4741 dev->regs[0xea] = 0xc2; /* 0x54 */
4742 dev->regs[0xed] = 0xf6; /* 0xb8 */
4743 dev->regs[0xef] = 0x02; /* 0x03 */
4744 dev->regs[0xf0] = 0xa8; /* 0x70 */
4749 sanei_rts88xx_set_status (dev->devnum, dev->regs, mode, light);
4753 sanei_rts88xx_set_offset (dev->regs, ro, go, bo);
4759 rts8891_simple_scan (dev->devnum, dev->regs, dev->reg_count, 0x02,
4885 sanei_rts88xx_set_scan_area (dev->regs, 1, 2, xstart, xstart + width);
4886 sanei_rts88xx_set_offset (dev->regs, dev->red_offset, dev->green_offset,
4890 dev->regs[0x32] = 0x00;
4891 dev->regs[0x33] = 0x03;
4892 dev->regs[0x35] = 0x45;
4893 dev->regs[0x36] = 0x22;
4894 dev->regs[0x3a] = 0x43;
4896 dev->regs[0x8d] = 0x00;
4897 dev->regs[0x8e] = 0x60;
4899 dev->regs[0xb2] = 0x02;
4901 dev->regs[0xc0] = 0x06;
4902 dev->regs[0xc1] = 0xe6;
4903 dev->regs[0xc2] = 0x67;
4904 dev->regs[0xc9] = 0x07;
4905 dev->regs[0xca] = 0x00;
4906 dev->regs[0xcb] = 0xfe;
4907 dev->regs[0xcc] = 0xf9;
4908 dev->regs[0xcd] = 0x19;
4909 dev->regs[0xce] = 0x98;
4910 dev->regs[0xcf] = 0xe8;
4911 dev->regs[0xd0] = 0xea;
4912 dev->regs[0xd1] = 0xf3;
4913 dev->regs[0xd2] = 0x14;
4914 dev->regs[0xd3] = 0x02;
4915 dev->regs[0xd4] = 0x04;
4916 dev->regs[0xd6] = 0x0f;
4917 dev->regs[0xd8] = 0x52;
4918 dev->regs[0xe2] = 0x1f;
4920 /* dev->regs[0xe5] = 0x28;
4921 dev->regs[0xe6] = 0x00; 28=40 */
4922 SET_DOUBLE (dev->regs, EXPOSURE_REG, 40);
4924 dev->regs[0xe7] = 0x75;
4925 dev->regs[0xe8] = 0x01;
4926 dev->regs[0xe9] = 0x0b;
4927 dev->regs[0xea] = 0x54;
4928 dev->regs[0xeb] = 0x01;
4929 dev->regs[0xec] = 0x04;
4930 dev->regs[0xed] = 0xb8;
4931 dev->regs[0xef] = 0x03;
4932 dev->regs[0xf0] = 0x70;
4933 dev->regs[0xf2] = 0x01;
4935 dev->regs[0x72] = 0xe1;
4936 dev->regs[0x73] = 0x14;
4937 dev->regs[0x74] = 0x18;
4939 dev->regs[0xc3] = 0xff;
4940 dev->regs[0xc4] = 0xff;
4941 dev->regs[0xc7] = 0xff;
4942 dev->regs[0xc8] = 0xff;
4944 dev->regs[0xd7] = 0x30;
4948 dev->regs[0xc0] = 0x67;
4949 dev->regs[0xc1] = 0x06;
4950 dev->regs[0xc2] = 0xe6;
4951 dev->regs[0xc3] = 0x98;
4952 dev->regs[0xc4] = 0xf9;
4953 dev->regs[0xc5] = 0x19;
4954 dev->regs[0xc6] = 0x67;
4955 dev->regs[0xc7] = 0x06;
4956 dev->regs[0xc8] = 0xe6;
4957 dev->regs[0xc9] = 0x01;
4958 dev->regs[0xca] = 0xf8;
4959 dev->regs[0xcb] = 0xff;
4960 dev->regs[0xcc] = 0x98;
4961 dev->regs[0xcd] = 0xf9;
4962 dev->regs[0xce] = 0x19;
4963 dev->regs[0xcf] = 0xe0;
4964 dev->regs[0xd0] = 0xe2;
4965 dev->regs[0xd1] = 0xeb;
4966 dev->regs[0xd2] = 0x0c;
4967 dev->regs[0xd3] = 0x02;
4968 dev->regs[0xd4] = 0x04;
4969 dev->regs[0xd6] = 0x0f;
4970 dev->regs[0xd7] = 0x10;
4971 dev->regs[0xd8] = 0x52;
4972 dev->regs[0xe2] = 0x1f;
4973 /* dev->regs[0xe5] = 0x28; 0028 -> 40
4974 dev->regs[0xe6] = 0x00; */
4975 SET_DOUBLE (dev->regs, EXPOSURE_REG, 40);
4976 dev->regs[0xe7] = 0x75;
4977 dev->regs[0xe8] = 0x01;
4978 dev->regs[0xe9] = 0x0b;
4979 dev->regs[0xea] = 0x54;
4980 dev->regs[0xeb] = 0x01;
4981 dev->regs[0xec] = 0x04;
4982 dev->regs[0xed] = 0xb8;
4983 dev->regs[0xef] = 0x03;
4984 dev->regs[0xf0] = 0x70;
4985 dev->regs[0xf2] = 0x01;
4989 dev->regs[0x35] = 0x48; /* 0x45 */
4991 dev->regs[0xe2] = 0x0f; /* 0x1f */
4992 /* dev->regs[0xe5] = 0x52; */
4993 SET_DOUBLE (dev->regs, EXPOSURE_REG, 82); /* 2*40+2 */
4994 dev->regs[0xe7] = 0x0e; /* 0x75 */
4995 dev->regs[0xe9] = 0x0a; /* 0x0b */
4996 dev->regs[0xea] = 0xc2; /* 0x54 */
4997 dev->regs[0xed] = 0xf6; /* 0xb8 */
4998 dev->regs[0xef] = 0x02; /* 0x03 */
4999 dev->regs[0xf0] = 0xa8; /* 0x70 */
5003 dev->regs[0x13] = 0x39;
5004 dev->regs[0x14] = 0xf0;
5005 dev->regs[0x15] = 0x29;
5006 dev->regs[0x16] = 0x0f;
5007 dev->regs[0x17] = 0x10;
5008 dev->regs[0x23] = 0x00;
5009 dev->regs[0x35] = 0x48;
5010 dev->regs[0x39] = 0x00;
5011 dev->regs[0xe2] = 0x0f;
5012 SET_DOUBLE (dev->regs, EXPOSURE_REG, 82);
5013 dev->regs[0xe7] = 0x0e;
5014 dev->regs[0xe9] = 0x0a;
5015 dev->regs[0xea] = 0xc2;
5016 dev->regs[0xed] = 0xf6;
5017 dev->regs[0xef] = 0x02;
5018 dev->regs[0xf0] = 0xa8;
5021 dev->regs[0x85] = 0x00;
5022 dev->regs[0x86] = 0x06;
5023 dev->regs[0x87] = 0x00;
5024 dev->regs[0x88] = 0x06;
5026 SET_DOUBLE (dev->regs, TIMING_REG, timing);
5027 SET_DOUBLE (dev->regs, TIMING1_REG, timing+1);
5028 SET_DOUBLE (dev->regs, TIMING2_REG, timing+2);
5059 sanei_rts88xx_set_gain (dev->regs, rg, gg, bg);
5060 sanei_rts88xx_set_status (dev->devnum, dev->regs, mode, light);
5064 rts8891_simple_scan (dev->devnum, dev->regs, dev->reg_count, 0x02,
5240 sanei_rts88xx_set_gain (dev->regs, dev->red_gain, dev->green_gain,
5242 sanei_rts88xx_set_scan_area (dev->regs, 1, 2, 4, 4 + CALIBRATION_WIDTH);
5244 dev->regs[0x32] = 0x00;
5245 dev->regs[0x33] = 0x03;
5246 dev->regs[0x35] = 0x45;
5247 dev->regs[0x36] = 0x22;
5248 dev->regs[0x3a] = 0x43;
5250 dev->regs[0x8d] = 0x00;
5251 dev->regs[0x8e] = 0x60;
5252 dev->regs[0xb2] = 0x02;
5253 dev->regs[0xc0] = 0x06;
5254 dev->regs[0xc1] = 0xe6;
5255 dev->regs[0xc2] = 0x67;
5256 dev->regs[0xc9] = 0x07;
5257 dev->regs[0xca] = 0x00;
5258 dev->regs[0xcb] = 0xfe;
5259 dev->regs[0xcc] = 0xf9;
5260 dev->regs[0xcd] = 0x19;
5261 dev->regs[0xce] = 0x98;
5262 dev->regs[0xcf] = 0xe8;
5263 dev->regs[0xd0] = 0xea;
5264 dev->regs[0xd1] = 0xf3;
5265 dev->regs[0xd2] = 0x14;
5266 dev->regs[0xd3] = 0x02;
5267 dev->regs[0xd4] = 0x04;
5268 dev->regs[0xd6] = 0x0f;
5269 dev->regs[0xd8] = 0x52;
5270 dev->regs[0xe2] = 0x1f;
5271 /* dev->regs[0xe5] = 0x28;
5272 dev->regs[0xe6] = 0x00; 0x0028=40 */
5273 SET_DOUBLE (dev->regs, EXPOSURE_REG, 40);
5274 dev->regs[0xe7] = 0x75;
5275 dev->regs[0xe8] = 0x01;
5276 dev->regs[0xe9] = 0x0b;
5277 dev->regs[0xea] = 0x54;
5278 dev->regs[0xeb] = 0x01;
5279 dev->regs[0xec] = 0x04;
5280 dev->regs[0xed] = 0xb8;
5281 dev->regs[0xef] = 0x03;
5282 dev->regs[0xf0] = 0x70;
5283 dev->regs[0xf2] = 0x01;
5286 dev->regs[0x72] = 0xe1;
5287 dev->regs[0x73] = 0x14;
5288 dev->regs[0x74] = 0x18;
5290 dev->regs[0xc0] = 0x67;
5291 dev->regs[0xc1] = 0x06;
5292 dev->regs[0xc2] = 0xe6;
5293 dev->regs[0xc3] = 0x98;
5294 dev->regs[0xc4] = 0xf9;
5295 dev->regs[0xc5] = 0x19;
5296 dev->regs[0xc6] = 0x67;
5297 dev->regs[0xc7] = 0x06;
5298 dev->regs[0xc8] = 0xe6;
5299 dev->regs[0xc9] = 0x01;
5300 dev->regs[0xca] = 0xf8;
5301 dev->regs[0xcb] = 0xff;
5302 dev->regs[0xcc] = 0x98;
5303 dev->regs[0xcd] = 0xf9;
5304 dev->regs[0xce] = 0x19;
5305 dev->regs[0xcf] = 0xe0;
5306 dev->regs[0xd0] = 0xe2;
5307 dev->regs[0xd1] = 0xeb;
5308 dev->regs[0xd2] = 0x0c;
5309 dev->regs[0xd7] = 0x10;
5313 dev->regs[0x35] = 0x48; /* 0x45 */
5315 dev->regs[0xe2] = 0x0f; /* 0x1f */
5316 /* dev->regs[0xe5] = 0x52; 0x28 */
5317 SET_DOUBLE (dev->regs, EXPOSURE_REG, 82); /* 2*40+2 */
5318 dev->regs[0xe7] = 0x0e; /* 0x75 */
5319 dev->regs[0xe9] = 0x0a; /* 0x0b */
5320 dev->regs[0xea] = 0xc2; /* 0x54 */
5321 dev->regs[0xed] = 0xf6; /* 0xb8 */
5322 dev->regs[0xef] = 0x02; /* 0x03 */
5323 dev->regs[0xf0] = 0xa8; /* 0x70 */
5327 dev->regs[0x13] = 0x39; /* 0x20 */
5328 dev->regs[0x14] = 0xf0; /* 0xf8 */
5329 dev->regs[0x15] = 0x29; /* 0x28 */
5330 dev->regs[0x16] = 0x0f; /* 0x07 */
5331 dev->regs[0x17] = 0x10; /* 0x00 */
5332 dev->regs[0x23] = 0x00; /* 0xff */
5333 dev->regs[0x35] = 0x48; /* 0x45 */
5334 dev->regs[0x39] = 0x00; /* 0x02 */
5335 dev->regs[0xe2] = 0x0f; /* 0x1f */
5336 SET_DOUBLE (dev->regs, EXPOSURE_REG, 82); /* 2*40+2 */
5337 dev->regs[0xe7] = 0x0e; /* 0x75 */
5338 dev->regs[0xe9] = 0x0a; /* 0x0b */
5339 dev->regs[0xea] = 0xc2; /* 0x54 */
5340 dev->regs[0xed] = 0xf6; /* 0xb8 */
5341 dev->regs[0xef] = 0x02; /* 0x03 */
5342 dev->regs[0xf0] = 0xa8; /* 0x70 */
5351 sanei_rts88xx_set_offset (dev->regs, ro, go, bo);
5352 sanei_rts88xx_set_status (dev->devnum, dev->regs, mode, light);
5353 rts8891_simple_scan (dev->devnum, dev->regs, dev->reg_count, 0x02,
5450 setup_shading_calibration (struct Rts8891_Device *dev, int mode, int *light, int *status1, SANE_Byte * regs)
5470 regs[0x32] = 0x20;
5471 regs[0x33] = 0x83;
5472 regs[0x35] = 0x0e;
5473 regs[0x36] = 0x2c;
5474 regs[0x3a] = 0x0e;
5476 regs[0xe2] = 0x05;
5477 regs[0xe7] = 0x00;
5478 regs[0xe8] = 0x00;
5479 regs[0xe9] = 0x00;
5480 regs[0xea] = 0x00;
5481 regs[0xeb] = 0x00;
5482 regs[0xec] = 0x00;
5483 regs[0xed] = 0x00;
5484 regs[0xef] = 0x00;
5485 regs[0xf0] = 0x00;
5486 regs[0xf2] = 0x00;
5487 /* regs[0xe5] = 0xdd; */
5492 regs[0xc0] = 0x67;
5493 regs[0xc1] = 0x06;
5494 regs[0xc2] = 0xe6;
5495 regs[0xc3] = 0x98;
5496 regs[0xc4] = 0xf9;
5497 regs[0xc5] = 0x19;
5498 regs[0xc6] = 0x67;
5499 regs[0xc7] = 0x06;
5500 regs[0xc8] = 0xe6;
5501 regs[0xc9] = 0x01;
5502 regs[0xca] = 0xf8;
5503 regs[0xcb] = 0xff;
5504 regs[0xcc] = 0x98;
5505 regs[0xcd] = 0xf9;
5506 regs[0xce] = 0x19;
5507 regs[0xcf] = 0xe0;
5508 regs[0xd0] = 0xe2;
5510 regs[0xd1] = 0xeb;
5511 regs[0xd2] = 0x0c;
5513 regs[0xd7] = 0x10;
5518 regs[0x36] = 0x29; /* 0x2c */
5520 regs[0x85] = 0x00; /* 0x8c */
5521 regs[0x86] = 0x06; /* 0x10 */
5522 regs[0x87] = 0x00; /* 0x18 */
5523 regs[0x88] = 0x06; /* 0x1b */
5524 regs[0x8d] = 0x00; /* 0x77 */
5526 /* regs[0xd3] = 0x02; 0x0e */
5527 regs[0xd4] = 0x04; /* 0x10 */
5528 regs[0xe2] = 0x02; /* 0x05 */
5529 /* regs[0xe5] = 0xbb;
5530 regs[0xe6] = 0x01; 1bb =443 */
5535 regs[0x13] = 0x39; /* 0x20 */
5536 regs[0x14] = 0xf0; /* 0xf8 */
5537 regs[0x15] = 0x29; /* 0x28 */
5538 regs[0x16] = 0x0f; /* 0x07 */
5539 regs[0x17] = 0x10; /* 0x00 */
5540 regs[0x23] = 0x00; /* 0xff */
5541 regs[0x36] = 0x29; /* 0x2c */
5542 regs[0x39] = 0x00; /* 0x02 */
5543 regs[0xe2] = 0x02; /* 0x05 */
5560 regs[0x85] = 0x18;
5561 regs[0x86] = 0x1b;
5562 regs[0x87] = 0x30;
5563 regs[0x88] = 0x30;
5564 regs[0x8d] = 0xef;
5565 regs[0xc0] = 0x00;
5566 regs[0xc1] = 0x8e;
5567 regs[0xc2] = 0xff;
5568 regs[0xc3] = 0xff;
5569 regs[0xc4] = 0x71;
5570 regs[0xc5] = 0x00;
5571 regs[0xc6] = 0x00;
5572 regs[0xc7] = 0x8e;
5573 regs[0xc8] = 0xff;
5574 regs[0xc9] = 0xff;
5575 regs[0xca] = 0xff;
5576 regs[0xcb] = 0x1f;
5577 regs[0xcc] = 0xff;
5578 regs[0xcd] = 0x71;
5579 regs[0xce] = 0x00;
5580 regs[0xcf] = 0xe6;
5581 regs[0xd0] = 0xe8;
5582 regs[0xd1] = 0xf6;
5583 regs[0xd2] = 0x17;
5584 /* regs[0xd3] = 0x0b; */
5585 regs[0xd4] = 0x0d;
5586 /* regs[0xe5] = 0xe4; */
5593 regs[0x85] = 0x8c;
5594 regs[0x86] = 0x10;
5595 regs[0x87] = 0x18;
5596 regs[0x88] = 0x1b;
5597 regs[0x8d] = 0x77;
5598 regs[0xc0] = 0x80;
5599 regs[0xc1] = 0x87;
5600 regs[0xc2] = 0x7f;
5601 regs[0xc9] = 0x00;
5602 regs[0xcb] = 0x78;
5603 regs[0xcc] = 0x7f;
5604 regs[0xcd] = 0x78;
5605 regs[0xce] = 0x80;
5606 regs[0xcf] = 0xe6;
5607 regs[0xd0] = 0xe8;
5609 regs[0xd1] = 0xf7;
5610 regs[0xd2] = 0x00;
5612 /* regs[0xd3] = 0x0e; */
5613 regs[0xd4] = 0x10;
5615 /* regs[0xe5] = 0xe4; */
5622 regs[0x85] = 0x8c;
5623 regs[0x86] = 0x10;
5624 regs[0x87] = 0x18;
5625 regs[0x88] = 0x1b;
5626 regs[0x8d] = 0x77;
5627 regs[0xc0] = 0x00;
5628 regs[0xc1] = 0x8e;
5629 regs[0xc2] = 0xff;
5630 regs[0xc3] = 0xff;
5631 regs[0xc4] = 0x71;
5632 regs[0xc5] = 0x00;
5633 regs[0xc6] = 0x00;
5634 regs[0xc7] = 0x8e;
5635 regs[0xc8] = 0xff;
5636 regs[0xc9] = 0xff;
5637 regs[0xca] = 0xff;
5638 regs[0xcb] = 0x1f;
5639 regs[0xcc] = 0xff;
5640 regs[0xcd] = 0x71;
5641 regs[0xce] = 0x00;
5642 regs[0xcf] = 0xe6;
5643 regs[0xd0] = 0xe8;
5644 regs[0xd1] = 0xf6;
5645 regs[0xd2] = 0x17;
5646 /* regs[0xd3] = 0x0b; */
5647 regs[0xd4] = 0x0d;
5653 regs[0x13] = 0x39; /* 0x20 */
5654 regs[0x14] = 0xf0; /* 0xf8 */
5655 regs[0x15] = 0x29; /* 0x28 */
5656 regs[0x16] = 0x0f; /* 0x07 */
5657 regs[0x17] = 0x10; /* 0x00 */
5658 regs[0x23] = 0x00; /* 0xff */
5659 regs[0x36] = 0x29; /* 0x2c */
5660 regs[0x39] = 0x00; /* 0x02 */
5662 regs[0x85] = 0x46; /* 0x00 */
5663 regs[0x86] = 0x0b; /* 0x06 */
5664 regs[0x87] = 0x8c; /* 0x00 */
5665 regs[0x88] = 0x10; /* 0x06 */
5666 regs[0x8d] = 0x3b; /* 0x00 */
5667 regs[0xc0] = 0xff; /* 0x06 */
5668 regs[0xc1] = 0x0f; /* 0xe6 */
5669 regs[0xc2] = 0x00; /* 0x67 */
5670 regs[0xc9] = 0x00; /* 0x07 */
5671 regs[0xca] = 0x0e; /* 0x00 */
5672 regs[0xcb] = 0x00; /* 0xfe */
5673 regs[0xcc] = 0x00; /* 0xf9 */
5674 regs[0xcd] = 0xf0; /* 0x19 */
5675 regs[0xce] = 0xff; /* 0x98 */
5676 regs[0xcf] = 0xf5; /* 0xe8 */
5677 regs[0xd0] = 0xf7; /* 0xea */
5678 regs[0xd1] = 0xea; /* 0xf3 */
5679 regs[0xd2] = 0x0b; /* 0x14 */
5680 /* regs[0xd3] = 0x17; 0x02 */
5681 regs[0xd4] = 0x01; /* 0x04 */
5682 regs[0xe2] = 0x02; /* 0x05 */
5683 /* regs[0xe5] = 0x93; regs[0xe6] = 0x03; */
5696 regs[0x85] = 0x46;
5697 regs[0x86] = 0x0b;
5698 regs[0x87] = 0x8c;
5699 regs[0x88] = 0x10;
5700 regs[0x8d] = 0x3b;
5701 regs[0xc0] = 0x00;
5702 regs[0xc1] = 0xff;
5703 regs[0xc2] = 0x0f;
5704 regs[0xc3] = 0xff;
5705 regs[0xc4] = 0x00;
5706 regs[0xc5] = 0xf0;
5707 regs[0xc6] = 0x00;
5708 regs[0xc7] = 0xff;
5709 regs[0xc8] = 0x0f;
5710 regs[0xc9] = 0xff;
5711 regs[0xca] = 0xff;
5712 regs[0xcb] = 0xf1;
5713 regs[0xcc] = 0xff;
5714 regs[0xcd] = 0x00;
5715 regs[0xce] = 0xf0;
5716 regs[0xcf] = 0xed;
5717 regs[0xd0] = 0xef;
5718 regs[0xd1] = 0xe2;
5719 regs[0xd2] = 0x03;
5720 /* regs[0xd3] = 0x17; */
5721 regs[0xd4] = 0x01;
5722 /* regs[0xe5] = 0xc9;
5723 regs[0xe6] = 0x01; 0x01c9=457 */
5730 regs[0x85] = 0x8c;
5731 regs[0x86] = 0x10;
5732 regs[0x87] = 0x18;
5733 regs[0x88] = 0x1b;
5735 regs[0x8d] = 0xde;
5736 regs[0x8e] = 0x61; /* low nibble of 8e and 8d are proportional to
5739 regs[0xc0] = 0xff;
5740 regs[0xc1] = 0x0f;
5741 regs[0xc2] = 0x00;
5742 regs[0xc9] = 0x00;
5743 regs[0xca] = 0x0e;
5744 regs[0xcb] = 0x00;
5745 regs[0xcc] = 0x00;
5746 regs[0xcd] = 0xf0;
5747 regs[0xce] = 0xff;
5748 regs[0xcf] = 0xf5;
5749 regs[0xd0] = 0xf7;
5751 regs[0xd1] = 0xea;
5752 regs[0xd2] = 0x0b;
5754 /* regs[0xd3] = 0x17; */
5755 regs[0xd4] = 0x01;
5756 /* regs[0xe5] = 0xc9;
5757 regs[0xe6] = 0x01; 0x1c9=457 */
5764 regs[0x85] = 0x18;
5765 regs[0x86] = 0x1b;
5766 regs[0x87] = 0x30;
5767 regs[0x88] = 0x30;
5768 regs[0x8d] = 0xef;
5769 regs[0xc0] = 0x00;
5770 regs[0xc1] = 0xff;
5771 regs[0xc2] = 0x0f;
5772 regs[0xc3] = 0xff;
5773 regs[0xc4] = 0x00;
5774 regs[0xc5] = 0xf0;
5775 regs[0xc6] = 0x00;
5776 regs[0xc7] = 0xff;
5777 regs[0xc8] = 0x0f;
5778 regs[0xc9] = 0xff;
5779 regs[0xca] = 0xff;
5780 regs[0xcb] = 0xf1;
5781 regs[0xcc] = 0xff;
5782 regs[0xcd] = 0x00;
5783 regs[0xce] = 0xf0;
5784 regs[0xcf] = 0xed;
5785 regs[0xd0] = 0xef;
5786 regs[0xd1] = 0xe2;
5787 regs[0xd2] = 0x03;
5788 /* regs[0xd3] = 0x17; */
5789 regs[0xd4] = 0x01;
5808 regs[0x34] = 0x10;
5810 regs[0x72] = 0x3a;
5811 regs[0x73] = 0x15;
5812 regs[0x74] = 0x62;
5816 regs[0x85] = 0x18;
5817 regs[0x86] = 0x1b;
5819 regs[0x87] = 0x30;
5820 regs[0x88] = 0x30;
5822 regs[0x8d] = 0xde;
5823 regs[0x8e] = 0x61; /* low nibble of 8e and 8d are proportional to
5825 regs[0xc0] = 0xff;
5826 regs[0xc1] = 0xff;
5827 regs[0xc2] = 0xff;
5828 regs[0xc3] = 0x00;
5829 regs[0xc4] = 0xf0;
5830 regs[0xc7] = 0x0f;
5831 regs[0xc8] = 0x00;
5832 regs[0xcb] = 0xe0;
5833 regs[0xcc] = 0xff;
5834 regs[0xcd] = 0xff;
5835 regs[0xce] = 0xff;
5836 regs[0xcf] = 0xe9;
5837 regs[0xd0] = 0xeb;
5839 regs[0xd7] = 0x14;
5841 /* regs[0xe5] = 0x93;
5842 regs[0xe6] = 0x03; 0x393=915 = 457*2+1 */
5850 regs[0x16] = 0x07;
5851 regs[0x33] = 0x83; /* 0x86 */
5852 regs[0x34] = 0x10;
5853 regs[0x50] = 0x00; /* 0x18 */
5854 regs[0x64] = 0x01; /* 0x02 */
5855 regs[0x65] = 0x20; /* 0x10 */
5857 regs[0x72] = 0x3a;
5858 regs[0x73] = 0x15;
5859 regs[0x74] = 0x62;
5861 regs[0x85] = 0x00;
5862 regs[0x86] = 0x06;
5864 regs[0x87] = 0x00;
5865 regs[0x88] = 0x06;
5867 regs[0x8d] = 0x00;
5868 regs[0x8e] = 0x60; /* XXX STEF XXX */
5870 regs[0xc0] = 0xf8;
5871 regs[0xc1] = 0x7f;
5872 regs[0xc2] = 0x00;
5873 regs[0xc3] = 0xf8;
5874 regs[0xc4] = 0x7f;
5875 regs[0xc5] = 0x00;
5876 regs[0xc6] = 0xf8;
5877 regs[0xc7] = 0x7f;
5878 regs[0xc8] = 0x00;
5879 regs[0xc9] = 0xff;
5880 regs[0xca] = 0x8f;
5881 regs[0xcb] = 0xff;
5882 regs[0xcc] = 0x07;
5883 regs[0xcd] = 0x80;
5884 regs[0xce] = 0xff;
5885 regs[0xcf] = 0xf2;
5886 regs[0xd0] = 0xf4;
5887 regs[0xd1] = 0xe7;
5888 regs[0xd2] = 0x08;
5889 regs[0xd3] = 0x0e;
5890 regs[0xd4] = 0x10;
5891 regs[0xd7] = 0x31;
5902 regs[0x13] = 0x39;
5903 regs[0x14] = 0xf0;
5904 regs[0x15] = 0x29;
5905 regs[0x16] = 0x0f;
5906 regs[0x17] = 0x10;
5907 regs[0x23] = 0x00;
5908 regs[0x34] = 0xf0;
5909 regs[0x36] = 0x29;
5910 regs[0x39] = 0x00;
5911 regs[0x72] = 0x3a;
5912 regs[0x73] = 0x15;
5913 regs[0x74] = 0x62;
5915 regs[0x85] = 0x30;
5916 regs[0x86] = 0x30;
5917 regs[0x87] = 0x60;
5918 regs[0x88] = 0x5a;
5919 regs[0x8d] = 0xde;
5920 regs[0x8e] = 0x61;
5921 regs[0xc0] = 0xf8;
5922 regs[0xc1] = 0x7f;
5923 regs[0xc2] = 0x00;
5924 regs[0xc3] = 0xf8;
5925 regs[0xc4] = 0x7f;
5926 regs[0xc5] = 0x00;
5927 regs[0xc6] = 0xf8;
5928 regs[0xc7] = 0x7f;
5929 regs[0xc8] = 0x00;
5930 regs[0xc9] = 0xff;
5931 regs[0xca] = 0x8f;
5932 regs[0xcb] = 0xff;
5933 regs[0xcc] = 0x07;
5934 regs[0xcd] = 0x80;
5935 regs[0xce] = 0xff;
5936 regs[0xcf] = 0xf2;
5937 regs[0xd0] = 0xf4;
5938 regs[0xd1] = 0xe7;
5939 regs[0xd2] = 0x08;
5940 regs[0xd3] = 0x0e;
5941 regs[0xd4] = 0x10;
5942 regs[0xd7] = 0x31;
5943 regs[0xe2] = 0x02;
5962 regs[0x34] = 0xf0;
5963 regs[0x40] = 0xa0;
5967 regs[0x85] = 0x30;
5968 regs[0x86] = 0x30;
5970 regs[0x87] = 0x60;
5971 regs[0x88] = 0x5a;
5973 regs[0x8d] = 0xbd;
5974 regs[0x8e] = 0x63;
5976 regs[0xc0] = 0xff;
5977 regs[0xc1] = 0xff;
5978 regs[0xc2] = 0xff;
5979 regs[0xc4] = 0x0f;
5980 regs[0xc5] = 0x00;
5981 regs[0xc6] = 0x00;
5982 regs[0xc7] = 0xf0;
5983 regs[0xc9] = 0x00;
5984 regs[0xca] = 0x0e;
5985 regs[0xcb] = 0x00;
5986 regs[0xcc] = 0xff;
5987 regs[0xcd] = 0xff;
5988 regs[0xce] = 0xff;
5989 regs[0xcf] = 0xf5;
5990 regs[0xd0] = 0xf7;
5991 regs[0xd1] = 0xea;
5992 regs[0xd2] = 0x0b;
5993 /* regs[0xd3] = 0x17; */
5994 regs[0xd4] = 0xc1;
5995 regs[0xd7] = 0x14;
5996 regs[0xd8] = 0xa4;
5997 /* regs[0xe5] = 0x28;
5998 regs[0xe6] = 0x07; 0x728=1832=915*2+2 */
6004 regs[0x34] = 0x10;
6005 regs[0x40] = 0xa0;
6011 regs[0x85] = 0x46;
6012 regs[0x86] = 0x0b;
6014 regs[0x87] = 0x8c;
6015 regs[0x88] = 0x10;
6017 regs[0x8e] = 0x3b;
6018 regs[0x8d] = 0x60;
6020 regs[0xc1] = 0xff;
6021 regs[0xce] = 0xff;
6022 regs[0xcf] = 0xf5;
6023 regs[0xd0] = 0xf7;
6024 regs[0x33] = 0x83;
6025 regs[0x50] = 0x00;
6026 regs[0x64] = 0x01;
6027 regs[0x65] = 0x20;
6028 regs[0x8d] = 0xbc;
6029 regs[0xc0] = 0xe0;
6030 regs[0xc2] = 0x01;
6031 regs[0xc3] = 0x1f;
6032 regs[0xc4] = 0x00;
6033 regs[0xc5] = 0xfe;
6034 regs[0xc6] = 0xff;
6035 regs[0xc7] = 0xff;
6036 regs[0xc8] = 0x00;
6037 regs[0xc9] = 0x3f;
6038 regs[0xca] = 0xfe;
6039 regs[0xcb] = 0xff;
6040 regs[0xcc] = 0x00;
6041 regs[0xcd] = 0x00;
6042 regs[0xd1] = 0xec;
6043 regs[0xd2] = 0x0d;
6044 regs[0xd3] = 0x05;
6045 regs[0xd4] = 0x67;
6046 regs[0xd7] = 0x10;
6047 regs[0xd8] = 0x52;
6053 regs[0x13] = 0x39;
6054 regs[0x14] = 0xf0;
6055 regs[0x15] = 0x29;
6056 regs[0x16] = 0x0f;
6057 regs[0x17] = 0x10;
6058 regs[0x23] = 0x00;
6059 regs[0x34] = 0xf0;
6060 regs[0x36] = 0x29;
6061 regs[0x39] = 0x00;
6062 regs[0x40] = 0xa0;
6064 regs[0x85] = 0x30;
6065 regs[0x86] = 0x30;
6066 regs[0x87] = 0x60;
6067 regs[0x88] = 0x5a;
6068 regs[0x8d] = 0xde;
6069 regs[0x8e] = 0x61;
6070 regs[0xc0] = 0xe0;
6071 regs[0xc1] = 0xff;
6072 regs[0xc2] = 0x01;
6073 regs[0xc3] = 0x1f;
6074 regs[0xc4] = 0x00;
6075 regs[0xc5] = 0xfe;
6076 regs[0xc6] = 0xff;
6077 regs[0xc7] = 0xff;
6078 regs[0xc8] = 0x00;
6079 regs[0xc9] = 0x3f;
6080 regs[0xca] = 0xfe;
6081 regs[0xcb] = 0xff;
6082 regs[0xcc] = 0x00;
6083 regs[0xcd] = 0x00;
6084 regs[0xce] = 0xff;
6085 regs[0xcf] = 0xf5;
6086 regs[0xd0] = 0xf7;
6087 regs[0xd1] = 0xec;
6088 regs[0xd2] = 0x0d;
6089 /* regs[0xd3] = 0x05; */
6090 regs[0xd4] = 0x67;
6091 regs[0xd7] = 0x10;
6092 regs[0xd8] = 0x52;
6093 regs[0xe2] = 0x02;
6108 SET_DOUBLE (regs, EXPOSURE_REG, exposure);
6109 SET_DOUBLE (regs, TIMING_REG, timing);
6110 SET_DOUBLE (regs, TIMING1_REG, timing+1);
6111 SET_DOUBLE (regs, TIMING2_REG, timing+2);
6114 sanei_rts88xx_set_offset (regs, dev->red_offset, dev->green_offset, dev->blue_offset);
6115 sanei_rts88xx_set_gain (regs, dev->red_gain, dev->green_gain, dev->blue_gain);
6116 sanei_rts88xx_set_scan_area (regs, 1, 1 + lines, dev->xstart, dev->xstart + dev->pixels);
6166 status=setup_shading_calibration(dev, mode, &light, &status1, dev->regs);
6177 sanei_rts88xx_set_status (dev->devnum, dev->regs, status1, light);
6179 status = rts8891_simple_scan (dev->devnum, dev->regs, dev->reg_count, format, size, image);
6498 dev->regs[0x91] = 0x00;
6499 dev->regs[0x92] = 0x00;
6500 sanei_rts88xx_write_regs (dev->devnum, 0x91, dev->regs + 0x91, 2);
6515 SANE_Byte regs[RTS8891_MAX_REGISTERS];
6531 rts8891_move (dev, regs, distance, SANE_TRUE);
6552 setup_scan_registers (struct Rts8891_Session *session, SANE_Byte *status1, SANE_Byte *status2, SANE_Byte *regs)
6566 sanei_rts88xx_set_scan_area (regs, dev->ystart, dev->ystart + dev->lines, dev->xstart, dev->xstart + dev->pixels);
6571 regs[0x00] = regs[0x00] & 0xef;
6572 regs[0x01] = 0x41;
6574 sanei_rts88xx_set_offset (regs, dev->red_offset, dev->green_offset, dev->blue_offset);
6575 sanei_rts88xx_set_gain (regs, dev->red_gain, dev->green_gain, dev->blue_gain);
6594 regs[0x0b] = 0x70;
6595 regs[0x0c] = 0x00;
6596 regs[0x0d] = 0x00;
6597 regs[0x0e] = 0x00;
6598 regs[0x0f] = 0x00;
6600 regs[0x12] = 0xff;
6601 regs[0x13] = 0x20;
6602 regs[0x14] = 0xf8;
6603 regs[0x15] = 0x28;
6604 regs[0x16] = 0x01;
6605 regs[0x17] = 0x00;
6606 regs[0x18] = 0xff;
6607 regs[0x19] = 0x00;
6608 regs[0x1a] = 0x00;
6609 regs[0x1b] = 0x00;
6610 regs[0x1c] = 0x00;
6611 regs[0x1d] = 0x20;
6612 regs[0x1e] = 0x00;
6613 regs[0x1f] = 0x00;
6616 regs[0x20] = 0x3a;
6617 regs[0x21] = 0xf2;
6618 regs[0x22] = 0x00;
6620 regs[0x23] = 0x80;
6621 regs[0x24] = 0xff;
6622 regs[0x25] = 0x00;
6623 regs[0x26] = 0x00;
6624 regs[0x27] = 0x00;
6625 regs[0x28] = 0x00;
6626 regs[0x29] = 0x00;
6627 regs[0x2a] = 0x00;
6628 regs[0x2b] = 0x00;
6629 regs[0x2c] = 0x00;
6630 regs[0x2d] = 0x00;
6631 regs[0x2e] = 0x00;
6632 regs[0x2f] = 0x00;
6633 regs[0x30] = 0x00;
6634 regs[0x31] = 0x00;
6635 regs[0x32] = 0x20;
6636 regs[0x33] = 0x83;
6637 regs[0x34] = 0x10;
6638 regs[0x35] = 0x47;
6639 regs[0x36] = 0x2c;
6640 regs[0x37] = 0x00;
6641 regs[0x38] = 0x00;
6642 regs[0x39] = 0x02;
6643 regs[0x3a] = 0x43;
6644 regs[0x3b] = 0x00;
6645 regs[0x3c] = 0x00;
6646 regs[0x3d] = 0x00;
6647 regs[0x3e] = 0x00;
6648 regs[0x3f] = 0x00;
6649 regs[0x40] = 0x2c; /* 0x0c -> use shading data */
6650 regs[0x41] = 0x00;
6651 regs[0x42] = 0x00;
6652 regs[0x43] = 0x00;
6653 regs[0x44] = 0x8c;
6654 regs[0x45] = 0x76;
6655 regs[0x46] = 0x00;
6656 regs[0x47] = 0x00;
6657 regs[0x48] = 0x00;
6658 regs[0x49] = 0x00;
6659 regs[0x4a] = 0x00;
6660 regs[0x4b] = 0x00;
6661 regs[0x4c] = 0x00;
6662 regs[0x4d] = 0x00;
6663 regs[0x4e] = 0x00;
6664 regs[0x4f] = 0x00;
6665 regs[0x50] = 0x00;
6666 regs[0x51] = 0x00;
6667 regs[0x52] = 0x00;
6668 regs[0x53] = 0x00;
6669 regs[0x54] = 0x00;
6670 regs[0x55] = 0x00;
6671 regs[0x56] = 0x00;
6672 regs[0x57] = 0x00;
6673 regs[0x58] = 0x00;
6674 regs[0x59] = 0x00;
6675 regs[0x5a] = 0x00;
6676 regs[0x5b] = 0x00;
6677 regs[0x5c] = 0x00;
6678 regs[0x5d] = 0x00;
6679 regs[0x5e] = 0x00;
6680 regs[0x5f] = 0x00;
6682 regs[0x64] = 0x01;
6683 regs[0x65] = 0x20;
6685 regs[0x68] = 0x00;
6686 regs[0x69] = 0x00;
6687 regs[0x6a] = 0x00;
6688 regs[0x6b] = 0x00;
6690 regs[0x6e] = 0x00;
6691 regs[0x6f] = 0x00;
6692 regs[0x70] = 0x00;
6693 regs[0x71] = 0x00;
6695 regs[0x72] = 0xe1;
6696 regs[0x73] = 0x14;
6697 regs[0x74] = 0x18;
6698 regs[0x75] = 0x15;
6700 regs[0x76] = 0x00;
6701 regs[0x77] = 0x00;
6702 regs[0x78] = 0x00;
6703 regs[0x79] = 0x20;
6704 regs[0x7a] = 0x01;
6705 regs[0x7b] = 0x00;
6706 regs[0x7c] = 0x00;
6707 regs[0x7d] = 0x00;
6708 regs[0x7e] = 0x00;
6709 regs[0x7f] = 0x00;
6711 regs[0x84] = 0x00;
6712 regs[0x85] = 0x46;
6713 regs[0x86] = 0x0b;
6714 regs[0x87] = 0x8c;
6715 regs[0x88] = 0x10;
6716 regs[0x8b] = 0xff;
6717 regs[0x8c] = 0x3f;
6718 regs[0x8d] = 0x3b;
6720 regs[0x8e] = 0x60;
6721 regs[0x8f] = 0x00;
6722 regs[0x90] = 0x18; /* 0x1c when shading calibration */
6725 regs[0x91] = 0x00;
6726 regs[0x92] = 0x00;
6728 regs[0x93] = 0x01;
6730 regs[0x94] = 0x0e;
6731 regs[0x95] = 0x00;
6732 regs[0x96] = 0x00;
6733 regs[0x97] = 0x00;
6734 regs[0x98] = 0x00;
6735 regs[0x99] = 0x00;
6736 regs[0x9a] = 0x00;
6737 regs[0x9b] = 0x00;
6738 regs[0x9c] = 0x00;
6739 regs[0x9d] = 0x00;
6740 regs[0x9e] = 0x00;
6741 regs[0x9f] = 0x00;
6742 regs[0xa0] = 0x00;
6743 regs[0xa1] = 0x00;
6744 regs[0xa2] = 0x00;
6745 regs[0xa3] = 0xcc;
6746 regs[0xa4] = 0x27;
6747 regs[0xa5] = 0x64;
6748 regs[0xa6] = 0x00;
6749 regs[0xa7] = 0x00;
6750 regs[0xa8] = 0x00;
6751 regs[0xa9] = 0x00;
6752 regs[0xaa] = 0x00;
6753 regs[0xab] = 0x00;
6754 regs[0xac] = 0x00;
6755 regs[0xad] = 0x00;
6756 regs[0xae] = 0x00;
6757 regs[0xaf] = 0x00;
6758 regs[0xb0] = 0x00;
6759 regs[0xb1] = 0x00;
6760 regs[0xb2] = 0x02;
6762 regs[0xb4] = 0x00;
6763 regs[0xb5] = 0x00;
6764 regs[0xb6] = 0x00;
6765 regs[0xb7] = 0x00;
6766 regs[0xb8] = 0x00;
6767 regs[0xb9] = 0x00;
6768 regs[0xba] = 0x00;
6769 regs[0xbb] = 0x00;
6770 regs[0xbc] = 0x00;
6771 regs[0xbd] = 0x00;
6772 regs[0xbe] = 0x00;
6773 regs[0xbf] = 0x00;
6774 regs[0xc0] = 0x06;
6775 regs[0xc1] = 0xe6;
6776 regs[0xc2] = 0x67;
6777 regs[0xc3] = 0xff;
6778 regs[0xc4] = 0xff;
6779 regs[0xc5] = 0xff;
6780 regs[0xc6] = 0xff;
6781 regs[0xc7] = 0xff;
6782 regs[0xc8] = 0xff;
6783 regs[0xc9] = 0x07;
6784 regs[0xca] = 0x00;
6785 regs[0xcb] = 0xfe;
6786 regs[0xcc] = 0xf9;
6787 regs[0xcd] = 0x19;
6788 regs[0xce] = 0x98;
6789 regs[0xcf] = 0xe8;
6790 regs[0xd0] = 0xea;
6792 regs[0xd1] = 0xf3;
6793 regs[0xd2] = 0x14;
6795 regs[0xd3] = 0x02;
6796 regs[0xd4] = 0x04;
6797 regs[0xd5] = 0x86;
6799 regs[0xd6] = 0x0f;
6800 regs[0xd7] = 0x30; /* 12303 */
6802 regs[0xd8] = 0x52; /* 0x5230=21040 */
6804 regs[0xd9] = 0xad;
6805 regs[0xda] = 0xa7;
6806 regs[0xdb] = 0x00;
6807 regs[0xdc] = 0x00;
6808 regs[0xdd] = 0x00;
6809 regs[0xde] = 0x00;
6810 regs[0xdf] = 0x00;
6811 regs[0xe0] = 0x00;
6812 regs[0xe1] = 0x00;
6813 regs[0xe2] = 0x0f;
6814 regs[0xe3] = 0x85;
6815 regs[0xe4] = 0x03;
6817 /* regs[0xe5] = 0x52;
6818 regs[0xe6] = 0x00; exposure time 0x0052=82 */
6821 regs[0xe7] = 0x75;
6822 regs[0xe8] = 0x01;
6823 regs[0xe9] = 0x0b;
6824 regs[0xea] = 0x54;
6825 regs[0xeb] = 0x01;
6826 regs[0xec] = 0x04;
6827 regs[0xed] = 0xb8;
6828 regs[0xee] = 0x00;
6829 regs[0xef] = 0x03;
6830 regs[0xf0] = 0x70;
6831 regs[0xf1] = 0x00;
6832 regs[0xf2] = 0x01;
6833 regs[0xf3] = 0x00;
6836 regs[0xc0] = 0x67;
6837 regs[0xc1] = 0x06;
6838 regs[0xc2] = 0xe6;
6839 regs[0xc3] = 0x98;
6840 regs[0xc4] = 0xf9;
6841 regs[0xc5] = 0x19;
6842 regs[0xc6] = 0x67;
6843 regs[0xc7] = 0x06;
6844 regs[0xc8] = 0xe6;
6845 regs[0xc9] = 0x01;
6846 regs[0xca] = 0xf8;
6847 regs[0xcb] = 0xff;
6848 regs[0xcc] = 0x98;
6849 regs[0xcd] = 0xf9;
6850 regs[0xce] = 0x19;
6851 regs[0xcf] = 0xe0;
6852 regs[0xd0] = 0xe2;
6854 regs[0xd1] = 0xeb;
6855 regs[0xd2] = 0x0c;
6857 regs[0xd7] = 0x10;
6861 regs[0x13] = 0x39; /* 0x20 */
6862 regs[0x14] = 0xf0; /* 0xf8 */
6863 regs[0x15] = 0x29; /* 0x28 */
6864 regs[0x16] = 0x00; /* 0x01 */
6865 regs[0x17] = 0x10; /* 0x00 */
6866 regs[0x23] = 0x00; /* 0x80 */
6867 regs[0x35] = 0x47; /* 0x45 */
6868 regs[0x36] = 0x29; /* 0x2c */
6869 regs[0x39] = 0x00; /* 0x02 */
6871 regs[0x85] = 0x46; /* 0x8c */
6872 regs[0x86] = 0x0b; /* 0x10 */
6873 regs[0x87] = 0x8c; /* 0x18 */
6874 regs[0x88] = 0x10; /* 0x1b */
6875 regs[0x8d] = 0x3b; /* 0x77 */
6877 regs[0xd3] = 0x02; /* 0x0e */
6878 regs[0xd4] = 0x04; /* 0x10 */
6879 regs[0xe2] = 0x07; /* 0x0f */
6880 regs[0xe3] = 0x84; /* 0x87 */
6881 /*regs[0xe5] = 0xa5; 0x54 */
6883 regs[0xe7] = 0x0e; /* 0xa8 */
6884 regs[0xe8] = 0x01; /* 0x00 */
6885 regs[0xe9] = 0x0a; /* 0x0b */
6886 regs[0xea] = 0xc2; /* 0x56 */
6887 regs[0xed] = 0xf6; /* 0xba */
6888 regs[0xef] = 0x02; /* 0x03 */
6889 regs[0xf0] = 0xa8; /* 0x72 */
6893 regs[0x13] = 0x39; /* 0x20 */
6894 regs[0x14] = 0xf0; /* 0xf8 */
6895 regs[0x15] = 0x29; /* 0x28 */
6896 regs[0x16] = 0x00; /* 0x07 */
6897 regs[0x17] = 0x10; /* 0x00 */
6898 regs[0x23] = 0x00; /* 0xff */
6899 regs[0x35] = 0x47; /* 0x0e */
6900 regs[0x36] = 0x29; /* 0x2c */
6901 regs[0x39] = 0x00; /* 0x02 */
6902 regs[0x3a] = 0x43; /* 0x0e */
6903 regs[0x40] = 0x2c; /* 0x20 */
6904 regs[0x85] = 0x46; /* 0x00 */
6905 regs[0x86] = 0x0b; /* 0x06 */
6906 regs[0x87] = 0x8c; /* 0x00 */
6907 regs[0x88] = 0x10; /* 0x06 */
6908 regs[0x8d] = 0x3b; /* 0x00 */
6909 regs[0x90] = 0x18; /* 0x1c */
6910 regs[0xe2] = 0x07; /* 0x05 */
6911 regs[0xe3] = 0x84; /* 0x00 */
6912 regs[0xe4] = 0x03; /* 0x00 */
6915 regs[0xe7] = 0x0e; /* 0x00 */
6916 regs[0xe8] = 0x01; /* 0x00 */
6917 regs[0xe9] = 0x0a; /* 0x00 */
6918 regs[0xea] = 0xc2; /* 0x00 */
6919 regs[0xeb] = 0x01; /* 0x00 */
6920 regs[0xec] = 0x04; /* 0x00 */
6921 regs[0xed] = 0xf6; /* 0x00 */
6922 regs[0xef] = 0x02; /* 0x00 */
6923 regs[0xf0] = 0xa8; /* 0x00 */
6924 regs[0xf2] = 0x01; /* 0x00 */
6931 regs[0x35] = 0x45;
6934 regs[0x85] = 0x8c;
6935 regs[0x86] = 0x10;
6937 regs[0x87] = 0x18;
6938 regs[0x88] = 0x1b;
6940 regs[0x8d] = 0x77;
6942 regs[0xe3] = 0x87;
6944 /* regs[0xe5] = 0x54;
6945 regs[0xe6] = 0x00; exposure time 0x0054=84 */
6949 regs[0xe7] = 0xa8;
6950 regs[0xe8] = 0x00;
6951 regs[0xea] = 0x56;
6952 regs[0xed] = 0xba;
6954 regs[0xf0] = 0x72;
6959 regs[0xc0] = 0x00;
6960 regs[0xc1] = 0x8e;
6961 regs[0xc2] = 0xff;
6962 regs[0xc3] = 0xff;
6963 regs[0xc4] = 0x71;
6964 regs[0xc5] = 0x00;
6965 regs[0xc6] = 0x00;
6966 regs[0xc7] = 0x8e;
6967 regs[0xc8] = 0xff;
6968 regs[0xc9] = 0xff;
6969 regs[0xca] = 0xff;
6970 regs[0xcb] = 0x1f;
6971 regs[0xcc] = 0xff;
6972 regs[0xcd] = 0x71;
6973 regs[0xce] = 0x00;
6974 regs[0xcf] = 0xe6;
6975 regs[0xd0] = 0xe8;
6976 regs[0xd1] = 0xf6;
6977 regs[0xd2] = 0x17;
6978 regs[0xd3] = 0x0b;
6979 regs[0xd4] = 0x0d;
6983 regs[0xc0] = 0x80;
6984 regs[0xc1] = 0x87;
6985 regs[0xc2] = 0x7f;
6986 regs[0xc9] = 0x00;
6987 regs[0xcb] = 0x78;
6988 regs[0xcc] = 0x7f;
6989 regs[0xcd] = 0x78;
6990 regs[0xce] = 0x80;
6991 regs[0xcf] = 0xe6;
6992 regs[0xd0] = 0xe8;
6994 regs[0xd1] = 0xf7;
6995 regs[0xd2] = 0x00;
6997 regs[0xd3] = 0x0e;
6998 regs[0xd4] = 0x10;
7002 regs[0x35] = 0x47;
7006 regs[0x85] = 0x8c;
7007 regs[0x86] = 0x10;
7008 regs[0x87] = 0x18;
7009 regs[0x88] = 0x1b;
7010 regs[0x8d] = 0x77;
7011 regs[0xc0] = 0x00;
7012 regs[0xc1] = 0x8e;
7013 regs[0xc2] = 0xff;
7014 regs[0xc3] = 0xff;
7015 regs[0xc4] = 0x71;
7016 regs[0xc5] = 0x00;
7017 regs[0xc6] = 0x00;
7018 regs[0xc7] = 0x8e;
7019 regs[0xc8] = 0xff;
7020 regs[0xc9] = 0xff;
7021 regs[0xca] = 0xff;
7022 regs[0xcb] = 0x1f;
7023 regs[0xcc] = 0xff;
7024 regs[0xcd] = 0x71;
7025 regs[0xce] = 0x00;
7026 regs[0xcf] = 0xe6;
7027 regs[0xd0] = 0xe8;
7028 regs[0xd1] = 0xf6;
7029 regs[0xd2] = 0x17;
7030 regs[0xd3] = 0x0b;
7031 regs[0xd4] = 0x0d;
7032 regs[0xe3] = 0x86;
7033 regs[0xe7] = 0x00;
7034 regs[0xe8] = 0x1c;
7035 regs[0xe9] = 0x01;
7036 regs[0xea] = 0x0a;
7037 regs[0xeb] = 0xc4;
7038 regs[0xec] = 0x01;
7039 regs[0xed] = 0x04;
7040 regs[0xee] = 0xf8;
7041 regs[0xef] = 0x00;
7042 regs[0xf0] = 0x02;
7043 regs[0xf2] = 0x00;
7053 regs[0x35] = 0x0e; /* fast ? */
7054 regs[0x3a] = 0x0e;
7057 regs[0x85] = 0x18;
7058 regs[0x86] = 0x1b;
7060 regs[0x87] = 0x30;
7061 regs[0x88] = 0x30;
7063 regs[0xe7] = 0x00;
7064 regs[0xe8] = 0x00;
7065 regs[0xe9] = 0x00;
7066 regs[0xea] = 0x00;
7067 regs[0xeb] = 0x00;
7068 regs[0xec] = 0x00;
7069 regs[0xed] = 0x00;
7070 regs[0xef] = 0x00;
7071 regs[0xf0] = 0x00;
7072 regs[0x8d] = 0xef;
7073 regs[0xc0] = 0x00;
7074 regs[0xc1] = 0xff;
7075 regs[0xc2] = 0x0f;
7076 regs[0xc3] = 0xff;
7077 regs[0xc4] = 0x00;
7078 regs[0xc5] = 0xf0;
7079 regs[0xc6] = 0x00;
7080 regs[0xc7] = 0xff;
7081 regs[0xc8] = 0x0f;
7082 regs[0xc9] = 0xff;
7083 regs[0xca] = 0xff;
7084 regs[0xcb] = 0xf1;
7085 regs[0xcc] = 0xff;
7086 regs[0xcd] = 0x00;
7087 regs[0xce] = 0xf0;
7088 regs[0xcf] = 0xed;
7089 regs[0xd0] = 0xef;
7090 regs[0xd1] = 0xe2;
7091 regs[0xd2] = 0x03;
7092 regs[0xd3] = 0x17;
7093 regs[0xd4] = 0x01;
7094 regs[0xe2] = 0x07;
7095 regs[0xe3] = 0x00;
7096 regs[0xe4] = 0x00;
7099 regs[0xf2] = 0x00;
7103 regs[0x35] = 0x0e; /* fast ? */
7104 regs[0x3a] = 0x0e;
7108 regs[0x85] = 0x18;
7109 regs[0x86] = 0x1b;
7111 regs[0x87] = 0x30;
7112 regs[0x88] = 0x30;
7114 regs[0xe7] = 0x00;
7115 regs[0xe8] = 0x00;
7116 regs[0xe9] = 0x00;
7117 regs[0xea] = 0x00;
7118 regs[0xeb] = 0x00;
7119 regs[0xec] = 0x00;
7120 regs[0xed] = 0x00;
7121 regs[0xef] = 0x00;
7122 regs[0xf0] = 0x00;
7123 regs[0x8d] = 0xf0;
7124 regs[0x8e] = 0x60; /* low nibble of 8e and 8d are proportional to
7127 regs[0xc0] = 0xff;
7128 regs[0xc1] = 0x0f;
7129 regs[0xc2] = 0x00;
7130 regs[0xc9] = 0x00;
7131 regs[0xca] = 0x0e;
7132 regs[0xcb] = 0x00;
7133 regs[0xcc] = 0x00;
7134 regs[0xcd] = 0xf0;
7135 regs[0xce] = 0xff;
7136 regs[0xcf] = 0xf5;
7137 regs[0xd0] = 0xf7;
7138 regs[0xd1] = 0xea;
7139 regs[0xd2] = 0x0b;
7141 regs[0xd3] = 0x17;
7142 regs[0xd4] = 0x01;
7144 regs[0xe2] = 0x07;
7145 regs[0xe3] = 0x00;
7146 regs[0xe4] = 0x00;
7152 regs[0x11] = 0x22;
7153 regs[0x35] = 0x0e;
7154 regs[0x3a] = 0x0e;
7155 regs[0x85] = 0x18;
7156 regs[0x86] = 0x1b;
7157 regs[0x87] = 0x30;
7158 regs[0x88] = 0x30;
7159 regs[0x8d] = 0xef;
7160 regs[0xc0] = 0x00;
7161 regs[0xc1] = 0xff;
7162 regs[0xc2] = 0x0f;
7163 regs[0xc3] = 0xff;
7164 regs[0xc4] = 0x00;
7165 regs[0xc5] = 0xf0;
7166 regs[0xc6] = 0x00;
7167 regs[0xc7] = 0xff;
7168 regs[0xc8] = 0x0f;
7169 regs[0xc9] = 0xff;
7170 regs[0xca] = 0xff;
7171 regs[0xcb] = 0xf1;
7172 regs[0xcc] = 0xff;
7173 regs[0xcd] = 0x00;
7174 regs[0xce] = 0xf0;
7175 regs[0xcf] = 0xed;
7176 regs[0xd0] = 0xef;
7177 regs[0xd1] = 0xe2;
7178 regs[0xd2] = 0x03;
7179 regs[0xd3] = 0x17;
7180 regs[0xd4] = 0x01;
7181 regs[0xe2] = 0x03;
7182 regs[0xe3] = 0x00;
7183 regs[0xe4] = 0x00;
7186 regs[0xe7] = 0x00;
7187 regs[0xe8] = 0x00;
7188 regs[0xe9] = 0x00;
7189 regs[0xea] = 0x00;
7190 regs[0xeb] = 0x00;
7191 regs[0xec] = 0x00;
7192 regs[0xed] = 0x00;
7193 regs[0xef] = 0x00;
7194 regs[0xf0] = 0x00;
7195 regs[0xf2] = 0x00;
7206 regs[0x34] = 0xf0;
7207 regs[0x35] = 0x1b;
7208 regs[0x36] = 0x29;
7209 regs[0x3a] = 0x1b;
7211 regs[0x72] = 0x3a;
7212 regs[0x73] = 0x15;
7213 regs[0x74] = 0x62;
7216 regs[0x85] = 0x30;
7217 regs[0x86] = 0x30;
7218 regs[0x87] = 0x60;
7219 regs[0x88] = 0x5a;
7221 regs[0x8d] = 0xde;
7222 regs[0x8e] = 0x61; /* low nibble of 8e and 8d are proportional to
7225 regs[0xc0] = 0xff;
7226 regs[0xc1] = 0xff;
7227 regs[0xc2] = 0xff;
7228 regs[0xc3] = 0x00;
7229 regs[0xc4] = 0xf0;
7230 regs[0xc7] = 0x0f;
7231 regs[0xc8] = 0x00;
7232 regs[0xcb] = 0xe0;
7233 regs[0xcc] = 0xff;
7234 regs[0xcd] = 0xff;
7235 regs[0xce] = 0xff;
7236 regs[0xcf] = 0xe9;
7237 regs[0xd0] = 0xeb;
7239 regs[0xd7] = 0x14;
7241 regs[0xe2] = 0x01;
7242 regs[0xe3] = 0x00;
7243 regs[0xe4] = 0x00;
7244 /* regs[0xe5] = 0xbd;
7245 regs[0xe6] = 0x0a; exposure time = 0x0abd=2749 (5500/2-1) */
7247 regs[0xe7] = 0x00;
7248 regs[0xe8] = 0x00;
7249 regs[0xe9] = 0x00;
7250 regs[0xea] = 0x00;
7251 regs[0xeb] = 0x00;
7252 regs[0xec] = 0x00;
7253 regs[0xed] = 0x00;
7254 regs[0xef] = 0x00;
7255 regs[0xf0] = 0x00;
7256 regs[0xf2] = 0x00;
7262 regs[0x33] = 0x83; /* 0x86 */
7263 regs[0x34] = 0xf0;
7264 regs[0x35] = 0x1b;
7265 regs[0x36] = 0x29;
7266 regs[0x3a] = 0x1b;
7267 regs[0x40] = 0x2c; /* 0x24 */
7268 regs[0x50] = 0x00; /* 0x18 */
7270 regs[0x64] = 0x01; /* 0x02 */
7271 regs[0x65] = 0x20; /* 0x10 */
7273 regs[0x72] = 0x3a;
7274 regs[0x73] = 0x15;
7275 regs[0x74] = 0x62;
7278 regs[0x85] = 0x30;
7279 regs[0x86] = 0x30;
7281 regs[0x87] = 0x60;
7282 regs[0x88] = 0x5a;
7284 regs[0x8d] = 0xde;
7285 regs[0x8e] = 0x61; /* 25054 */
7287 regs[0xc0] = 0xf8;
7288 regs[0xc1] = 0x7f;
7289 regs[0xc2] = 0x00;
7290 regs[0xc3] = 0xf8;
7291 regs[0xc4] = 0x7f;
7292 regs[0xc5] = 0x00;
7293 regs[0xc6] = 0xf8;
7294 regs[0xc7] = 0x7f;
7295 regs[0xc8] = 0x00;
7296 regs[0xc9] = 0xff;
7297 regs[0xca] = 0x8f;
7298 regs[0xcb] = 0xff;
7299 regs[0xcc] = 0x07;
7300 regs[0xcd] = 0x80;
7301 regs[0xce] = 0xff;
7302 regs[0xcf] = 0xf2;
7303 regs[0xd0] = 0xf4;
7304 regs[0xd1] = 0xe7;
7305 regs[0xd2] = 0x08;
7306 regs[0xd3] = 0x02;
7307 regs[0xd4] = 0x10;
7308 regs[0xd7] = 0x31;
7309 regs[0xe2] = 0x01;
7310 regs[0xe3] = 0x00;
7311 regs[0xe4] = 0x00;
7312 regs[0xe7] = 0x00;
7313 regs[0xe8] = 0x00;
7314 regs[0xe9] = 0x00;
7315 regs[0xea] = 0x00;
7316 regs[0xeb] = 0x00;
7317 regs[0xec] = 0x00;
7318 regs[0xed] = 0x00;
7319 regs[0xef] = 0x00;
7320 regs[0xf0] = 0x00;
7321 regs[0xf2] = 0x00;
7331 regs[0x13] = 0x39;
7332 regs[0x14] = 0xf0;
7333 regs[0x15] = 0x29;
7334 regs[0x16] = 0x00;
7335 regs[0x17] = 0x10;
7336 regs[0x23] = 0x00;
7337 regs[0x34] = 0xf0;
7338 regs[0x35] = 0x1b;
7339 regs[0x36] = 0x29;
7340 regs[0x39] = 0x00;
7341 regs[0x3a] = 0x1b;
7342 regs[0x72] = 0x3a;
7343 regs[0x73] = 0x15;
7344 regs[0x74] = 0x62;
7345 regs[0x85] = 0x30;
7346 regs[0x86] = 0x30;
7347 regs[0x87] = 0x60;
7348 regs[0x88] = 0x5a;
7349 regs[0x8d] = 0xde;
7350 regs[0x8e] = 0x61;
7351 regs[0xc0] = 0xf8;
7352 regs[0xc1] = 0x7f;
7353 regs[0xc2] = 0x00;
7354 regs[0xc3] = 0xf8;
7355 regs[0xc4] = 0x7f;
7356 regs[0xc5] = 0x00;
7357 regs[0xc6] = 0xf8;
7358 regs[0xc7] = 0x7f;
7359 regs[0xc8] = 0x00;
7360 regs[0xc9] = 0xff;
7361 regs[0xca] = 0x8f;
7362 regs[0xcb] = 0xff;
7363 regs[0xcc] = 0x07;
7364 regs[0xcd] = 0x80;
7365 regs[0xce] = 0xff;
7366 regs[0xcf] = 0xf2;
7367 regs[0xd0] = 0xf4;
7368 regs[0xd1] = 0xe7;
7369 regs[0xd2] = 0x08;
7370 regs[0xd3] = 0x0e;
7371 regs[0xd4] = 0x10;
7372 regs[0xd7] = 0x31;
7373 regs[0xe2] = 0x01;
7374 regs[0xe3] = 0x00;
7375 regs[0xe4] = 0x00;
7376 regs[0xe7] = 0x00;
7377 regs[0xe8] = 0x00;
7378 regs[0xe9] = 0x00;
7379 regs[0xea] = 0x00;
7380 regs[0xeb] = 0x00;
7381 regs[0xec] = 0x00;
7382 regs[0xed] = 0x00;
7383 regs[0xef] = 0x00;
7384 regs[0xf0] = 0x00;
7385 regs[0xf2] = 0x00;
7403 regs[0x34] = 0xf0;
7404 regs[0x35] = 0x1b;
7405 regs[0x36] = 0x29;
7406 regs[0x3a] = 0x1b;
7407 regs[0x40] = 0xac;
7409 regs[0x85] = 0x60;
7410 regs[0x86] = 0x5a;
7411 regs[0x87] = 0xc0;
7412 regs[0x88] = 0xae;
7414 regs[0x8d] = 0xbd; /* about twice the 600 dpi values */
7415 regs[0x8e] = 0x63; /* low nibble of 8e and 8d are proportional to
7417 regs[0xc0] = 0xff;
7418 regs[0xc1] = 0xff;
7419 regs[0xc2] = 0xff;
7420 regs[0xc4] = 0x0f;
7421 regs[0xc5] = 0x00;
7422 regs[0xc6] = 0x00;
7423 regs[0xc7] = 0xf0;
7424 regs[0xc9] = 0x00;
7425 regs[0xca] = 0x0e;
7426 regs[0xcb] = 0x00;
7427 regs[0xcc] = 0xff;
7428 regs[0xcd] = 0xff;
7429 regs[0xce] = 0xff;
7430 regs[0xcf] = 0xf5;
7431 regs[0xd0] = 0xf7;
7432 regs[0xd1] = 0xea;
7433 regs[0xd2] = 0x0b;
7434 regs[0xd3] = 0x17;
7435 regs[0xd4] = 0xc1;
7437 regs[0xd7] = 0x14;
7438 regs[0xd8] = 0xa4;
7440 regs[0xe2] = 0x01;
7441 regs[0xe3] = 0x00;
7442 regs[0xe4] = 0x00;
7443 /* regs[0xe5] = 0x7b;
7444 regs[0xe6] = 0x15; exposure time = 0x157b=5499 */
7446 regs[0xe7] = 0x00;
7447 regs[0xe8] = 0x00;
7448 regs[0xe9] = 0x00;
7449 regs[0xea] = 0x00;
7450 regs[0xeb] = 0x00;
7451 regs[0xec] = 0x00;
7452 regs[0xed] = 0x00;
7453 regs[0xef] = 0x00;
7454 regs[0xf0] = 0x00;
7455 regs[0xf2] = 0x00;
7461 regs[0x34] = 0xf0;
7462 regs[0x35] = 0x1b;
7463 regs[0x36] = 0x29;
7464 regs[0x3a] = 0x1b;
7465 regs[0x85] = 0x60;
7466 regs[0x86] = 0x5a;
7467 regs[0x87] = 0xc0;
7468 regs[0x8a] = 0x08; /* 81c=2076 */
7470 regs[0xc1] = 0xff;
7471 regs[0xce] = 0xff;
7472 regs[0xcf] = 0xf5;
7473 regs[0xd0] = 0xf7;
7475 regs[0xe2] = 0x01;
7476 regs[0xe3] = 0x00;
7477 regs[0xe4] = 0x00;
7480 regs[0xe7] = 0x00;
7481 regs[0xe8] = 0x00;
7482 regs[0xe9] = 0x00;
7483 regs[0xea] = 0x00;
7484 regs[0xeb] = 0x00;
7485 regs[0xec] = 0x00;
7486 regs[0xed] = 0x00;
7487 regs[0xef] = 0x00;
7488 regs[0xf0] = 0x00;
7489 regs[0xf2] = 0x00;
7490 regs[0x33] = 0x83;
7491 regs[0x40] = 0xac;
7492 regs[0x50] = 0x00;
7493 regs[0x64] = 0x01;
7494 regs[0x65] = 0x20;
7495 regs[0x88] = 0xae;
7496 regs[0x8d] = 0xbc;
7497 regs[0x8e] = 0x63;
7498 regs[0xc0] = 0xe0;
7499 regs[0xc2] = 0x01;
7500 regs[0xc3] = 0x1f;
7501 regs[0xc4] = 0x00;
7502 regs[0xc5] = 0xfe;
7503 regs[0xc6] = 0xff;
7504 regs[0xc7] = 0xff;
7505 regs[0xc8] = 0x00;
7506 regs[0xc9] = 0x3f;
7507 regs[0xca] = 0xfe;
7508 regs[0xcb] = 0xff;
7509 regs[0xcc] = 0x00;
7510 regs[0xcd] = 0x00;
7511 regs[0xd1] = 0xec;
7512 regs[0xd2] = 0x0d;
7513 regs[0xd3] = 0x05;
7514 regs[0xd4] = 0x67;
7515 regs[0xd7] = 0x10;
7516 regs[0xd8] = 0x52;
7521 regs[0x13] = 0x39;
7522 regs[0x14] = 0xf0;
7523 regs[0x15] = 0x29;
7524 regs[0x16] = 0x00;
7525 regs[0x17] = 0x10;
7526 regs[0x23] = 0x00;
7527 regs[0x33] = 0x86;
7528 regs[0x34] = 0xf0;
7529 regs[0x35] = 0x0e;
7530 regs[0x39] = 0x00;
7531 regs[0x3a] = 0x0e;
7532 regs[0x40] = 0xac;
7533 regs[0x64] = 0x02;
7534 regs[0x65] = 0x10;
7536 regs[0x85] = 0x60;
7537 regs[0x86] = 0x5a;
7538 regs[0x87] = 0xc0;
7539 regs[0x88] = 0xae;
7540 regs[0x8d] = 0xbc;
7541 regs[0x8e] = 0x63;
7542 regs[0xc0] = 0xe0;
7543 regs[0xc1] = 0xff;
7544 regs[0xc2] = 0x01;
7545 regs[0xc3] = 0x1f;
7546 regs[0xc4] = 0x00;
7547 regs[0xc5] = 0xfe;
7548 regs[0xc6] = 0xff;
7549 regs[0xc7] = 0xff;
7550 regs[0xc8] = 0x00;
7551 regs[0xc9] = 0x3f;
7552 regs[0xca] = 0xfe;
7553 regs[0xcb] = 0xff;
7554 regs[0xcc] = 0x00;
7555 regs[0xcd] = 0x00;
7556 regs[0xce] = 0xff;
7557 regs[0xcf] = 0xf5;
7558 regs[0xd0] = 0xf7;
7559 regs[0xd1] = 0xec;
7560 regs[0xd2] = 0x0d;
7561 regs[0xd3] = 0x05;
7562 regs[0xd4] = 0x67;
7563 regs[0xd7] = 0x10;
7564 regs[0xd8] = 0x52;
7565 regs[0xe2] = 0x00;
7566 regs[0xe3] = 0x00;
7567 regs[0xe4] = 0x00;
7568 regs[0xe7] = 0x00;
7569 regs[0xe8] = 0x00;
7570 regs[0xe9] = 0x00;
7571 regs[0xea] = 0x00;
7572 regs[0xeb] = 0x00;
7573 regs[0xec] = 0x00;
7574 regs[0xed] = 0x00;
7575 regs[0xef] = 0x00;
7576 regs[0xf0] = 0x00;
7577 regs[0xf2] = 0x00;
7592 SET_DOUBLE (regs, EXPOSURE_REG, exposure);
7593 SET_DOUBLE (regs, TIMING_REG, timing);
7594 SET_DOUBLE (regs, TIMING1_REG, timing+1);
7595 SET_DOUBLE (regs, TIMING2_REG, timing+2);
7598 regs[0xd3] = rts8891_data_format (dev->xdpi, dev->sensor);
7625 status=setup_scan_registers (session, &status1, &status2, dev->regs);
7642 status = rts8891_write_all (dev->devnum, dev->regs, dev->reg_count);
7659 /* the hammer way : set all regs */
7660 SANE_Byte regs[244];
7677 dev->regs[0x16] = 0x07;
7678 dev->regs[0x17] = 0x00;
7682 dev->regs[0x16] = 0x0f;
7683 dev->regs[0x17] = 0x10;
7685 sanei_rts88xx_write_regs (dev->devnum, 0x16, dev->regs + 0x16, 2);
7700 status = rts8891_park (dev, regs, wait);
7785 reg = session->dev->regs[LAMP_REG] | 0x80;
7790 reg = session->dev->regs[LAMP_REG] & 0x7F;