kopia lustrzana https://gitlab.com/sane-project/backends
Endian-safe macros; moved remaining ASIC state into structure.
rodzic
f89a7962de
commit
589d6e15ee
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue