[sane-devel] Trying to understand GL640
The enum is probably from a different datasheet, possibly an earlier hardware version? A USB control message has an 8 byte setup packet with format byte requesttype, byte request, word value, word index, word length, .. remainder of packet, if any, follows The value shown in the enum is the value to be inserted into the "word value" field above when sending a USB control message. In the backend canon630u-common.c function gl640WriteControl uses that enum value and inserts it into the field "value" and sends the USB control message. I did not see the USB control message discussed in that .pdf. Do not confuse that enum and its values with the General Purpose Registers (which actually exist in hardware) on page 10. The USB control message is a structure of data bytes which are in transport to/from host/device; it does not have hardware registers. regards, Gerald
[sane-devel] Trying to understand GL640
Hello, I am trying to understand the GL640USB IEEE-1284 to USB Bridge. I have looked at a few implementations of this bridge. Each time the following registers are used (this code is from the canon630u backend): /* Register codes for the bridge. These are NOT the registers for the scanner chip on the other side of the bridge. */ typedef enum { GL640_BULK_SETUP = 0x82, GL640_EPP_ADDR = 0x83, GL640_EPP_DATA_READ = 0x84, GL640_EPP_DATA_WRITE = 0x85, GL640_SPP_STATUS = 0x86, GL640_SPP_CONTROL = 0x87, GL640_SPP_DATA = 0x88, GL640_GPIO_OE = 0x89, GL640_GPIO_READ = 0x8a, GL640_GPIO_WRITE = 0x8b } GL640_Request; However, I have gone through the official datasheet supplied by Genesys and could not find any documentation on these register addresses. In fact, according to page 10 in the datasheet, the registers on the above addresses have different meanings. What am I missing here?? Thanks, Robert