Date: Sat, 28 Jul 2007 08:38:57 +0200 From: Hans Petter Selasky <hselasky@c2i.net> To: freebsd-usb@freebsd.org Cc: Kirk Davis <kirk.davis@epsb.ca> Subject: Re: Changing the poer on a USB device Message-ID: <200707280838.57586.hselasky@c2i.net> In-Reply-To: <DB9A31C316524A4A83E54A2C0D2065570413BC74@Exchange24.EDU.epsb.ca> References: <DB9A31C316524A4A83E54A2C0D2065570413BC74@Exchange24.EDU.epsb.ca>
next in thread | previous in thread | raw e-mail | index | archive | help
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; } --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 >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200707280838.57586.hselasky>