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 -------------------------- */
|
/* ---------------------- low level ASIC functions -------------------------- */
|
||||||
|
|
||||||
static SANE_Byte RegisterBankStatus = ~0;
|
|
||||||
|
|
||||||
static SANE_Status
|
static SANE_Status
|
||||||
WriteIOControl (ASIC * chip, unsigned short wValue, unsigned short wIndex,
|
WriteIOControl (ASIC * chip, unsigned short wValue, unsigned short wIndex,
|
||||||
unsigned short wLength, SANE_Byte * pBuf)
|
unsigned short wLength, SANE_Byte * pBuf)
|
||||||
|
@ -133,7 +131,7 @@ Mustek_SwitchBank (ASIC * chip, unsigned short reg)
|
||||||
return SANE_STATUS_INVAL;
|
return SANE_STATUS_INVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RegisterBankStatus != bank)
|
if (chip->RegisterBankStatus != bank)
|
||||||
{
|
{
|
||||||
buf[0] = ES01_5F_REGISTER_BANK_SELECT;
|
buf[0] = ES01_5F_REGISTER_BANK_SELECT;
|
||||||
buf[1] = bank;
|
buf[1] = bank;
|
||||||
|
@ -143,8 +141,8 @@ Mustek_SwitchBank (ASIC * chip, unsigned short reg)
|
||||||
if (status != SANE_STATUS_GOOD)
|
if (status != SANE_STATUS_GOOD)
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
RegisterBankStatus = bank;
|
chip->RegisterBankStatus = bank;
|
||||||
DBG (DBG_ASIC, "RegisterBankStatus=%d\n", RegisterBankStatus);
|
DBG (DBG_ASIC, "RegisterBankStatus=%d\n", chip->RegisterBankStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
return SANE_STATUS_GOOD;
|
return SANE_STATUS_GOOD;
|
||||||
|
@ -314,27 +312,25 @@ Mustek_DMAWrite (ASIC * chip, unsigned int size, SANE_Byte * pData)
|
||||||
static SANE_Status
|
static SANE_Status
|
||||||
Mustek_SendData2Byte (ASIC * chip, unsigned short reg, SANE_Byte data)
|
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;
|
SANE_Status status = SANE_STATUS_GOOD;
|
||||||
|
|
||||||
if (!isTransfer)
|
if (!chip->is2ByteTransfer)
|
||||||
{
|
{
|
||||||
dataBuf[0] = LOBYTE (reg);
|
chip->dataBuf[0] = LOBYTE (reg);
|
||||||
dataBuf[1] = data;
|
chip->dataBuf[1] = data;
|
||||||
isTransfer = SANE_TRUE;
|
chip->is2ByteTransfer = SANE_TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dataBuf[2] = LOBYTE (reg);
|
chip->dataBuf[2] = LOBYTE (reg);
|
||||||
dataBuf[3] = data;
|
chip->dataBuf[3] = data;
|
||||||
isTransfer = SANE_FALSE;
|
chip->is2ByteTransfer = SANE_FALSE;
|
||||||
|
|
||||||
status = Mustek_SwitchBank (chip, reg);
|
status = Mustek_SwitchBank (chip, reg);
|
||||||
if (status != SANE_STATUS_GOOD)
|
if (status != SANE_STATUS_GOOD)
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
status = WriteIOControl (chip, 0xb0, 0, 4, dataBuf);
|
status = WriteIOControl (chip, 0xb0, 0, 4, chip->dataBuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
@ -1994,6 +1990,9 @@ Asic_Initialize (ASIC * chip)
|
||||||
chip->isMotorMoveToFirstLine = MOTOR_MOVE_TO_FIRST_LINE_ENABLE;
|
chip->isMotorMoveToFirstLine = MOTOR_MOVE_TO_FIRST_LINE_ENABLE;
|
||||||
chip->pShadingTable = NULL;
|
chip->pShadingTable = NULL;
|
||||||
|
|
||||||
|
chip->RegisterBankStatus = 0xff;
|
||||||
|
chip->is2ByteTransfer = SANE_FALSE;
|
||||||
|
|
||||||
InitTiming (chip);
|
InitTiming (chip);
|
||||||
|
|
||||||
chip->firmwarestate = FS_ATTACHED;
|
chip->firmwarestate = FS_ATTACHED;
|
||||||
|
|
|
@ -51,19 +51,22 @@
|
||||||
|
|
||||||
/* ---------------------- low level ASIC defines -------------------------- */
|
/* ---------------------- low level ASIC defines -------------------------- */
|
||||||
|
|
||||||
#ifndef LOBYTE
|
#ifndef WORDS_BIGENDIAN
|
||||||
#define LOBYTE(w) (SANE_Byte)((unsigned short)(w) & 0x00ff)
|
# 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
|
#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
|
typedef enum
|
||||||
{
|
{
|
||||||
|
@ -201,6 +204,10 @@ typedef struct
|
||||||
|
|
||||||
SANE_Byte isMotorMoveToFirstLine;
|
SANE_Byte isMotorMoveToFirstLine;
|
||||||
unsigned short * pShadingTable;
|
unsigned short * pShadingTable;
|
||||||
|
|
||||||
|
SANE_Byte RegisterBankStatus;
|
||||||
|
SANE_Bool is2ByteTransfer;
|
||||||
|
SANE_Byte dataBuf[4];
|
||||||
} ASIC;
|
} ASIC;
|
||||||
|
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue