Do you know about the GL850G? It is about $0.30. The chip is
automatic, no need for SMBUS.

http://www.kean.com.au/oshw/WR703N/GL850G%20USB%20Hub%201.07.pdf

http://www.aliexpress.com/item/new-hope-GL850G-GL850-SSOP28-100pcs-lots/1860488763.html

On Mon, Aug 18, 2014 at 12:20 PM, George Ioakimedes
<georgei...@gmail.com> wrote:
> I'm working on my new Baseboard design which has a Microchip 4-port USB Hub
> chip on it. This chip uses only a SMBus Write and Read command. I upgraded
> the kernel to 3.4.90 since 3.4.75 was still using 200kHz as the I2C default
> speed.
>
> I'm using Python to issue commands and looking at a write_i2c_block_data
> command on the scope I have confirmed that the command structure is sent
> properly. I need to also decode on the scope the read but it appears that
> the read is missing the 1st byte.
>
> If I issue a
>
> sudo i2cdump -y 1 0x2c s
> Error: Adapter does not have SMBus block read capability
>
> but if I issue a
> cubie@Cubian:~$ sudo i2cdump -y 1 0x2c i
>      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
> 00: 20 24 04 14 25 b3 0b 9b 00 01 00 00 00 01 32 01     $??%???.?...?2?
> 10: 32 32 04 09 13 15 0a 49 00 4f 00 00 00 54 00 45    22?????I.O...T.E
> 20: 20 43 00 48 00 4e 00 4f 00 4c 00 4f 00 47 00 49     C.H.N.O.L.O.G.I
> 30: 00 45 00 53 00 00 00 4c 00 4c 00 43 00 00 00 00    .E.S...L.L.C....
> 40: 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ...............
> 50: 00 00 00 00 00 42 00 69 00 67 00 00 00 42 00 72    .....B.i.g...B.r
> 60: 20 6f 00 74 00 68 00 65 00 72 00 00 00 42 00 61     o.t.h.e.r...B.a
> 70: 00 73 00 65 00 62 00 6f 00 61 00 72 00 64 00 00    .s.e.b.o.a.r.d..
> 80: 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ...............
> 90: 00 00 00 32 00 30 00 31 00 34 00 30 00 38 00 30    ...2.0.1.4.0.8.0
> a0: 20 30 00 30 00 31 00 00 00 00 00 00 00 00 00 00     0.0.1..........
> b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
> c0: 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ...............
> d0: 00 e1 00 00 00 00 00 00 00 00 00 00 00 00 00 00    .?..............
> e0: 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ...............
> f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
>
> Notice how every other "0" byte is a 0x20?
>
> If I run this code:
>
> import smbus
> bus = smbus.SMBus(1)
> reg00 = [0x20, 0x24, 0x04, 0x14, 0x25, 0xB3, 0x0B, 0x9B, 0x00, 0x01, 0x00,
> 0x00, 0x00, 0x01, 0x32, 0x01, 0x32]
> bus.write_i2c_block_data(0x2c, 0x00, reg00)
>
> You get the above dump. From my understanding the 1st byte is supposed to be
> the number of bytes being sent. That code does appear correctly on the scope
> when I'm writing data
>
> I've made some progress and it appears that the hub does get enumerated:
>
> cubie@Cubian:~$ lsusb
> Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
> Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
> Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
> Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
> Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
>
> But if I try to get some additional information about the hub, lsusb
> complains that it couldn't open the hub so I'm not sure if it really
> enumerated properly
>
> cubie@Cubian:~$ lsusb -v -s 001:003
>
> Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
> Couldn't open device, some information will be missing
> Device Descriptor:
>   bLength                18
>   bDescriptorType         1
>   bcdUSB               2.00
>   bDeviceClass            9 Hub
>   bDeviceSubClass         0 Unused
>   bDeviceProtocol         2 TT per port
>   bMaxPacketSize0        64
>   idVendor           0x0424 Standard Microsystems Corp.
>   idProduct          0x2514 USB 2.0 Hub
>   bcdDevice            b.b3
>   iManufacturer           1
>   iProduct                2
>   iSerial                 3
>   bNumConfigurations      1
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength           41
>     bNumInterfaces          1
>     bConfigurationValue     1
>     iConfiguration          0
>     bmAttributes         0xe0
>       Self Powered
>       Remote Wakeup
>     MaxPower                2mA
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       0
>       bNumEndpoints           1
>       bInterfaceClass         9 Hub
>       bInterfaceSubClass      0 Unused
>       bInterfaceProtocol      1 Single TT
>       iInterface              0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x81  EP 1 IN
>         bmAttributes            3
>           Transfer Type            Interrupt
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0001  1x 1 bytes
>         bInterval              12
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       1
>       bNumEndpoints           1
>       bInterfaceClass         9 Hub
>       bInterfaceSubClass      0 Unused
>       bInterfaceProtocol      2 TT per port
>       iInterface              0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x81  EP 1 IN
>         bmAttributes            3
>           Transfer Type            Interrupt
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0001  1x 1 bytes
>         bInterval              12
>
> If I plug a keyboard into the hub it does not show up so I know that
> something is still not right. Since the idVendor and idProduct come through
> correctly I am going to assume that at least part of the registers did get
> written correctly even though reading them says they did not.
>
> If anyone has any helpful advice or knowledge of this I would greatly
> appreciate some feedback!
>
> Thanks,
> George
>
> --
> You received this message because you are subscribed to the Google Groups
> "linux-sunxi" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to linux-sunxi+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.



-- 
Jon Smirl
jonsm...@gmail.com

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to