Changing the poer on a USB device
Kirk Davis
kirk.davis at epsb.ca
Mon Jul 30 18:24:53 UTC 2007
Hi Hans,
> -----Original Message-----
> From: Hans Petter Selasky [mailto:hselasky at c2i.net]
> Hi Kirk!
>
> There is a function that is called "usbd_do_request()" in the kernel
that will do this.
>
>Here is an example from my new USB stack:
>
>static u_int8_t
>umass_bbb_get_max_lun(struct umass_softc *sc) {
> usb_device_request_t req;
> usbd_status err;
> u_int8_t buf = 0;
>
> /* The Get Max Lun command is a class-specific request. */
> req.bmRequestType = UT_READ_CLASS_INTERFACE;
> req.bRequest = UR_BBB_GET_MAX_LUN;
> USETW(req.wValue, 0);
> req.wIndex[0] = sc->sc_iface_no;
> req.wIndex[1] = 0;
> USETW(req.wLength, 1);
>
> err = usbd_do_request(sc->sc_udev, &req, &buf);
> if (err) {
> buf = 0;
>
> /* Device doesn't support Get Max Lun request. */
> printf("%s: Get Max Lun not supported (%s)\n",
> sc->sc_name, usbd_errstr(err));
> }
> return buf;
>}
OK. Thanks Hans
Is there a kernel equivelent for usb_reset(handle) ? It looks like
after I talk to the Blackberry device to set the power levels and mode I
need to reset the usb device to it will then tell the bus the correct
current level.
>
>--HPS
>
>On Friday 27 July 2007, Kirk Davis wrote:
>> Hi,
>> I am trying to write a device driver for FreeBSD that will
detect and
>> change a newer blackberry. I have the driver detecting and enabling
>> the port when I insert the blackberry but it only configs the USB
port
>> for 100mA rate. The blackberry needs 500mA and it displays some
>> information on the blackberry screen that they current is to low.
>>
>> Looking at some other code that was written for libusb it looks
like
>> that is what is needed to turn on the charging:
>>
>> void charge(struct usb_dev_handle *handle) {
>> // the special sauce... these steps seem to do the trick
>> // for the 7750 series... needs testing on others
>> char buffer[2];
>> usb_control_msg(handle, 0xc0, 0xa5, 0, 1, buffer, 2, 100);
>> usb_control_msg(handle, 0x40, 0xa2, 0, 1, buffer, 0, 100); }
>>
>>
>> I'm a weak C programmer and this is my first attempt at a
driver.
>> Can anyone give my some advise on how I would do something like this
>> in a driver? I'm not sure of the kernel equivalent to
>> usb_control_msg.
>>
>> Thanks, Kirk
>>
>>
>>
>> Kirk Davis
>> Sr. Network Analyst, ITS
>> Edmonton Public Schools
>>
---- Kirk
More information about the freebsd-usb
mailing list