> >
> > >     When application does a read or even mount of the flash device
how
> > > is that information passed on to the device driver so that it can
> > > convert that to specific Ctrl/Bulk transfer types and pass it on
to
> > > HCD?
> >
> > I believe the driver stack will look something like this:
> >
> > App that calls read()                       USERMODE
> > ------------------------------------------
> > File system driver (like ext3, fat32)       KERNEL MODE
> > SCSI driver
> >USB-Storage
> > usbcore
> > USB Host controller driver (like EHCI)
> > PCI driver
> > ------------------------------------------
> > HARDWARE
> 
> I have a doubt here. I am not much familiar with USB-storage API but,
> does this mean USB-Storage driver registers with the SCSI driver and
> the information flow happens that way? I am confused because if we see
> normal devices like serial port which have a device files like
> /dev/ttyS0 they have a specific major, minor number which the driver
> specifies while registering the I can see how the system calls get
> routed through to the specific driver. But in the case of USB, when
> the class specific driver registers with the respective subsystem
> (USB-storage with SCSI/file system layer) how does the USB-Storage
> driver specify to SCSI driver that it is taking care of the flash
> device?


I'm not a SCSI guru, but...

Yes, I believe usb-storage registers with the SCSI stack.

And I think it happens here:
http://www.linux-m32r.org/lxr/http/source/drivers/usb/storage/usb.c?v=2.
6.20-rc1;a=i386#L1007






> >
> 
> >
> >
> > >    Does the same process happen for all of the devices? Like if a
USB
> > > keyboard is connected and if I want to read from USB keyboard, I
will
> > > still read from standard keyboard interface?
> >
> > Yes, but obviously the driver stack looks a little different.
> > In the case of HID I think it looks something like this...
> >
> > App like X                                  USERMODE
> > ------------------------------------------
> > HID                                         KERNEL MODE
> > usbcore
> > USB Host controller driver (like EHCI)
> > PCI driver
> > ------------------------------------------
> > HARDWARE
> >
> >
> 
> 
> Here how will HID layer differentiate between USB and PS2
> mouse/keyboard? Will it read from both the interfaces?

Again I missed out a driver (hid-core?). This driver should  register
with HID and translation the HID messages to send to usbcore...


 App like X                                  USERMODE
 ------------------------------------------
 HID                                         KERNEL MODE
 hid-core
 usbcore
 USB Host controller driver (like EHCI)
 PCI driver
 ------------------------------------------
 HARDWARE

See:
http://www.linux-m32r.org/lxr/http/source/drivers/usb/input/hid-core.c?v
=2.6.20-rc1;a=i386


dom



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to