On 12/2/06, Greg KH <[EMAIL PROTECTED]> wrote:
> On Fri, Dec 01, 2006 at 05:12:56PM -0700, David Lopez wrote:
> > On 12/1/06, Greg KH <[EMAIL PROTECTED]> wrote:
> > >On Fri, Dec 01, 2006 at 01:37:22PM -0700, David Lopez wrote:
> > >> From: David Lopez <[EMAIL PROTECTED]>
> > >
> > >> +             /* Gets the Product ID for the device */
> > >> +             case IOCTL_LJ_GET_PRODUCT_ID:
> > >> +                     retval = put_user(dev->udev->descriptor.idProduct,
> > >> +                                             (unsigned int __user
> > >*)arg);
> > >> +                     break;
> > >
> > >You can get this from sysfs or usbfs today.  Don't duplicate it please.
> >
> > I didn't look at sysfs or usbfs.  I just needed a way to determine the
> > device from a device node in /dev from user space, and it seemed easy
> > to use ioctl.
>
> Ok, but as there are other ways to get this information, can you take it
> out please?

I'll take it out.


> > >> +             /* Sets the bulk in endpoint for the next read from an
> > >> integer argument.
> > >> +              * There are two bulk endpoints, which are endpoints 0 and
> > >1
> > >> when
> > >> +              * setting the integer argument. */
> > >> +             case IOCTL_LJ_SET_BULK_IN_ENDPOINT:
> > >> +                     data = (void __user *) arg;
> > >> +                     if (data == NULL)
> > >> +                             break;
> > >> +
> > >> +                     if (copy_from_user(&ep, data, sizeof(int))) {
> > >> +                             retval = -EFAULT;
> > >> +                             break;
> > >> +                     }
> > >> +
> > >> +                     if(ep > N_BULK_IN_ENDPOINTS || ep < 0)
> > >> +                             retval = -EINVAL;
> > >> +                     else
> > >> +                             dev->next_bulk_in_endpoint = ep;
> > >> +                     break;
> > >
> > >Why is this needed?
> >
> > The devices have a stream mode which can only be read from the second
> > bulk in endpoint.  All other communications are done from the first
> > bulk in and bulk out endpoints, and I needed some way to indicate that
> > the the next read should be from second bulk in endpoint keeping in
> > mind that first bulk in endpoint can still be used.  Is there a better
> > way to do this?
>
> Can you just create a new device node for the second endpoint?  That way
> your userspace tools don't have to toggle anything, and it might make
> things for users simpler.  Just use the second device node to read from
> the endpoint used for streaming.  Writing on it might not need to do
> anything (or you could tie the write into the single out endpoint,
> that's up to you.)
>
> Would that work?

To do this do I call usb_register_dev twice with different endpoint
info in the usb_ljusb struct that I pass in the probe function?
This could work, though it is preferred that the second node's
numbering is +1 of the first.  So for example, the first node for the
first set of endpoints would be ljusb0 and second endpoint would be
ljusb1.  Though now that I think about it a global mutex should help
with that.

Someone pointed out to me that there is the possibility of using the
libusb library as opposed to having a kernel driver, which would be
preferable.  I will need to test this library to see if it what I am
looking for and is stable enough, and if all goes well I might not
need to submit this kernel driver.


Thanks,
David

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to