kopia lustrzana https://gitlab.com/sane-project/backends
- calibration and 150/300 dpi mode fixes for 4470cx sensor
rodzic
43b7e3cc6b
commit
8d55281218
|
@ -1,3 +1,7 @@
|
|||
2008-04-12 Stéphane Voltz <stef.dev@free.fr>
|
||||
* backend/rts8891.c
|
||||
150/300 dpi mode fixes for 'XPA' sensor HP4470 models
|
||||
|
||||
2008-05-08 Alessandro Zummo <a.zummo@towertech.it>
|
||||
* AUTHORS: added myself :)
|
||||
|
||||
|
|
|
@ -2941,7 +2941,8 @@ find_origin (struct Rts8891_Device *dev, SANE_Bool * changed)
|
|||
|
||||
/**
|
||||
* This function detects the left margin (ie x offset of scanning area) by doing
|
||||
* a grey scan and finding the start of the white area of calibration zone
|
||||
* a grey scan of the very beginning of the sensor and finding the start of the
|
||||
* white area of calibration zone, which is start of usable pixels.
|
||||
*/
|
||||
static SANE_Status
|
||||
find_margin (struct Rts8891_Device *dev)
|
||||
|
@ -4069,9 +4070,10 @@ detect_device (struct Rts8891_Device *dev)
|
|||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* do dark calibration. We scan a well defined area until average pixel value
|
||||
* of the black area is about 0x03 for each color channel
|
||||
/**
|
||||
* Do dark calibration. We scan a well defined area until average pixel value
|
||||
* of the black area is about 0x03 for each color channel. This calibration is
|
||||
* currently done at 75 dpi regardless of the final scan dpi.
|
||||
*/
|
||||
static SANE_Status
|
||||
dark_calibration (struct Rts8891_Device *dev, int light)
|
||||
|
@ -4160,6 +4162,7 @@ dark_calibration (struct Rts8891_Device *dev, int light)
|
|||
dev->regs[0xd1] = 0xeb;
|
||||
dev->regs[0xd2] = 0x0c;
|
||||
dev->regs[0xd7] = 0x10;
|
||||
dev->regs[0xda] = 0xa7;
|
||||
}
|
||||
/* we loop scanning a 637 (1911 bytes) pixels wide area in color mode
|
||||
* until each black average reaches the desired value */
|
||||
|
@ -4357,50 +4360,91 @@ gain_calibration (struct Rts8891_Device *dev, int light)
|
|||
dev->regs[0xd7] = 0x30;
|
||||
|
||||
if (dev->sensor == SENSOR_TYPE_XPA)
|
||||
{
|
||||
dev->regs[0x72] = 0x3a;
|
||||
dev->regs[0x73] = 0x15;
|
||||
dev->regs[0x74] = 0x62;
|
||||
{ /* kept for a while while experimenting */
|
||||
/*
|
||||
dev->regs[0x72] = 0x3a;
|
||||
dev->regs[0x73] = 0x15;
|
||||
dev->regs[0x74] = 0x62;
|
||||
|
||||
dev->regs[0xc0] = 0x00;
|
||||
dev->regs[0xc1] = 0xf8;
|
||||
dev->regs[0xc2] = 0x7f;
|
||||
dev->regs[0xc3] = 0x00;
|
||||
dev->regs[0xc4] = 0xf8;
|
||||
dev->regs[0xc5] = 0x7f;
|
||||
dev->regs[0xc6] = 0x00;
|
||||
dev->regs[0xc7] = 0xf8;
|
||||
dev->regs[0xc8] = 0x7f;
|
||||
dev->regs[0xc9] = 0xff;
|
||||
dev->regs[0xca] = 0xff;
|
||||
dev->regs[0xcb] = 0x8f;
|
||||
dev->regs[0xcc] = 0xff;
|
||||
dev->regs[0xcd] = 0x07;
|
||||
dev->regs[0xce] = 0x80;
|
||||
dev->regs[0xcf] = 0xea;
|
||||
dev->regs[0xd0] = 0xec;
|
||||
dev->regs[0xd1] = 0xf7;
|
||||
dev->regs[0xd2] = 0x00;
|
||||
dev->regs[0xd3] = 0x10;
|
||||
dev->regs[0xd4] = 0x12;
|
||||
dev->regs[0xd6] = 0xab;
|
||||
dev->regs[0xd7] = 0x31;
|
||||
dev->regs[0xd8] = 0xf6;
|
||||
dev->regs[0xe2] = 0x01;
|
||||
dev->regs[0xc0] = 0x00;
|
||||
dev->regs[0xc1] = 0xf8;
|
||||
dev->regs[0xc2] = 0x7f;
|
||||
dev->regs[0xc3] = 0x00;
|
||||
dev->regs[0xc4] = 0xf8;
|
||||
dev->regs[0xc5] = 0x7f;
|
||||
dev->regs[0xc6] = 0x00;
|
||||
dev->regs[0xc7] = 0xf8;
|
||||
dev->regs[0xc8] = 0x7f;
|
||||
dev->regs[0xc9] = 0xff;
|
||||
dev->regs[0xca] = 0xff;
|
||||
dev->regs[0xcb] = 0x8f;
|
||||
dev->regs[0xcc] = 0xff;
|
||||
dev->regs[0xcd] = 0x07;
|
||||
dev->regs[0xce] = 0x80;
|
||||
dev->regs[0xcf] = 0xea;
|
||||
dev->regs[0xd0] = 0xec;
|
||||
dev->regs[0xd1] = 0xf7;
|
||||
dev->regs[0xd2] = 0x00;
|
||||
dev->regs[0xd3] = 0x10;
|
||||
dev->regs[0xd4] = 0x12;
|
||||
dev->regs[0xd6] = 0xab;
|
||||
dev->regs[0xd7] = 0x31;
|
||||
dev->regs[0xd8] = 0xf6;
|
||||
dev->regs[0xe2] = 0x01;
|
||||
|
||||
dev->regs[0xe5] = 0x7b;
|
||||
dev->regs[0xe6] = 0x15; /* 157b=5499 */
|
||||
dev->regs[0xe5] = 0x7b;
|
||||
dev->regs[0xe6] = 0x15;
|
||||
|
||||
dev->regs[0xe7] = 0x00;
|
||||
dev->regs[0xe8] = 0x00;
|
||||
dev->regs[0xe9] = 0x00;
|
||||
dev->regs[0xea] = 0x00;
|
||||
dev->regs[0xeb] = 0x00;
|
||||
dev->regs[0xec] = 0x00;
|
||||
dev->regs[0xed] = 0x00;
|
||||
dev->regs[0xef] = 0x00;
|
||||
dev->regs[0xf0] = 0x00;
|
||||
dev->regs[0xf2] = 0x00;
|
||||
dev->regs[0xe7] = 0x00;
|
||||
dev->regs[0xe8] = 0x00;
|
||||
dev->regs[0xe9] = 0x00;
|
||||
dev->regs[0xea] = 0x00;
|
||||
dev->regs[0xeb] = 0x00;
|
||||
dev->regs[0xec] = 0x00;
|
||||
dev->regs[0xed] = 0x00;
|
||||
dev->regs[0xef] = 0x00;
|
||||
dev->regs[0xf0] = 0x00;
|
||||
dev->regs[0xf2] = 0x00; */
|
||||
dev->regs[0x72] = 0xe1;
|
||||
dev->regs[0x73] = 0x14;
|
||||
dev->regs[0x74] = 0x18;
|
||||
dev->regs[0xc0] = 0x67;
|
||||
dev->regs[0xc1] = 0x06;
|
||||
dev->regs[0xc2] = 0xe6;
|
||||
dev->regs[0xc3] = 0x98;
|
||||
dev->regs[0xc4] = 0xf9;
|
||||
dev->regs[0xc5] = 0x19;
|
||||
dev->regs[0xc6] = 0x67;
|
||||
dev->regs[0xc7] = 0x06;
|
||||
dev->regs[0xc8] = 0xe6;
|
||||
dev->regs[0xc9] = 0x01;
|
||||
dev->regs[0xca] = 0xf8;
|
||||
dev->regs[0xcb] = 0xff;
|
||||
dev->regs[0xcc] = 0x98;
|
||||
dev->regs[0xcd] = 0xf9;
|
||||
dev->regs[0xce] = 0x19;
|
||||
dev->regs[0xcf] = 0xe0;
|
||||
dev->regs[0xd0] = 0xe2;
|
||||
dev->regs[0xd1] = 0xeb;
|
||||
dev->regs[0xd2] = 0x0c;
|
||||
dev->regs[0xd3] = 0x02;
|
||||
dev->regs[0xd4] = 0x04;
|
||||
dev->regs[0xd6] = 0x0f;
|
||||
dev->regs[0xd7] = 0x10;
|
||||
dev->regs[0xd8] = 0x52;
|
||||
dev->regs[0xe2] = 0x1f;
|
||||
dev->regs[0xe5] = 0x28;
|
||||
dev->regs[0xe6] = 0x00;
|
||||
dev->regs[0xe7] = 0x75;
|
||||
dev->regs[0xe8] = 0x01;
|
||||
dev->regs[0xe9] = 0x0b;
|
||||
dev->regs[0xea] = 0x54;
|
||||
dev->regs[0xeb] = 0x01;
|
||||
dev->regs[0xec] = 0x04;
|
||||
dev->regs[0xed] = 0xb8;
|
||||
dev->regs[0xef] = 0x03;
|
||||
dev->regs[0xf0] = 0x70;
|
||||
dev->regs[0xf2] = 0x01;
|
||||
}
|
||||
|
||||
/* we loop scanning a 637 (1911 bytes) pixels wide area in color mode until each white average
|
||||
|
@ -4588,8 +4632,11 @@ gain_calibration (struct Rts8891_Device *dev, int light)
|
|||
return status;
|
||||
}
|
||||
|
||||
/*
|
||||
* do fine offset calibration. Scans are done with gains from gain calibration
|
||||
/**
|
||||
* Do fine offset calibration. Scans are done with gains from gain calibration
|
||||
* at 75 dpi regardless of the dpi of the final scan. We loop scanning a 637
|
||||
* (1911 bytes) pixels wide area in color mode until each black average
|
||||
* reaches the desired value (OFFSET_TARGET).
|
||||
*/
|
||||
static SANE_Status
|
||||
offset_calibration (struct Rts8891_Device *dev, int light)
|
||||
|
@ -4654,6 +4701,10 @@ offset_calibration (struct Rts8891_Device *dev, int light)
|
|||
dev->regs[0xf2] = 0x01;
|
||||
if (dev->sensor == SENSOR_TYPE_XPA)
|
||||
{
|
||||
dev->regs[0x72] = 0xe1;
|
||||
dev->regs[0x73] = 0x14;
|
||||
dev->regs[0x74] = 0x18;
|
||||
|
||||
dev->regs[0xc0] = 0x67;
|
||||
dev->regs[0xc1] = 0x06;
|
||||
dev->regs[0xc2] = 0xe6;
|
||||
|
@ -4947,40 +4998,46 @@ shading_calibration (struct Rts8891_Device *dev, SANE_Bool color, int light)
|
|||
break;
|
||||
|
||||
case 300:
|
||||
dev->regs[0x80] = 0x2e;
|
||||
dev->regs[0x81] = 0x01;
|
||||
dev->regs[0x82] = 0x2f;
|
||||
dev->regs[0x83] = 0x01;
|
||||
dev->regs[0x85] = 0x8c;
|
||||
dev->regs[0x86] = 0x10;
|
||||
dev->regs[0x87] = 0x18;
|
||||
dev->regs[0x88] = 0x1b;
|
||||
dev->regs[0x89] = 0x30;
|
||||
dev->regs[0x8a] = 0x01;
|
||||
if (dev->sensor == SENSOR_TYPE_XPA)
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
dev->regs[0x80] = 0x2e;
|
||||
dev->regs[0x81] = 0x01;
|
||||
dev->regs[0x82] = 0x2f;
|
||||
dev->regs[0x83] = 0x01;
|
||||
dev->regs[0x85] = 0x8c;
|
||||
dev->regs[0x86] = 0x10;
|
||||
dev->regs[0x87] = 0x18;
|
||||
dev->regs[0x88] = 0x1b;
|
||||
dev->regs[0x89] = 0x30;
|
||||
dev->regs[0x8a] = 0x01;
|
||||
|
||||
dev->regs[0x8d] = 0xde;
|
||||
dev->regs[0x8e] = 0x61; /* low nibble of 8e and 8d are proportional to
|
||||
the scanned width 1de => 5100 wide scan */
|
||||
dev->regs[0x8d] = 0xde;
|
||||
dev->regs[0x8e] = 0x61; /* low nibble of 8e and 8d are proportional to
|
||||
the scanned width 1de => 5100 wide scan */
|
||||
|
||||
dev->regs[0xc0] = 0xff;
|
||||
dev->regs[0xc1] = 0x0f;
|
||||
dev->regs[0xc2] = 0x00;
|
||||
dev->regs[0xc9] = 0x00;
|
||||
dev->regs[0xca] = 0x0e;
|
||||
dev->regs[0xcb] = 0x00;
|
||||
dev->regs[0xcc] = 0x00;
|
||||
dev->regs[0xcd] = 0xf0;
|
||||
dev->regs[0xce] = 0xff;
|
||||
dev->regs[0xcf] = 0xf5;
|
||||
dev->regs[0xd0] = 0xf7;
|
||||
dev->regs[0xc0] = 0xff;
|
||||
dev->regs[0xc1] = 0x0f;
|
||||
dev->regs[0xc2] = 0x00;
|
||||
dev->regs[0xc9] = 0x00;
|
||||
dev->regs[0xca] = 0x0e;
|
||||
dev->regs[0xcb] = 0x00;
|
||||
dev->regs[0xcc] = 0x00;
|
||||
dev->regs[0xcd] = 0xf0;
|
||||
dev->regs[0xce] = 0xff;
|
||||
dev->regs[0xcf] = 0xf5;
|
||||
dev->regs[0xd0] = 0xf7;
|
||||
|
||||
dev->regs[0xd1] = 0xea;
|
||||
dev->regs[0xd2] = 0x0b;
|
||||
dev->regs[0xd1] = 0xea;
|
||||
dev->regs[0xd2] = 0x0b;
|
||||
|
||||
dev->regs[0xd3] = 0x17;
|
||||
dev->regs[0xd4] = 0x01;
|
||||
dev->regs[0xe5] = 0xc9;
|
||||
dev->regs[0xe6] = 0x01; /* 0x1c9=457 */
|
||||
dev->regs[0xd3] = 0x17;
|
||||
dev->regs[0xd4] = 0x01;
|
||||
dev->regs[0xe5] = 0xc9;
|
||||
dev->regs[0xe6] = 0x01; /* 0x1c9=457 */
|
||||
}
|
||||
break;
|
||||
|
||||
case 600:
|
||||
|
@ -5754,65 +5811,104 @@ write_scan_registers (struct Rts8891_Scanner *scanner)
|
|||
case 75:
|
||||
break;
|
||||
case 150:
|
||||
dev->regs[0x35] = 0x45;
|
||||
|
||||
dev->regs[0x80] = 0x2e;
|
||||
dev->regs[0x81] = 0x01;
|
||||
|
||||
dev->regs[0x82] = 0x2f;
|
||||
dev->regs[0x83] = 0x01;
|
||||
|
||||
dev->regs[0x85] = 0x8c;
|
||||
dev->regs[0x86] = 0x10;
|
||||
|
||||
dev->regs[0x87] = 0x18;
|
||||
dev->regs[0x88] = 0x1b;
|
||||
|
||||
dev->regs[0x89] = 0x30;
|
||||
dev->regs[0x8a] = 0x01;
|
||||
|
||||
dev->regs[0x8d] = 0x77;
|
||||
|
||||
dev->regs[0xe3] = 0x87;
|
||||
|
||||
dev->regs[0xe5] = 0x54;
|
||||
dev->regs[0xe6] = 0x00; /* exposure time 0x0054=84 */
|
||||
|
||||
dev->regs[0xe7] = 0xa8;
|
||||
dev->regs[0xe8] = 0x00;
|
||||
dev->regs[0xea] = 0x56;
|
||||
dev->regs[0xed] = 0xba;
|
||||
|
||||
dev->regs[0xf0] = 0x72;
|
||||
if (dev->sensor == SENSOR_TYPE_XPA)
|
||||
{
|
||||
dev->regs[0x35] = 0x47;
|
||||
dev->regs[0x80] = 0xaf;
|
||||
dev->regs[0x81] = 0x00;
|
||||
dev->regs[0x82] = 0xb0;
|
||||
dev->regs[0x83] = 0x00;
|
||||
dev->regs[0x85] = 0x46;
|
||||
dev->regs[0x86] = 0x0b;
|
||||
dev->regs[0x87] = 0x8c;
|
||||
dev->regs[0x88] = 0x10;
|
||||
dev->regs[0x89] = 0xb1;
|
||||
dev->regs[0x8a] = 0x00;
|
||||
dev->regs[0x8d] = 0x3b;
|
||||
dev->regs[0xc0] = 0x67;
|
||||
dev->regs[0xc1] = 0x06;
|
||||
dev->regs[0xc2] = 0xe6;
|
||||
dev->regs[0xc3] = 0x98;
|
||||
dev->regs[0xc4] = 0xf9;
|
||||
dev->regs[0xc5] = 0x19;
|
||||
dev->regs[0xc6] = 0x67;
|
||||
dev->regs[0xc7] = 0x06;
|
||||
dev->regs[0xc8] = 0xe6;
|
||||
dev->regs[0xc9] = 0x01;
|
||||
dev->regs[0xca] = 0xf8;
|
||||
dev->regs[0xcb] = 0xff;
|
||||
dev->regs[0xcc] = 0x98;
|
||||
dev->regs[0xcd] = 0xf9;
|
||||
dev->regs[0xce] = 0x19;
|
||||
dev->regs[0xcf] = 0xe0;
|
||||
dev->regs[0xd0] = 0xe2;
|
||||
dev->regs[0xd1] = 0xeb;
|
||||
dev->regs[0xd2] = 0x0c;
|
||||
dev->regs[0xd3] = 0x02;
|
||||
dev->regs[0xd4] = 0x04;
|
||||
dev->regs[0xd7] = 0x10;
|
||||
dev->regs[0xe3] = 0x85;
|
||||
dev->regs[0xe5] = 0x52;
|
||||
dev->regs[0xe7] = 0x75;
|
||||
dev->regs[0xe8] = 0x01;
|
||||
dev->regs[0xea] = 0x54;
|
||||
dev->regs[0xed] = 0xb8;
|
||||
dev->regs[0xf0] = 0x70;
|
||||
dev->regs[0xc0] = 0x00;
|
||||
dev->regs[0xc1] = 0x8e;
|
||||
dev->regs[0xc2] = 0xff;
|
||||
dev->regs[0xc3] = 0xff;
|
||||
dev->regs[0xc4] = 0x71;
|
||||
dev->regs[0xc5] = 0x00;
|
||||
dev->regs[0xc6] = 0x00;
|
||||
dev->regs[0xc7] = 0x8e;
|
||||
dev->regs[0xc8] = 0xff;
|
||||
dev->regs[0xc9] = 0xff;
|
||||
dev->regs[0xca] = 0xff;
|
||||
dev->regs[0xcb] = 0x1f;
|
||||
dev->regs[0xcc] = 0xff;
|
||||
dev->regs[0xcd] = 0x71;
|
||||
dev->regs[0xce] = 0x00;
|
||||
dev->regs[0xcf] = 0xe6;
|
||||
dev->regs[0xd0] = 0xe8;
|
||||
dev->regs[0xd1] = 0xf6;
|
||||
dev->regs[0xd2] = 0x17;
|
||||
dev->regs[0xd3] = 0x0b;
|
||||
dev->regs[0xd4] = 0x0d;
|
||||
/*
|
||||
dev->regs[0x35] = 0x47;
|
||||
dev->regs[0x80] = 0xaf;
|
||||
dev->regs[0x81] = 0x00;
|
||||
dev->regs[0x82] = 0xb0;
|
||||
dev->regs[0x83] = 0x00;
|
||||
dev->regs[0x85] = 0x46;
|
||||
dev->regs[0x86] = 0x0b;
|
||||
dev->regs[0x87] = 0x8c;
|
||||
dev->regs[0x88] = 0x10;
|
||||
dev->regs[0x89] = 0xb1;
|
||||
dev->regs[0x8a] = 0x00;
|
||||
dev->regs[0x8d] = 0x3b;
|
||||
dev->regs[0xc0] = 0x67;
|
||||
dev->regs[0xc1] = 0x06;
|
||||
dev->regs[0xc2] = 0xe6;
|
||||
dev->regs[0xc3] = 0x98;
|
||||
dev->regs[0xc4] = 0xf9;
|
||||
dev->regs[0xc5] = 0x19;
|
||||
dev->regs[0xc6] = 0x67;
|
||||
dev->regs[0xc7] = 0x06;
|
||||
dev->regs[0xc8] = 0xe6;
|
||||
dev->regs[0xc9] = 0x01;
|
||||
dev->regs[0xca] = 0xf8;
|
||||
dev->regs[0xcb] = 0xff;
|
||||
dev->regs[0xcc] = 0x98;
|
||||
dev->regs[0xcd] = 0xf9;
|
||||
dev->regs[0xce] = 0x19;
|
||||
dev->regs[0xcf] = 0xe0;
|
||||
dev->regs[0xd0] = 0xe2;
|
||||
dev->regs[0xd1] = 0xeb;
|
||||
dev->regs[0xd2] = 0x0c;
|
||||
dev->regs[0xd3] = 0x02;
|
||||
dev->regs[0xd4] = 0x04;
|
||||
dev->regs[0xd7] = 0x10;
|
||||
dev->regs[0xe3] = 0x85;
|
||||
dev->regs[0xe5] = 0x52;
|
||||
dev->regs[0xe7] = 0x75;
|
||||
dev->regs[0xe8] = 0x01;
|
||||
dev->regs[0xea] = 0x54;
|
||||
dev->regs[0xed] = 0xb8;
|
||||
dev->regs[0xf0] = 0x70; */
|
||||
}
|
||||
else
|
||||
{
|
||||
dev->regs[0x35] = 0x45;
|
||||
dev->regs[0x80] = 0x2e;
|
||||
dev->regs[0x81] = 0x01;
|
||||
dev->regs[0x82] = 0x2f;
|
||||
dev->regs[0x83] = 0x01;
|
||||
dev->regs[0x85] = 0x8c;
|
||||
dev->regs[0x86] = 0x10;
|
||||
dev->regs[0x87] = 0x18;
|
||||
dev->regs[0x88] = 0x1b;
|
||||
dev->regs[0x89] = 0x30;
|
||||
dev->regs[0x8a] = 0x01;
|
||||
dev->regs[0x8d] = 0x77;
|
||||
|
||||
dev->regs[0xc0] = 0x80;
|
||||
dev->regs[0xc1] = 0x87;
|
||||
dev->regs[0xc2] = 0x7f;
|
||||
|
@ -5829,21 +5925,10 @@ write_scan_registers (struct Rts8891_Scanner *scanner)
|
|||
|
||||
dev->regs[0xd3] = 0x0e;
|
||||
dev->regs[0xd4] = 0x10;
|
||||
dev->regs[0xe3] = 0x87;
|
||||
|
||||
dev->regs[0xe5] = 0x54;
|
||||
dev->regs[0xe6] = 0x00; /* exposure time 0x0054=84 */
|
||||
|
||||
dev->regs[0xe7] = 0xa8;
|
||||
dev->regs[0xe8] = 0x00;
|
||||
dev->regs[0xea] = 0x56;
|
||||
dev->regs[0xed] = 0xba;
|
||||
dev->regs[0xf0] = 0x72;
|
||||
}
|
||||
break;
|
||||
|
||||
case 300:
|
||||
|
||||
dev->regs[0x35] = 0x0e; /* fast ? */
|
||||
dev->regs[0x3a] = 0x0e;
|
||||
|
||||
|
@ -5851,7 +5936,7 @@ write_scan_registers (struct Rts8891_Scanner *scanner)
|
|||
dev->regs[0x81] = 0x02;
|
||||
|
||||
dev->regs[0x82] = 0x2c;
|
||||
dev->regs[0x83] = 0x02;
|
||||
dev->regs[0x83] = 0x02; /* x8180 +1 */
|
||||
|
||||
dev->regs[0x85] = 0x18;
|
||||
dev->regs[0x86] = 0x1b;
|
||||
|
@ -5860,35 +5945,7 @@ write_scan_registers (struct Rts8891_Scanner *scanner)
|
|||
dev->regs[0x88] = 0x30;
|
||||
|
||||
dev->regs[0x89] = 0x2d;
|
||||
dev->regs[0x8a] = 0x02;
|
||||
|
||||
dev->regs[0x8d] = 0xf0;
|
||||
dev->regs[0x8e] = 0x60; /* low nibble of 8e and 8d are proportional to
|
||||
the scanned width 1de => 5100 wide scan */
|
||||
|
||||
dev->regs[0xc0] = 0xff;
|
||||
dev->regs[0xc1] = 0x0f;
|
||||
dev->regs[0xc2] = 0x00;
|
||||
dev->regs[0xc9] = 0x00;
|
||||
dev->regs[0xca] = 0x0e;
|
||||
dev->regs[0xcb] = 0x00;
|
||||
dev->regs[0xcc] = 0x00;
|
||||
dev->regs[0xcd] = 0xf0;
|
||||
dev->regs[0xce] = 0xff;
|
||||
dev->regs[0xcf] = 0xf5;
|
||||
dev->regs[0xd0] = 0xf7;
|
||||
dev->regs[0xd1] = 0xea;
|
||||
dev->regs[0xd2] = 0x0b;
|
||||
|
||||
dev->regs[0xd3] = 0x17;
|
||||
dev->regs[0xd4] = 0x01;
|
||||
|
||||
dev->regs[0xe2] = 0x07;
|
||||
dev->regs[0xe3] = 0x00;
|
||||
dev->regs[0xe4] = 0x00;
|
||||
|
||||
dev->regs[0xe5] = 0x56;
|
||||
dev->regs[0xe6] = 0x01; /* exposure time 0x156 (~ 5500 /16) */
|
||||
dev->regs[0x8a] = 0x02; /* x8180 +2 */
|
||||
|
||||
dev->regs[0xe7] = 0x00;
|
||||
dev->regs[0xe8] = 0x00;
|
||||
|
@ -5899,7 +5956,68 @@ write_scan_registers (struct Rts8891_Scanner *scanner)
|
|||
dev->regs[0xed] = 0x00;
|
||||
dev->regs[0xef] = 0x00;
|
||||
dev->regs[0xf0] = 0x00;
|
||||
if (dev->sensor == SENSOR_TYPE_XPA)
|
||||
{
|
||||
dev->regs[0x8d] = 0xef;
|
||||
dev->regs[0xc0] = 0x00;
|
||||
dev->regs[0xc1] = 0xff;
|
||||
dev->regs[0xc2] = 0x0f;
|
||||
dev->regs[0xc3] = 0xff;
|
||||
dev->regs[0xc4] = 0x00;
|
||||
dev->regs[0xc5] = 0xf0;
|
||||
dev->regs[0xc6] = 0x00;
|
||||
dev->regs[0xc7] = 0xff;
|
||||
dev->regs[0xc8] = 0x0f;
|
||||
dev->regs[0xc9] = 0xff;
|
||||
dev->regs[0xca] = 0xff;
|
||||
dev->regs[0xcb] = 0xf1;
|
||||
dev->regs[0xcc] = 0xff;
|
||||
dev->regs[0xcd] = 0x00;
|
||||
dev->regs[0xce] = 0xf0;
|
||||
dev->regs[0xcf] = 0xed;
|
||||
dev->regs[0xd0] = 0xef;
|
||||
dev->regs[0xd1] = 0xe2;
|
||||
dev->regs[0xd2] = 0x03;
|
||||
dev->regs[0xd3] = 0x17;
|
||||
dev->regs[0xd4] = 0x01;
|
||||
dev->regs[0xe2] = 0x07;
|
||||
dev->regs[0xe3] = 0x00;
|
||||
dev->regs[0xe4] = 0x00;
|
||||
dev->regs[0xe5] = 0x56;
|
||||
dev->regs[0xe6] = 0x01;
|
||||
dev->regs[0xf2] = 0x00;
|
||||
}
|
||||
else
|
||||
{
|
||||
dev->regs[0x8d] = 0xf0;
|
||||
dev->regs[0x8e] = 0x60; /* low nibble of 8e and 8d are proportional to
|
||||
the scanned width 1de => 5100 wide scan */
|
||||
|
||||
dev->regs[0xc0] = 0xff;
|
||||
dev->regs[0xc1] = 0x0f;
|
||||
dev->regs[0xc2] = 0x00;
|
||||
dev->regs[0xc9] = 0x00;
|
||||
dev->regs[0xca] = 0x0e;
|
||||
dev->regs[0xcb] = 0x00;
|
||||
dev->regs[0xcc] = 0x00;
|
||||
dev->regs[0xcd] = 0xf0;
|
||||
dev->regs[0xce] = 0xff;
|
||||
dev->regs[0xcf] = 0xf5;
|
||||
dev->regs[0xd0] = 0xf7;
|
||||
dev->regs[0xd1] = 0xea;
|
||||
dev->regs[0xd2] = 0x0b;
|
||||
|
||||
dev->regs[0xd3] = 0x17;
|
||||
dev->regs[0xd4] = 0x01;
|
||||
|
||||
dev->regs[0xe2] = 0x07;
|
||||
dev->regs[0xe3] = 0x00;
|
||||
dev->regs[0xe4] = 0x00;
|
||||
|
||||
dev->regs[0xe5] = 0x56;
|
||||
dev->regs[0xe6] = 0x01; /* exposure time 0x156 (~ 5500 /16) */
|
||||
|
||||
}
|
||||
break;
|
||||
case 600:
|
||||
status1 = 0x28;
|
||||
|
@ -5959,7 +6077,6 @@ write_scan_registers (struct Rts8891_Scanner *scanner)
|
|||
dev->regs[0xef] = 0x00;
|
||||
dev->regs[0xf0] = 0x00;
|
||||
dev->regs[0xf2] = 0x00;
|
||||
|
||||
break;
|
||||
case 1200:
|
||||
status1 = 0x28;
|
||||
|
|
Ładowanie…
Reference in New Issue