Messages in this thread | | | Date | Wed, 18 May 2005 08:58:15 -0700 | From | Greg KH <> | Subject | Re: Linux support for SiLabs CP210x devices |
| |
Back in November of last year, I wrote about how SiLabs were distributing a binary only version of a usb-serial driver for Linux that was violating the GPL <http://thread.gmane.org/gmane.linux.kernel/256403>
Well, it looks like SiLabs and MCCI have finally released the source code to their driver, but in obfuscated form. I've attached the .zip file to this message so that everyone can see this horrible nightmare of a "driver". As per the GPL, they are still violating the license as obfuscated code releases is not allowed. And as such, they are still violating my copyright, and the copyrights of a few other kernel developers.
So, just to re-iterate, I very soundly do not recommend ever buying any devices from this company, as if this is the way they treat well established legal issues, who know what else they have done...
Oh, and if you don't want to go through the trouble of opening up the zip file, I've included inline their header file, in all of it's glory, with no changes made by me at all, below.
And yes, if you notice the 2.6 kernel does now support this device, but that is because of some people reverse engineering the device. It was by no help of the company involved (when seeing this code, those developers just laughed and said it would be more work to try to read it than to finish up the driver itself.)
thanks,
greg k-h
-------------------- actual .h file is below -------
#ifndef \ O1001101000 #define \ O1001101000 \ #define \ l1001101001 \ \ 0200 #define \ l1001101010 \ \ 0x00 #define \ l1001101011 \ \ 0201 #define \ O1001101100 \ \ 0x01 #define \ l1001101101 \ \ 0x82 #define \ l1001101110 \ \ 0x02 #define \ O1001101111 \ \ 0x83 #define \ l1001110000 \ \ 0x03 #define \ O1001110001 \ \ 0xa0 #define \ O1001110010 \ \ 0x20 #define \ O1001110011 \ \ 0xa1 #define \ O1001110100 \ \ 0x21 #define \ O1001110101 \ \ 0242 #define \ O1001110110 \ \ 0x22 #define \ O1001110111 \ \ 0243 #define \ l1001111000 \ \ 043 #define \ O1001111001 \ \ 0300 #define \ O1001111010 \ \ 0100 #define \ O1001111011 \ \ 0xc1 #define \ l1001111100 \ \ 0x41 #define \ O1001111101 \ \ 0302 #define \ O1001111110 \ \ 0102 #define \ l1001111111 \ \ 0xc3 #define \ l1010000000 \ \ 0x43 #define \ l1010000001 \ \ (7) #define \ l1010000010 \ \ (1 << l1010000001) #define \ O1010000011 \ \ (0 << l1010000001) #define \ O1010000100 \ \ (1 << l1010000001) #define \ O1010000101 \ \ (5) #define \ O1010000110 \ \ (3 << O1010000101) #define \ l1010000111 \ \ (0 << O1010000101) #define \ l1010001000 \ \ (1 << O1010000101) #define \ O1010001001 \ \ (2 << O1010000101) #define \ l1010001010 \ \ (3 << O1010000101) #define \ O1010001011 \ \ (0) #define \ O1010001100 \ \ (0x1f << O1010001011) #define \ l1010001101 \ \ (0x00 << O1010001011) #define \ O1010001110 \ \ (0x01 << O1010001011) #define \ l1010001111 \ \ (0x02 << O1010001011) #define \ O1010010000 \ \ (0x03 << O1010001011) #define \ O1010010001 \ \ 0 #define \ l1010010010 \ \ 1 #define \ l1010010011 \ \ 3 #define \ l1010010100 \ \ 5 #define \ l1010010101 \ \ 6 #define \ l1010010110 \ \ 7 #define \ O1010010111 \ \ 8 #define \ l1010011000 \ \ 011 #define \ O1010011001 \ \ 0xa #define \ O1010011010 \ \ 0xb #define \ l1010011011 \ \ 0xc #define \ l1010011100 \ \ 1 #define \ O1010011101 \ \ 2 #define \ l1010011110 \ \ 3 #define \ l1010011111 \ \ 4 #define \ l1010100000 \ \ 5 #define \ l1010100001 \ \ 0 #define \ l1010100010 \ \ 1 #define \ O1010100011 \ \ 2 #define \ l1010100100 \ \ 3 #define \ O1010100101 \ \ 0 #define \ l1010100110 \ \ 1 #define \ O1010100111 \ \ 0x80 #define \ l1010101000 \ \ 0x0f #define \ O1010101001 \ \ (1 << 0) #define \ O1010101010 \ \ (1 << 1) #define \ O1010101011 \ \ (1 << 0) #endif [unhandled content-type:application/x-gunzip] | |