On Sat, Jan 10, 2009 at 05:54:43PM +0530, Mandeep Sandhu wrote: > Hi All, > > I'm new to USB device driver development. I've mostly done a few LKMs > (and an ethernet driver) on 2.6 kernels. And this too was sometime back > (around 1.5 yrs!)...so my knowledge on a few things might be rusty! :) > > I'm working on an embedded board and would like to validate a few > assumptions here before proceeding to start work on them. > > The board is a Compulab CM-X270L (PXA270). This board has USB master as > well as a slave port. It's currently running a patched 2.6.16 kernel > (the patch is from Compulab). It runs Compulab's Debian distribution > - "Debian GNU/Linux 3.1". Wow, that's old and out of date, and very obsolete. > We need to use the board as a USB slave to a machine which has a USB > master (root hub). This machine runs a proprietary OS and we do not > have access to it's source code and/or any other means to access it's > internals. What OS is it? > This proprietary OS supports the following USB classes: > > * CDC-ACM: Full ACM specs > > * CDC-ECM: The USB host side diver on the OS, only works with one > particular USB-ethernet dongle (say chip-X). So I'm guessing the OS > does not support the full ECM specs. > > We need to use the board as a slave and test it's interoperability with > the host for the above mentioned USB classes. > > I plan to do the following: > > 1) CDC-ACM: Compile the USB gadget serial driver as a LKM for the board. > If the module loads successfully, connecting the slave port to the > host should make it (the slave), enumerate successfully as an ACM > device. Did that work? > 2) CDC-ECM: This one's a bit tricky! I understand that the ethernet is > implemented in drivers/usb/gadget/ether.c. But, since the host side > driver is written to work with a particular chipset, will it work > "AS IS" with the ethernet gadget driver? It should. > Also, in case it doesn't work, can I tweak the gadget driver to make > it work/enumerate correctly with the host? Basically I'll be "faking" > the chip in s/w. Sure, you could. > Also, how can I verify that the kernel has recognized the USB slave device? Look at the log messages? > During kernel configuration, we can choose gadget support as a module. > Is there a separate module that needs to be present for gadget support or > will individual gadget drivers themselves provide this functionality? Your gadget controller needs to be loaded as well. > The following link states that the USB device functionality is not supported > in 2.6.16 kernels: > > http://www.compulab.co.il/mediawiki/index.php5?title=Linux_Kernel_for_CM-X270#USB_device > > But if I get the patches mentioned in the link and compile them as modules, > then can I enable the USB device functionality? Probably upgrade to a newer kernel version. YOu do realize how old 2.6.16 is, right? > Another pain-point is the fact that I can't re-flash the kernel on the > Compulab board with a newer version (I think 2.6.24 has support for USB > device). This is because the board directly boots up the kernel and does > not stop at the prompt. I've followed the procedure mentioned here: > > http://www.compulab.co.il/mediawiki/index.php5?title=Getting_started_with_Linux_on_CM-X270#Image_installation > > but this doesn't seem to work, the bootloader (ARMMon) still boots the kernel > directly! :( Any clues as to how to circumvent this problem? Contact your manufacturer? good luck, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html