* backend/umax_pp_low.c: commented out a useless command sequence.

Added 55 AA pattern escaping in data block sending.
DEVEL_2_0_BRANCH-1
Stéphane Voltz 2001-05-23 06:18:54 +00:00
rodzic fdaea39018
commit c31543e6d5
1 zmienionych plików z 86 dodań i 81 usunięć

Wyświetl plik

@ -290,15 +290,10 @@ static int cmd4[] = { 0x00, 0x08, 0x00, 0xC4, -1 }; /* 2048 bytes size */
static int commande1[] = { 0x55, 0xAA, 0x00, 0x00, 0x22, 0x88, -1 }; static int commande1[] = { 0x55, 0xAA, 0x00, 0x00, 0x22, 0x88, -1 };
static int commande2[] = { static int commande2[] = { 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x0C,
0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xC1, 0x80, 0x00, 0x20, 0x02, 0x00,
0x02, 0x00, 0x00, 0x0C, 0x16, 0x41, 0xE0, 0xAC, 0x03, 0x03, 0x00, 0x00,
0x00, 0x03, 0xC1, 0x80, 0x46, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x20, 0x02, 0x00,
0x16, 0x41, 0xE0, 0xAC,
0x03, 0x03, 0x00, 0x00,
0x46, 0xA0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x10, -1 0x00, 0x10, -1
}; };
static int commande3[] = { 0x55, 0xAA, 0x00, 0x08, 0x00, 0x84, -1 }; static int commande3[] = { 0x55, 0xAA, 0x00, 0x08, 0x00, 0x84, -1 };
@ -570,9 +565,9 @@ sanei_umax_pp_InitPort (int port)
if (sanei_parport_info (i, &addr)) if (sanei_parport_info (i, &addr))
{ {
if (gPort == addr) if (gPort == addr)
{ {
found = 1; found = 1;
DBG (1, "Using /proc info\n"); DBG (1, "Using /proc info\n");
} }
} }
else else
@ -2445,6 +2440,12 @@ SendData (int *cmd, int len)
EPPRegisterWrite (0x1C, cmd[i]); EPPRegisterWrite (0x1C, cmd[i]);
reg = EPPRegisterRead (0x19) & 0xF8; reg = EPPRegisterRead (0x19) & 0xF8;
} }
/* escape 55 AA pattern by adding 1B */
if ((i < len - 1) && (cmd[i] == 0x55) && (cmd[i + 1] == 0xAA))
{
EPPRegisterWrite (0x1C, cmd[i]);
reg = EPPRegisterRead (0x19) & 0xF8;
}
i++; i++;
} }
DBG (16, "SendData, reg19=0x%02X (%s:%d)\n", reg, __FILE__, __LINE__); DBG (16, "SendData, reg19=0x%02X (%s:%d)\n", reg, __FILE__, __LINE__);
@ -2655,12 +2656,13 @@ InitBuffer001 (void)
SendCommandString (commande2); SendCommandString (commande2);
DBG (16, "SendCommandString(commande2) passed (%s:%d) \n", __FILE__, DBG (16, "SendCommandString(commande2) passed (%s:%d) \n", __FILE__,
__LINE__); __LINE__);
if (SendWord (cmd3) == 0) if (SendWord (cmd3) == 0) /* write 2048 to channel 4 */
{ {
DBG (0, "SendWord(cmd3) failed (%s:%d)\n", __FILE__, __LINE__); DBG (0, "SendWord(cmd3) failed (%s:%d)\n", __FILE__, __LINE__);
return (0); return (0);
} }
DBG (16, "SendWord(cmd3) passed (%s:%d)\n", __FILE__, __LINE__); DBG (16, "SendWord(cmd3) passed (%s:%d)\n", __FILE__, __LINE__);
/* write 2048 bytes: 4 * 512 bytes */
for (j = 0; j < 4; j++) for (j = 0; j < 4; j++)
{ {
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
@ -3185,15 +3187,15 @@ sanei_umax_pp_InitScanner (int recover)
j++; j++;
} }
sentcmd[j] = -1; sentcmd[j] = -1;
/* fails here if ther is an unfinished previous scan */ /* fails here if there is an unfinished previous scan */
if (CmdSetGet (0x02, j, sentcmd) != 1) /*if (CmdSetGet (0x02, j, sentcmd) != 1) */
{ /*{ */
DBG (0, "CmdSetGet(0x02,j,sentcmd) failed (%s:%d)\n", __FILE__, /*DBG (0, "CmdSetGet(0x02,j,sentcmd) failed (%s:%d)\n", __FILE__, */
__LINE__); /*__LINE__);*/
return (0); /*return (0); */
} /*} */
DBG (16, "CmdSetGet(0x02,j,sentcmd) passed ... (%s:%d)\n", __FILE__, /*DBG (16, "CmdSetGet(0x02,j,sentcmd) passed ... (%s:%d)\n", __FILE__,
__LINE__); __LINE__); */
/* needs some init */ /* needs some init */
if (sentcmd[15] == 0x18) if (sentcmd[15] == 0x18)
@ -3716,106 +3718,106 @@ Test610P (int value)
Outb (CONTROL, control); Outb (CONTROL, control);
Outb (DATA, 0x22); Outb (DATA, 0x22);
usleep(10000); usleep (10000);
Outb (DATA, 0x22); Outb (DATA, 0x22);
usleep(10000); usleep (10000);
Outb (DATA, 0x22); Outb (DATA, 0x22);
usleep(10000); usleep (10000);
Outb (DATA, 0x22); Outb (DATA, 0x22);
usleep(10000); usleep (10000);
Outb (DATA, 0x22); Outb (DATA, 0x22);
usleep(10000); usleep (10000);
Outb (DATA, 0x22); Outb (DATA, 0x22);
usleep(10000); usleep (10000);
Outb (DATA, 0x22); Outb (DATA, 0x22);
usleep(10000); usleep (10000);
Outb (DATA, 0x22); Outb (DATA, 0x22);
usleep(10000); usleep (10000);
Outb (DATA, 0xAA); Outb (DATA, 0xAA);
usleep(10000); usleep (10000);
Outb (DATA, 0xAA); Outb (DATA, 0xAA);
usleep(10000); usleep (10000);
Outb (DATA, 0xAA); Outb (DATA, 0xAA);
usleep(10000); usleep (10000);
Outb (DATA, 0xAA); Outb (DATA, 0xAA);
usleep(10000); usleep (10000);
Outb (DATA, 0xAA); Outb (DATA, 0xAA);
usleep(10000); usleep (10000);
Outb (DATA, 0xAA); Outb (DATA, 0xAA);
usleep(10000); usleep (10000);
Outb (DATA, 0xAA); Outb (DATA, 0xAA);
usleep(10000); usleep (10000);
Outb (DATA, 0xAA); Outb (DATA, 0xAA);
usleep(10000); usleep (10000);
Outb (DATA, 0x55); Outb (DATA, 0x55);
usleep(10000); usleep (10000);
Outb (DATA, 0x55); Outb (DATA, 0x55);
usleep(10000); usleep (10000);
Outb (DATA, 0x55); Outb (DATA, 0x55);
usleep(10000); usleep (10000);
Outb (DATA, 0x55); Outb (DATA, 0x55);
usleep(10000); usleep (10000);
Outb (DATA, 0x55); Outb (DATA, 0x55);
usleep(10000); usleep (10000);
Outb (DATA, 0x55); Outb (DATA, 0x55);
usleep(10000); usleep (10000);
Outb (DATA, 0x55); Outb (DATA, 0x55);
usleep(10000); usleep (10000);
Outb (DATA, 0x55); Outb (DATA, 0x55);
usleep(10000); usleep (10000);
Outb (DATA, 0x00); Outb (DATA, 0x00);
usleep(10000); usleep (10000);
Outb (DATA, 0x00); Outb (DATA, 0x00);
usleep(10000); usleep (10000);
Outb (DATA, 0x00); Outb (DATA, 0x00);
usleep(10000); usleep (10000);
Outb (DATA, 0x00); Outb (DATA, 0x00);
usleep(10000); usleep (10000);
Outb (DATA, 0x00); Outb (DATA, 0x00);
usleep(10000); usleep (10000);
Outb (DATA, 0x00); Outb (DATA, 0x00);
usleep(10000); usleep (10000);
Outb (DATA, 0x00); Outb (DATA, 0x00);
usleep(10000); usleep (10000);
Outb (DATA, 0x00); Outb (DATA, 0x00);
usleep(10000); usleep (10000);
Outb (DATA, 0xFF); Outb (DATA, 0xFF);
usleep(10000); usleep (10000);
Outb (DATA, 0xFF); Outb (DATA, 0xFF);
usleep(10000); usleep (10000);
Outb (DATA, 0xFF); Outb (DATA, 0xFF);
usleep(10000); usleep (10000);
Outb (DATA, 0xFF); Outb (DATA, 0xFF);
usleep(10000); usleep (10000);
Outb (DATA, 0xFF); Outb (DATA, 0xFF);
usleep(10000); usleep (10000);
Outb (DATA, 0xFF); Outb (DATA, 0xFF);
usleep(10000); usleep (10000);
Outb (DATA, 0xFF); Outb (DATA, 0xFF);
usleep(10000); usleep (10000);
Outb (DATA, 0xFF); Outb (DATA, 0xFF);
usleep(10000); usleep (10000);
if (value) if (value)
{ {
Outb (DATA, value); Outb (DATA, value);
usleep(10000); usleep (10000);
Outb (DATA, value); Outb (DATA, value);
usleep(10000); usleep (10000);
Outb (DATA, value); Outb (DATA, value);
usleep(10000); usleep (10000);
Outb (DATA, value); Outb (DATA, value);
usleep(10000); usleep (10000);
Outb (DATA, value); Outb (DATA, value);
usleep(10000); usleep (10000);
Outb (DATA, value); Outb (DATA, value);
usleep(10000); usleep (10000);
Outb (DATA, value); Outb (DATA, value);
usleep(10000); usleep (10000);
Outb (DATA, value); Outb (DATA, value);
usleep(10000); usleep (10000);
} }
val = Inb (STATUS); val = Inb (STATUS);
usleep(10000); usleep (10000);
Outb (DATA, data); Outb (DATA, data);
Outb (CONTROL, control); Outb (CONTROL, control);
return (1); return (1);
@ -3833,22 +3835,22 @@ In256 (void)
int val, i, tmp; int val, i, tmp;
Outb (CONTROL, 0x04); Outb (CONTROL, 0x04);
usleep(10000); usleep (10000);
Outb (CONTROL, 0x0C); Outb (CONTROL, 0x0C);
usleep(10000); usleep (10000);
val = Inb (STATUS); val = Inb (STATUS);
Outb (CONTROL, 0x0E); Outb (CONTROL, 0x0E);
usleep(10000); usleep (10000);
Outb (CONTROL, 0x0E); Outb (CONTROL, 0x0E);
usleep(10000); usleep (10000);
Outb (CONTROL, 0x0E); Outb (CONTROL, 0x0E);
usleep(10000); usleep (10000);
tmp = val; tmp = val;
i = 0; i = 0;
while ((tmp == val) && (i < 256)) while ((tmp == val) && (i < 256))
{ {
tmp = Inb (STATUS); tmp = Inb (STATUS);
usleep(10000); usleep (10000);
i++; i++;
} }
if (tmp != val) if (tmp != val)
@ -3858,9 +3860,9 @@ In256 (void)
return (0); return (0);
} }
Outb (CONTROL, 0x04); Outb (CONTROL, 0x04);
usleep(10000); usleep (10000);
Outb (CONTROL, 0x04); Outb (CONTROL, 0x04);
usleep(10000); usleep (10000);
return (1); return (1);
} }
@ -4172,7 +4174,8 @@ sanei_umax_pp_ProbeScanner (int recover)
break; break;
case 0x07: case 0x07:
WRITESLOW (0x12, 0x00); WRITESLOW (0x12, 0x00);
SLOWNIBBLEREGISTEREAD (0x12, 0x00); SLOWNIBBLEREGISTEREAD (0x12, 0x00); /* we may get 0x20 */
/* must depend on the parport */
break; break;
default: default:
WRITESLOW (0x12, 0x00); WRITESLOW (0x12, 0x00);
@ -4568,6 +4571,8 @@ sanei_umax_pp_ProbeScanner (int recover)
reg = EPPRegisterRead (0x10); reg = EPPRegisterRead (0x10);
/* 2 reports of CF, was FF first (typo ?) */ /* 2 reports of CF, was FF first (typo ?) */
/* CF seems a valid value */
/* in case of CF, we may have timeout ... */
if (reg != 0x00) if (reg != 0x00)
{ {
DBG (0, "Warning! expected reg10=0x00, found 0x%02X! (%s:%d) \n", DBG (0, "Warning! expected reg10=0x00, found 0x%02X! (%s:%d) \n",
@ -7128,9 +7133,9 @@ sanei_umax_pp_Scan (int x, int y, int width, int height, int dpi, int color,
{ {
/* write pnm header */ /* write pnm header */
if (color >= RGB_MODE) if (color >= RGB_MODE)
fprintf (fout, "P6\n%d %d\n255\n", tw, th); fprintf (fout, "P6\n%d %d\n255\n", bpl / bpp, th);
else else
fprintf (fout, "P5\n%d %d\n255\n", tw, th); fprintf (fout, "P5\n%d %d\n255\n", bpl / bpp, th);
} }
/* data reading loop */ /* data reading loop */