Lines Matching refs:dev

4    (C) 2006-2013 Stéphane Voltz	<stef.dev@free.fr>
75 static SANE_Bool low_is_home_line (Lexmark_Device * dev,
80 Lexmark_Device * dev);
81 static void low_rewind (Lexmark_Device * dev, SANE_Byte * regs);
85 static SANE_Status low_simple_scan (Lexmark_Device * dev,
98 SANE_Byte * regs, Lexmark_Device * dev);
101 static SANE_Status read_buffer_init (Lexmark_Device * dev, int bytesperline);
389 lexmark_low_wake_up (Lexmark_Device * dev)
398 if (rts88xx_write_reg (dev->devnum, regs[i], values + i) !=
459 sanei_lexmark_low_init (Lexmark_Device * dev)
472 dev->shadow_regs[i] = 0;
476 dev->shadow_regs[0xf3] = 0xf8;
477 dev->shadow_regs[0xf4] = 0x7f;
479 switch (dev->model.sensor_type)
482 dev->shadow_regs[0x00] = 0x04;
483 dev->shadow_regs[0x01] = 0x43;
484 dev->shadow_regs[0x0b] = 0x70;
485 dev->shadow_regs[0x12] = 0x0f;
486 dev->shadow_regs[0x16] = 0x07;
487 dev->shadow_regs[0x1d] = 0x20;
488 dev->shadow_regs[0x28] = 0xe0;
489 dev->shadow_regs[0x29] = 0xe3;
490 dev->shadow_regs[0x2a] = 0xeb;
491 dev->shadow_regs[0x2b] = 0x0d;
492 dev->shadow_regs[0x2e] = 0x40;
493 dev->shadow_regs[0x2e] = 0x86;
494 dev->shadow_regs[0x2f] = 0x01;
495 dev->shadow_regs[0x30] = 0x48;
496 dev->shadow_regs[0x31] = 0x06;
497 dev->shadow_regs[0x33] = 0x01;
498 dev->shadow_regs[0x34] = 0x50;
499 dev->shadow_regs[0x35] = 0x01;
500 dev->shadow_regs[0x36] = 0x50;
501 dev->shadow_regs[0x37] = 0x01;
502 dev->shadow_regs[0x38] = 0x50;
503 dev->shadow_regs[0x3a] = 0x20;
504 dev->shadow_regs[0x3c] = 0x88;
505 dev->shadow_regs[0x3d] = 0x08;
506 dev->shadow_regs[0x65] = 0x80;
507 dev->shadow_regs[0x66] = 0x64;
508 dev->shadow_regs[0x6c] = 0xc8;
509 dev->shadow_regs[0x72] = 0x1a;
510 dev->shadow_regs[0x74] = 0x23;
511 dev->shadow_regs[0x75] = 0x03;
512 dev->shadow_regs[0x79] = 0x40;
513 dev->shadow_regs[0x7A] = 0x01;
514 dev->shadow_regs[0x8d] = 0x01;
515 dev->shadow_regs[0x8e] = 0x60;
516 dev->shadow_regs[0x8f] = 0x80;
517 dev->shadow_regs[0x93] = 0x02;
518 dev->shadow_regs[0x94] = 0x0e;
519 dev->shadow_regs[0xa3] = 0xcc;
520 dev->shadow_regs[0xa4] = 0x27;
521 dev->shadow_regs[0xa5] = 0x24;
522 dev->shadow_regs[0xc2] = 0x80;
523 dev->shadow_regs[0xc3] = 0x01;
524 dev->shadow_regs[0xc4] = 0x20;
525 dev->shadow_regs[0xc5] = 0x0a;
526 dev->shadow_regs[0xc8] = 0x04;
527 dev->shadow_regs[0xc9] = 0x39;
528 dev->shadow_regs[0xca] = 0x0a;
529 dev->shadow_regs[0xe2] = 0x70;
530 dev->shadow_regs[0xe3] = 0x17;
531 dev->shadow_regs[0xf3] = 0xe0;
532 dev->shadow_regs[0xf4] = 0xff;
533 dev->shadow_regs[0xf5] = 0x01;
537 dev->shadow_regs[0x01] = 0x43;
538 dev->shadow_regs[0x0b] = 0x70;
539 dev->shadow_regs[0x11] = 0x01;
540 dev->shadow_regs[0x12] = 0x0f;
541 dev->shadow_regs[0x13] = 0x01;
542 dev->shadow_regs[0x15] = 0x01;
543 dev->shadow_regs[0x16] = 0x0f;
544 dev->shadow_regs[0x1d] = 0x20;
545 dev->shadow_regs[0x28] = 0xeb;
546 dev->shadow_regs[0x29] = 0xee;
547 dev->shadow_regs[0x2a] = 0xf7;
548 dev->shadow_regs[0x2b] = 0x01;
549 dev->shadow_regs[0x2e] = 0x86;
550 dev->shadow_regs[0x30] = 0x48;
551 dev->shadow_regs[0x33] = 0x01;
552 dev->shadow_regs[0x3a] = 0x20;
553 dev->shadow_regs[0x3b] = 0x37;
554 dev->shadow_regs[0x3c] = 0x88;
555 dev->shadow_regs[0x3d] = 0x08;
556 dev->shadow_regs[0x40] = 0x80;
557 dev->shadow_regs[0x72] = 0x05;
558 dev->shadow_regs[0x74] = 0x0e;
559 dev->shadow_regs[0x8b] = 0xff;
560 dev->shadow_regs[0x8c] = 0x02;
561 dev->shadow_regs[0x8d] = 0x01;
562 dev->shadow_regs[0x8e] = 0x60;
563 dev->shadow_regs[0x8f] = 0x80;
564 dev->shadow_regs[0x94] = 0x0e;
565 dev->shadow_regs[0xa3] = 0xcc;
566 dev->shadow_regs[0xa4] = 0x27;
567 dev->shadow_regs[0xa5] = 0x24;
568 dev->shadow_regs[0xb0] = 0xb2;
569 dev->shadow_regs[0xb2] = 0x04;
570 dev->shadow_regs[0xc2] = 0x80;
571 dev->shadow_regs[0xc4] = 0x20;
572 dev->shadow_regs[0xc8] = 0x04;
573 dev->shadow_regs[0xc9] = 0x3b;
574 dev->shadow_regs[0xed] = 0xc2;
575 dev->shadow_regs[0xee] = 0x02;
579 dev->shadow_regs[0x00] = 0x00;
580 dev->shadow_regs[0x01] = 0x43;
581 dev->shadow_regs[0x0b] = 0x70;
582 dev->shadow_regs[0x0c] = 0x28;
583 dev->shadow_regs[0x0d] = 0xa4;
584 dev->shadow_regs[0x11] = 0x01;
585 dev->shadow_regs[0x12] = 0x0f;
586 dev->shadow_regs[0x13] = 0x01;
587 dev->shadow_regs[0x15] = 0x01;
588 dev->shadow_regs[0x16] = 0x0f;
589 dev->shadow_regs[0x17] = 0x00;
590 dev->shadow_regs[0x1d] = 0x20;
591 dev->shadow_regs[0x28] = 0xf5;
592 dev->shadow_regs[0x29] = 0xf7;
593 dev->shadow_regs[0x2a] = 0xf5;
594 dev->shadow_regs[0x2b] = 0x17;
595 dev->shadow_regs[0x2d] = 0x41;
596 dev->shadow_regs[0x2e] = 0x86;
597 dev->shadow_regs[0x2f] = 0x11;
598 dev->shadow_regs[0x30] = 0x48;
599 dev->shadow_regs[0x31] = 0x01;
600 dev->shadow_regs[0x33] = 0x01;
601 dev->shadow_regs[0x34] = 0x50;
602 dev->shadow_regs[0x35] = 0x01;
603 dev->shadow_regs[0x36] = 0x50;
604 dev->shadow_regs[0x37] = 0x01;
605 dev->shadow_regs[0x38] = 0x50;
606 dev->shadow_regs[0x3a] = 0x20;
607 dev->shadow_regs[0x3b] = 0x37;
608 dev->shadow_regs[0x3c] = 0x88;
609 dev->shadow_regs[0x3d] = 0x08;
610 dev->shadow_regs[0x40] = 0x80;
611 dev->shadow_regs[0x47] = 0x01;
612 dev->shadow_regs[0x48] = 0x1a;
613 dev->shadow_regs[0x49] = 0x5b;
614 dev->shadow_regs[0x4a] = 0x1b;
615 dev->shadow_regs[0x4b] = 0x5b;
616 dev->shadow_regs[0x4c] = 0x05;
617 dev->shadow_regs[0x4d] = 0x3f;
618 dev->shadow_regs[0x60] = 0x2f;
619 dev->shadow_regs[0x61] = 0x36;
620 dev->shadow_regs[0x62] = 0x30;
621 dev->shadow_regs[0x63] = 0x36;
622 dev->shadow_regs[0x65] = 0x80;
623 dev->shadow_regs[0x66] = 0x64;
624 dev->shadow_regs[0x6c] = 0xc8;
625 dev->shadow_regs[0x6d] = 0x00;
626 dev->shadow_regs[0x72] = 0x35;
627 dev->shadow_regs[0x74] = 0x4e;
628 dev->shadow_regs[0x75] = 0x03;
629 dev->shadow_regs[0x79] = 0x40;
630 dev->shadow_regs[0x7a] = 0x01;
631 dev->shadow_regs[0x85] = 0x02;
632 dev->shadow_regs[0x86] = 0x33;
633 dev->shadow_regs[0x87] = 0x0f;
634 dev->shadow_regs[0x88] = 0x24;
635 dev->shadow_regs[0x8b] = 0xff;
636 dev->shadow_regs[0x8c] = 0x02;
637 dev->shadow_regs[0x8d] = 0x01;
638 dev->shadow_regs[0x8e] = 0x60;
639 dev->shadow_regs[0x8f] = 0x80;
640 dev->shadow_regs[0x91] = 0x19;
641 dev->shadow_regs[0x92] = 0x20;
642 dev->shadow_regs[0x93] = 0x02;
643 dev->shadow_regs[0x94] = 0x0e;
644 dev->shadow_regs[0xa3] = 0x0d;
645 dev->shadow_regs[0xa4] = 0x5e;
646 dev->shadow_regs[0xa5] = 0x23;
647 dev->shadow_regs[0xb0] = 0x2c;
648 dev->shadow_regs[0xb1] = 0x07;
649 dev->shadow_regs[0xb2] = 0x04;
650 dev->shadow_regs[0xc2] = 0x80;
651 dev->shadow_regs[0xc3] = 0x01;
652 dev->shadow_regs[0xc4] = 0x20;
653 dev->shadow_regs[0xc5] = 0x0a;
654 dev->shadow_regs[0xc8] = 0x04;
655 dev->shadow_regs[0xc9] = 0x3b;
656 dev->shadow_regs[0xca] = 0x0a;
657 dev->shadow_regs[0xe2] = 0xf8;
658 dev->shadow_regs[0xe3] = 0x2a;
662 dev->shadow_regs[0x01] = 0x43;
663 dev->shadow_regs[0x11] = 0x01;
664 dev->shadow_regs[0x12] = 0x0f;
665 dev->shadow_regs[0x13] = 0x01;
666 dev->shadow_regs[0x15] = 0x01;
667 dev->shadow_regs[0x16] = 0x0f;
668 dev->shadow_regs[0x17] = 0x00;
669 dev->shadow_regs[0x1d] = 0x20;
670 dev->shadow_regs[0x28] = 0xf5;
671 dev->shadow_regs[0x29] = 0xf7;
672 dev->shadow_regs[0x2a] = 0xf5;
673 dev->shadow_regs[0x2b] = 0x17;
674 dev->shadow_regs[0x2d] = 0x41;
675 dev->shadow_regs[0x2e] = 0x86;
676 dev->shadow_regs[0x30] = 0x48;
677 dev->shadow_regs[0x31] = 0x01;
678 dev->shadow_regs[0x33] = 0x01;
679 dev->shadow_regs[0x34] = 0x50;
680 dev->shadow_regs[0x35] = 0x01;
681 dev->shadow_regs[0x36] = 0x50;
682 dev->shadow_regs[0x37] = 0x01;
683 dev->shadow_regs[0x38] = 0x50;
684 dev->shadow_regs[0x3c] = 0x88;
685 dev->shadow_regs[0x3d] = 0x08;
686 dev->shadow_regs[0x66] = 0x64;
687 dev->shadow_regs[0x67] = 0x00;
688 dev->shadow_regs[0x6c] = 0xc8;
689 dev->shadow_regs[0x6d] = 0x00;
690 dev->shadow_regs[0x72] = 0x35;
691 dev->shadow_regs[0x74] = 0x4e;
692 dev->shadow_regs[0x75] = 0x03;
693 dev->shadow_regs[0x7a] = 0x01;
694 dev->shadow_regs[0x93] = 0x0a;
695 dev->shadow_regs[0x94] = 0x0e;
697 dev->shadow_regs[0xc3] = 0x01;
698 dev->shadow_regs[0xc4] = 0x20;
699 dev->shadow_regs[0xc5] = 0x0a;
700 dev->shadow_regs[0xc8] = 0x04;
701 dev->shadow_regs[0xc9] = 0x3b;
702 dev->shadow_regs[0xca] = 0x0a;
703 dev->shadow_regs[0xe2] = 0xf8;
704 dev->shadow_regs[0xe3] = 0x2a;
708 dev->shadow_regs[0x01] = 0x43;
709 dev->shadow_regs[0x0b] = 0x70;
710 dev->shadow_regs[0x0c] = 0x28;
711 dev->shadow_regs[0x0d] = 0xa4;
712 dev->shadow_regs[0x11] = 0x01;
713 dev->shadow_regs[0x12] = 0x0f;
714 dev->shadow_regs[0x13] = 0x01;
715 dev->shadow_regs[0x15] = 0x01;
716 dev->shadow_regs[0x16] = 0x07;
717 dev->shadow_regs[0x1d] = 0x20;
718 dev->shadow_regs[0x28] = 0xf5;
719 dev->shadow_regs[0x29] = 0xf7;
720 dev->shadow_regs[0x2a] = 0xf5;
721 dev->shadow_regs[0x2b] = 0x17;
722 dev->shadow_regs[0x2e] = 0x86;
723 dev->shadow_regs[0x30] = 0x48;
724 dev->shadow_regs[0x31] = 0x01;
725 dev->shadow_regs[0x33] = 0x01;
726 dev->shadow_regs[0x3a] = 0x20;
727 dev->shadow_regs[0x3b] = 0x37;
728 dev->shadow_regs[0x3c] = 0x88;
729 dev->shadow_regs[0x3d] = 0x08;
730 dev->shadow_regs[0x47] = 0x21;
731 dev->shadow_regs[0x48] = 0x1a;
732 dev->shadow_regs[0x49] = 0x5b;
733 dev->shadow_regs[0x4a] = 0x1b;
734 dev->shadow_regs[0x4b] = 0x5b;
735 dev->shadow_regs[0x4c] = 0x05;
736 dev->shadow_regs[0x4d] = 0x3f;
737 dev->shadow_regs[0x65] = 0x80;
738 dev->shadow_regs[0x86] = 0x14;
739 dev->shadow_regs[0x87] = 0x06;
740 dev->shadow_regs[0x89] = 0xf5;
741 dev->shadow_regs[0x8d] = 0x01;
742 dev->shadow_regs[0x8e] = 0x60;
743 dev->shadow_regs[0x8f] = 0x80;
744 dev->shadow_regs[0x94] = 0x0e;
745 dev->shadow_regs[0xa3] = 0x0d;
746 dev->shadow_regs[0xa4] = 0x5e;
747 dev->shadow_regs[0xa5] = 0x23;
748 dev->shadow_regs[0xb0] = 0x2c;
749 dev->shadow_regs[0xb1] = 0x0f;
750 dev->shadow_regs[0xc2] = 0x80;
751 dev->shadow_regs[0xc4] = 0x20;
752 dev->shadow_regs[0xc8] = 0x04;
756 dev->shadow_regs[0x01] = 0x43;
757 dev->shadow_regs[0x0b] = 0x70;
758 dev->shadow_regs[0x0c] = 0x28;
759 dev->shadow_regs[0x0d] = 0xa4;
760 dev->shadow_regs[0x11] = 0x01;
761 dev->shadow_regs[0x12] = 0x0f;
762 dev->shadow_regs[0x13] = 0x01;
763 dev->shadow_regs[0x15] = 0x01;
764 dev->shadow_regs[0x16] = 0x0f;
765 dev->shadow_regs[0x1d] = 0x20;
766 dev->shadow_regs[0x28] = 0xe9;
767 dev->shadow_regs[0x29] = 0xeb;
768 dev->shadow_regs[0x2a] = 0xe9;
769 dev->shadow_regs[0x2b] = 0x0b;
770 dev->shadow_regs[0x2d] = 0x01;
771 dev->shadow_regs[0x2e] = 0x86;
772 dev->shadow_regs[0x2f] = 0x11;
773 dev->shadow_regs[0x30] = 0x48;
774 dev->shadow_regs[0x33] = 0x01;
775 dev->shadow_regs[0x34] = 0x50;
776 dev->shadow_regs[0x35] = 0x01;
777 dev->shadow_regs[0x36] = 0x50;
778 dev->shadow_regs[0x37] = 0x01;
779 dev->shadow_regs[0x38] = 0x50;
780 dev->shadow_regs[0x3a] = 0x20;
781 dev->shadow_regs[0x3b] = 0x37;
782 dev->shadow_regs[0x3c] = 0x88;
783 dev->shadow_regs[0x3d] = 0x08;
784 dev->shadow_regs[0x40] = 0x80;
785 dev->shadow_regs[0x47] = 0x01;
786 dev->shadow_regs[0x48] = 0x1a;
787 dev->shadow_regs[0x49] = 0x5b;
788 dev->shadow_regs[0x4a] = 0x1b;
789 dev->shadow_regs[0x4b] = 0x5b;
790 dev->shadow_regs[0x4c] = 0x05;
791 dev->shadow_regs[0x4d] = 0x3f;
792 dev->shadow_regs[0x60] = 0x12;
793 dev->shadow_regs[0x62] = 0x81;
794 dev->shadow_regs[0x63] = 0x03;
795 dev->shadow_regs[0x65] = 0x80;
796 dev->shadow_regs[0x66] = 0x64;
797 dev->shadow_regs[0x6c] = 0xc8;
798 dev->shadow_regs[0x72] = 0x1e;
799 dev->shadow_regs[0x74] = 0x3c;
800 dev->shadow_regs[0x75] = 0x03;
801 dev->shadow_regs[0x79] = 0x40;
802 dev->shadow_regs[0x7a] = 0x01;
803 dev->shadow_regs[0x85] = 0x20;
804 dev->shadow_regs[0x86] = 0x1e;
805 dev->shadow_regs[0x87] = 0x39;
806 dev->shadow_regs[0x8b] = 0xff;
807 dev->shadow_regs[0x8c] = 0x02;
808 dev->shadow_regs[0x8d] = 0x01;
809 dev->shadow_regs[0x8e] = 0x60;
810 dev->shadow_regs[0x8f] = 0x80;
811 dev->shadow_regs[0x92] = 0x92;
812 dev->shadow_regs[0x93] = 0x02;
813 dev->shadow_regs[0x94] = 0x0e;
814 dev->shadow_regs[0xa3] = 0x0d;
815 dev->shadow_regs[0xa4] = 0x5e;
816 dev->shadow_regs[0xa5] = 0x23;
817 dev->shadow_regs[0xb0] = 0x2c;
818 dev->shadow_regs[0xb1] = 0x07;
819 dev->shadow_regs[0xb2] = 0x04;
820 dev->shadow_regs[0xc2] = 0x80;
821 dev->shadow_regs[0xc3] = 0x01;
822 dev->shadow_regs[0xc4] = 0x20;
823 dev->shadow_regs[0xc5] = 0x0a;
824 dev->shadow_regs[0xc8] = 0x04;
825 dev->shadow_regs[0xc9] = 0x3b;
826 dev->shadow_regs[0xca] = 0x0a;
827 dev->shadow_regs[0xe2] = 0xf8;
828 dev->shadow_regs[0xe3] = 0x2a;
829 dev->shadow_regs[0xf3] = 0xff;
830 dev->shadow_regs[0xf4] = 0x0f;
834 dev->model.model, dev->model.name);
840 sanei_lexmark_low_destroy (Lexmark_Device * dev)
843 if (dev->read_buffer != NULL)
844 read_buffer_free (dev->read_buffer);
1035 low_simple_scan (Lexmark_Device * dev, SANE_Byte * regs, int xoffset,
1051 if ((dev->model.motor_type == A920_MOTOR
1052 || dev->model.motor_type == X74_MOTOR) && rts88xx_is_color (regs)
1053 && dev->val[OPT_RESOLUTION].w == 600)
1078 status = low_cancel (dev->devnum);
1083 status = low_start_scan (dev->devnum, regs);
1088 status = low_poll_data (dev->devnum);
1104 rts88xx_read_data (dev->devnum, needed - read, (*data) + read, &size);
1117 if (rts88xx_read_reg (dev->devnum, 0xb3, &reg) != SANE_STATUS_GOOD)
1135 status = low_cancel (dev->devnum);
1150 sanei_lexmark_low_open_device (Lexmark_Device * dev)
1176 result = sanei_usb_open (dev->sane.name, &(dev->devnum));
1178 DBG (2, "sanei_lexmark_low_open_device: devnum=%d\n", dev->devnum);
1181 low_usb_bulk_write (dev->devnum, command_block, &size);
1184 low_usb_bulk_read (dev->devnum, shadow_regs, &size);
1204 ex - sx, dev->shadow_regs[0x7a], shadow_regs[0x2f]);
1212 if (shadow_regs[0xb0] == 0x2c && dev->model.sensor_type == X1100_B2_SENSOR)
1218 if ((dev->model.sensor_type == X1200_SENSOR) && (shadow_regs[0x10] == 0x97))
1231 sanei_lexmark_low_assign_model (dev, dev->sane.name,
1232 dev->model.vendor_id,
1233 dev->model.product_id, variant);
1235 sanei_lexmark_low_init (dev);
1242 sanei_lexmark_low_close_device (Lexmark_Device * dev)
1245 lexmark_low_set_idle (dev->devnum);
1249 sanei_usb_close (dev->devnum);
1304 low_is_home_line (Lexmark_Device * dev, unsigned char *buffer)
1436 home_point1 = dev->model.HomeEdgePoint1;
1448 home_point2 = dev->model.HomeEdgePoint2;
1464 sanei_lexmark_low_move_fwd (SANE_Int distance, Lexmark_Device * dev,
1486 devnum = dev->devnum;
1493 switch (dev->model.sensor_type)
1515 dev->shadow_regs[0x2d] = 0x01;
1519 dev->shadow_regs[0x2d] = 0x4f;
1562 switch (dev->model.motor_type)
1641 if (dev->model.sensor_type == X74_SENSOR)
1648 sanei_lexmark_low_search_home_fwd (Lexmark_Device * dev)
1666 devnum = dev->devnum;
1671 switch (dev->model.sensor_type)
1674 dev->shadow_regs[0x2c] = 0x03;
1675 dev->shadow_regs[0x2d] = 0x45;
1676 dev->shadow_regs[0x2f] = 0x21;
1677 dev->shadow_regs[0x30] = 0x48;
1678 dev->shadow_regs[0x31] = 0x06;
1679 dev->shadow_regs[0x34] = 0x05;
1680 dev->shadow_regs[0x35] = 0x05;
1681 dev->shadow_regs[0x36] = 0x09;
1682 dev->shadow_regs[0x37] = 0x09;
1683 dev->shadow_regs[0x38] = 0x0d;
1684 dev->shadow_regs[0x40] = 0x80;
1685 dev->shadow_regs[0x75] = 0x00;
1686 dev->shadow_regs[0x8b] = 0xff;
1687 dev->shadow_regs[0x93] = 0x06;
1690 dev->shadow_regs[0x2c] = 0x0f;
1691 dev->shadow_regs[0x2d] = 0x51;
1692 dev->shadow_regs[0x2f] = 0x21;
1693 dev->shadow_regs[0x34] = 0x04;
1694 dev->shadow_regs[0x35] = 0x04;
1695 dev->shadow_regs[0x36] = 0x08;
1696 dev->shadow_regs[0x37] = 0x08;
1697 dev->shadow_regs[0x38] = 0x0b;
1698 dev->shadow_regs[0x93] = 0x06;
1701 dev->shadow_regs[0x2c] = 0x0d;
1702 dev->shadow_regs[0x2d] = 0x4f;
1703 dev->shadow_regs[0x34] = 0x05;
1704 dev->shadow_regs[0x35] = 0x05;
1705 dev->shadow_regs[0x36] = 0x09;
1706 dev->shadow_regs[0x37] = 0x09;
1707 dev->shadow_regs[0x38] = 0x0d;
1708 dev->shadow_regs[0x40] = 0x80;
1709 dev->shadow_regs[0x72] = 0x35;
1710 dev->shadow_regs[0x74] = 0x4e;
1712 dev->shadow_regs[0x85] = 0x20; /* 05 */
1713 dev->shadow_regs[0x86] = 0x00; /* 05 */
1714 dev->shadow_regs[0x87] = 0x00; /* 05 */
1715 dev->shadow_regs[0x88] = 0x00; /* 45 */
1716 dev->shadow_regs[0x89] = 0x00;
1717 dev->shadow_regs[0x8b] = 0xff;
1719 dev->shadow_regs[0x93] = 0x06; /* 0e */
1721 dev->shadow_regs[0x75] = 0x00; /* */
1722 dev->shadow_regs[0x91] = 0x00; /* 60 */
1723 dev->shadow_regs[0x92] = 0x00; /* 8d */
1724 dev->shadow_regs[0xb1] = 0x00; /* */
1725 dev->shadow_regs[0xc5] = 0x00; /* */
1726 dev->shadow_regs[0xca] = 0x00; /* */
1727 dev->shadow_regs[0xc3] = 0x01; /* */
1730 dev->shadow_regs[0x2c] = 0x0d;
1731 dev->shadow_regs[0x2d] = 0x4f;
1732 dev->shadow_regs[0x34] = 0x05;
1733 dev->shadow_regs[0x35] = 0x05;
1734 dev->shadow_regs[0x36] = 0x09;
1735 dev->shadow_regs[0x37] = 0x09;
1736 dev->shadow_regs[0x38] = 0x0d;
1737 dev->shadow_regs[0x40] = 0x80;
1738 dev->shadow_regs[0x72] = 0x35;
1739 dev->shadow_regs[0x74] = 0x4e;
1740 dev->shadow_regs[0x85] = 0x05;
1741 dev->shadow_regs[0x88] = 0x45;
1742 dev->shadow_regs[0x89] = 0x00;
1743 dev->shadow_regs[0x8b] = 0xff;
1744 dev->shadow_regs[0x91] = 0x60;
1745 dev->shadow_regs[0x92] = 0x8d;
1746 dev->shadow_regs[0x93] = 0x0e;
1749 dev->shadow_regs[0x2c] = 0x01;
1750 dev->shadow_regs[0x2d] = 0x03;
1751 dev->shadow_regs[0x34] = 0x04;
1752 dev->shadow_regs[0x35] = 0x04;
1753 dev->shadow_regs[0x36] = 0x08;
1754 dev->shadow_regs[0x37] = 0x08;
1755 dev->shadow_regs[0x38] = 0x0b;
1756 dev->shadow_regs[0x66] = 0x88;
1757 dev->shadow_regs[0x6c] = 0x10;
1758 dev->shadow_regs[0x6d] = 0x14;
1759 dev->shadow_regs[0x75] = 0x00;
1760 dev->shadow_regs[0x93] = 0x06;
1761 dev->shadow_regs[0xc5] = 0x00;
1762 dev->shadow_regs[0xca] = 0x00;
1765 dev->shadow_regs[0x0b] = 0x70;
1766 dev->shadow_regs[0x0c] = 0x28;
1767 dev->shadow_regs[0x0d] = 0xa4;
1768 dev->shadow_regs[0x2c] = 0x0d;
1769 dev->shadow_regs[0x2d] = 0x4f;
1770 dev->shadow_regs[0x2f] = 0x21;
1771 dev->shadow_regs[0x32] = 0x40;
1772 dev->shadow_regs[0x34] = 0x05;
1773 dev->shadow_regs[0x35] = 0x05;
1774 dev->shadow_regs[0x36] = 0x09;
1775 dev->shadow_regs[0x37] = 0x09;
1776 dev->shadow_regs[0x38] = 0x0d;
1777 dev->shadow_regs[0x3a] = 0x20;
1778 dev->shadow_regs[0x3b] = 0x37;
1779 dev->shadow_regs[0x40] = 0x80;
1780 dev->shadow_regs[0x47] = 0x01;
1781 dev->shadow_regs[0x48] = 0x1a;
1782 dev->shadow_regs[0x49] = 0x5b;
1783 dev->shadow_regs[0x4a] = 0x1b;
1784 dev->shadow_regs[0x4b] = 0x5b;
1785 dev->shadow_regs[0x4c] = 0x05;
1786 dev->shadow_regs[0x4d] = 0x3f;
1787 dev->shadow_regs[0x75] = 0x00;
1788 dev->shadow_regs[0x85] = 0x03;
1789 dev->shadow_regs[0x86] = 0x33;
1790 dev->shadow_regs[0x87] = 0x8f;
1791 dev->shadow_regs[0x88] = 0x34;
1792 dev->shadow_regs[0x8b] = 0xff;
1793 dev->shadow_regs[0x8e] = 0x60;
1794 dev->shadow_regs[0x8f] = 0x80;
1795 dev->shadow_regs[0x91] = 0x59;
1796 dev->shadow_regs[0x92] = 0x10;
1797 dev->shadow_regs[0x93] = 0x06;
1798 dev->shadow_regs[0xa3] = 0x0d;
1799 dev->shadow_regs[0xa4] = 0x5e;
1800 dev->shadow_regs[0xa5] = 0x23;
1801 dev->shadow_regs[0xb1] = 0x07;
1802 dev->shadow_regs[0xc2] = 0x80;
1803 dev->shadow_regs[0xc5] = 0x00;
1804 dev->shadow_regs[0xca] = 0x00;
1807 dev->shadow_regs[0x65] = 0x80;
1808 dev->shadow_regs[0x8c] = 0x02;
1809 dev->shadow_regs[0x8d] = 0x01;
1810 dev->shadow_regs[0xb2] = 0x00;
1811 dev->shadow_regs[0xed] = 0x00;
1812 dev->shadow_regs[0xee] = 0x00;
1814 rts88xx_set_gain (dev->shadow_regs, dev->sensor->default_gain,
1815 dev->sensor->default_gain, dev->sensor->default_gain);
1816 rts88xx_set_offset (dev->shadow_regs, 0x80, 0x80, 0x80);
1819 rts88xx_set_gray_scan (dev->shadow_regs);
1822 dev->shadow_regs[0x39] = 0x07;
1825 dev->shadow_regs[0x60] = 0x01;
1826 dev->shadow_regs[0x61] = 0x00;
1827 dev->shadow_regs[0x62] = 0x02;
1828 dev->shadow_regs[0x63] = 0x00;
1831 rts88xx_set_scan_frequency (dev->shadow_regs, 1);
1834 dev->shadow_regs[0x66] = 0x6a; /* 0x88 for X1200 */
1835 dev->shadow_regs[0x67] = 0x00;
1837 dev->shadow_regs[0x6c] = 0xf2; /* 0x1410 for X1200 */
1838 dev->shadow_regs[0x6d] = 0x13;
1840 dev->shadow_regs[0x79] = 0x40;
1841 dev->shadow_regs[0x7a] = 0x02;
1843 dev->shadow_regs[0xc3] = 0x01;
1845 dev->shadow_regs[0xc6] = 0x01;
1847 switch (dev->model.motor_type)
1852 dev->shadow_regs[0xc9] = 0x3b;
1854 dev->shadow_regs[0xe2] = 0x01;
1856 dev->shadow_regs[0xe3] = 0x03;
1859 dev->shadow_regs[0xc4] = 0x20;
1860 dev->shadow_regs[0xc5] = 0x00;
1861 dev->shadow_regs[0xc8] = 0x04;
1863 dev->shadow_regs[0xc9] = 0x39;
1864 dev->shadow_regs[0xca] = 0x00;
1866 dev->shadow_regs[0xe0] = 0x29;
1867 dev->shadow_regs[0xe1] = 0x17;
1868 dev->shadow_regs[0xe2] = 0x8f;
1869 dev->shadow_regs[0xe3] = 0x06;
1870 dev->shadow_regs[0xe4] = 0x61;
1871 dev->shadow_regs[0xe5] = 0x16;
1872 dev->shadow_regs[0xe6] = 0x64;
1873 dev->shadow_regs[0xe7] = 0xb5;
1874 dev->shadow_regs[0xe8] = 0x08;
1875 dev->shadow_regs[0xe9] = 0x32;
1876 dev->shadow_regs[0xec] = 0x0c;
1877 dev->shadow_regs[0xef] = 0x08;
1885 dev->shadow_regs[0x32] = 0x00;
1886 low_write_all_regs (devnum, dev->shadow_regs);
1887 dev->shadow_regs[0x32] = 0x40;
1888 low_write_all_regs (devnum, dev->shadow_regs);
1891 rts88xx_commit (devnum, dev->shadow_regs[0x2c]);
1933 ret_val = low_is_home_line (dev, buffer);
1946 sanei_lexmark_low_search_home_bwd (Lexmark_Device * dev)
2001 devnum = dev->devnum;
2006 switch (dev->model.sensor_type)
2009 dev->shadow_regs[0x2c] = 0x03;
2010 dev->shadow_regs[0x2d] = 0x45;
2011 dev->shadow_regs[0x34] = 0x09;
2012 dev->shadow_regs[0x35] = 0x09;
2013 dev->shadow_regs[0x36] = 0x11;
2014 dev->shadow_regs[0x37] = 0x11;
2015 dev->shadow_regs[0x38] = 0x19;
2016 dev->shadow_regs[0x85] = 0x00;
2017 dev->shadow_regs[0x93] = 0x06;
2018 dev->shadow_regs[0x40] = 0x80;
2020 dev->shadow_regs[0x75] = 0x00;
2021 dev->shadow_regs[0x8b] = 0xff;
2024 dev->shadow_regs[0x2c] = 0x0f;
2025 dev->shadow_regs[0x2d] = 0x51;
2026 dev->shadow_regs[0x34] = 0x07;
2027 dev->shadow_regs[0x35] = 0x07;
2028 dev->shadow_regs[0x36] = 0x0f;
2029 dev->shadow_regs[0x37] = 0x0f;
2030 dev->shadow_regs[0x38] = 0x15;
2031 dev->shadow_regs[0x85] = 0x20;
2032 dev->shadow_regs[0x93] = 0x06;
2035 dev->shadow_regs[0x2c] = 0x0d;
2036 dev->shadow_regs[0x2d] = 0x4f;
2037 dev->shadow_regs[0x34] = 0x09;
2038 dev->shadow_regs[0x35] = 0x09;
2039 dev->shadow_regs[0x36] = 0x11;
2040 dev->shadow_regs[0x37] = 0x11;
2041 dev->shadow_regs[0x38] = 0x19;
2042 dev->shadow_regs[0x85] = 0x20;
2043 dev->shadow_regs[0x93] = 0x06;
2046 dev->shadow_regs[0x2c] = 0x0d;
2047 dev->shadow_regs[0x2d] = 0x4f;
2048 dev->shadow_regs[0x34] = 0x09;
2049 dev->shadow_regs[0x35] = 0x09;
2050 dev->shadow_regs[0x36] = 0x11;
2051 dev->shadow_regs[0x37] = 0x11;
2052 dev->shadow_regs[0x38] = 0x19;
2053 dev->shadow_regs[0x85] = 0x05;
2054 dev->shadow_regs[0x93] = 0x0e;
2057 dev->shadow_regs[0x2c] = 0x01;
2058 dev->shadow_regs[0x2d] = 0x03;
2059 dev->shadow_regs[0x34] = 0x07;
2060 dev->shadow_regs[0x35] = 0x07;
2061 dev->shadow_regs[0x36] = 0x0f;
2062 dev->shadow_regs[0x37] = 0x0f;
2063 dev->shadow_regs[0x38] = 0x15;
2067 dev->shadow_regs[0x2c] = 0x0d;
2068 dev->shadow_regs[0x2d] = 0x4f;
2069 dev->shadow_regs[0x34] = 0x09;
2070 dev->shadow_regs[0x35] = 0x09;
2071 dev->shadow_regs[0x36] = 0x11;
2072 dev->shadow_regs[0x37] = 0x11;
2073 dev->shadow_regs[0x38] = 0x19;
2074 dev->shadow_regs[0x85] = 0x03;
2075 dev->shadow_regs[0x93] = 0x06;
2078 rts88xx_set_gain (dev->shadow_regs, dev->sensor->default_gain,
2079 dev->sensor->default_gain, dev->sensor->default_gain);
2080 dev->shadow_regs[0x65] = 0x80;
2081 dev->shadow_regs[0x8b] = 0xff;
2082 dev->shadow_regs[0x8c] = 0x02;
2083 dev->shadow_regs[0xb2] = 0x00;
2086 rts88xx_set_offset (dev->shadow_regs, 0x80, 0x80, 0x80);
2089 dev->shadow_regs[0x2f] = 0x21;
2091 dev->shadow_regs[0x39] = 0x03;
2093 dev->shadow_regs[0x60] = 0x0a;
2094 dev->shadow_regs[0x61] = 0x00;
2095 dev->shadow_regs[0x62] = 0x46;
2096 dev->shadow_regs[0x63] = 0x0f;
2098 rts88xx_set_scan_frequency (dev->shadow_regs, 2);
2100 dev->shadow_regs[0x66] = 0x6a; /* 0x88 for X1200 */
2101 dev->shadow_regs[0x67] = 0x00;
2103 dev->shadow_regs[0x6c] = 0xf2; /* 0x1410 for X1200, 13f2 for X1200/rev. 97 */
2104 dev->shadow_regs[0x6d] = 0x13;
2106 dev->shadow_regs[0x79] = 0x40;
2107 dev->shadow_regs[0x7a] = 0x02;
2110 dev->shadow_regs[0xc6] = 0x01;
2112 dev->shadow_regs[0xc3] = 0x81;
2114 switch (dev->model.motor_type)
2117 dev->shadow_regs[0xc4] = 0x20;
2118 dev->shadow_regs[0xc5] = 0x00;
2119 dev->shadow_regs[0xc8] = 0x04;
2121 dev->shadow_regs[0xc9] = 0x39;
2122 dev->shadow_regs[0xca] = 0x00;
2124 dev->shadow_regs[0xe0] = 0x29;
2125 dev->shadow_regs[0xe1] = 0x17;
2126 dev->shadow_regs[0xe2] = 0x8f;
2127 dev->shadow_regs[0xe3] = 0x06;
2128 dev->shadow_regs[0xe4] = 0x61;
2129 dev->shadow_regs[0xe5] = 0x16;
2130 dev->shadow_regs[0xe6] = 0x64;
2131 dev->shadow_regs[0xe7] = 0xb5;
2132 dev->shadow_regs[0xe8] = 0x08;
2133 dev->shadow_regs[0xe9] = 0x32;
2134 dev->shadow_regs[0xec] = 0x0c;
2135 dev->shadow_regs[0xef] = 0x08;
2140 dev->shadow_regs[0xc5] = 0x19;
2142 dev->shadow_regs[0xc9] = 0x3a;
2144 dev->shadow_regs[0xca] = 0x08;
2146 dev->shadow_regs[0xe0] = 0xe3;
2147 dev->shadow_regs[0xe1] = 0x18;
2148 dev->shadow_regs[0xe2] = 0x03;
2149 dev->shadow_regs[0xe3] = 0x06;
2150 dev->shadow_regs[0xe4] = 0x2b;
2151 dev->shadow_regs[0xe5] = 0x17;
2152 dev->shadow_regs[0xe6] = 0xdc;
2153 dev->shadow_regs[0xe7] = 0xb3;
2154 dev->shadow_regs[0xe8] = 0x07;
2155 dev->shadow_regs[0xe9] = 0x1b;
2156 dev->shadow_regs[0xec] = 0x07;
2157 dev->shadow_regs[0xef] = 0x03;
2165 dev->shadow_regs[0x32] = 0x00;
2166 low_write_all_regs (devnum, dev->shadow_regs);
2167 dev->shadow_regs[0x32] = 0x40;
2168 low_write_all_regs (devnum, dev->shadow_regs);
2171 status = rts88xx_commit (devnum, dev->shadow_regs[0x2c]);
2267 if (low_is_home_line (dev, buffer_start))
2312 Lexmark_Device * dev)
2316 switch (dev->model.sensor_type)
2371 /* If we're here we have an unknown dev->model.sensor_type */
2408 SANE_Byte * regs, Lexmark_Device * dev)
2416 low_get_start_loc (res, &vert_start, &hor_start, offset, dev);
2457 sanei_lexmark_low_find_start_line (Lexmark_Device * dev)
2526 switch (dev->model.sensor_type)
2529 dev->shadow_regs[0x2c] = 0x04;
2530 dev->shadow_regs[0x2d] = 0x46;
2531 dev->shadow_regs[0x34] = 0x05;
2532 dev->shadow_regs[0x35] = 0x05;
2533 dev->shadow_regs[0x36] = 0x0b;
2534 dev->shadow_regs[0x37] = 0x0b;
2535 dev->shadow_regs[0x38] = 0x11;
2536 dev->shadow_regs[0x40] = 0x40;
2537 rts88xx_set_gain (dev->shadow_regs, 6, 6, 6);
2540 dev->shadow_regs[0x2c] = 0x0f;
2541 dev->shadow_regs[0x2d] = 0x51;
2542 dev->shadow_regs[0x34] = 0x0d;
2543 dev->shadow_regs[0x35] = 0x0d;
2544 dev->shadow_regs[0x36] = 0x1d;
2545 dev->shadow_regs[0x37] = 0x1d;
2546 dev->shadow_regs[0x38] = 0x29;
2547 dev->shadow_regs[0x65] = 0x80;
2548 dev->shadow_regs[0x85] = 0x00;
2549 dev->shadow_regs[0x93] = 0x06;
2550 rts88xx_set_gain (dev->shadow_regs, 6, 6, 6);
2553 rts88xx_set_gain (dev->shadow_regs, 10, 10, 10);
2554 dev->shadow_regs[0x28] = 0xf5;
2555 dev->shadow_regs[0x29] = 0xf7;
2556 dev->shadow_regs[0x2a] = 0xf5;
2557 dev->shadow_regs[0x2b] = 0x17;
2559 dev->shadow_regs[0x2c] = 0x0d;
2560 dev->shadow_regs[0x2d] = 0x4f;
2561 dev->shadow_regs[0x31] = 0x01;
2562 dev->shadow_regs[0x34] = 0x11;
2563 dev->shadow_regs[0x35] = 0x11;
2564 dev->shadow_regs[0x36] = 0x21;
2565 dev->shadow_regs[0x37] = 0x21;
2566 dev->shadow_regs[0x38] = 0x31;
2567 dev->shadow_regs[0x72] = 0x35;
2568 dev->shadow_regs[0x74] = 0x4e;
2569 dev->shadow_regs[0x85] = 0x02;
2570 dev->shadow_regs[0x86] = 0x33;
2571 dev->shadow_regs[0x87] = 0x0f;
2572 dev->shadow_regs[0x88] = 0x24;
2573 dev->shadow_regs[0x91] = 0x19;
2574 dev->shadow_regs[0x92] = 0x20;
2575 dev->shadow_regs[0xea] = 0x00;
2576 dev->shadow_regs[0xeb] = 0x00;
2579 dev->shadow_regs[0x2c] = 0x0d;
2580 dev->shadow_regs[0x2d] = 0x4f;
2581 dev->shadow_regs[0x34] = 0x11;
2582 dev->shadow_regs[0x35] = 0x11;
2583 dev->shadow_regs[0x36] = 0x21;
2584 dev->shadow_regs[0x37] = 0x21;
2585 dev->shadow_regs[0x38] = 0x31;
2586 dev->shadow_regs[0x85] = 0x05;
2587 dev->shadow_regs[0x88] = 0x44;
2588 dev->shadow_regs[0x92] = 0x85;
2589 dev->shadow_regs[0x93] = 0x0e;
2590 rts88xx_set_gain (dev->shadow_regs, 6, 6, 6);
2593 dev->shadow_regs[0x2c] = 0x01;
2594 dev->shadow_regs[0x2d] = 0x03;
2595 dev->shadow_regs[0x34] = 0x0d;
2596 dev->shadow_regs[0x35] = 0x0d;
2597 dev->shadow_regs[0x36] = 0x1d;
2598 dev->shadow_regs[0x37] = 0x1d;
2599 dev->shadow_regs[0x38] = 0x29;
2600 dev->shadow_regs[0xea] = 0x00;
2601 dev->shadow_regs[0xeb] = 0x00;
2602 dev->shadow_regs[0x40] = 0x80;
2603 dev->shadow_regs[0x50] = 0x00;
2604 dev->shadow_regs[0x81] = 0x00;
2605 dev->shadow_regs[0x82] = 0x00;
2606 dev->shadow_regs[0x85] = 0x00;
2607 dev->shadow_regs[0x86] = 0x00;
2608 dev->shadow_regs[0x87] = 0xff;
2609 dev->shadow_regs[0x88] = 0x02;
2610 dev->shadow_regs[0x92] = 0x00;
2611 rts88xx_set_gain (dev->shadow_regs, 10, 10, 10);
2614 dev->shadow_regs[0x2c] = 0x01;
2615 dev->shadow_regs[0x2d] = 0x03;
2616 dev->shadow_regs[0x34] = 0x0d;
2617 dev->shadow_regs[0x35] = 0x0d;
2618 dev->shadow_regs[0x36] = 0x1d;
2619 dev->shadow_regs[0x37] = 0x1d;
2620 dev->shadow_regs[0x38] = 0x29;
2621 dev->shadow_regs[0xea] = 0x00;
2622 dev->shadow_regs[0xeb] = 0x00;
2623 rts88xx_set_gain (dev->shadow_regs, 10, 10, 10);
2628 rts88xx_set_offset (dev->shadow_regs, 0x80, 0x80, 0x80);
2630 dev->shadow_regs[0x2f] = 0x21;
2632 dev->shadow_regs[0x39] = 0x01;
2634 dev->shadow_regs[0x60] = 0x03;
2635 dev->shadow_regs[0x61] = 0x00;
2636 dev->shadow_regs[0x62] = 0x3e;
2637 dev->shadow_regs[0x63] = 0x00;
2639 rts88xx_set_scan_frequency (dev->shadow_regs, 1);
2641 dev->shadow_regs[0x66] = 0xd4; /* 0xf2 for X1200 */
2642 dev->shadow_regs[0x67] = 0x09;
2644 dev->shadow_regs[0x6c] = 0x84; /* 0xa2 for X1200 */
2645 dev->shadow_regs[0x6d] = 0x0a;
2647 dev->shadow_regs[0x79] = 0x40;
2648 dev->shadow_regs[0x7a] = 0x02;
2651 dev->shadow_regs[0xc3] = 0x81;
2657 switch (dev->model.motor_type)
2662 dev->shadow_regs[0xc5] = 0x22;
2664 dev->shadow_regs[0xc6] = 0x09;
2666 dev->shadow_regs[0xc9] = 0x3b;
2668 dev->shadow_regs[0xca] = 0x1f;
2669 dev->shadow_regs[0xe0] = 0xf7;
2670 dev->shadow_regs[0xe1] = 0x16;
2672 dev->shadow_regs[0xe2] = 0x87;
2674 dev->shadow_regs[0xe3] = 0x13;
2675 dev->shadow_regs[0xe4] = 0x1b;
2676 dev->shadow_regs[0xe5] = 0x16;
2677 dev->shadow_regs[0xe6] = 0xdc;
2678 dev->shadow_regs[0xe7] = 0x00;
2679 dev->shadow_regs[0xe8] = 0x00;
2680 dev->shadow_regs[0xe9] = 0x1b;
2681 dev->shadow_regs[0xec] = 0x07;
2682 dev->shadow_regs[0xef] = 0x03;
2685 dev->shadow_regs[0xc4] = 0x20;
2686 dev->shadow_regs[0xc5] = 0x22;
2688 dev->shadow_regs[0xc6] = 0x0b;
2690 dev->shadow_regs[0xc8] = 0x04;
2691 dev->shadow_regs[0xc9] = 0x39;
2692 dev->shadow_regs[0xca] = 0x1f;
2695 dev->shadow_regs[0xe0] = 0x2f;
2696 dev->shadow_regs[0xe1] = 0x11;
2698 dev->shadow_regs[0xe2] = 0x9f;
2700 dev->shadow_regs[0xe3] = 0x0f;
2702 dev->shadow_regs[0xe4] = 0xcb;
2704 dev->shadow_regs[0xe5] = 0x10;
2706 dev->shadow_regs[0xe6] = 0x64;
2708 dev->shadow_regs[0xe7] = 0x00;
2709 dev->shadow_regs[0xe8] = 0x00;
2711 dev->shadow_regs[0xe9] = 0x32;
2713 dev->shadow_regs[0xea] = 0x00;
2714 dev->shadow_regs[0xeb] = 0x00;
2716 dev->shadow_regs[0xec] = 0x0c;
2718 dev->shadow_regs[0xed] = 0x00;
2719 dev->shadow_regs[0xee] = 0x00;
2721 dev->shadow_regs[0xef] = 0x08;
2727 low_stop_mvmt (dev->devnum);
2730 dev->shadow_regs[0x32] = 0x00;
2731 low_write_all_regs (dev->devnum, dev->shadow_regs);
2732 dev->shadow_regs[0x32] = 0x40;
2733 low_write_all_regs (dev->devnum, dev->shadow_regs);
2736 rts88xx_commit (dev->devnum, dev->shadow_regs[0x2c]);
2743 low_usb_bulk_write (dev->devnum, command4_block, &cmd_size);
2745 low_usb_bulk_read (dev->devnum, poll_result, &cmd_size);
2768 low_usb_bulk_write (dev->devnum, command5_block, &cmd_size);
2771 low_usb_bulk_read (dev->devnum, buffer, &cmd_size);
2774 low_stop_mvmt (dev->devnum);
2855 if (dev->model.sensor_type == X74_SENSOR)
2856 low_stop_mvmt (dev->devnum);
2864 sanei_lexmark_low_set_scan_regs (Lexmark_Device * dev, SANE_Int resolution,
2874 if (strcmp (dev->val[OPT_MODE].s, SANE_VALUE_SCAN_MODE_COLOR) == 0)
2880 switch (dev->model.sensor_type)
2883 dev->shadow_regs[0x2c] = 0x03;
2884 dev->shadow_regs[0x2d] = 0x45;
2887 dev->shadow_regs[0x2c] = 0x0f;
2888 dev->shadow_regs[0x2d] = 0x51;
2891 dev->shadow_regs[0x2c] = 0x0d;
2892 dev->shadow_regs[0x2d] = 0x4f;
2895 dev->shadow_regs[0x2c] = 0x0d;
2896 dev->shadow_regs[0x2d] = 0x4f;
2899 dev->shadow_regs[0x2c] = 0x01;
2900 dev->shadow_regs[0x2d] = 0x03;
2903 dev->shadow_regs[0x2c] = 0x01;
2904 dev->shadow_regs[0x2d] = 0x03;
2909 dev->val[OPT_TL_X].w,
2910 dev->val[OPT_TL_Y].w,
2911 dev->val[OPT_BR_X].w,
2912 dev->val[OPT_BR_Y].w,
2914 (dev->model.motor_type == A920_MOTOR
2915 || dev->model.motor_type == X74_MOTOR) && isColourScan
2916 && (resolution == 600), dev->shadow_regs, dev);
2919 if (dev->val[OPT_RESOLUTION].w < 600)
2920 dev->shadow_regs[0x7a] = 600 / dev->val[OPT_RESOLUTION].w;
2922 dev->shadow_regs[0x7a] = 1;
2931 switch (dev->model.sensor_type)
2935 dev->shadow_regs[0x34] = 0x04;
2936 dev->shadow_regs[0x36] = 0x03;
2937 dev->shadow_regs[0x38] = 0x03;
2939 dev->shadow_regs[0x79] = 0x08;
2941 dev->shadow_regs[0x80] = 0x0d;
2942 dev->shadow_regs[0x81] = 0x0e;
2943 dev->shadow_regs[0x82] = 0x02;
2945 dev->shadow_regs[0x85] = 0x00;
2946 dev->shadow_regs[0x86] = 0x00;
2947 dev->shadow_regs[0x87] = 0x00;
2948 dev->shadow_regs[0x88] = 0x00;
2950 dev->shadow_regs[0x91] = 0x00;
2951 dev->shadow_regs[0x92] = 0x00;
2952 dev->shadow_regs[0x93] = 0x06;;
2957 dev->shadow_regs[0x34] = 0x05;
2958 dev->shadow_regs[0x36] = 0x05;
2959 dev->shadow_regs[0x38] = 0x05;
2961 dev->shadow_regs[0x80] = 0x0c;
2962 dev->shadow_regs[0x81] = 0x0c;
2963 dev->shadow_regs[0x82] = 0x09;
2965 dev->shadow_regs[0x85] = 0x00;
2966 dev->shadow_regs[0x86] = 0x00;
2967 dev->shadow_regs[0x87] = 0x00;
2968 dev->shadow_regs[0x88] = 0x00;
2970 dev->shadow_regs[0x91] = 0x8c;
2971 dev->shadow_regs[0x92] = 0x40;
2972 dev->shadow_regs[0x93] = 0x06;
2976 dev->shadow_regs[0x34] = 0x03;
2977 dev->shadow_regs[0x36] = 0x04;
2978 dev->shadow_regs[0x38] = 0x03;
2980 dev->shadow_regs[0x80] = 0x00;
2981 dev->shadow_regs[0x81] = 0x02;
2982 dev->shadow_regs[0x82] = 0x03;
2984 dev->shadow_regs[0x85] = 0x20;
2985 dev->shadow_regs[0x86] = 0x00;
2986 dev->shadow_regs[0x87] = 0x00;
2987 dev->shadow_regs[0x88] = 0x00;
2989 dev->shadow_regs[0x91] = 0x00;
2990 dev->shadow_regs[0x92] = 0x00;
2991 dev->shadow_regs[0x93] = 0x06;
2995 dev->shadow_regs[0x34] = 0x02;
2996 dev->shadow_regs[0x36] = 0x04;
2997 dev->shadow_regs[0x38] = 0x03;
2999 dev->shadow_regs[0x80] = 0x07;
3000 dev->shadow_regs[0x81] = 0x0f;
3001 dev->shadow_regs[0x82] = 0x03;
3003 dev->shadow_regs[0x85] = 0x05;
3004 dev->shadow_regs[0x86] = 0x14;
3005 dev->shadow_regs[0x87] = 0x06;
3006 dev->shadow_regs[0x88] = 0x44;
3008 dev->shadow_regs[0x91] = 0x60;
3009 dev->shadow_regs[0x92] = 0x85;
3010 dev->shadow_regs[0x93] = 0x0e;
3014 dev->shadow_regs[0x34] = 0x02;
3015 dev->shadow_regs[0x36] = 0x03;
3016 dev->shadow_regs[0x38] = 0x01;
3018 dev->shadow_regs[0x79] = 0x20;
3020 dev->shadow_regs[0x80] = 0x08;
3021 dev->shadow_regs[0x81] = 0x02;
3022 dev->shadow_regs[0x82] = 0x0d;
3024 dev->shadow_regs[0x85] = 0x20;
3025 dev->shadow_regs[0x86] = 0x1e;
3026 dev->shadow_regs[0x87] = 0x39;
3027 dev->shadow_regs[0x88] = 0x00;
3029 dev->shadow_regs[0x91] = 0x00;
3030 /* dev->shadow_regs[0x92] = 0x92; */
3031 dev->shadow_regs[0x93] = 0x06;
3035 dev->shadow_regs[0x34] = 0x04;
3036 dev->shadow_regs[0x36] = 0x05;
3037 dev->shadow_regs[0x38] = 0x04;
3039 dev->shadow_regs[0x80] = 0x01;
3040 dev->shadow_regs[0x81] = 0x0a;
3041 dev->shadow_regs[0x82] = 0x0b;
3045 switch (dev->model.motor_type)
3048 dev->shadow_regs[0xc2] = 0x80;
3050 dev->shadow_regs[0xc4] = 0x20;
3051 dev->shadow_regs[0xc5] = 0x0c;
3052 dev->shadow_regs[0xc6] = 0x0b;
3054 dev->shadow_regs[0xc8] = 0x04;
3055 dev->shadow_regs[0xc9] = 0x39;
3056 dev->shadow_regs[0xca] = 0x01;
3059 dev->shadow_regs[0xe0] = 0x1b;
3060 dev->shadow_regs[0xe1] = 0x0a;
3062 dev->shadow_regs[0xe2] = 0x4f;
3064 dev->shadow_regs[0xe3] = 0x01;
3066 dev->shadow_regs[0xe4] = 0xb3;
3068 dev->shadow_regs[0xe5] = 0x09;
3070 dev->shadow_regs[0xe6] = 0x0d;
3072 dev->shadow_regs[0xe7] = 0xe5;
3073 dev->shadow_regs[0xe8] = 0x02;
3075 dev->shadow_regs[0xe9] = 0x05;
3077 dev->shadow_regs[0xea] = 0xa0;
3078 dev->shadow_regs[0xeb] = 0x01;
3080 dev->shadow_regs[0xec] = 0x01;
3082 dev->shadow_regs[0xed] = 0x00;
3083 dev->shadow_regs[0xee] = 0x00;
3085 dev->shadow_regs[0xef] = 0x01;
3090 dev->shadow_regs[0xc5] = 0x0a;
3092 dev->shadow_regs[0xe0] = 0x2b;
3093 dev->shadow_regs[0xe1] = 0x0a;
3095 dev->shadow_regs[0xe2] = 0x7f;
3097 dev->shadow_regs[0xe3] = 0x01;
3099 dev->shadow_regs[0xe4] = 0xbb;
3100 dev->shadow_regs[0xe5] = 0x09;
3102 dev->shadow_regs[0xe6] = 0x0e;
3104 dev->shadow_regs[0xe7] = 0x2b;
3105 dev->shadow_regs[0xe8] = 0x03;
3107 dev->shadow_regs[0xe9] = 0x05;
3109 dev->shadow_regs[0xea] = 0xa0;
3110 dev->shadow_regs[0xeb] = 0x01;
3112 dev->shadow_regs[0xec] = 0x01;
3114 dev->shadow_regs[0xef] = 0x01;
3119 dev->shadow_regs[0x2f] = 0x11;
3121 dev->shadow_regs[0x35] = 0x01;
3122 dev->shadow_regs[0x37] = 0x01;
3124 dev->shadow_regs[0xc3] = 0x83;
3128 switch (dev->model.sensor_type)
3132 dev->shadow_regs[0x34] = 0x01;
3133 dev->shadow_regs[0x35] = 0x01;
3134 dev->shadow_regs[0x36] = 0x02;
3135 dev->shadow_regs[0x37] = 0x02;
3136 dev->shadow_regs[0x38] = 0x03;
3137 dev->shadow_regs[0x39] = 0x0f;
3139 dev->shadow_regs[0x40] = 0x80;
3141 dev->shadow_regs[0x79] = 0x08;
3143 dev->shadow_regs[0x85] = 0x00;
3144 dev->shadow_regs[0x86] = 0x00;
3145 dev->shadow_regs[0x87] = 0x00;
3146 dev->shadow_regs[0x88] = 0x00;
3148 dev->shadow_regs[0x8c] = 0x02;
3149 dev->shadow_regs[0x8d] = 0x01;
3150 dev->shadow_regs[0x8e] = 0x60;
3151 dev->shadow_regs[0x8f] = 0x80;
3153 dev->shadow_regs[0x91] = 0x00;
3154 dev->shadow_regs[0x92] = 0x00;
3155 dev->shadow_regs[0x93] = 0x06;
3160 dev->shadow_regs[0x34] = 0x02;
3161 dev->shadow_regs[0x35] = 0x02;
3162 dev->shadow_regs[0x36] = 0x04;
3163 dev->shadow_regs[0x37] = 0x04;
3164 dev->shadow_regs[0x38] = 0x06;
3166 dev->shadow_regs[0x85] = 0x20;
3167 dev->shadow_regs[0x86] = 0x00;
3168 dev->shadow_regs[0x87] = 0x00;
3169 dev->shadow_regs[0x88] = 0x00;
3171 dev->shadow_regs[0x91] = 0x00;
3172 dev->shadow_regs[0x92] = 0x00;
3173 dev->shadow_regs[0x93] = 0x06;
3176 dev->shadow_regs[0x34] = 0x01;
3177 dev->shadow_regs[0x35] = 0x01;
3178 dev->shadow_regs[0x36] = 0x02;
3179 dev->shadow_regs[0x37] = 0x02;
3180 dev->shadow_regs[0x38] = 0x03; /* these are half of B2 sensor */
3182 dev->shadow_regs[0x85] = 0x20;
3183 dev->shadow_regs[0x86] = 0x00;
3184 dev->shadow_regs[0x87] = 0x00;
3185 dev->shadow_regs[0x88] = 0x00;
3187 dev->shadow_regs[0x91] = 0x00;
3188 dev->shadow_regs[0x92] = 0x00;
3189 dev->shadow_regs[0x92] = 0x00;
3190 dev->shadow_regs[0x93] = 0x06;
3193 dev->shadow_regs[0x34] = 0x01;
3194 dev->shadow_regs[0x35] = 0x01;
3195 dev->shadow_regs[0x36] = 0x02;
3196 dev->shadow_regs[0x37] = 0x02;
3197 dev->shadow_regs[0x38] = 0x03;
3199 dev->shadow_regs[0x85] = 0x0d;
3200 dev->shadow_regs[0x86] = 0x14;
3201 dev->shadow_regs[0x87] = 0x06;
3202 dev->shadow_regs[0x88] = 0x45;
3204 dev->shadow_regs[0x91] = 0x60;
3205 dev->shadow_regs[0x92] = 0x8d;
3206 dev->shadow_regs[0x93] = 0x0e;
3209 dev->shadow_regs[0x34] = 0x01;
3210 dev->shadow_regs[0x35] = 0x01;
3211 dev->shadow_regs[0x36] = 0x02;
3212 dev->shadow_regs[0x37] = 0x02;
3213 dev->shadow_regs[0x38] = 0x02;
3215 dev->shadow_regs[0x79] = 0x20;
3217 dev->shadow_regs[0x85] = 0x00;
3218 dev->shadow_regs[0x86] = 0x00;
3219 dev->shadow_regs[0x87] = 0xff;
3220 dev->shadow_regs[0x88] = 0x02;
3222 dev->shadow_regs[0x92] = 0x00;
3225 dev->shadow_regs[0x34] = 0x01;
3226 dev->shadow_regs[0x35] = 0x01;
3227 dev->shadow_regs[0x36] = 0x02;
3228 dev->shadow_regs[0x37] = 0x02;
3229 dev->shadow_regs[0x38] = 0x02;
3231 dev->shadow_regs[0x79] = 0x20;
3233 dev->shadow_regs[0x85] = 0x00;
3234 dev->shadow_regs[0x86] = 0x00;
3235 dev->shadow_regs[0x87] = 0xff;
3236 dev->shadow_regs[0x88] = 0x02;
3238 dev->shadow_regs[0x92] = 0x00;
3241 switch (dev->model.motor_type)
3245 dev->shadow_regs[0xc4] = 0x20;
3246 dev->shadow_regs[0xc5] = 0x0a;
3247 dev->shadow_regs[0xc6] = 0x0b;
3249 dev->shadow_regs[0xc8] = 0x04;
3250 dev->shadow_regs[0xc9] = 0x39;
3251 dev->shadow_regs[0xca] = 0x01;
3254 dev->shadow_regs[0xe0] = 0x07;
3255 dev->shadow_regs[0xe1] = 0x18;
3257 dev->shadow_regs[0xe2] = 0xe7;
3259 dev->shadow_regs[0xe3] = 0x03;
3261 dev->shadow_regs[0xe4] = 0xe7;
3262 dev->shadow_regs[0xe5] = 0x14;
3264 dev->shadow_regs[0xe6] = 0x64;
3266 dev->shadow_regs[0xe7] = 0xcb;
3267 dev->shadow_regs[0xe8] = 0x08;
3269 dev->shadow_regs[0xe9] = 0x32;
3271 dev->shadow_regs[0xea] = 0xe3;
3272 dev->shadow_regs[0xeb] = 0x04;
3274 dev->shadow_regs[0xec] = 0x0c;
3276 dev->shadow_regs[0xed] = 0x00;
3277 dev->shadow_regs[0xee] = 0x00;
3279 dev->shadow_regs[0xef] = 0x08;
3284 dev->shadow_regs[0xc5] = 0x10;
3286 dev->shadow_regs[0xc6] = 0x09;
3288 dev->shadow_regs[0xc9] = 0x3b;
3289 dev->shadow_regs[0xca] = 0x01;
3291 dev->shadow_regs[0xe0] = 0x4d;
3292 dev->shadow_regs[0xe1] = 0x1c;
3294 dev->shadow_regs[0xe2] = 0x71;
3296 dev->shadow_regs[0xe3] = 0x02;
3298 dev->shadow_regs[0xe4] = 0x6d;
3299 dev->shadow_regs[0xe5] = 0x15;
3301 dev->shadow_regs[0xe6] = 0xdc;
3303 dev->shadow_regs[0xe7] = 0xad;
3304 dev->shadow_regs[0xe8] = 0x07;
3306 dev->shadow_regs[0xe9] = 0x1b;
3308 dev->shadow_regs[0xea] = 0xe1;
3309 dev->shadow_regs[0xeb] = 0x03;
3311 dev->shadow_regs[0xec] = 0x07;
3313 dev->shadow_regs[0xed] = 0xc2;
3314 dev->shadow_regs[0xee] = 0x02;
3316 dev->shadow_regs[0xef] = 0x03;
3321 dev->shadow_regs[0x2f] = 0x21;
3324 dev->shadow_regs[0x80] = 0x00;
3325 dev->shadow_regs[0x81] = 0x00;
3326 dev->shadow_regs[0x82] = 0x00;
3328 dev->shadow_regs[0xc3] = 0x81;
3333 dev->shadow_regs[0x39] = 0x0f;
3336 rts88xx_set_scan_frequency (dev->shadow_regs, 1);
3339 if (dev->model.sensor_type != X1200_SENSOR)
3340 dev->shadow_regs[0x79] = 0x08;
3352 switch (dev->model.sensor_type)
3355 dev->shadow_regs[0x34] = 0x08;
3356 dev->shadow_regs[0x36] = 0x06;
3357 dev->shadow_regs[0x38] = 0x05;
3358 dev->shadow_regs[0x39] = 0x07;
3361 dev->shadow_regs[0x79] = 0x08;
3363 dev->shadow_regs[0x80] = 0x0a;
3364 dev->shadow_regs[0x81] = 0x0c;
3365 dev->shadow_regs[0x82] = 0x04;
3367 dev->shadow_regs[0x85] = 0x00;
3368 dev->shadow_regs[0x86] = 0x00;
3369 dev->shadow_regs[0x87] = 0x00;
3370 dev->shadow_regs[0x88] = 0x00;
3372 dev->shadow_regs[0x91] = 0x00;
3373 dev->shadow_regs[0x92] = 0x00;
3374 dev->shadow_regs[0x93] = 0x06;
3377 dev->shadow_regs[0x34] = 0x0b;
3378 dev->shadow_regs[0x36] = 0x0b;
3379 dev->shadow_regs[0x38] = 0x0a;
3381 dev->shadow_regs[0x80] = 0x05;
3382 dev->shadow_regs[0x81] = 0x05;
3383 dev->shadow_regs[0x82] = 0x0a;
3385 dev->shadow_regs[0x85] = 0x83;
3386 dev->shadow_regs[0x86] = 0x7e;
3387 dev->shadow_regs[0x87] = 0xad;
3388 dev->shadow_regs[0x88] = 0x35;
3390 dev->shadow_regs[0x91] = 0xfe;
3391 dev->shadow_regs[0x92] = 0xdf;
3392 dev->shadow_regs[0x93] = 0x0e;
3395 dev->shadow_regs[0x34] = 0x05;
3396 dev->shadow_regs[0x36] = 0x07;
3397 dev->shadow_regs[0x38] = 0x05;
3399 dev->shadow_regs[0x80] = 0x00;
3400 dev->shadow_regs[0x81] = 0x02;
3401 dev->shadow_regs[0x82] = 0x06;
3403 dev->shadow_regs[0x85] = 0x20;
3404 dev->shadow_regs[0x86] = 0x00;
3405 dev->shadow_regs[0x87] = 0x00;
3406 dev->shadow_regs[0x88] = 0x00;
3408 dev->shadow_regs[0x91] = 0x00;
3409 dev->shadow_regs[0x92] = 0x00;
3410 dev->shadow_regs[0x93] = 0x06;
3413 dev->shadow_regs[0x34] = 0x03;
3414 dev->shadow_regs[0x36] = 0x08;
3415 dev->shadow_regs[0x38] = 0x05;
3417 dev->shadow_regs[0x80] = 0x0e;
3418 dev->shadow_regs[0x81] = 0x07;
3419 dev->shadow_regs[0x82] = 0x02;
3421 dev->shadow_regs[0x85] = 0x05;
3422 dev->shadow_regs[0x86] = 0x14;
3423 dev->shadow_regs[0x87] = 0x06;
3424 dev->shadow_regs[0x88] = 0x04;
3426 dev->shadow_regs[0x91] = 0xe0;
3427 dev->shadow_regs[0x92] = 0x85;
3428 dev->shadow_regs[0x93] = 0x0e;
3431 dev->shadow_regs[0x34] = 0x04;
3432 dev->shadow_regs[0x36] = 0x05;
3433 dev->shadow_regs[0x38] = 0x02;
3435 dev->shadow_regs[0x40] = 0x90;
3436 dev->shadow_regs[0x50] = 0x20; */
3438 dev->shadow_regs[0x40] = 0x80;
3439 dev->shadow_regs[0x50] = 0x00;
3441 dev->shadow_regs[0x79] = 0x20;
3443 dev->shadow_regs[0x80] = 0x00;
3444 dev->shadow_regs[0x81] = 0x07;
3445 dev->shadow_regs[0x82] = 0x0b;
3447 dev->shadow_regs[0x85] = 0x20;
3448 dev->shadow_regs[0x86] = 0x1e;
3449 dev->shadow_regs[0x87] = 0x39;
3450 dev->shadow_regs[0x88] = 0x00;
3452 dev->shadow_regs[0x92] = 0x92;
3456 dev->shadow_regs[0x34] = 0x04;
3457 dev->shadow_regs[0x36] = 0x05;
3458 dev->shadow_regs[0x38] = 0x02;
3460 dev->shadow_regs[0x40] = 0x80;
3461 dev->shadow_regs[0x50] = 0x00;
3463 dev->shadow_regs[0x79] = 0x20;
3465 dev->shadow_regs[0x80] = 0x00;
3466 dev->shadow_regs[0x81] = 0x07;
3467 dev->shadow_regs[0x82] = 0x0b;
3469 dev->shadow_regs[0x85] = 0x20;
3470 dev->shadow_regs[0x86] = 0x1e;
3471 dev->shadow_regs[0x87] = 0x39;
3472 dev->shadow_regs[0x88] = 0x00;
3474 dev->shadow_regs[0x92] = 0x92;
3477 switch (dev->model.motor_type)
3480 dev->shadow_regs[0xc2] = 0x80;
3482 dev->shadow_regs[0xc4] = 0x20;
3484 dev->shadow_regs[0xc5] = 0x0e;
3486 dev->shadow_regs[0xc6] = 0x0b;
3487 dev->shadow_regs[0xc7] = 0x00;
3488 dev->shadow_regs[0xc8] = 0x04;
3489 dev->shadow_regs[0xc9] = 0x39;
3490 dev->shadow_regs[0xca] = 0x03;
3493 dev->shadow_regs[0xe0] = 0x41;
3494 dev->shadow_regs[0xe1] = 0x09;
3496 dev->shadow_regs[0xe2] = 0x89;
3498 dev->shadow_regs[0xe3] = 0x02;
3500 dev->shadow_regs[0xe4] = 0x0d;
3502 dev->shadow_regs[0xe5] = 0x09;
3504 dev->shadow_regs[0xe6] = 0x0d;
3506 dev->shadow_regs[0xe7] = 0xe8;
3507 dev->shadow_regs[0xe8] = 0x02;
3509 dev->shadow_regs[0xe9] = 0x05;
3511 dev->shadow_regs[0xea] = 0x00;
3512 dev->shadow_regs[0xeb] = 0x00;
3514 dev->shadow_regs[0xec] = 0x01;
3516 dev->shadow_regs[0xed] = 0x00;
3517 dev->shadow_regs[0xee] = 0x00;
3519 dev->shadow_regs[0xef] = 0x01;
3524 dev->shadow_regs[0xc5] = 0x0e;
3526 dev->shadow_regs[0xc9] = 0x3a;
3527 dev->shadow_regs[0xca] = 0x03;
3529 dev->shadow_regs[0xe0] = 0x61;
3530 dev->shadow_regs[0xe1] = 0x0a;
3532 dev->shadow_regs[0xe2] = 0xed;
3534 dev->shadow_regs[0xe3] = 0x02;
3536 dev->shadow_regs[0xe4] = 0x29;
3537 dev->shadow_regs[0xe5] = 0x0a;
3539 dev->shadow_regs[0xe6] = 0x0e;
3541 dev->shadow_regs[0xe7] = 0x29;
3542 dev->shadow_regs[0xe8] = 0x03;
3544 dev->shadow_regs[0xe9] = 0x05;
3546 dev->shadow_regs[0xea] = 0x00;
3547 dev->shadow_regs[0xeb] = 0x00;
3549 dev->shadow_regs[0xec] = 0x01;
3551 dev->shadow_regs[0xef] = 0x01;
3555 dev->shadow_regs[0x2f] = 0x11;
3557 dev->shadow_regs[0x35] = 0x01;
3558 dev->shadow_regs[0x37] = 0x01;
3560 dev->shadow_regs[0xc3] = 0x83;
3565 switch (dev->model.sensor_type)
3569 dev->shadow_regs[0x34] = 0x02;
3570 dev->shadow_regs[0x35] = 0x02;
3571 dev->shadow_regs[0x36] = 0x04;
3572 dev->shadow_regs[0x37] = 0x04;
3573 dev->shadow_regs[0x38] = 0x06;
3574 dev->shadow_regs[0x39] = 0x07;
3576 dev->shadow_regs[0x40] = 0x40;
3579 dev->shadow_regs[0x79] = 0x08;
3581 dev->shadow_regs[0x85] = 0x00;
3582 dev->shadow_regs[0x86] = 0x00;
3583 dev->shadow_regs[0x87] = 0x00;
3584 dev->shadow_regs[0x88] = 0x00;
3586 dev->shadow_regs[0x91] = 0x00;
3587 dev->shadow_regs[0x92] = 0x00;
3588 dev->shadow_regs[0x93] = 0x06;
3591 dev->shadow_regs[0x34] = 0x04;
3592 dev->shadow_regs[0x35] = 0x04;
3593 dev->shadow_regs[0x36] = 0x07;
3594 dev->shadow_regs[0x37] = 0x07;
3595 dev->shadow_regs[0x38] = 0x0a;
3598 dev->shadow_regs[0x85] = 0x00;
3599 dev->shadow_regs[0x86] = 0x00;
3600 dev->shadow_regs[0x87] = 0x00;
3601 dev->shadow_regs[0x88] = 0x00;
3603 dev->shadow_regs[0x91] = 0x00;
3604 dev->shadow_regs[0x92] = 0x00;
3605 dev->shadow_regs[0x93] = 0x06;
3608 dev->shadow_regs[0x34] = 0x02;
3609 dev->shadow_regs[0x35] = 0x02;
3610 dev->shadow_regs[0x36] = 0x04;
3611 dev->shadow_regs[0x37] = 0x04;
3612 dev->shadow_regs[0x38] = 0x05;
3614 dev->shadow_regs[0x85] = 0x20;
3615 dev->shadow_regs[0x86] = 0x00;
3616 dev->shadow_regs[0x87] = 0x00;
3617 dev->shadow_regs[0x88] = 0x00;
3619 dev->shadow_regs[0x91] = 0x00;
3620 dev->shadow_regs[0x92] = 0x00;
3621 dev->shadow_regs[0x93] = 0x06;
3624 dev->shadow_regs[0x34] = 0x02;
3625 dev->shadow_regs[0x35] = 0x02;
3626 dev->shadow_regs[0x36] = 0x04;
3627 dev->shadow_regs[0x37] = 0x04;
3628 dev->shadow_regs[0x38] = 0x05;
3630 dev->shadow_regs[0x85] = 0x0d;
3631 dev->shadow_regs[0x86] = 0x14;
3632 dev->shadow_regs[0x87] = 0x06;
3633 dev->shadow_regs[0x88] = 0x45;
3635 dev->shadow_regs[0x91] = 0x60;
3636 dev->shadow_regs[0x92] = 0x8d;
3637 dev->shadow_regs[0x93] = 0x0e;
3640 dev->shadow_regs[0x34] = 0x01;
3641 dev->shadow_regs[0x35] = 0x01;
3642 dev->shadow_regs[0x36] = 0x02;
3643 dev->shadow_regs[0x37] = 0x02;
3644 dev->shadow_regs[0x38] = 0x03;
3646 /* dev->shadow_regs[0x40] = 0x90;
3647 dev->shadow_regs[0x50] = 0x20; */
3649 dev->shadow_regs[0x40] = 0x80;
3650 dev->shadow_regs[0x50] = 0x00;
3652 dev->shadow_regs[0x79] = 0x20;
3654 dev->shadow_regs[0x85] = 0x00;
3655 dev->shadow_regs[0x86] = 0x00;
3656 dev->shadow_regs[0x87] = 0xff;
3657 dev->shadow_regs[0x88] = 0x02;
3659 dev->shadow_regs[0x92] = 0x92;
3662 dev->shadow_regs[0x34] = 0x01;
3663 dev->shadow_regs[0x35] = 0x01;
3664 dev->shadow_regs[0x36] = 0x02;
3665 dev->shadow_regs[0x37] = 0x02;
3666 dev->shadow_regs[0x38] = 0x03;
3668 dev->shadow_regs[0x40] = 0x80;
3669 dev->shadow_regs[0x50] = 0x00;
3671 dev->shadow_regs[0x79] = 0x20;
3673 dev->shadow_regs[0x85] = 0x00;
3674 dev->shadow_regs[0x86] = 0x00;
3675 dev->shadow_regs[0x87] = 0xff;
3676 dev->shadow_regs[0x88] = 0x02;
3678 dev->shadow_regs[0x92] = 0x92;
3681 switch (dev->model.motor_type)
3685 dev->shadow_regs[0xc4] = 0x20;
3686 dev->shadow_regs[0xc5] = 0x14;
3688 dev->shadow_regs[0xc6] = 0x0b;
3690 dev->shadow_regs[0xc8] = 0x04;
3691 dev->shadow_regs[0xc9] = 0x39;
3692 dev->shadow_regs[0xca] = 0x01;
3695 dev->shadow_regs[0xe0] = 0x09;
3696 dev->shadow_regs[0xe1] = 0x18;
3698 dev->shadow_regs[0xe2] = 0xe9;
3700 dev->shadow_regs[0xe3] = 0x03;
3702 dev->shadow_regs[0xe4] = 0x79;
3704 dev->shadow_regs[0xe5] = 0x16;
3706 dev->shadow_regs[0xe6] = 0x64;
3708 dev->shadow_regs[0xe7] = 0xcd;
3709 dev->shadow_regs[0xe8] = 0x08;
3711 dev->shadow_regs[0xe9] = 0x32;
3713 dev->shadow_regs[0xea] = 0xe5;
3714 dev->shadow_regs[0xeb] = 0x04;
3716 dev->shadow_regs[0xec] = 0x0c;
3718 dev->shadow_regs[0xed] = 0x00;
3719 dev->shadow_regs[0xee] = 0x00;
3721 dev->shadow_regs[0xef] = 0x08;
3726 dev->shadow_regs[0xc5] = 0x16;
3728 dev->shadow_regs[0xc6] = 0x09;
3730 dev->shadow_regs[0xc9] = 0x3b;
3731 dev->shadow_regs[0xca] = 0x01;
3733 dev->shadow_regs[0xe0] = 0xdd;
3734 dev->shadow_regs[0xe1] = 0x18;
3736 dev->shadow_regs[0xe2] = 0x01;
3738 dev->shadow_regs[0xe3] = 0x03;
3740 dev->shadow_regs[0xe4] = 0x6d;
3741 dev->shadow_regs[0xe5] = 0x15;
3743 dev->shadow_regs[0xe6] = 0xdc;
3745 dev->shadow_regs[0xe7] = 0xad;
3746 dev->shadow_regs[0xe8] = 0x07;
3748 dev->shadow_regs[0xe9] = 0x1b;
3750 dev->shadow_regs[0xea] = 0xe1;
3751 dev->shadow_regs[0xeb] = 0x03;
3753 dev->shadow_regs[0xec] = 0x07;
3755 dev->shadow_regs[0xef] = 0x03;
3760 dev->shadow_regs[0x2f] = 0x21;
3762 dev->shadow_regs[0x39] = 0x07;
3764 dev->shadow_regs[0x80] = 0x00;
3765 dev->shadow_regs[0x81] = 0x00;
3766 dev->shadow_regs[0x82] = 0x00;
3769 dev->shadow_regs[0xc3] = 0x81;
3776 rts88xx_set_scan_frequency (dev->shadow_regs, 1);
3779 /* if (dev->model.sensor_type != X1200_SENSOR)
3780 dev->shadow_regs[0x79] = 0x20; */
3792 switch (dev->model.sensor_type)
3795 dev->shadow_regs[0x34] = 0x08;
3796 dev->shadow_regs[0x36] = 0x06;
3797 dev->shadow_regs[0x38] = 0x05;
3798 dev->shadow_regs[0x39] = 0x07;
3800 dev->shadow_regs[0x80] = 0x08;
3801 dev->shadow_regs[0x81] = 0x0a;
3802 dev->shadow_regs[0x82] = 0x03;
3804 dev->shadow_regs[0x85] = 0x00;
3805 dev->shadow_regs[0x86] = 0x00;
3806 dev->shadow_regs[0x87] = 0x00;
3807 dev->shadow_regs[0x88] = 0x00;
3809 dev->shadow_regs[0x91] = 0x00;
3810 dev->shadow_regs[0x92] = 0x00;
3811 dev->shadow_regs[0x93] = 0x06;
3814 dev->shadow_regs[0x34] = 0x15;
3815 dev->shadow_regs[0x36] = 0x15;
3816 dev->shadow_regs[0x38] = 0x14;
3818 dev->shadow_regs[0x39] = 0x03;
3820 dev->shadow_regs[0x80] = 0x0a;
3821 dev->shadow_regs[0x81] = 0x0a;
3822 dev->shadow_regs[0x82] = 0x06;
3824 dev->shadow_regs[0x85] = 0x83;
3825 dev->shadow_regs[0x86] = 0x7e;
3826 dev->shadow_regs[0x87] = 0xad;
3827 dev->shadow_regs[0x88] = 0x35;
3829 dev->shadow_regs[0x91] = 0xfe;
3830 dev->shadow_regs[0x92] = 0xdf;
3831 dev->shadow_regs[0x93] = 0x0e;
3834 dev->shadow_regs[0x34] = 0x08;
3835 dev->shadow_regs[0x36] = 0x0d;
3836 dev->shadow_regs[0x38] = 0x09;
3838 dev->shadow_regs[0x39] = 0x03;
3840 dev->shadow_regs[0x80] = 0x0e;
3841 dev->shadow_regs[0x81] = 0x04;
3842 dev->shadow_regs[0x82] = 0x0a;
3844 dev->shadow_regs[0x85] = 0x20;
3845 dev->shadow_regs[0x86] = 0x00;
3846 dev->shadow_regs[0x87] = 0x00;
3847 dev->shadow_regs[0x88] = 0x00;
3849 dev->shadow_regs[0x91] = 0x00;
3850 dev->shadow_regs[0x92] = 0x00;
3851 dev->shadow_regs[0x93] = 0x06;
3854 dev->shadow_regs[0x34] = 0x06;
3855 dev->shadow_regs[0x36] = 0x10;
3856 dev->shadow_regs[0x38] = 0x09;
3858 dev->shadow_regs[0x39] = 0x03;
3860 dev->shadow_regs[0x80] = 0x0c;
3861 dev->shadow_regs[0x81] = 0x02;
3862 dev->shadow_regs[0x82] = 0x04;
3864 dev->shadow_regs[0x85] = 0x05;
3865 dev->shadow_regs[0x86] = 0x14;
3866 dev->shadow_regs[0x87] = 0x06;
3867 dev->shadow_regs[0x88] = 0x04;
3869 dev->shadow_regs[0x91] = 0xe0;
3870 dev->shadow_regs[0x92] = 0x85;
3871 dev->shadow_regs[0x93] = 0x0e;
3874 dev->shadow_regs[0x34] = 0x07;
3875 dev->shadow_regs[0x36] = 0x09;
3876 dev->shadow_regs[0x38] = 0x04;
3878 dev->shadow_regs[0x39] = 0x03;
3881 dev->shadow_regs[0x40] = 0x90;
3882 dev->shadow_regs[0x50] = 0x20; */
3884 dev->shadow_regs[0x40] = 0x80;
3885 dev->shadow_regs[0x50] = 0x00;
3887 dev->shadow_regs[0x80] = 0x00;
3888 dev->shadow_regs[0x81] = 0x0e;
3889 dev->shadow_regs[0x82] = 0x06;
3892 dev->shadow_regs[0x34] = 0x07;
3893 dev->shadow_regs[0x36] = 0x09;
3894 dev->shadow_regs[0x38] = 0x04;
3896 dev->shadow_regs[0x39] = 0x03;
3898 dev->shadow_regs[0x40] = 0x80;
3899 dev->shadow_regs[0x50] = 0x00;
3901 dev->shadow_regs[0x80] = 0x00;
3902 dev->shadow_regs[0x81] = 0x0e;
3903 dev->shadow_regs[0x82] = 0x06;
3906 switch (dev->model.motor_type)
3910 dev->shadow_regs[0xc4] = 0x20;
3911 dev->shadow_regs[0xc5] = 0x12;
3913 dev->shadow_regs[0xc6] = 0x09;
3915 dev->shadow_regs[0xc8] = 0x04;
3916 dev->shadow_regs[0xc9] = 0x39;
3917 dev->shadow_regs[0xca] = 0x0f;
3920 dev->shadow_regs[0xe0] = 0x5d;
3921 dev->shadow_regs[0xe1] = 0x05;
3923 dev->shadow_regs[0xe2] = 0xed;
3925 dev->shadow_regs[0xe3] = 0x02;
3927 dev->shadow_regs[0xe4] = 0x29;
3928 dev->shadow_regs[0xe5] = 0x05;
3930 dev->shadow_regs[0xe6] = 0x0d;
3932 dev->shadow_regs[0xe7] = 0x00;
3933 dev->shadow_regs[0xe8] = 0x00;
3935 dev->shadow_regs[0xe9] = 0x05;
3937 dev->shadow_regs[0xea] = 0x00;
3938 dev->shadow_regs[0xeb] = 0x00;
3940 dev->shadow_regs[0xec] = 0x01;
3942 dev->shadow_regs[0xed] = 0x00;
3943 dev->shadow_regs[0xee] = 0x00;
3945 dev->shadow_regs[0xef] = 0x01;
3950 dev->shadow_regs[0xc5] = 0x17;
3952 dev->shadow_regs[0xc6] = 0x09;
3954 dev->shadow_regs[0xc9] = 0x3a;
3955 dev->shadow_regs[0xca] = 0x0a;
3957 dev->shadow_regs[0xe0] = 0x75;
3958 dev->shadow_regs[0xe1] = 0x0a;
3960 dev->shadow_regs[0xe2] = 0xdd;
3962 dev->shadow_regs[0xe3] = 0x05;
3964 dev->shadow_regs[0xe4] = 0x59;
3965 dev->shadow_regs[0xe5] = 0x0a;
3967 dev->shadow_regs[0xe6] = 0x0e;
3969 dev->shadow_regs[0xe7] = 0x00;
3970 dev->shadow_regs[0xe8] = 0x00;
3972 dev->shadow_regs[0xe9] = 0x05;
3974 dev->shadow_regs[0xea] = 0x00;
3975 dev->shadow_regs[0xeb] = 0x00;
3977 dev->shadow_regs[0xec] = 0x01;
3979 dev->shadow_regs[0xef] = 0x01;
3983 dev->shadow_regs[0x35] = 0x01;
3984 dev->shadow_regs[0x37] = 0x01;
3987 dev->shadow_regs[0x2f] = 0x11;
3990 dev->shadow_regs[0xc3] = 0x83;
3996 switch (dev->model.sensor_type)
3999 dev->shadow_regs[0x34] = 0x04;
4000 dev->shadow_regs[0x35] = 0x04;
4001 dev->shadow_regs[0x36] = 0x08;
4002 dev->shadow_regs[0x37] = 0x08;
4003 dev->shadow_regs[0x38] = 0x0c;
4005 dev->shadow_regs[0x85] = 0x00;
4006 dev->shadow_regs[0x86] = 0x00;
4007 dev->shadow_regs[0x87] = 0x00;
4008 dev->shadow_regs[0x88] = 0x00;
4010 dev->shadow_regs[0x91] = 0x00;
4011 dev->shadow_regs[0x92] = 0x00;
4012 dev->shadow_regs[0x93] = 0x06;
4015 dev->shadow_regs[0x34] = 0x08;
4016 dev->shadow_regs[0x35] = 0x08;
4017 dev->shadow_regs[0x36] = 0x0f;
4018 dev->shadow_regs[0x37] = 0x0f;
4019 dev->shadow_regs[0x38] = 0x16;
4021 dev->shadow_regs[0x85] = 0x00;
4022 dev->shadow_regs[0x86] = 0x00;
4023 dev->shadow_regs[0x87] = 0x00;
4024 dev->shadow_regs[0x88] = 0x00;
4026 dev->shadow_regs[0x91] = 0x00;
4027 dev->shadow_regs[0x92] = 0x00;
4028 dev->shadow_regs[0x93] = 0x06;
4031 dev->shadow_regs[0x34] = 0x04;
4032 dev->shadow_regs[0x35] = 0x04;
4033 dev->shadow_regs[0x36] = 0x07;
4034 dev->shadow_regs[0x37] = 0x07;
4035 dev->shadow_regs[0x38] = 0x0a;
4037 dev->shadow_regs[0x85] = 0x20;
4038 dev->shadow_regs[0x86] = 0x00;
4039 dev->shadow_regs[0x87] = 0x00;
4040 dev->shadow_regs[0x88] = 0x00;
4042 dev->shadow_regs[0x91] = 0x00;
4043 dev->shadow_regs[0x92] = 0x00;
4044 dev->shadow_regs[0x93] = 0x06;
4047 dev->shadow_regs[0x34] = 0x03;
4048 dev->shadow_regs[0x35] = 0x03;
4049 dev->shadow_regs[0x36] = 0x06;
4050 dev->shadow_regs[0x37] = 0x06;
4051 dev->shadow_regs[0x38] = 0x09;
4053 dev->shadow_regs[0x85] = 0x05;
4054 dev->shadow_regs[0x86] = 0x14;
4055 dev->shadow_regs[0x87] = 0x06;
4056 dev->shadow_regs[0x88] = 0x04;
4058 dev->shadow_regs[0x91] = 0xe0;
4059 dev->shadow_regs[0x92] = 0x85;
4060 dev->shadow_regs[0x93] = 0x0e;
4063 dev->shadow_regs[0x34] = 0x02;
4064 dev->shadow_regs[0x35] = 0x02;
4065 dev->shadow_regs[0x36] = 0x04;
4066 dev->shadow_regs[0x37] = 0x04;
4067 dev->shadow_regs[0x38] = 0x06;
4070 dev->shadow_regs[0x34] = 0x02;
4071 dev->shadow_regs[0x35] = 0x02;
4072 dev->shadow_regs[0x36] = 0x04;
4073 dev->shadow_regs[0x37] = 0x04;
4074 dev->shadow_regs[0x38] = 0x06;
4077 switch (dev->model.motor_type)
4081 dev->shadow_regs[0xc4] = 0x20;
4082 dev->shadow_regs[0xc5] = 0x1c;
4084 dev->shadow_regs[0xc6] = 0x0b;
4086 dev->shadow_regs[0xc8] = 0x04;
4087 dev->shadow_regs[0xc9] = 0x39;
4088 dev->shadow_regs[0xca] = 0x05;
4091 dev->shadow_regs[0xe0] = 0x29;
4092 dev->shadow_regs[0xe1] = 0x17;
4094 dev->shadow_regs[0xe2] = 0x8f;
4096 dev->shadow_regs[0xe3] = 0x06;
4098 dev->shadow_regs[0xe4] = 0x61;
4100 dev->shadow_regs[0xe5] = 0x16;
4102 dev->shadow_regs[0xe6] = 0x64;
4104 dev->shadow_regs[0xe7] = 0xb5;
4105 dev->shadow_regs[0xe8] = 0x08;
4107 dev->shadow_regs[0xe9] = 0x32;
4109 dev->shadow_regs[0xea] = 0x00;
4110 dev->shadow_regs[0xeb] = 0x00;
4112 dev->shadow_regs[0xec] = 0x0c;
4114 dev->shadow_regs[0xed] = 0x00;
4115 dev->shadow_regs[0xee] = 0x00;
4117 dev->shadow_regs[0xef] = 0x08;
4122 dev->shadow_regs[0xc5] = 0x19;
4124 dev->shadow_regs[0xc6] = 0x09;
4126 dev->shadow_regs[0xc9] = 0x3a;
4127 dev->shadow_regs[0xca] = 0x08;
4129 dev->shadow_regs[0xe0] = 0xe3;
4130 dev->shadow_regs[0xe1] = 0x18;
4132 dev->shadow_regs[0xe2] = 0x03;
4134 dev->shadow_regs[0xe3] = 0x06;
4136 dev->shadow_regs[0xe4] = 0x2b;
4137 dev->shadow_regs[0xe5] = 0x17;
4139 dev->shadow_regs[0xe6] = 0xdc;
4141 dev->shadow_regs[0xe7] = 0xb3;
4142 dev->shadow_regs[0xe8] = 0x07;
4144 dev->shadow_regs[0xe9] = 0x1b;
4146 dev->shadow_regs[0xea] = 0x00;
4147 dev->shadow_regs[0xeb] = 0x00;
4149 dev->shadow_regs[0xec] = 0x07;
4151 dev->shadow_regs[0xef] = 0x03;
4155 dev->shadow_regs[0x2f] = 0x21;
4157 dev->shadow_regs[0x39] = 0x03;
4160 dev->shadow_regs[0x80] = 0x00;
4161 dev->shadow_regs[0x81] = 0x00;
4162 dev->shadow_regs[0x82] = 0x00;
4164 dev->shadow_regs[0xc3] = 0x81;
4170 rts88xx_set_scan_frequency (dev->shadow_regs, 1);
4172 dev->shadow_regs[0x79] = 0x20;
4185 if (dev->model.sensor_type == X74_SENSOR)
4188 switch (dev->model.sensor_type)
4191 dev->shadow_regs[0x34] = 0x10;
4192 dev->shadow_regs[0x35] = 0x01;
4193 dev->shadow_regs[0x36] = 0x0c;
4194 dev->shadow_regs[0x37] = 0x01;
4195 dev->shadow_regs[0x38] = 0x09;
4197 dev->shadow_regs[0x80] = 0x02;
4198 dev->shadow_regs[0x81] = 0x08;
4199 dev->shadow_regs[0x82] = 0x08;
4202 dev->shadow_regs[0x85] = 0x00;
4203 dev->shadow_regs[0x86] = 0x00;
4204 dev->shadow_regs[0x87] = 0x00;
4205 dev->shadow_regs[0x88] = 0x00;
4207 dev->shadow_regs[0x91] = 0x00;
4208 dev->shadow_regs[0x92] = 0x00;
4209 dev->shadow_regs[0x93] = 0x06;
4212 /*dev->shadow_regs[0x34] = 0x08;
4213 dev->shadow_regs[0x35] = 0x01;
4214 dev->shadow_regs[0x36] = 0x06;
4215 dev->shadow_regs[0x37] = 0x01;
4216 dev->shadow_regs[0x38] = 0x05;
4219 dev->shadow_regs[0x80] = 0x09;
4220 dev->shadow_regs[0x81] = 0x0c;
4221 dev->shadow_regs[0x82] = 0x04;
4224 dev->shadow_regs[0x85] = 0x00;
4225 dev->shadow_regs[0x86] = 0x00;
4226 dev->shadow_regs[0x87] = 0x00;
4227 dev->shadow_regs[0x88] = 0x00;
4229 dev->shadow_regs[0x91] = 0x00;
4230 dev->shadow_regs[0x92] = 0x00;
4231 dev->shadow_regs[0x93] = 0x06;
4237 dev->shadow_regs[0x34] = 0x15;
4238 dev->shadow_regs[0x36] = 0x15;
4239 dev->shadow_regs[0x38] = 0x14;
4241 dev->shadow_regs[0x80] = 0x02;
4242 dev->shadow_regs[0x81] = 0x02;
4243 dev->shadow_regs[0x82] = 0x08;
4245 dev->shadow_regs[0x85] = 0x83;
4246 dev->shadow_regs[0x86] = 0x7e;
4247 dev->shadow_regs[0x87] = 0xad;
4248 dev->shadow_regs[0x88] = 0x35;
4250 dev->shadow_regs[0x91] = 0xfe;
4251 dev->shadow_regs[0x92] = 0xdf;
4252 dev->shadow_regs[0x93] = 0x0e;
4255 dev->shadow_regs[0x34] = 0x08;
4256 dev->shadow_regs[0x36] = 0x0d;
4257 dev->shadow_regs[0x38] = 0x09;
4259 dev->shadow_regs[0x80] = 0x0e;
4260 dev->shadow_regs[0x81] = 0x02;
4261 dev->shadow_regs[0x82] = 0x0a;
4263 dev->shadow_regs[0x85] = 0x20;
4264 dev->shadow_regs[0x86] = 0x00;
4265 dev->shadow_regs[0x87] = 0x00;
4266 dev->shadow_regs[0x88] = 0x00;
4268 dev->shadow_regs[0x91] = 0x00;
4269 dev->shadow_regs[0x92] = 0x00;
4270 dev->shadow_regs[0x93] = 0x06;
4273 dev->shadow_regs[0x34] = 0x06;
4274 dev->shadow_regs[0x36] = 0x0f;
4275 dev->shadow_regs[0x38] = 0x09;
4277 dev->shadow_regs[0x79] = 0x40;
4279 dev->shadow_regs[0x80] = 0x0e;
4280 dev->shadow_regs[0x81] = 0x0e;
4281 dev->shadow_regs[0x82] = 0x00;
4283 dev->shadow_regs[0x85] = 0x05;
4284 dev->shadow_regs[0x86] = 0x14;
4285 dev->shadow_regs[0x87] = 0x06;
4286 dev->shadow_regs[0x88] = 0x04;
4288 dev->shadow_regs[0x91] = 0x60;
4289 dev->shadow_regs[0x92] = 0x85;
4290 dev->shadow_regs[0x93] = 0x0e;
4293 dev->shadow_regs[0x34] = 0x07;
4294 dev->shadow_regs[0x36] = 0x0a;
4295 dev->shadow_regs[0x38] = 0x04;
4298 dev->shadow_regs[0x40] = 0x90;
4299 dev->shadow_regs[0x50] = 0x20; */
4302 dev->shadow_regs[0x40] = 0x80;
4303 dev->shadow_regs[0x50] = 0x00;
4305 dev->shadow_regs[0x80] = 0x02;
4306 dev->shadow_regs[0x81] = 0x00;
4307 dev->shadow_regs[0x82] = 0x06;
4310 dev->shadow_regs[0x34] = 0x0d;
4311 dev->shadow_regs[0x36] = 0x13;
4312 dev->shadow_regs[0x38] = 0x10;
4314 dev->shadow_regs[0x80] = 0x04;
4315 dev->shadow_regs[0x81] = 0x0e;
4316 dev->shadow_regs[0x82] = 0x08;
4318 dev->shadow_regs[0x85] = 0x02;
4319 dev->shadow_regs[0x86] = 0x3b;
4320 dev->shadow_regs[0x87] = 0x0f;
4321 dev->shadow_regs[0x88] = 0x24;
4323 dev->shadow_regs[0x91] = 0x19;
4324 dev->shadow_regs[0x92] = 0x30;
4325 dev->shadow_regs[0x93] = 0x0e;
4326 dev->shadow_regs[0xc5] = 0x17;
4327 dev->shadow_regs[0xc6] = 0x09;
4328 dev->shadow_regs[0xca] = 0x0a;
4331 switch (dev->model.motor_type)
4335 dev->shadow_regs[0xc3] = 0x81;
4337 dev->shadow_regs[0xc4] = 0x20;
4338 dev->shadow_regs[0xc5] = 0x21;
4340 dev->shadow_regs[0xc6] = 0x09;
4341 dev->shadow_regs[0xc8] = 0x04;
4342 dev->shadow_regs[0xc9] = 0x39;
4343 dev->shadow_regs[0xca] = 0x20;
4345 dev->shadow_regs[0xe0] = 0x00;
4346 dev->shadow_regs[0xe1] = 0x00;
4348 dev->shadow_regs[0xe2] = 0xbf;
4350 dev->shadow_regs[0xe3] = 0x05;
4352 dev->shadow_regs[0xe4] = 0x00;
4353 dev->shadow_regs[0xe5] = 0x00;
4355 dev->shadow_regs[0xe6] = 0x0d;
4357 dev->shadow_regs[0xe7] = 0x00;
4358 dev->shadow_regs[0xe8] = 0x00;
4360 dev->shadow_regs[0xe9] = 0x05;
4362 dev->shadow_regs[0xea] = 0x00;
4363 dev->shadow_regs[0xeb] = 0x00;
4365 dev->shadow_regs[0xec] = 0x01;
4367 dev->shadow_regs[0xed] = 0x00;
4368 dev->shadow_regs[0xee] = 0x00;
4370 dev->shadow_regs[0xef] = 0x01;
4375 dev->shadow_regs[0xc3] = 0x86;
4377 dev->shadow_regs[0xc5] = 0x27;
4379 dev->shadow_regs[0xc6] = 0x0c;
4381 dev->shadow_regs[0xc9] = 0x3a;
4382 dev->shadow_regs[0xca] = 0x1a;
4384 dev->shadow_regs[0xe0] = 0x57;
4385 dev->shadow_regs[0xe1] = 0x0a;
4387 dev->shadow_regs[0xe2] = 0xbf;
4389 dev->shadow_regs[0xe3] = 0x05;
4391 dev->shadow_regs[0xe4] = 0x3b;
4392 dev->shadow_regs[0xe5] = 0x0a;
4394 dev->shadow_regs[0xe6] = 0x0e;
4396 dev->shadow_regs[0xe7] = 0x00;
4397 dev->shadow_regs[0xe8] = 0x00;
4399 dev->shadow_regs[0xe9] = 0x05;
4401 dev->shadow_regs[0xea] = 0x00;
4402 dev->shadow_regs[0xeb] = 0x00;
4404 dev->shadow_regs[0xec] = 0x01;
4406 dev->shadow_regs[0xef] = 0x01;
4410 dev->shadow_regs[0x2f] = 0x11;
4412 dev->shadow_regs[0x35] = 0x01;
4413 dev->shadow_regs[0x37] = 0x01;
4416 dev->shadow_regs[0x39] = 0x03;
4418 rts88xx_set_scan_frequency (dev->shadow_regs, 2);
4424 switch (dev->model.sensor_type)
4427 dev->shadow_regs[0x2c] = 0x04;
4428 dev->shadow_regs[0x2d] = 0x46;
4429 dev->shadow_regs[0x34] = 0x05;
4430 dev->shadow_regs[0x35] = 0x05;
4431 dev->shadow_regs[0x36] = 0x0b;
4432 dev->shadow_regs[0x37] = 0x0b;
4433 dev->shadow_regs[0x38] = 0x11;
4434 dev->shadow_regs[0x40] = 0x40;
4436 dev->shadow_regs[0x85] = 0x00;
4437 dev->shadow_regs[0x86] = 0x00;
4438 dev->shadow_regs[0x87] = 0x00;
4439 dev->shadow_regs[0x88] = 0x00;
4441 dev->shadow_regs[0x91] = 0x00;
4442 dev->shadow_regs[0x92] = 0x00;
4443 dev->shadow_regs[0x93] = 0x06;
4446 dev->shadow_regs[0x34] = 0x11;
4447 dev->shadow_regs[0x35] = 0x11;
4448 dev->shadow_regs[0x36] = 0x21;
4449 dev->shadow_regs[0x37] = 0x21;
4450 dev->shadow_regs[0x38] = 0x31;
4452 dev->shadow_regs[0x85] = 0x00;
4453 dev->shadow_regs[0x86] = 0x00;
4454 dev->shadow_regs[0x87] = 0x00;
4455 dev->shadow_regs[0x88] = 0x00;
4457 dev->shadow_regs[0x91] = 0x00;
4458 dev->shadow_regs[0x92] = 0x00;
4459 dev->shadow_regs[0x93] = 0x06;
4462 dev->shadow_regs[0x34] = 0x07;
4463 dev->shadow_regs[0x35] = 0x07;
4464 dev->shadow_regs[0x36] = 0x0d;
4465 dev->shadow_regs[0x37] = 0x0d;
4466 dev->shadow_regs[0x38] = 0x13;
4468 dev->shadow_regs[0x85] = 0x20;
4469 dev->shadow_regs[0x86] = 0x00;
4470 dev->shadow_regs[0x87] = 0x00;
4471 dev->shadow_regs[0x88] = 0x00;
4473 dev->shadow_regs[0x91] = 0x00;
4474 dev->shadow_regs[0x92] = 0x00;
4475 dev->shadow_regs[0x93] = 0x06;
4478 dev->shadow_regs[0x34] = 0x05;
4479 dev->shadow_regs[0x35] = 0x05;
4480 dev->shadow_regs[0x36] = 0x0b;
4481 dev->shadow_regs[0x37] = 0x0b;
4482 dev->shadow_regs[0x38] = 0x11;
4484 dev->shadow_regs[0x85] = 0x05;
4485 dev->shadow_regs[0x86] = 0x14;
4486 dev->shadow_regs[0x87] = 0x06;
4487 dev->shadow_regs[0x88] = 0x04;
4489 dev->shadow_regs[0x91] = 0xe0;
4490 dev->shadow_regs[0x92] = 0x85;
4491 dev->shadow_regs[0x93] = 0x0e;
4494 dev->shadow_regs[0x34] = 0x03;
4495 dev->shadow_regs[0x35] = 0x03;
4496 dev->shadow_regs[0x36] = 0x07;
4497 dev->shadow_regs[0x37] = 0x07;
4498 dev->shadow_regs[0x38] = 0x0b;
4501 dev->shadow_regs[0x40] = 0x90;
4502 dev->shadow_regs[0x50] = 0x20; */
4504 dev->shadow_regs[0x40] = 0x80;
4505 dev->shadow_regs[0x50] = 0x00;
4507 dev->shadow_regs[0x85] = 0x00;
4508 dev->shadow_regs[0x86] = 0x00;
4509 dev->shadow_regs[0x87] = 0xff;
4510 dev->shadow_regs[0x88] = 0x02;
4512 dev->shadow_regs[0x92] = 0x00;
4516 dev->shadow_regs[0x34] = 0x03;
4517 dev->shadow_regs[0x35] = 0x03;
4518 dev->shadow_regs[0x36] = 0x07;
4519 dev->shadow_regs[0x37] = 0x07;
4520 dev->shadow_regs[0x38] = 0x0b;
4522 dev->shadow_regs[0x40] = 0x80;
4523 dev->shadow_regs[0x50] = 0x00;
4525 dev->shadow_regs[0x85] = 0x00;
4526 dev->shadow_regs[0x86] = 0x00;
4527 dev->shadow_regs[0x87] = 0xff;
4528 dev->shadow_regs[0x88] = 0x02;
4530 dev->shadow_regs[0x92] = 0x00;
4533 switch (dev->model.motor_type)
4537 rts88xx_set_scan_frequency (dev->shadow_regs, 1);
4539 dev->shadow_regs[0xc4] = 0x20;
4540 dev->shadow_regs[0xc5] = 0x22;
4542 dev->shadow_regs[0xc6] = 0x0b;
4544 dev->shadow_regs[0xc8] = 0x04;
4545 dev->shadow_regs[0xc9] = 0x39;
4546 dev->shadow_regs[0xca] = 0x1f;
4549 dev->shadow_regs[0xe0] = 0x2f;
4550 dev->shadow_regs[0xe1] = 0x11;
4552 dev->shadow_regs[0xe2] = 0x9f;
4554 dev->shadow_regs[0xe3] = 0x0f;
4556 dev->shadow_regs[0xe4] = 0xcb;
4558 dev->shadow_regs[0xe5] = 0x10;
4560 dev->shadow_regs[0xe6] = 0x64;
4562 dev->shadow_regs[0xe7] = 0x00;
4563 dev->shadow_regs[0xe8] = 0x00;
4565 dev->shadow_regs[0xe9] = 0x32;
4567 dev->shadow_regs[0xea] = 0x00;
4568 dev->shadow_regs[0xeb] = 0x00;
4570 dev->shadow_regs[0xec] = 0x0c;
4572 dev->shadow_regs[0xed] = 0x00;
4573 dev->shadow_regs[0xee] = 0x00;
4575 dev->shadow_regs[0xef] = 0x08;
4580 dev->shadow_regs[0x80] = 0x00;
4581 dev->shadow_regs[0x81] = 0x00;
4582 dev->shadow_regs[0x82] = 0x00;
4584 dev->shadow_regs[0xc5] = 0x22;
4586 dev->shadow_regs[0xc6] = 0x09;
4588 dev->shadow_regs[0xc9] = 0x3b;
4589 dev->shadow_regs[0xca] = 0x1f;
4591 dev->shadow_regs[0xe0] = 0xf7;
4592 dev->shadow_regs[0xe1] = 0x16;
4594 dev->shadow_regs[0xe2] = 0x87;
4596 dev->shadow_regs[0xe3] = 0x13;
4598 dev->shadow_regs[0xe4] = 0x1b;
4599 dev->shadow_regs[0xe5] = 0x16;
4601 dev->shadow_regs[0xe6] = 0xdc;
4603 dev->shadow_regs[0xe7] = 0x00;
4604 dev->shadow_regs[0xe8] = 0x00;
4606 dev->shadow_regs[0xe9] = 0x1b;
4608 dev->shadow_regs[0xea] = 0x00;
4609 dev->shadow_regs[0xeb] = 0x00;
4611 dev->shadow_regs[0xec] = 0x07;
4613 dev->shadow_regs[0xef] = 0x03;
4618 dev->shadow_regs[0x2f] = 0x21;
4621 dev->shadow_regs[0x39] = 0x01;
4624 rts88xx_set_scan_frequency (dev->shadow_regs, 1);
4627 dev->shadow_regs[0xc3] = 0x81;
4631 dev->shadow_regs[0x79] = 0x40;
4640 if (dev->model.sensor_type == X74_SENSOR)
4646 dev->shadow_regs[0x2f] = 0x11;
4648 dev->shadow_regs[0x39] = 0x01;
4650 rts88xx_set_scan_frequency (dev->shadow_regs, 2);
4652 if (dev->model.sensor_type == X1100_B2_SENSOR)
4655 dev->shadow_regs[0x34] = 0x29;
4656 dev->shadow_regs[0x36] = 0x29;
4657 dev->shadow_regs[0x38] = 0x28;
4659 dev->shadow_regs[0x80] = 0x04;
4660 dev->shadow_regs[0x81] = 0x04;
4661 dev->shadow_regs[0x82] = 0x08;
4662 dev->shadow_regs[0x85] = 0x83;
4663 dev->shadow_regs[0x86] = 0x7e;
4664 dev->shadow_regs[0x87] = 0xad;
4665 dev->shadow_regs[0x88] = 0x35;
4666 dev->shadow_regs[0x91] = 0xfe;
4667 dev->shadow_regs[0x92] = 0xdf;
4671 dev->shadow_regs[0x34] = 0x0c;
4672 dev->shadow_regs[0x36] = 0x1e;
4673 dev->shadow_regs[0x38] = 0x10;
4675 dev->shadow_regs[0x80] = 0x0c;
4676 dev->shadow_regs[0x81] = 0x08;
4677 dev->shadow_regs[0x82] = 0x0c;
4679 dev->shadow_regs[0x85] = 0x05;
4680 dev->shadow_regs[0x86] = 0x14;
4681 dev->shadow_regs[0x87] = 0x06;
4682 dev->shadow_regs[0x88] = 0x04;
4684 dev->shadow_regs[0x91] = 0x60;
4685 dev->shadow_regs[0x92] = 0x85;
4688 dev->shadow_regs[0x35] = 0x01;
4689 dev->shadow_regs[0x37] = 0x01;
4691 dev->shadow_regs[0x39] = 0x01;
4692 dev->shadow_regs[0x93] = 0x0e;
4695 dev->shadow_regs[0xc3] = 0x86;
4697 dev->shadow_regs[0xc5] = 0x41;
4699 dev->shadow_regs[0xc6] = 0x0c;
4701 dev->shadow_regs[0xc9] = 0x3a;
4702 dev->shadow_regs[0xca] = 0x40;
4704 dev->shadow_regs[0xe0] = 0x00;
4705 dev->shadow_regs[0xe1] = 0x00;
4707 dev->shadow_regs[0xe2] = 0x85;
4709 dev->shadow_regs[0xe3] = 0x0b;
4711 dev->shadow_regs[0xe4] = 0x00;
4712 dev->shadow_regs[0xe5] = 0x00;
4714 dev->shadow_regs[0xe6] = 0x0e;
4716 dev->shadow_regs[0xe7] = 0x00;
4717 dev->shadow_regs[0xe8] = 0x00;
4719 dev->shadow_regs[0xe9] = 0x05;
4721 dev->shadow_regs[0xea] = 0x00;
4722 dev->shadow_regs[0xeb] = 0x00;
4724 dev->shadow_regs[0xec] = 0x01;
4726 dev->shadow_regs[0xef] = 0x01;
4731 dev->shadow_regs[0x2f] = 0x21;
4733 dev->shadow_regs[0x34] = 0x22;
4734 dev->shadow_regs[0x35] = 0x22;
4735 dev->shadow_regs[0x36] = 0x42;
4736 dev->shadow_regs[0x37] = 0x42;
4737 dev->shadow_regs[0x38] = 0x62;
4739 dev->shadow_regs[0x39] = 0x01;
4741 rts88xx_set_scan_frequency (dev->shadow_regs, 0);
4744 dev->shadow_regs[0x80] = 0x00;
4745 dev->shadow_regs[0x81] = 0x00;
4746 dev->shadow_regs[0x82] = 0x00;
4747 dev->shadow_regs[0x85] = 0x00;
4748 dev->shadow_regs[0x86] = 0x00;
4749 dev->shadow_regs[0x87] = 0x00;
4750 dev->shadow_regs[0x88] = 0x00;
4751 dev->shadow_regs[0x91] = 0x00;
4752 dev->shadow_regs[0x92] = 0x00;
4753 dev->shadow_regs[0x93] = 0x06;
4755 dev->shadow_regs[0xc3] = 0x81;
4757 dev->shadow_regs[0xc5] = 0x41;
4759 dev->shadow_regs[0xc6] = 0x09;
4761 dev->shadow_regs[0xc9] = 0x3a;
4762 dev->shadow_regs[0xca] = 0x40;
4764 dev->shadow_regs[0xe0] = 0x00;
4765 dev->shadow_regs[0xe1] = 0x00;
4767 dev->shadow_regs[0xe2] = 0xc7;
4769 dev->shadow_regs[0xe3] = 0x29;
4771 dev->shadow_regs[0xe4] = 0x00;
4772 dev->shadow_regs[0xe5] = 0x00;
4774 dev->shadow_regs[0xe6] = 0xdc;
4776 dev->shadow_regs[0xe7] = 0x00;
4777 dev->shadow_regs[0xe8] = 0x00;
4779 dev->shadow_regs[0xe9] = 0x1b;
4781 dev->shadow_regs[0xea] = 0x00;
4782 dev->shadow_regs[0xeb] = 0x00;
4784 dev->shadow_regs[0xec] = 0x07;
4786 dev->shadow_regs[0xef] = 0x03;
4790 dev->shadow_regs[0x79] = 0x40;
4797 if (rts88xx_is_color (dev->shadow_regs))
4799 rts88xx_set_offset (dev->shadow_regs,
4800 dev->offset.red,
4801 dev->offset.green, dev->offset.blue);
4802 rts88xx_set_gain (dev->shadow_regs,
4803 dev->gain.red, dev->gain.green, dev->gain.blue);
4807 rts88xx_set_offset (dev->shadow_regs,
4808 dev->offset.gray,
4809 dev->offset.gray, dev->offset.gray);
4810 rts88xx_set_gain (dev->shadow_regs,
4811 dev->gain.gray, dev->gain.gray, dev->gain.gray);
4819 sanei_lexmark_low_start_scan (Lexmark_Device * dev)
4832 devnum = dev->devnum;
4834 dev->transfer_buffer = NULL; /* No data xferred yet */
4862 dev->shadow_regs[0x32] = 0x00;
4863 low_write_all_regs (devnum, dev->shadow_regs);
4864 dev->shadow_regs[0x32] = 0x40;
4865 low_write_all_regs (devnum, dev->shadow_regs);
4868 rts88xx_commit (devnum, dev->shadow_regs[0x2c]);
4871 dev->bytes_remaining = 0;
4873 dev->bytes_in_buffer = 0;
4874 dev->bytes_read = 0;
4890 dev->bytes_remaining = dev->data_size;
4892 read_buffer_init (dev, dev->params.bytes_per_line);
4903 dev->bytes_remaining = 0;
4914 Lexmark_Device * dev)
4928 if (strcmp (dev->val[OPT_MODE].s, SANE_VALUE_SCAN_MODE_COLOR) == 0)
4934 if (strcmp (dev->val[OPT_MODE].s, SANE_VALUE_SCAN_MODE_GRAY) == 0)
4939 if (dev->transfer_buffer == NULL)
4941 if (dev->bytes_remaining > 0)
4943 if (dev->bytes_remaining > MAX_XFER_SIZE)
4946 xfer_request = dev->bytes_remaining;
4952 status = low_poll_data (dev->devnum);
4961 dev->transfer_buffer = (SANE_Byte *) malloc (MAX_XFER_SIZE);
4962 if (dev->transfer_buffer == NULL)
4968 low_usb_bulk_write (dev->devnum, command1_block, &cmd_size);
4972 low_usb_bulk_read (dev->devnum, dev->transfer_buffer, &cmd_size);
4975 k = dev->bytes_read % dev->read_buffer->linesize;
4978 val = dev->transfer_buffer[i];
4979 val = (int) ((float) val * dev->shading_coeff[k] + 0.5);
4982 dev->transfer_buffer[i] = val;
4984 if ((size_t) k == dev->read_buffer->linesize)
4989 dev->bytes_read += cmd_size;
4990 dev->bytes_remaining -= cmd_size;
4991 dev->bytes_in_buffer = cmd_size;
4992 dev->read_pointer = dev->transfer_buffer;
4995 DBG (2, " bytes_remaining: %lu\n", (u_long) dev->bytes_remaining);
4996 DBG (2, " bytes_in_buffer: %lu\n", (u_long) dev->bytes_in_buffer);
4997 DBG (2, " read_pointer: %p\n", (void *) dev->read_pointer);
5002 DBG (5, " write ptr: %p\n", (void *) dev->read_buffer->writeptr);
5003 DBG (5, " read ptr: %p\n", (void *) dev->read_buffer->readptr);
5004 DBG (5, " max write ptr: %p\n", (void *) dev->read_buffer->max_writeptr);
5005 DBG (5, " buffer size: %lu\n", (u_long) dev->read_buffer->size);
5006 DBG (5, " line size: %lu\n", (u_long) dev->read_buffer->linesize);
5007 DBG (5, " empty: %d\n", dev->read_buffer->empty);
5008 DBG (5, " line no: %d\n", dev->read_buffer->image_line_no);
5012 if (read_buffer_bytes_available (dev->read_buffer) >= dev->bytes_in_buffer)
5015 while (dev->bytes_in_buffer)
5022 read_buffer_add_byte (dev->read_buffer,
5023 dev->read_pointer + 1);
5025 read_buffer_add_byte (dev->read_buffer,
5026 dev->read_pointer - 1);
5033 read_buffer_add_byte_gray (dev->read_buffer,
5034 dev->read_pointer + 1);
5036 read_buffer_add_byte_gray (dev->read_buffer,
5037 dev->read_pointer - 1);
5044 read_buffer_add_bit_lineart (dev->read_buffer,
5045 dev->read_pointer + 1,
5046 dev->threshold);
5048 read_buffer_add_bit_lineart (dev->read_buffer,
5049 dev->read_pointer - 1,
5050 dev->threshold);
5053 dev->read_pointer = dev->read_pointer + sizeof (SANE_Byte);
5054 dev->bytes_in_buffer--;
5057 free (dev->transfer_buffer);
5058 dev->transfer_buffer = NULL;
5062 DBG (5, " write ptr: %p\n", (void *) dev->read_buffer->writeptr);
5063 DBG (5, " read ptr: %p\n", (void *) dev->read_buffer->readptr);
5064 DBG (5, " max write ptr: %p\n", (void *) dev->read_buffer->max_writeptr);
5065 DBG (5, " buffer size: %lu\n", (u_long) dev->read_buffer->size);
5066 DBG (5, " line size: %lu\n", (u_long) dev->read_buffer->linesize);
5067 DBG (5, " empty: %d\n", dev->read_buffer->empty);
5068 DBG (5, " line no: %d\n", dev->read_buffer->image_line_no);
5071 bytes_read = read_buffer_get_bytes (dev->read_buffer, data, size);
5075 DBG (2, " bytes_remaining: %lu\n", (u_long) dev->bytes_remaining);
5076 DBG (2, " bytes_in_buffer: %lu\n", (u_long) dev->bytes_in_buffer);
5077 DBG (2, " read_pointer: %p\n", (void *) dev->read_buffer->readptr);
5081 if ((dev->bytes_remaining == 0) && read_buffer_is_empty (dev->read_buffer))
5083 if (!dev->eof)
5087 dev->eof = SANE_TRUE;
5088 low_rewind (dev, dev->shadow_regs);
5101 low_rewind (Lexmark_Device * dev, SANE_Byte * regs)
5113 scale = 600 / dev->val[OPT_RESOLUTION].w;
5114 new_location = ((dev->val[OPT_BR_Y].w / scale) * scale) * 2;
5122 if (dev->model.sensor_type == X74_SENSOR)
5127 DBG (2, "low_rewind: %d=>new_location=%d\n", dev->val[OPT_BR_Y].w,
5131 low_clr_c6 (dev->devnum);
5132 low_cancel (dev->devnum);
5147 switch (dev->model.motor_type)
5193 low_start_scan (dev->devnum, regs);
5199 read_buffer_init (Lexmark_Device * dev, int bytesperline)
5205 dev->read_buffer = (Read_Buffer *) malloc (sizeof (Read_Buffer));
5206 if (dev->read_buffer == NULL)
5208 dev->read_buffer->linesize = bytesperline;
5209 dev->read_buffer->gray_offset = 0;
5210 dev->read_buffer->max_gray_offset = bytesperline - 1;
5211 dev->read_buffer->region = RED;
5212 dev->read_buffer->red_offset = 0;
5213 dev->read_buffer->green_offset = 1;
5214 dev->read_buffer->blue_offset = 2;
5215 dev->read_buffer->max_red_offset = bytesperline - 3;
5216 dev->read_buffer->max_green_offset = bytesperline - 2;
5217 dev->read_buffer->max_blue_offset = bytesperline - 1;
5219 dev->read_buffer->size = bytesperline * no_lines_in_buffer;
5220 dev->read_buffer->data = (SANE_Byte *) malloc (dev->read_buffer->size);
5221 if (dev->read_buffer->data == NULL)
5223 dev->read_buffer->readptr = dev->read_buffer->data;
5224 dev->read_buffer->writeptr = dev->read_buffer->data;
5225 dev->read_buffer->max_writeptr = dev->read_buffer->data +
5227 dev->read_buffer->empty = SANE_TRUE;
5228 dev->read_buffer->image_line_no = 0;
5229 dev->read_buffer->bit_counter = 0;
5230 dev->read_buffer->max_lineart_offset = dev->params.pixels_per_line - 1;
5523 sanei_lexmark_low_offset_calibration (Lexmark_Device * dev)
5543 regs[i] = dev->shadow_regs[i];
5549 (dev->sensor->offset_endx - dev->sensor->offset_startx) / regs[0x7a];
5572 while (((i > 0) && (average > dev->sensor->offset_threshold))
5588 low_simple_scan (dev, regs, dev->sensor->offset_startx, pixels,
5615 low_simple_scan (dev, regs, dev->sensor->offset_startx, pixels, yoffset,
5635 dev->offset.red = ro - ra;
5638 dev->offset.green = go - ga;
5639 dev->offset.gray = go - ga;
5642 dev->offset.blue = bo - ba;
5646 dev->offset.red = dev->sensor->offset_fallback;
5647 dev->offset.green = dev->sensor->offset_fallback;
5648 dev->offset.blue = dev->sensor->offset_fallback;
5652 dev->offset.red, dev->offset.green, dev->offset.blue);
5665 sanei_lexmark_low_gain_calibration (Lexmark_Device * dev)
5683 regs[i] = dev->shadow_regs[i];
5704 status = low_cancel (dev->devnum);
5710 && ((ra < dev->sensor->red_gain_target)
5711 || (ga < dev->sensor->green_gain_target)
5712 || (ba < dev->sensor->blue_gain_target)))
5714 && (ga < dev->sensor->gray_gain_target))) && (i < 25))
5716 status = low_simple_scan (dev, regs, sx, pixels, yoffset, lines, &data);
5731 if (ra < dev->sensor->red_gain_target)
5733 if (ga < dev->sensor->green_gain_target
5734 || (dev->sensor->gray_gain_target && !rts88xx_is_color (regs)))
5736 if (ba < dev->sensor->blue_gain_target)
5741 dev->gain.red = red;
5742 dev->gain.green = green;
5743 dev->gain.blue = blue;
5744 dev->gain.gray = green;
5747 dev->gain.red, dev->gain.green, dev->gain.blue);
5761 sanei_lexmark_low_shading_calibration (Lexmark_Device * dev)
5780 regs[i] = dev->shadow_regs[i];
5810 if (dev->shading_coeff != NULL)
5811 free (dev->shading_coeff);
5812 dev->shading_coeff = (float *) malloc (bpl * sizeof (float));
5813 if (dev->shading_coeff == NULL)
5826 status = low_simple_scan (dev, regs, sx, pixels, lineoffset, lines, &data);
5887 rtarget = dev->sensor->red_shading_target;
5888 gtarget = dev->sensor->green_shading_target;
5889 btarget = dev->sensor->blue_shading_target;
5894 if (rts88xx_is_color (dev->shadow_regs))
5897 dev->shading_coeff[i] = 0;
5899 dev->shading_coeff[i] += data[i + j * bpl];
5900 dev->shading_coeff[i] =
5901 (rtarget / (dev->shading_coeff[i] / (lines - yoffset)));
5904 dev->shading_coeff[i + pixels] = 0;
5906 dev->shading_coeff[i + pixels] += data[i + j * bpl + pixels];
5907 dev->shading_coeff[i + pixels] =
5908 ((gtarget / dev->shading_coeff[i + pixels]) * (lines - yoffset));
5911 dev->shading_coeff[i + 2 * pixels] = 0;
5913 dev->shading_coeff[i + 2 * pixels] +=
5915 dev->shading_coeff[i + 2 * pixels] =
5916 ((btarget / dev->shading_coeff[i + 2 * pixels]) *
5921 dev->shading_coeff[i] = 0;
5924 dev->shading_coeff[i] += data[i + j * bpl];
5926 dev->shading_coeff[i] =
5927 (rtarget / dev->shading_coeff[i]) * (lines - yoffset);
5936 if (dev->model.sensor_type == X74_SENSOR)
5940 status = low_simple_scan (dev, regs, sx, pixels, 1, lines, &data);
5962 sanei_lexmark_low_calibration (Lexmark_Device * dev)
5967 status = sanei_lexmark_low_offset_calibration (dev);
5972 if (rts88xx_is_color (dev->shadow_regs))
5974 rts88xx_set_offset (dev->shadow_regs,
5975 dev->offset.red,
5976 dev->offset.green, dev->offset.blue);
5980 rts88xx_set_offset (dev->shadow_regs,
5981 dev->offset.gray,
5982 dev->offset.gray, dev->offset.gray);
5986 if (dev->val[OPT_MANUAL_GAIN].w == SANE_TRUE)
5988 if (rts88xx_is_color (dev->shadow_regs))
5990 dev->gain.red = dev->val[OPT_RED_GAIN].w;
5991 dev->gain.green = dev->val[OPT_GREEN_GAIN].w;
5992 dev->gain.blue = dev->val[OPT_BLUE_GAIN].w;
5995 dev->gain.gray = dev->val[OPT_GRAY_GAIN].w;
5999 status = sanei_lexmark_low_gain_calibration (dev);
6006 if (rts88xx_is_color (dev->shadow_regs))
6008 rts88xx_set_gain (dev->shadow_regs, dev->gain.red, dev->gain.green,
6009 dev->gain.blue);
6013 rts88xx_set_gain (dev->shadow_regs, dev->gain.gray, dev->gain.gray,
6014 dev->gain.gray);
6017 status = sanei_lexmark_low_shading_calibration (dev);
6028 sanei_lexmark_low_assign_sensor (Lexmark_Device * dev)
6035 && sensor_list[dn].id != dev->model.sensor_type)
6041 dev->model.sensor_type);
6044 dev->sensor = &(sensor_list[dn]);
6046 dev->model.sensor_type);
6053 sanei_lexmark_low_assign_model (Lexmark_Device * dev,
6096 dev->sane.name = strdup (devname);
6097 dev->sane.vendor = model_list[dn].vendor;
6098 dev->sane.model = model_list[dn].model;
6099 dev->model = model_list[dn];
6100 dev->sane.type = "flatbed scanner";
6102 DBG (3, "sanei_lexmark_low_assign_model: assigned %s\n", dev->model.model);
6106 return sanei_lexmark_low_assign_sensor (dev);