- fixed gl646_bulk_write_register regarding data alignment on ARM arch.

(bug  #303681)
merge-requests/1/head
Stéphane Voltz 2006-07-30 14:56:48 +00:00
rodzic d56df03942
commit ce8dbc6847
2 zmienionych plików z 18 dodań i 6 usunięć

Wyświetl plik

@ -1,3 +1,8 @@
2006-07-30 Stephane Voltz <stefdev@modulonet.fr>
* backend/genesys_gl646.c: use an intermediate char buffer
for register bulk write (bug #303681).
2006-07-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
* tools/libtool-get-dll-ext: Fixed compilation problem with newer

Wyświetl plik

@ -257,6 +257,7 @@ gl646_bulk_write_register (Genesys_Device * dev,
{
SANE_Status status;
u_int8_t outdata[8];
u_int8_t buffer[GENESYS_MAX_REGS * 2];
unsigned int i;
/* handle differently sized register sets, reg[0x00] is the last one */
@ -280,7 +281,7 @@ gl646_bulk_write_register (Genesys_Device * dev,
status =
sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_BUFFER,
VALUE_BUFFER, INDEX, sizeof (outdata), outdata);
VALUE_BUFFER, INDEX, sizeof(outdata), outdata);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error,
@ -288,8 +289,15 @@ gl646_bulk_write_register (Genesys_Device * dev,
sane_strstatus (status));
return status;
}
status = sanei_usb_write_bulk (dev->dn, (u_int8_t *) reg, &size);
/* copy registers and values in data buffer */
for (i=0; i<size; i+=2)
{
buffer[i] = reg[i/2].address;
buffer[i+1] = reg[i/2].value;
}
status = sanei_usb_write_bulk (dev->dn, buffer, &size);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error,
@ -298,9 +306,8 @@ gl646_bulk_write_register (Genesys_Device * dev,
return status;
}
for (i = 0; i < size / 2; i++)
DBG (DBG_io2, "reg[0x%02x] = 0x%02x\n", ((u_int8_t *) reg)[2 * i],
((u_int8_t *) reg)[2 * i + 1]);
for (i = 0; i < size ; i+=2)
DBG (DBG_io2, "reg[0x%02x] = 0x%02x\n", buffer[i], buffer[i + 1]);
DBG (DBG_io, "gl646_bulk_write_register: wrote %d bytes\n", size);
return status;