Merge branch 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
* 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (260 commits) usb: renesas_usbhs: fixup inconsistent return from usbhs_pkt_push() usb/isp1760: Allow to optionally trigger low-level chip reset via GPIOLIB. USB: gadget: midi: memory leak in f_midi_bind_config() USB: gadget: midi: fix range check in f_midi_out_open() QE/FHCI: fixed the CONTROL bug usb: renesas_usbhs: tidyup for smatch warnings USB: Fix USB Kconfig dependency problem on 85xx/QoirQ platforms EHCI: workaround for MosChip controller bug usb: gadget: file_storage: fix race on unloading USB: ftdi_sio.c: Use ftdi async_icount structure for TIOCMIWAIT, as in other drivers USB: ftdi_sio.c:Fill MSR fields of the ftdi async_icount structure USB: ftdi_sio.c: Fill LSR fields of the ftdi async_icount structure USB: ftdi_sio.c:Fill TX field of the ftdi async_icount structure USB: ftdi_sio.c: Fill the RX field of the ftdi async_icount structure USB: ftdi_sio.c: Basic icount infrastructure for ftdi_sio usb/isp1760: Let OF bindings depend on general CONFIG_OF instead of PPC_OF . USB: ftdi_sio: Support TI/Luminary Micro Stellaris BD-ICDI Board USB: Fix runtime wakeup on OHCI xHCI/USB: Make xHCI driver have a BOS descriptor. usb: gadget: add new usb gadget for ACM and mass storage ...
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
/**
|
||||
* dwc3-omap.h - OMAP Specific Glue layer, header.
|
||||
*
|
||||
* Copyright (C) 2010-2011 Texas Instruments Incorporated - http://www.ti.com
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Felipe Balbi <balbi@ti.com>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions, and the following disclaimer,
|
||||
* without modification.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. The names of the above-listed copyright holders may not be used
|
||||
* to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
* ALTERNATIVELY, this software may be distributed under the terms of the
|
||||
* GNU General Public License ("GPL") version 2, as published by the Free
|
||||
* Software Foundation.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
enum dwc3_omap_utmi_mode {
|
||||
DWC3_OMAP_UTMI_MODE_UNKNOWN = 0,
|
||||
DWC3_OMAP_UTMI_MODE_HW,
|
||||
DWC3_OMAP_UTMI_MODE_SW,
|
||||
};
|
||||
|
||||
struct dwc3_omap_data {
|
||||
enum dwc3_omap_utmi_mode utmi_mode;
|
||||
};
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright (C) 2011 Marvell International Ltd. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef __MV_PLATFORM_USB_H
|
||||
#define __MV_PLATFORM_USB_H
|
||||
|
||||
enum pxa_ehci_type {
|
||||
EHCI_UNDEFINED = 0,
|
||||
PXA_U2OEHCI, /* pxa 168, 9xx */
|
||||
PXA_SPH, /* pxa 168, 9xx SPH */
|
||||
MMP3_HSIC, /* mmp3 hsic */
|
||||
MMP3_FSIC, /* mmp3 fsic */
|
||||
};
|
||||
|
||||
enum {
|
||||
MV_USB_MODE_OTG,
|
||||
MV_USB_MODE_HOST,
|
||||
};
|
||||
|
||||
enum {
|
||||
VBUS_LOW = 0,
|
||||
VBUS_HIGH = 1 << 0,
|
||||
};
|
||||
|
||||
struct mv_usb_addon_irq {
|
||||
unsigned int irq;
|
||||
int (*poll)(void);
|
||||
};
|
||||
|
||||
struct mv_usb_platform_data {
|
||||
unsigned int clknum;
|
||||
char **clkname;
|
||||
struct mv_usb_addon_irq *id; /* Only valid for OTG. ID pin change*/
|
||||
struct mv_usb_addon_irq *vbus; /* valid for OTG/UDC. VBUS change*/
|
||||
|
||||
/* only valid for HCD. OTG or Host only*/
|
||||
unsigned int mode;
|
||||
|
||||
int (*phy_init)(unsigned int regbase);
|
||||
void (*phy_deinit)(unsigned int regbase);
|
||||
int (*set_vbus)(unsigned int vbus);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -2165,7 +2165,8 @@ extern int force_sigsegv(int, struct task_struct *);
|
||||
extern int force_sig_info(int, struct siginfo *, struct task_struct *);
|
||||
extern int __kill_pgrp_info(int sig, struct siginfo *info, struct pid *pgrp);
|
||||
extern int kill_pid_info(int sig, struct siginfo *info, struct pid *pid);
|
||||
extern int kill_pid_info_as_uid(int, struct siginfo *, struct pid *, uid_t, uid_t, u32);
|
||||
extern int kill_pid_info_as_cred(int, struct siginfo *, struct pid *,
|
||||
const struct cred *, u32);
|
||||
extern int kill_pgrp(struct pid *pid, int sig, int priv);
|
||||
extern int kill_pid(struct pid *pid, int sig, int priv);
|
||||
extern int kill_proc_info(int, struct siginfo *, pid_t);
|
||||
|
||||
+19
-1
@@ -292,6 +292,16 @@ struct usb_host_config {
|
||||
int extralen;
|
||||
};
|
||||
|
||||
/* USB2.0 and USB3.0 device BOS descriptor set */
|
||||
struct usb_host_bos {
|
||||
struct usb_bos_descriptor *desc;
|
||||
|
||||
/* wireless cap descriptor is handled by wusb */
|
||||
struct usb_ext_cap_descriptor *ext_cap;
|
||||
struct usb_ss_cap_descriptor *ss_cap;
|
||||
struct usb_ss_container_id_descriptor *ss_id;
|
||||
};
|
||||
|
||||
int __usb_get_extra_descriptor(char *buffer, unsigned size,
|
||||
unsigned char type, void **ptr);
|
||||
#define usb_get_extra_descriptor(ifpoint, type, ptr) \
|
||||
@@ -381,6 +391,7 @@ struct usb_tt;
|
||||
* @ep0: endpoint 0 data (default control pipe)
|
||||
* @dev: generic device interface
|
||||
* @descriptor: USB device descriptor
|
||||
* @bos: USB device BOS descriptor set
|
||||
* @config: all of the device's configs
|
||||
* @actconfig: the active configuration
|
||||
* @ep_in: array of IN endpoints
|
||||
@@ -399,6 +410,9 @@ struct usb_tt;
|
||||
* FIXME -- complete doc
|
||||
* @authenticated: Crypto authentication passed
|
||||
* @wusb: device is Wireless USB
|
||||
* @lpm_capable: device supports LPM
|
||||
* @usb2_hw_lpm_capable: device can perform USB2 hardware LPM
|
||||
* @usb2_hw_lpm_enabled: USB2 hardware LPM enabled
|
||||
* @string_langid: language ID for strings
|
||||
* @product: iProduct string, if present (static)
|
||||
* @manufacturer: iManufacturer string, if present (static)
|
||||
@@ -442,6 +456,7 @@ struct usb_device {
|
||||
struct device dev;
|
||||
|
||||
struct usb_device_descriptor descriptor;
|
||||
struct usb_host_bos *bos;
|
||||
struct usb_host_config *config;
|
||||
|
||||
struct usb_host_config *actconfig;
|
||||
@@ -460,6 +475,9 @@ struct usb_device {
|
||||
unsigned authorized:1;
|
||||
unsigned authenticated:1;
|
||||
unsigned wusb:1;
|
||||
unsigned lpm_capable:1;
|
||||
unsigned usb2_hw_lpm_capable:1;
|
||||
unsigned usb2_hw_lpm_enabled:1;
|
||||
int string_langid;
|
||||
|
||||
/* static strings from the device */
|
||||
@@ -1574,7 +1592,7 @@ usb_maxpacket(struct usb_device *udev, int pipe, int is_out)
|
||||
return 0;
|
||||
|
||||
/* NOTE: only 0x07ff bits are for packet size... */
|
||||
return le16_to_cpu(ep->desc.wMaxPacketSize);
|
||||
return usb_endpoint_maxp(&ep->desc);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
#define __LINUX_USB_CH9_H
|
||||
|
||||
#include <linux/types.h> /* __u8 etc */
|
||||
#include <asm/byteorder.h> /* le16_to_cpu */
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
@@ -143,6 +144,11 @@
|
||||
#define USB_INTRF_FUNC_SUSPEND 0 /* function suspend */
|
||||
|
||||
#define USB_INTR_FUNC_SUSPEND_OPT_MASK 0xFF00
|
||||
/*
|
||||
* Suspend Options, Table 9-7 USB 3.0 spec
|
||||
*/
|
||||
#define USB_INTRF_FUNC_SUSPEND_LP (1 << (8 + 0))
|
||||
#define USB_INTRF_FUNC_SUSPEND_RW (1 << (8 + 1))
|
||||
|
||||
#define USB_ENDPOINT_HALT 0 /* IN/OUT will STALL */
|
||||
|
||||
@@ -570,6 +576,17 @@ static inline int usb_endpoint_is_isoc_out(
|
||||
return usb_endpoint_xfer_isoc(epd) && usb_endpoint_dir_out(epd);
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_maxp - get endpoint's max packet size
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns @epd's max packet
|
||||
*/
|
||||
static inline int usb_endpoint_maxp(const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return le16_to_cpu(epd->wMaxPacketSize);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
/* USB_DT_SS_ENDPOINT_COMP: SuperSpeed Endpoint Companion descriptor */
|
||||
@@ -851,6 +868,18 @@ enum usb_device_speed {
|
||||
USB_SPEED_SUPER, /* usb 3.0 */
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
/**
|
||||
* usb_speed_string() - Returns human readable-name of the speed.
|
||||
* @speed: The speed to return human-readable name for. If it's not
|
||||
* any of the speeds defined in usb_device_speed enum, string for
|
||||
* USB_SPEED_UNKNOWN will be returned.
|
||||
*/
|
||||
extern const char *usb_speed_string(enum usb_device_speed speed);
|
||||
|
||||
#endif
|
||||
|
||||
enum usb_device_state {
|
||||
/* NOTATTACHED isn't in the USB spec, and this state acts
|
||||
* the same as ATTACHED ... but it's clearer this way.
|
||||
|
||||
@@ -437,9 +437,9 @@ static inline void usb_ep_fifo_flush(struct usb_ep *ep)
|
||||
|
||||
struct usb_dcd_config_params {
|
||||
__u8 bU1devExitLat; /* U1 Device exit Latency */
|
||||
#define USB_DEFULT_U1_DEV_EXIT_LAT 0x01 /* Less then 1 microsec */
|
||||
#define USB_DEFAULT_U1_DEV_EXIT_LAT 0x01 /* Less then 1 microsec */
|
||||
__le16 bU2DevExitLat; /* U2 Device exit Latency */
|
||||
#define USB_DEFULT_U2_DEV_EXIT_LAT 0x1F4 /* Less then 500 microsec */
|
||||
#define USB_DEFAULT_U2_DEV_EXIT_LAT 0x1F4 /* Less then 500 microsec */
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -178,7 +178,7 @@ struct usb_hcd {
|
||||
* this structure.
|
||||
*/
|
||||
unsigned long hcd_priv[0]
|
||||
__attribute__ ((aligned(sizeof(unsigned long))));
|
||||
__attribute__ ((aligned(sizeof(s64))));
|
||||
};
|
||||
|
||||
/* 2.4 does this a bit differently ... */
|
||||
@@ -343,6 +343,7 @@ struct hc_driver {
|
||||
* address is set
|
||||
*/
|
||||
int (*update_device)(struct usb_hcd *, struct usb_device *);
|
||||
int (*set_usb2_hw_lpm)(struct usb_hcd *, struct usb_device *, int);
|
||||
};
|
||||
|
||||
extern int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb);
|
||||
|
||||
@@ -48,6 +48,9 @@ struct r8a66597_platdata {
|
||||
|
||||
/* (external controller only) set one = WR0_N shorted to WR1_N */
|
||||
unsigned wr0_shorted_to_wr1:1;
|
||||
|
||||
/* set one = using SUDMAC */
|
||||
unsigned sudmac:1;
|
||||
};
|
||||
|
||||
/* Register definitions */
|
||||
@@ -417,5 +420,62 @@ struct r8a66597_platdata {
|
||||
#define USBSPD 0x00C0
|
||||
#define RTPORT 0x0001
|
||||
|
||||
/* SUDMAC registers */
|
||||
#define CH0CFG 0x00
|
||||
#define CH1CFG 0x04
|
||||
#define CH0BA 0x10
|
||||
#define CH1BA 0x14
|
||||
#define CH0BBC 0x18
|
||||
#define CH1BBC 0x1C
|
||||
#define CH0CA 0x20
|
||||
#define CH1CA 0x24
|
||||
#define CH0CBC 0x28
|
||||
#define CH1CBC 0x2C
|
||||
#define CH0DEN 0x30
|
||||
#define CH1DEN 0x34
|
||||
#define DSTSCLR 0x38
|
||||
#define DBUFCTRL 0x3C
|
||||
#define DINTCTRL 0x40
|
||||
#define DINTSTS 0x44
|
||||
#define DINTSTSCLR 0x48
|
||||
#define CH0SHCTRL 0x50
|
||||
#define CH1SHCTRL 0x54
|
||||
|
||||
/* SUDMAC Configuration Registers */
|
||||
#define SENDBUFM 0x1000 /* b12: Transmit Buffer Mode */
|
||||
#define RCVENDM 0x0100 /* b8: Receive Data Transfer End Mode */
|
||||
#define LBA_WAIT 0x0030 /* b5-4: Local Bus Access Wait */
|
||||
|
||||
/* DMA Enable Registers */
|
||||
#define DEN 0x0001 /* b1: DMA Transfer Enable */
|
||||
|
||||
/* DMA Status Clear Register */
|
||||
#define CH1STCLR 0x0002 /* b2: Ch1 DMA Status Clear */
|
||||
#define CH0STCLR 0x0001 /* b1: Ch0 DMA Status Clear */
|
||||
|
||||
/* DMA Buffer Control Register */
|
||||
#define CH1BUFW 0x0200 /* b9: Ch1 DMA Buffer Data Transfer Enable */
|
||||
#define CH0BUFW 0x0100 /* b8: Ch0 DMA Buffer Data Transfer Enable */
|
||||
#define CH1BUFS 0x0002 /* b2: Ch1 DMA Buffer Data Status */
|
||||
#define CH0BUFS 0x0001 /* b1: Ch0 DMA Buffer Data Status */
|
||||
|
||||
/* DMA Interrupt Control Register */
|
||||
#define CH1ERRE 0x0200 /* b9: Ch1 SHwy Res Err Detect Int Enable */
|
||||
#define CH0ERRE 0x0100 /* b8: Ch0 SHwy Res Err Detect Int Enable */
|
||||
#define CH1ENDE 0x0002 /* b2: Ch1 DMA Transfer End Int Enable */
|
||||
#define CH0ENDE 0x0001 /* b1: Ch0 DMA Transfer End Int Enable */
|
||||
|
||||
/* DMA Interrupt Status Register */
|
||||
#define CH1ERRS 0x0200 /* b9: Ch1 SHwy Res Err Detect Int Status */
|
||||
#define CH0ERRS 0x0100 /* b8: Ch0 SHwy Res Err Detect Int Status */
|
||||
#define CH1ENDS 0x0002 /* b2: Ch1 DMA Transfer End Int Status */
|
||||
#define CH0ENDS 0x0001 /* b1: Ch0 DMA Transfer End Int Status */
|
||||
|
||||
/* DMA Interrupt Status Clear Register */
|
||||
#define CH1ERRC 0x0200 /* b9: Ch1 SHwy Res Err Detect Int Stat Clear */
|
||||
#define CH0ERRC 0x0100 /* b8: Ch0 SHwy Res Err Detect Int Stat Clear */
|
||||
#define CH1ENDC 0x0002 /* b2: Ch1 DMA Transfer End Int Stat Clear */
|
||||
#define CH0ENDC 0x0001 /* b1: Ch0 DMA Transfer End Int Stat Clear */
|
||||
|
||||
#endif /* __LINUX_USB_R8A66597_H */
|
||||
|
||||
|
||||
@@ -82,6 +82,13 @@ struct renesas_usbhs_platform_callback {
|
||||
* get VBUS status function.
|
||||
*/
|
||||
int (*get_vbus)(struct platform_device *pdev);
|
||||
|
||||
/*
|
||||
* option:
|
||||
*
|
||||
* VBUS control is needed for Host
|
||||
*/
|
||||
int (*set_vbus)(struct platform_device *pdev, int enable);
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -101,6 +108,8 @@ struct renesas_usbhs_driver_param {
|
||||
* option:
|
||||
*
|
||||
* for BUSWAIT :: BWAIT
|
||||
* see
|
||||
* renesas_usbhs/common.c :: usbhsc_set_buswait()
|
||||
* */
|
||||
int buswait_bwait;
|
||||
|
||||
@@ -127,6 +136,11 @@ struct renesas_usbhs_driver_param {
|
||||
* pio <--> dma border.
|
||||
*/
|
||||
int pio_dma_border; /* default is 64byte */
|
||||
|
||||
/*
|
||||
* option:
|
||||
*/
|
||||
u32 has_otg:1; /* for controlling PWEN/EXTLP */
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user