Commit Graph

253644 Commits

Author SHA1 Message Date
Benoit Goby
ffdab0c0c4 usb: gadget: rndis: don't use dev_get_stats
Since 2.6.36, spin_lock_bh has been added to dev_txq_stats_fold. So
dev_get_stats cannot be called from atomic context.

Replaced it by netdev_stats_to_stats64 to copy the stats directly. This
will work if the device driver does not need txq tx stats folding.

http://lkml.org/lkml/2010/9/20/250

Change-Id: I715b00892beda56cc369139d6e2bdc9efb6bfe79
Signed-off-by: Benoit Goby <benoit@android.com>
2011-06-14 09:09:11 -07:00
Mike Lockwood
16c08c2871 USB: gadget: f_mtp: Zero length packet fixes
Send zero length packets at end of transfers that are a multiple of the
bulk max packet size as required by MTP.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:10 -07:00
Mike Lockwood
3e800b6fa0 USB: gadget: f_mtp: Support for file transfer length greater than 4 gigabytes
For backward compatibility with PTP, MTP is limited to a 32-bit file size.
When transferring files greater than 4 gig, MTP uses 0xFFFFFFFF as the file size
and the receiver reads until it receives a short packet.

Expanded size of mtp_file_range.length to 64 bits and added support for
writing zero length packets.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:10 -07:00
Mike Lockwood
76ac655018 USB: gadget: f_mtp: Return zero result for successful file transfer.
Returning number of bytes transfered does not work for files > 2 gig
since ioctl() result is a signed integer.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:10 -07:00
Mike Lockwood
491d4186e0 USB: gadget: f_mtp: MTP driver cleanup:
Use a work queue instead of a separate thread for file transfer ioctls
(note: the file transfer must be done on a kernel thread rather than in
process context so vfs_read and vfs_write will use the correct address space
for the buffers)

Enforce requirement that only one ioctl call may be active at a time,
and remove mutex in mtp_send_event that is now no longer necessary.

Synchronize around use of shared variables to avoid SMP issues

Fix mismatched calls to fget and fput

Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:09 -07:00
Benoit Goby
ffab952c86 usb: gadget: android: Remove WAKEUP flag from bmAttributes
Remove USB_CONFIG_ATT_WAKEUP from bmAttributes as we don't
support remote wakeup. This fixes an issue with the USB 2.0
compliance test tool.

Change-Id: Ic15e44710069f3f05ace6a82bbfa2b85a3649027
Signed-off-by: Benoit Goby <benoit@android.com>
2011-06-14 09:09:09 -07:00
Mike Lockwood
d6b1d7348a USB: gadget: android: Disable MTP when RNDIS function is enabled.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:09 -07:00
Mike Lockwood
1de4d4d8df USB: gadget: f_mtp: Add ioctl for sending events via the interrupt endpoint
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:09 -07:00
Dmitry Shmidt
7aea385332 drivers: usb: gadget: rndis: Fix section mismatch warning
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2011-06-14 09:09:09 -07:00
Dmitry Shmidt
d43a1a5594 drivers: usb: gadget: mass_storage: Fix section mismatch warning
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2011-06-14 09:09:08 -07:00
Dmitry Shmidt
577e37a65b drivers: usb: gadget: Fix section mismatch warning
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2011-06-14 09:09:08 -07:00
Mike Lockwood
28acc1a88c USB: composite: Add usb_composite_force_reset utility to force enumeration
Use this rather than calling usb_gadget_disconnect and usb_gadget_connect
directly to avoid sending USB disconnect events to userspace when resetting
the bus.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:08 -07:00
Mike Lockwood
4a4414416d USB: gadget: android: Remove unused function android_usb_set_connected()
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:08 -07:00
Mike Lockwood
8da4cc8f77 USB: gadget: composite: Move switch_set_state calls to a work queue
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:08 -07:00
Mike Lockwood
ba83b0158e USB: gadget: f_mtp: USB gadget function driver for MTP and PTP device support.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:08 -07:00
Mike Lockwood
fb52b002c2 USB: composite: Add support for functions overriding USB_DT_STRING descriptors
Needed for MTP support.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:07 -07:00
Mike Lockwood
e2dc503c42 USB: gadget: composite: Add userspace notifications for USB state changes
Add switch to notify current USB configuration.  This can be used to detect
USB connect and disconnect events.

Broadcast a change via the usb_composite class when a USB function is
enabled or disabled.

Rename usb_function.hidden to usb_function.disabled.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:07 -07:00
Mike Lockwood
0de5a69f62 USB: gadget: f_mass_storage: Integrate android customizations
Integrate support for android composite driver and platform data
within CONFIG_USB_ANDROID_MASS_STORAGE.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:07 -07:00
Velempati Chiranjeevi
efbf862863 USB: android gadget: mass storage: Fix format issue for Vista Host
As part of formating the mass storage device, Host sends the INQUIRY
scsi command. As per the standard, the command length for this
command should be 6 bytes, whereas the Vista host sends 12 bytes.

When the command length of the command is not equal to the standard
length, the device sends a phase error as part of the status phase.
When the host receives a phase error, it re-enumerates, hence the
error.

If the command is INQUIRY, and the command length is 12 bytes,
treating this as a good command and not sending the phase error
to the host fixes this issue.

Signed-off-by: Velempati Chiranjeevi <c_cvelem@qualcomm.com>
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:07 -07:00
Mike Lockwood
27d1890c42 USB: gadget: f_mass_storage: Defer handling interface changes until it is safe.
Pulling in some code from file_storage.c, we now handle interface changes
in do_set_config(), which is now not called until any pending requests have
been successfully completed or cancelled.

This fixes a race condition that resulted in usb_ep_free_request() being called
while the request is still busy.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:07 -07:00
Arve Hjønnevåg
0130a0e683 USB: gadget: android: mass_storage: Use spin_lock_irqsave/spin_unlock_irqrestore
The old code did not allways disable interrupts when called from thread
context, but tried to lock the same spinlock from interrupt context.

This was merged from a change to drivers/usb/function/mass_storage.c
in the android-msm-2.6.29 branch.

Signed-off-by: Arve Hjønnevåg <arve@android.com>
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:06 -07:00
Mike Lockwood
0a4c12d4fa USB: gadget: android: check for null _android_dev in android_register_function()
This fixes a load ordering issue that occurred if a function driver loads before
the android gadget driver is initialized.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:06 -07:00
Mike Lockwood
f620564133 USB: gadget: f_mass_storage: Flush writes after every 4 MB.
This avoids excessive caching at the block level layer when copying large
files to the storage device.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:06 -07:00
Mike Lockwood
0d511c4470 USB: gadget: f_rndis: Add platform data for RNDIS vendor ID and MAC address.
This fixes a kernel panic in rndis.c when receiving the
OID_GEN_VENDOR_DESCRIPTION command.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:06 -07:00
Mike Lockwood
0f63be2175 USB: gadget: composite: Don't increment interface number for alt settings.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:05 -07:00
Mike Lockwood
8c6a6b2180 USB: gadget: composite: Don't call set_alt() on functions that are hidden.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:05 -07:00
Mike Lockwood
352208629f USB: gadget: android: Disable UMS when RNDIS ethernet is active.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:05 -07:00
Mike Lockwood
a83f187e9f usb: gadget: u_ether: Remove warning from gether_disconnect()
gether_disconnect() is always called before gether_connect() by the different
USB ethernet functions, so this warning was firing during normal operation.

Change-Id: I178cc7d1f67e9e87ac2e99c6674c4db8fcddf4a0
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:05 -07:00
Steve Kondik
8f5f391403 Add USB_ANDROID_RNDIS_WCEIS option.
Change-Id: I85973ebfcbfae6b401fb8b402842309c72655149
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:09:02 -07:00
Mike Lockwood
da574e2e1f USB: gadget: android: Fix special case for RNDIS ethernet function
Only set device descriptor bDeviceClass field to USB_CLASS_COMM when
the RNDIS function is actually enabled.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:08:59 -07:00
Mike Lockwood
c832ca8239 USB: composite: Compute interface numbers correctly when functions are hidden.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:08:57 -07:00
Mike Lockwood
573cea55c7 USB: gadget: android: Specify USB_CLASS_COMM in device descriptor if using RNDIS
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:08:56 -07:00
Mike Lockwood
fe8ae89847 USB: gadget: Disable RNDIS function by default if CONFIG_USB_ANDROID_RNDIS is set
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:08:56 -07:00
Mike Lockwood
053297308f USB: android: Use composite class driver for enabling and disabling functions
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:08:55 -07:00
Mike Lockwood
f041ac6903 USB: composite: Add class driver for enabling and disabling USB functions.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:08:55 -07:00
Mike Lockwood
789ef237b3 USB: gadget: android: android USB gadget improvements:
usb: gadget: f_mass_storage: use dev_set_name()

Replacing strcpy() to device->bus_id which no longer exists in 2.6.32

Change-Id: Id978c881f457044c750bfd62f4c5bcc35bcd4fc5
Signed-off-by: Mike Lockwood <lockwood@android.com>

USB: gadget: f_adb: Claim endpoints so they are not reused by another function.

Change-Id: Ic9536cca800162e701c81cab36054f51ea759b72
Signed-off-by: Mike Lockwood <lockwood@android.com>

USB: gadget: f_acm: Fix crashes in acm_set_alt()

Change-Id: I91b761d392f8b1ca8784c69069b43e402b90d6a4
Signed-off-by: Mike Lockwood <lockwood@android.com>

USB: gadget: f_acm: Include android code only if CONFIG_USB_ANDROID_ACM is set.

Signed-off-by: Mike Lockwood <lockwood@android.com>

USB: gadget: Android support for RNDIS serial ethernet function.

Signed-off-by: Mike Lockwood <lockwood@android.com>

USB: gadget: android: Add function name to android_register_function printk.

Change-Id: I38bf79d9b544cdeaec9385f7482a131417fc4b23
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:08:55 -07:00
Mike Lockwood
a9e8c44fc5 USB: gadget: adb: Queue read requests with length specified by client.
Previously we queued 4K requests rather than the count passed into read().

Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:08:54 -07:00
Krishna, Vamsi
83814ea997 USB: gadget: android: android USB gadget improvements:
USB: android gadget: add remote wakeup attribute to android function

Add remote wakeup attribute to configuration descriptor of android
function to advertise remote wakeup capability to host

Acked-by: Allam, Suresh Reddy <sallam@qualcomm.com>

Signed-off-by: Mike Lockwood <lockwood@android.com>

USB: gadget: android: Allow functions to handle setup requests.

Signed-off-by: Mike Lockwood <lockwood@android.com>

Support for specifying the list of USB functions from platform data.

The main android.c gadget driver no longer has hard coded references
to the mass_storage and adb functions.

Support for computing the product ID based on tables in platform data
and the currently enabled functions.

Moved the adb enable/disable logic from android.c to f_adb.c.

Change-Id: I6259d3fb1473ed973f700e55d17744956f3527bb
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:08:54 -07:00
Joe Swantek
292b1bcfc8 USB: composite: Allow configurations to handle unhandled setup requests
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:08:54 -07:00
Mike Lockwood
c7ba16ae1a USB: composite: Add flag to usb_function to hide its interface during enumeration
Change-Id: Ie999b5190e3e2b6fd23015b8e796cdd178829929

Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:08:54 -07:00
Jared Suttles
258d103635 USB: composite: Fix USB WHQL Certification Issues
Submitted on behalf of RaviKumar Vembu <ravi.v@motorola.com>
Signed-off-by: Jared Suttles <jared.suttles@motorola.com>
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:08:53 -07:00
Joe Swantek
b21ab23c7b drivers: usb: gadget: Add helper function for installing ACM gadget function.
Submitted on behalf of James Luan <James.Luan@motorola.com>

Signed-off-by: Joe Swantek <joseph.swantek@motorola.com>
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:08:53 -07:00
Jared Suttles
646bb86a45 drivers: usb: gadget: handle NULL descriptors in composite config_buf
This fixes a problem in enumeration after a gadget function is removed.

Submitted on behalf of RaviKumar Vembu <ravi.v@motorola.com>

Signed-off-by: Jared Suttles <jared.suttles@motorola.com>
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:08:53 -07:00
Mike Lockwood
7f0d7bd310 android_usb: Composite USB gadget driver for android.
Change-Id: I4101540916b73a5f4e48684727ff782f98b969c7
Signed-off-by: Mike Lockwood <lockwood@android.com>

USB: android gadget: add remote wakeup attribute to android function

Add remote wakeup attribute to configuration descriptor of android
function to advertise remote wakeup capability to host

Acked-by: Allam, Suresh Reddy <sallam@qualcomm.com>

Signed-off-by: Mike Lockwood <lockwood@android.com>

usb gadget: link fixes for android composite gadget

Signed-off-by: Mike Lockwood <lockwood@android.com>

usb gadget: Fix null pointer errors in android composite driver

Signed-off-by: Mike Lockwood <lockwood@android.com>

usb: gadget: android: Allow usb charging to draw up to 500mA instead of 250.

Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>

usb gadget: android: Add helper function for usb_gadget_connect and disconnect.

Signed-off-by: Mike Lockwood <lockwood@android.com>

drivers: usb: gadget: call switch_dev_unregister in mass storage unbind callback

This fixes a problem unloading the android gadget driver when built as a module

Signed-off-by: Mike Lockwood <lockwood@android.com>

usb: gadget: android: Add dependency on switch driver.

Signed-off-by: Mike Lockwood <lockwood@android.com>

USB: gadget: android: Fix USB WHQL Certification Issues

Submitted on behalf of RaviKumar Vembu <ravi.v@motorola.com>
Signed-off-by: Jared Suttles <jared.suttles@motorola.com>
Signed-off-by: Mike Lockwood <lockwood@android.com>

drivers: usb: gadget: Add "usb_mass_storage" platform driver.

This will be used for configuring vendor, product and release from board file.

Submitted on behalf of RaviKumar Vembu <ravi.v@motorola.com>
Signed-off-by: Jared Suttles <jared.suttles@motorola.com>
Signed-off-by: Mike Lockwood <lockwood@android.com>

drivers: usb: gadget: Use usb_mass_storage platform device as parent for lun

If a platform device is specified for the f_mass_storage function, use it as the
parent driver for the lun files in sysfs.
This allows a platform independent file path for controlling USB mass storage
from user space.

Signed-off-by: Mike Lockwood <lockwood@android.com>

drivers: usb: gadget: Add platform data struct for usb_mass_storage device

Signed-off-by: Mike Lockwood <lockwood@android.com>

usb: gadget: mass_storage: Fix Mass Storage Panic during PC reboot

Submitted on behalf of RaviKumar Vembu <ravi.v@motorola.com>
Signed-off-by: Jared Suttles <jared.suttles@motorola.com>
Signed-off-by: Mike Lockwood <lockwood@android.com>

usb: gadget: f_mass_storage: Handle setup request correctly

Signed-off-by: Mike Lockwood <lockwood@android.com>

usb: gadget: f_mass_storage: Clean up wakelocks on error paths

Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
Signed-off-by: Mike Lockwood <lockwood@android.com>
2011-06-14 09:08:53 -07:00
Daniel Chen
8f5ed00afe mmc: sdio: Add high speed support to sdio_reset_comm()
Signed-off-by: San Mehat <san@google.com>
2011-06-14 09:08:53 -07:00
David Ding
9da910915e mmc: block: Resume multi-block reads after transient read errors.
Signed-off-by: Bentao Zou <bzou1@motorola.com>
Signed-off-by: David Ding <david.j.ding@motorola.com>
Signed-off-by: San Mehat <san@google.com>
2011-06-14 09:08:52 -07:00
Dmitry Shmidt
7e053b36fc mmc: sdio: Claim host in sdio_reset_comm()
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2011-06-14 09:08:52 -07:00
San Mehat
c87f8d41b4 mmc: mmcblk: Add support for deferred SD bus resume
Signed-off-by: San Mehat <san@google.com>

mmc: card: Add MMC_BLOCK_DEFERRED_RESUME option to Kconfig

Signed-off-by: San Mehat <san@google.com>
2011-06-14 09:08:52 -07:00
San Mehat
10797cfdbb mmc: core: Add deferred bus resume policy.
A card driver can now specify that the underlying bus should *not*
auto-resume with the rest of the system. This is useful for reducing resume
latency as well as saving power when the card driver is not using the
bus. In the future, we'll add support for manual suspend

Signed-off-by: San Mehat <san@google.com>
2011-06-14 09:08:52 -07:00
San Mehat
b2afee5fd8 mmc: core: Hold a wake lock accross delayed work + mmc rescan
Signed-off-by: San Mehat <san@android.com>

mmc: core: Rework mmc_delayed_work wakelock so that the wakelock is only extended if a card is added or removed.

Signed-off-by: San Mehat <san@google.com>
2011-06-14 09:08:52 -07:00