Endian-safe macros; moved remaining ASIC state into structure.

merge-requests/1/head
Jan Hauffa 2011-04-17 21:57:18 +02:00 zatwierdzone przez m. allan noah
rodzic f89a7962de
commit 589d6e15ee
2 zmienionych plików z 32 dodań i 26 usunięć

Wyświetl plik

@ -67,8 +67,6 @@ static SANE_Status WaitUnitReady (ASIC * chip);
/* ---------------------- low level ASIC functions -------------------------- */
static SANE_Byte RegisterBankStatus = ~0;
static SANE_Status
WriteIOControl (ASIC * chip, unsigned short wValue, unsigned short wIndex,
unsigned short wLength, SANE_Byte * pBuf)
@ -133,7 +131,7 @@ Mustek_SwitchBank (ASIC * chip, unsigned short reg)
return SANE_STATUS_INVAL;
}
if (RegisterBankStatus != bank)
if (chip->RegisterBankStatus != bank)
{
buf[0] = ES01_5F_REGISTER_BANK_SELECT;
buf[1] = bank;
@ -143,8 +141,8 @@ Mustek_SwitchBank (ASIC * chip, unsigned short reg)
if (status != SANE_STATUS_GOOD)
return status;
RegisterBankStatus = bank;
DBG (DBG_ASIC, "RegisterBankStatus=%d\n", RegisterBankStatus);
chip->RegisterBankStatus = bank;
DBG (DBG_ASIC, "RegisterBankStatus=%d\n", chip->RegisterBankStatus);
}
return SANE_STATUS_GOOD;
@ -314,27 +312,25 @@ Mustek_DMAWrite (ASIC * chip, unsigned int size, SANE_Byte * pData)
static SANE_Status
Mustek_SendData2Byte (ASIC * chip, unsigned short reg, SANE_Byte data)
{
static SANE_Bool isTransfer = SANE_FALSE;
static SANE_Byte dataBuf[4];
SANE_Status status = SANE_STATUS_GOOD;
if (!isTransfer)
if (!chip->is2ByteTransfer)
{
dataBuf[0] = LOBYTE (reg);
dataBuf[1] = data;
isTransfer = SANE_TRUE;
chip->dataBuf[0] = LOBYTE (reg);
chip->dataBuf[1] = data;
chip->is2ByteTransfer = SANE_TRUE;
}
else
{
dataBuf[2] = LOBYTE (reg);
dataBuf[3] = data;
isTransfer = SANE_FALSE;
chip->dataBuf[2] = LOBYTE (reg);
chip->dataBuf[3] = data;
chip->is2ByteTransfer = SANE_FALSE;
status = Mustek_SwitchBank (chip, reg);
if (status != SANE_STATUS_GOOD)
return status;
status = WriteIOControl (chip, 0xb0, 0, 4, dataBuf);
status = WriteIOControl (chip, 0xb0, 0, 4, chip->dataBuf);
}
return status;
@ -1994,6 +1990,9 @@ Asic_Initialize (ASIC * chip)
chip->isMotorMoveToFirstLine = MOTOR_MOVE_TO_FIRST_LINE_ENABLE;
chip->pShadingTable = NULL;
chip->RegisterBankStatus = 0xff;
chip->is2ByteTransfer = SANE_FALSE;
InitTiming (chip);
chip->firmwarestate = FS_ATTACHED;

Wyświetl plik

@ -51,19 +51,22 @@
/* ---------------------- low level ASIC defines -------------------------- */
#ifndef LOBYTE
#define LOBYTE(w) (SANE_Byte)((unsigned short)(w) & 0x00ff)
#ifndef WORDS_BIGENDIAN
# define LOBYTE(w) (SANE_Byte)((unsigned short)(w) & 0xff)
# define HIBYTE(w) (SANE_Byte)(((unsigned short)(w) >> 8) & 0xff)
# define BYTE0(x) (SANE_Byte)((unsigned int)(x) & 0xff)
# define BYTE1(x) (SANE_Byte)(((unsigned int)(x) >> 8) & 0xff)
# define BYTE2(x) (SANE_Byte)(((unsigned int)(x) >> 16) & 0xff)
# define BYTE3(x) (SANE_Byte)(((unsigned int)(x) >> 24) & 0xff)
#else
# define LOBYTE(w) (SANE_Byte)(((unsigned short)(w) >> 8) & 0xff)
# define HIBYTE(w) (SANE_Byte)((unsigned short)(w) & 0xff)
# define BYTE0(x) (SANE_Byte)(((unsigned int)(x) >> 24) & 0xff)
# define BYTE1(x) (SANE_Byte)(((unsigned int)(x) >> 16) & 0xff)
# define BYTE2(x) (SANE_Byte)(((unsigned int)(x) >> 8) & 0xff)
# define BYTE3(x) (SANE_Byte)((unsigned int)(x) & 0xff)
#endif
#ifndef HIBYTE
#define HIBYTE(w) (SANE_Byte)((unsigned short)(w)>>8 & 0x00ff)
#endif
#define BYTE0(x) (SANE_Byte)((unsigned int)(x) & 0xff)
#define BYTE1(x) (SANE_Byte)(((unsigned int)(x) >> 8) & 0xff)
#define BYTE2(x) (SANE_Byte)(((unsigned int)(x) >> 16) & 0xff)
#define BYTE3(x) (SANE_Byte)(((unsigned int)(x) >> 24) & 0xff)
typedef enum
{
@ -201,6 +204,10 @@ typedef struct
SANE_Byte isMotorMoveToFirstLine;
unsigned short * pShadingTable;
SANE_Byte RegisterBankStatus;
SANE_Bool is2ByteTransfer;
SANE_Byte dataBuf[4];
} ASIC;