kopia lustrzana https://gitlab.com/sane-project/backends
- added udelay() in epat wake up function to get some 2000P correctly
detected on fast hardware.DEVEL_2_0_BRANCH-1
rodzic
e118d4e33b
commit
4548a075aa
|
@ -2550,18 +2550,29 @@ RingScanner (void)
|
||||||
|
|
||||||
/* send ring string */
|
/* send ring string */
|
||||||
Outb (DATA, 0x22);
|
Outb (DATA, 0x22);
|
||||||
|
usleep (10000);
|
||||||
Outb (DATA, 0x22);
|
Outb (DATA, 0x22);
|
||||||
|
usleep (10000);
|
||||||
Outb (DATA, 0xAA);
|
Outb (DATA, 0xAA);
|
||||||
|
usleep (10000);
|
||||||
Outb (DATA, 0xAA);
|
Outb (DATA, 0xAA);
|
||||||
|
usleep (10000);
|
||||||
Outb (DATA, 0x55);
|
Outb (DATA, 0x55);
|
||||||
|
usleep (10000);
|
||||||
Outb (DATA, 0x55);
|
Outb (DATA, 0x55);
|
||||||
|
usleep (10000);
|
||||||
Outb (DATA, 0x00);
|
Outb (DATA, 0x00);
|
||||||
|
usleep (10000);
|
||||||
Outb (DATA, 0x00);
|
Outb (DATA, 0x00);
|
||||||
|
usleep (10000);
|
||||||
Outb (DATA, 0xFF);
|
Outb (DATA, 0xFF);
|
||||||
|
usleep (10000);
|
||||||
Outb (DATA, 0xFF);
|
Outb (DATA, 0xFF);
|
||||||
|
usleep (10000);
|
||||||
|
|
||||||
/* OK ? */
|
/* OK ? */
|
||||||
status = Inb (STATUS);
|
status = Inb (STATUS);
|
||||||
|
usleep (10000);
|
||||||
if ((status & 0xB8) != 0xB8)
|
if ((status & 0xB8) != 0xB8)
|
||||||
{
|
{
|
||||||
DBG (1, "status %d doesn't match! %s:%d\n", status, __FILE__, __LINE__);
|
DBG (1, "status %d doesn't match! %s:%d\n", status, __FILE__, __LINE__);
|
||||||
|
@ -2572,8 +2583,11 @@ RingScanner (void)
|
||||||
if (ret)
|
if (ret)
|
||||||
{
|
{
|
||||||
Outb (DATA, 0x87);
|
Outb (DATA, 0x87);
|
||||||
|
usleep (10000);
|
||||||
Outb (DATA, 0x87);
|
Outb (DATA, 0x87);
|
||||||
|
usleep (10000);
|
||||||
status = Inb (STATUS);
|
status = Inb (STATUS);
|
||||||
|
usleep (10000);
|
||||||
if ((status & 0xB8) != 0x18)
|
if ((status & 0xB8) != 0x18)
|
||||||
{
|
{
|
||||||
DBG (1, "status %d doesn't match! %s:%d\n", status, __FILE__,
|
DBG (1, "status %d doesn't match! %s:%d\n", status, __FILE__,
|
||||||
|
@ -2586,7 +2600,9 @@ RingScanner (void)
|
||||||
if (ret)
|
if (ret)
|
||||||
{
|
{
|
||||||
Outb (DATA, 0x78);
|
Outb (DATA, 0x78);
|
||||||
|
usleep (10000);
|
||||||
Outb (DATA, 0x78);
|
Outb (DATA, 0x78);
|
||||||
|
usleep (10000);
|
||||||
status = Inb (STATUS);
|
status = Inb (STATUS);
|
||||||
if ((status & 0x30) != 0x30)
|
if ((status & 0x30) != 0x30)
|
||||||
{
|
{
|
||||||
|
@ -2600,9 +2616,13 @@ RingScanner (void)
|
||||||
if (ret)
|
if (ret)
|
||||||
{
|
{
|
||||||
Outb (DATA, 0x08);
|
Outb (DATA, 0x08);
|
||||||
|
usleep (10000);
|
||||||
Outb (DATA, 0x08);
|
Outb (DATA, 0x08);
|
||||||
|
usleep (10000);
|
||||||
Outb (DATA, 0xFF);
|
Outb (DATA, 0xFF);
|
||||||
|
usleep (10000);
|
||||||
Outb (DATA, 0xFF);
|
Outb (DATA, 0xFF);
|
||||||
|
usleep (10000);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* restore state */
|
/* restore state */
|
||||||
|
@ -6214,9 +6234,10 @@ DumpRGB (int width, int height, unsigned char *data, char *name)
|
||||||
fclose (fic);
|
fclose (fic);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int EvalGain(int sum,int count)
|
static int
|
||||||
|
EvalGain (int sum, int count)
|
||||||
{
|
{
|
||||||
int gn;
|
int gn;
|
||||||
|
|
||||||
/* 19000 is a little to bright */
|
/* 19000 is a little to bright */
|
||||||
gn = (int) ((double) (18500 * count) / sum - 100 + 0.5);
|
gn = (int) ((double) (18500 * count) / sum - 100 + 0.5);
|
||||||
|
@ -6224,7 +6245,7 @@ int gn;
|
||||||
gn = 0;
|
gn = 0;
|
||||||
else if (gn > 255)
|
else if (gn > 255)
|
||||||
gn = 255;
|
gn = 255;
|
||||||
return(gn);
|
return (gn);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -6247,7 +6268,7 @@ ComputeCalibrationData (int color, int dpi, int width, unsigned char *source,
|
||||||
sum = 0;
|
sum = 0;
|
||||||
for (l = 0; l < 66; l++)
|
for (l = 0; l < 66; l++)
|
||||||
sum += source[i + l * 5100 * 3];
|
sum += source[i + l * 5100 * 3];
|
||||||
data[i] = EvalGain(sum,l);
|
data[i] = EvalGain (sum, l);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
data[i] = 0x00;
|
data[i] = 0x00;
|
||||||
|
@ -6262,7 +6283,7 @@ ComputeCalibrationData (int color, int dpi, int width, unsigned char *source,
|
||||||
sum = 0;
|
sum = 0;
|
||||||
for (l = 0; l < 66; l++)
|
for (l = 0; l < 66; l++)
|
||||||
sum += source[i + l * 5100 * 3 + 5100];
|
sum += source[i + l * 5100 * 3 + 5100];
|
||||||
data[p + i] = EvalGain(sum,l);
|
data[p + i] = EvalGain (sum, l);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -6276,7 +6297,7 @@ ComputeCalibrationData (int color, int dpi, int width, unsigned char *source,
|
||||||
sum = 0;
|
sum = 0;
|
||||||
for (l = 0; l < 66; l++)
|
for (l = 0; l < 66; l++)
|
||||||
sum += source[i + l * 5100 * 3 + 5100 * 2];
|
sum += source[i + l * 5100 * 3 + 5100 * 2];
|
||||||
data[p + i] = EvalGain(sum,l);
|
data[p + i] = EvalGain (sum, l);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
data[p + i] = 0x00;
|
data[p + i] = 0x00;
|
||||||
|
|
Ładowanie…
Reference in New Issue