Bus 001 Device 031: ID 1b8e:c003 Amlogic, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x1b8e Amlogic, Inc.
idProduct 0xc003
bcdDevice 0.20
iManufacturer 1 Amlogic
iProduct 2 GX-CHIP
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 32
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Device Status: 0x0000
(Bus Powered)
Need to match on 1b8e:c003
VID:PID device.
AM_REQ_WRITE_MEM
Write up to 64bytes of memory.
Control OUT :
bmRequestType: 0x40
bRequest: 1
wValue: 0xd900
wIndex: 0 (0x0000)
wLength: 64
bRequest=1
Address is encoded in wValue and wIndex : 0xd9000010 <=> wValue=0xd900 wIndex=0010
data length encodes the length to write.
AM_REQ_READ_MEM
Read up to 64bytes of memory.
Control IN :
bmRequestType: 0xc0
bRequest: 2
wValue: 0xd900
wIndex: 0 (0x0000)
wLength: 64
bRequest=2
Address is encoded in wValue and wIndex : 0xd9000010 <=> wValue=0xd900 wIndex=0010
data length encodes the length to read.
AM_REQ_FILL_MEM
Fill memory
Control OUT :
bmRequestType: 0x40
bRequest: 3
wValue: 0x0
wIndex: 0 (0x0)
wLength: Multiple of 8
bRequest=3
Data is a multiple of tuples of 4bytes values : 4 bytes : address (LE) 4 bytes : value (LE)
Writes value
at address
AM_REQ_MODIFY_MEM
Modify memory
Control OUT :
bmRequestType: 0x40
bRequest: 4
wValue: 0x0
wIndex: 0 (0x0)
wLength: 16
bRequest=4
wValue is opcode :
0: write data at mem
address
1: read/AND mask
/write mem
address
2: read/OR mask
/write mem
address
3: read/AND NOT mask
/write mem
address
4: read/(AND NOT mask
) OR (data
AND mask
)/write mem
address
5: read at mem2
address and write it into mem
address
6: read mem2
/AND mask
/write mem
address
7: copy from mem
to mem2
, words count in data
Data:
4 bytes: mem
address (LE)
4 bytes: data
(LE)
4 bytes: mask
(LE)
4 bytes: mem2
address (LE)
AM_REQ_RUN_IN_ADDR
bmRequestType: 0x40
bRequest: 5
wValue: 0xd900
wIndex: 0 (0x0000)
wLength: 4
Data: 10 00 00 d9
bRequest=0x05
Address is encoded in wValue and wIndex : 0xd9000010 <=> wValue=0xd900 wIndex=0010
Data seems to be 4 bytes (LE) encoding the address with the first bytes ORed with 0x10.
AM_REQ_WRITE_AUX
Control OUT :
bmRequestType: 0x40
bRequest: 3
wValue: 0x?
wIndex: ? (0x?)
wLength: 4
bRequest=6
Address is encoded in wValue and wIndex : 0xd9000010 <=> wValue=0xd900 wIndex=0010
Data encodes the value to write (LE)
TODO: How does it work
AM_REQ_READ_AUX
Control OUT :
bmRequestType: 0xc0
bRequest: 7
wValue: 0xd900
wIndex: 0 (0x0000)
wLength: 64
bRequest=7
Address is encoded in wValue and wIndex : 0xd9000010 <=> wValue=0xd900 wIndex=0010
Returned 4 bytes is the value read (LE)
TODO: How does it work
AM_REQ_WR_LARGE_MEM
First a control OUT to start the transfer :
Control OUT
bmRequestType: 0x40
bRequest: 17
wValue: 0x0020
wIndex: 1 (0x0001)
wLength: 16
Data: 00 c0 00 d9 20 00 00 00 d2 69 00 00 00 00 00 00
bRequest=0x11
wValue is the block length wIndex is the number of blocks wLength is the Control data length
Data Encoding : 4 bytes of destination address (LE) 4 bytes for data size (LE) 8 bytes ??
Then BULK Out on EP 0x02 of DATA.
AM_REQ_RD_LARGE_MEM
First a control OUT to start the transfer :
Control OUT
bmRequestType: 0x40
bRequest: 18
wValue: 0x0020
wIndex: 1 (0x0001)
wLength: 16
Data: 00 c0 00 d9 20 00 00 00 d2 69 00 00 00 00 00 00
bRequest=0x12
wValue is the block length wIndex is the number of blocks wLength is the Control data length
Data Encoding : 4 bytes of destination address (BE) 4 bytes for data size (BE) 8 bytes ??
Then BULK In on EP 0x03 of DATA.
AM_REQ_IDENTIFY_HOST
Control IN :
bmRequestType: 0xc0
bRequest: 32
wValue: 0x0000
wIndex: 0 (0x0000)
wLength: 4 to 8
bRequest=0x20
AM_REQ_TPL_CMD
=0x30
AM_REQ_TPL_STAT
=0x31
AM_REQ_DOWNLOAD
=0x32
AM_REQ_UPLOAD
=0x33
AM_REQ_BULKCMD
=0x34
AM_BULK_REPLY_LEN
=512
ChipID
is in fact AM_REQ_READ_MEM
at address 0x0xc8013c24
Control IN :
bmRequestType: 0xc0
bRequest: 2
wValue: 0xc801
wIndex: 15396 (0x3c24)
wLength: 12