mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
USB/PHY patches for 4.11-rc1
Here is the big USB and PHY driver updates for 4.11-rc1. Nothing major, just the normal amount of churn in the usb gadget and dwc and xhci controllers, new device ids, new phy drivers, a new usb-serial driver, and a few other minor changes in different USB drivers. All have been in linux-next for a long time with no reported issues. Signed-off-by: Greg Kroah-Hartman <[email protected]> -----BEGIN PGP SIGNATURE----- iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCWK2lrg8cZ3JlZ0Brcm9h aC5jb20ACgkQMUfUDdst+ykh7ACffotTJvB/gwpuSIWh6qhA8KQ9mH8AnjlxMafv b5b3vfOXJ8/N0Go25VwI =7fqN -----END PGP SIGNATURE----- Merge tag 'usb-4.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb Pull USB/PHY updates from Greg KH: "Here is the big USB and PHY driver updates for 4.11-rc1. Nothing major, just the normal amount of churn in the usb gadget and dwc and xhci controllers, new device ids, new phy drivers, a new usb-serial driver, and a few other minor changes in different USB drivers. All have been in linux-next for a long time with no reported issues" * tag 'usb-4.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (265 commits) usb: cdc-wdm: remove logically dead code USB: serial: keyspan: drop header file USB: serial: io_edgeport: drop io-tables header file usb: musb: add code comment for clarification usb: misc: add USB251xB/xBi Hi-Speed Hub Controller Driver usb: misc: usbtest: remove redundant check on retval < 0 USB: serial: upd78f0730: sort device ids USB: serial: upd78f0730: add ID for EVAL-ADXL362Z ohci-hub: fix typo in dbg_port macro usb: musb: dsps: Manage CPPI 4.1 DMA interrupt in DSPS usb: musb: tusb6010: Clean up tusb_omap_dma structure usb: musb: cppi_dma: Clean up cppi41_dma_controller structure usb: musb: cppi_dma: Clean up cppi structure usb: musb: cppi41: Detect aborted transfers in cppi41_dma_callback() usb: musb: dma: Add a DMA completion platform callback drivers: usb: usbip: Add missing break statement to switch usb: mtu3: remove redundant dev_err call in get_ssusb_rscs() USB: serial: mos7840: fix another NULL-deref at open USB: serial: console: clean up sanity checks USB: serial: console: fix uninitialised spinlock ...
This commit is contained in:
commit
8ff546b801
193 changed files with 7780 additions and 4460 deletions
|
|
@ -22,7 +22,7 @@
|
|||
/* $(CROSS_COMPILE)cc -Wall -Wextra -g -o ffs-test ffs-test.c -lpthread */
|
||||
|
||||
|
||||
#define _BSD_SOURCE /* for endian.h */
|
||||
#define _DEFAULT_SOURCE /* for endian.h */
|
||||
|
||||
#include <endian.h>
|
||||
#include <errno.h>
|
||||
|
|
@ -110,16 +110,25 @@ static const struct {
|
|||
struct usb_functionfs_descs_head_v2 header;
|
||||
__le32 fs_count;
|
||||
__le32 hs_count;
|
||||
__le32 ss_count;
|
||||
struct {
|
||||
struct usb_interface_descriptor intf;
|
||||
struct usb_endpoint_descriptor_no_audio sink;
|
||||
struct usb_endpoint_descriptor_no_audio source;
|
||||
} __attribute__((packed)) fs_descs, hs_descs;
|
||||
struct {
|
||||
struct usb_interface_descriptor intf;
|
||||
struct usb_endpoint_descriptor_no_audio sink;
|
||||
struct usb_ss_ep_comp_descriptor sink_comp;
|
||||
struct usb_endpoint_descriptor_no_audio source;
|
||||
struct usb_ss_ep_comp_descriptor source_comp;
|
||||
} ss_descs;
|
||||
} __attribute__((packed)) descriptors = {
|
||||
.header = {
|
||||
.magic = cpu_to_le32(FUNCTIONFS_DESCRIPTORS_MAGIC_V2),
|
||||
.flags = cpu_to_le32(FUNCTIONFS_HAS_FS_DESC |
|
||||
FUNCTIONFS_HAS_HS_DESC),
|
||||
FUNCTIONFS_HAS_HS_DESC |
|
||||
FUNCTIONFS_HAS_SS_DESC),
|
||||
.length = cpu_to_le32(sizeof descriptors),
|
||||
},
|
||||
.fs_count = cpu_to_le32(3),
|
||||
|
|
@ -171,6 +180,45 @@ static const struct {
|
|||
.bInterval = 1, /* NAK every 1 uframe */
|
||||
},
|
||||
},
|
||||
.ss_count = cpu_to_le32(5),
|
||||
.ss_descs = {
|
||||
.intf = {
|
||||
.bLength = sizeof descriptors.fs_descs.intf,
|
||||
.bDescriptorType = USB_DT_INTERFACE,
|
||||
.bNumEndpoints = 2,
|
||||
.bInterfaceClass = USB_CLASS_VENDOR_SPEC,
|
||||
.iInterface = 1,
|
||||
},
|
||||
.sink = {
|
||||
.bLength = sizeof descriptors.hs_descs.sink,
|
||||
.bDescriptorType = USB_DT_ENDPOINT,
|
||||
.bEndpointAddress = 1 | USB_DIR_IN,
|
||||
.bmAttributes = USB_ENDPOINT_XFER_BULK,
|
||||
.wMaxPacketSize = cpu_to_le16(1024),
|
||||
},
|
||||
.sink_comp = {
|
||||
.bLength = USB_DT_SS_EP_COMP_SIZE,
|
||||
.bDescriptorType = USB_DT_SS_ENDPOINT_COMP,
|
||||
.bMaxBurst = 0,
|
||||
.bmAttributes = 0,
|
||||
.wBytesPerInterval = 0,
|
||||
},
|
||||
.source = {
|
||||
.bLength = sizeof descriptors.hs_descs.source,
|
||||
.bDescriptorType = USB_DT_ENDPOINT,
|
||||
.bEndpointAddress = 2 | USB_DIR_OUT,
|
||||
.bmAttributes = USB_ENDPOINT_XFER_BULK,
|
||||
.wMaxPacketSize = cpu_to_le16(1024),
|
||||
.bInterval = 1, /* NAK every 1 uframe */
|
||||
},
|
||||
.source_comp = {
|
||||
.bLength = USB_DT_SS_EP_COMP_SIZE,
|
||||
.bDescriptorType = USB_DT_SS_ENDPOINT_COMP,
|
||||
.bMaxBurst = 0,
|
||||
.bmAttributes = 0,
|
||||
.wBytesPerInterval = 0,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
static size_t descs_to_legacy(void **legacy, const void *descriptors_v2)
|
||||
|
|
|
|||
|
|
@ -4,10 +4,33 @@
|
|||
# Copyright (C) 2011 matt mooney <[email protected]>
|
||||
# 2005-2008 Takahiro Hirofuchi
|
||||
|
||||
[Overview]
|
||||
USB/IP protocol allows to pass USB device from server to client over the
|
||||
network. Server is a machine which provides (shares) a USB device. Client is
|
||||
a machine which uses USB device provided by server over the network.
|
||||
The USB device may be either physical device connected to a server or
|
||||
software entity created on a server using USB gadget subsystem.
|
||||
Whole project consists of four parts:
|
||||
|
||||
- usbip-vhci
|
||||
A client side kernel module which provides a virtual USB Host Controller
|
||||
and allows to import a USB device from a remote machine.
|
||||
|
||||
- usbip-host (stub driver)
|
||||
A server side module which provides a USB device driver which can be
|
||||
bound to a physical USB device to make it exportable.
|
||||
|
||||
- usbip-vudc
|
||||
A server side module which provides a virtual USB Device Controller and allows
|
||||
to export a USB device created using USB Gadget Subsystem.
|
||||
|
||||
- usbip-utils
|
||||
A set of userspace tools used to handle connection and management.
|
||||
Used on both sides.
|
||||
|
||||
[Requirements]
|
||||
- USB/IP device drivers
|
||||
Found in the staging directory of the Linux kernel.
|
||||
Found in the drivers/usb/usbip/ directory of the Linux kernel tree.
|
||||
|
||||
- libudev >= 2.0
|
||||
libudev library
|
||||
|
|
@ -36,6 +59,10 @@
|
|||
|
||||
|
||||
[Usage]
|
||||
On a server side there are two entities which can be shared.
|
||||
First of them is physical usb device connected to the machine.
|
||||
To make it available below steps should be executed:
|
||||
|
||||
server:# (Physically attach your USB device.)
|
||||
|
||||
server:# insmod usbip-core.ko
|
||||
|
|
@ -52,6 +79,30 @@
|
|||
- The USB device 1-2 is now exportable to other hosts!
|
||||
- Use `usbip unbind --busid 1-2' to stop exporting the device.
|
||||
|
||||
Second of shareable entities is USB Gadget created using USB Gadget Subsystem
|
||||
on a server machine. To make it available below steps should be executed:
|
||||
|
||||
server:# (Create your USB gadget)
|
||||
- Currently the most preferable way of creating a new USB gadget
|
||||
is ConfigFS Composite Gadget. Please refer to its documentation
|
||||
for details.
|
||||
- See vudc_server_example.sh for a short example of USB gadget creation
|
||||
|
||||
server:# insmod usbip-core.ko
|
||||
server:# insmod usbip-vudc.ko
|
||||
- To create more than one instance of vudc use num module param
|
||||
|
||||
server:# (Bind gadget to one of available vudc)
|
||||
- Assign your new gadget to USB/IP UDC
|
||||
- Using ConfigFS interface you may do this simply by:
|
||||
server:# cd /sys/kernel/config/usb_gadget/<gadget_name>
|
||||
server:# echo "usbip-vudc.0" > UDC
|
||||
|
||||
server:# usbipd -D --device
|
||||
- Start usbip daemon.
|
||||
|
||||
To attach new device to client machine below commands should be used:
|
||||
|
||||
client:# insmod usbip-core.ko
|
||||
client:# insmod vhci-hcd.ko
|
||||
|
||||
|
|
@ -60,6 +111,8 @@
|
|||
|
||||
client:# usbip attach --remote <host> --busid 1-2
|
||||
- Connect the remote USB device.
|
||||
- When using vudc on a server side busid is really vudc instance name.
|
||||
For example: usbip-vudc.0
|
||||
|
||||
client:# usbip port
|
||||
- Show virtual port status.
|
||||
|
|
@ -192,6 +245,8 @@ Detach the imported device:
|
|||
- http://usbip.wiki.sourceforge.net/how-to-debug-usbip
|
||||
- usbip-host.ko must be bound to the target device.
|
||||
- See /proc/bus/usb/devices and find "Driver=..." lines of the device.
|
||||
- Target USB gadget must be bound to vudc
|
||||
(using USB gadget susbsys, not usbip bind command)
|
||||
- Shutdown firewall.
|
||||
- usbip now uses TCP port 3240.
|
||||
- Disable SELinux.
|
||||
|
|
|
|||
107
tools/usb/usbip/vudc/vudc_server_example.sh
Executable file
107
tools/usb/usbip/vudc/vudc_server_example.sh
Executable file
|
|
@ -0,0 +1,107 @@
|
|||
#!/bin/bash
|
||||
|
||||
################################################################################
|
||||
# This is free and unencumbered software released into the public domain.
|
||||
#
|
||||
# Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||
# distribute this software, either in source code form or as a compiled
|
||||
# binary, for any purpose, commercial or non-commercial, and by any
|
||||
# means.
|
||||
#
|
||||
# In jurisdictions that recognize copyright laws, the author or authors
|
||||
# of this software dedicate any and all copyright interest in the
|
||||
# software to the public domain. We make this dedication for the benefit
|
||||
# of the public at large and to the detriment of our heirs and
|
||||
# successors. We intend this dedication to be an overt act of
|
||||
# relinquishment in perpetuity of all present and future rights to this
|
||||
# software under copyright law.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
# OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# For more information, please refer to <http://unlicense.org/>
|
||||
################################################################################
|
||||
|
||||
################################################################################
|
||||
# This is a sample script which shows how to use vUDC with ConfigFS gadgets
|
||||
################################################################################
|
||||
|
||||
# Stop script on error
|
||||
set -e
|
||||
|
||||
################################################################################
|
||||
# Create your USB gadget
|
||||
# You may use bare ConfigFS interface (as below)
|
||||
# or libusbgx or gt toool
|
||||
# Instead of ConfigFS gadgets you may use any of legacy gadgets.
|
||||
################################################################################
|
||||
CONFIGFS_MOUNT_POINT="/sys/kernel/config"
|
||||
GADGET_NAME="g1"
|
||||
ID_VENDOR="0x1d6b"
|
||||
ID_PRODUCT="0x0104"
|
||||
|
||||
cd ${CONFIGFS_MOUNT_POINT}/usb_gadget
|
||||
# Create a new USB gadget
|
||||
mkdir ${GADGET_NAME}
|
||||
cd ${GADGET_NAME}
|
||||
|
||||
# This gadget contains one function - ACM (serial port over USB)
|
||||
FUNC_DIR="functions/acm.ser0"
|
||||
mkdir ${FUNC_DIR}
|
||||
|
||||
# Just one configuration
|
||||
mkdir configs/c.1
|
||||
ln -s ${FUNC_DIR} configs/c.1
|
||||
|
||||
# Set our gadget identity
|
||||
echo ${ID_VENDOR} > idVendor
|
||||
echo ${ID_PRODUCT} > idProduct
|
||||
|
||||
################################################################################
|
||||
# Load vudc-module if vudc is not available
|
||||
# You may change value of num param to get more than one vUDC instance
|
||||
################################################################################
|
||||
[[ -d /sys/class/udc/usbip-vudc.0 ]] || modprobe usbip-vudc num=1
|
||||
|
||||
################################################################################
|
||||
# Bind gadget to our vUDC
|
||||
# By default we bind to first one but you may change this if you would like
|
||||
# to use more than one instance
|
||||
################################################################################
|
||||
echo "usbip-vudc.0" > UDC
|
||||
|
||||
################################################################################
|
||||
# Let's now run our usbip daemon in a USB device mode
|
||||
################################################################################
|
||||
usbipd --device &
|
||||
|
||||
################################################################################
|
||||
# Now your USB gadget is available using USB/IP protocol.
|
||||
# To prepare your client, you should ensure that usbip-vhci module is inside
|
||||
# your kernel. If it's not then you can load it:
|
||||
#
|
||||
# $ modprobe usbip-vhci
|
||||
#
|
||||
# To check availability of your gadget you may try to list devices exported
|
||||
# on a remote server:
|
||||
#
|
||||
# $ modprobe usbip-vhci
|
||||
# $ usbip list -r $SERVER_IP
|
||||
# Exportable USB devices
|
||||
# ======================
|
||||
# usbipd: info: request 0x8005(6): complete
|
||||
# - 127.0.0.1
|
||||
# usbip-vudc.0: Linux Foundation : unknown product (1d6b:0104)
|
||||
# : /sys/devices/platform/usbip-vudc.0
|
||||
# : (Defined at Interface level) (00/00/00)
|
||||
#
|
||||
# To attach this device to your client you may use:
|
||||
#
|
||||
# $ usbip attach -r $SERVER_IP -d usbip-vudc.0
|
||||
#
|
||||
################################################################################
|
||||
Loading…
Reference in a new issue