mirror of
https://github.com/hardkernel/linux.git
synced 2026-03-25 20:10:23 +09:00
Revert "usb: gadget: Properly configure the device for remote wakeup"
This reverts commit 7919af1dcb.
It breaks the Android kernel abi, but will be brought in through a
different branch to ensure it ends up in the tree properly.
Bug: 161946584
Change-Id: I259c54a3c0d6fbaf33cca4978a6aaae413967dc1
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
@@ -511,19 +511,6 @@ static u8 encode_bMaxPower(enum usb_device_speed speed,
|
||||
return min(val, 900U) / 8;
|
||||
}
|
||||
|
||||
void check_remote_wakeup_config(struct usb_gadget *g,
|
||||
struct usb_configuration *c)
|
||||
{
|
||||
if (USB_CONFIG_ATT_WAKEUP & c->bmAttributes) {
|
||||
/* Reset the rw bit if gadget is not capable of it */
|
||||
if (!g->wakeup_capable && g->ops->set_remote_wakeup) {
|
||||
WARN(c->cdev, "Clearing wakeup bit for config c.%d\n",
|
||||
c->bConfigurationValue);
|
||||
c->bmAttributes &= ~USB_CONFIG_ATT_WAKEUP;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int config_buf(struct usb_configuration *config,
|
||||
enum usb_device_speed speed, void *buf, u8 type)
|
||||
{
|
||||
@@ -971,11 +958,6 @@ static int set_config(struct usb_composite_dev *cdev,
|
||||
power = min(power, 500U);
|
||||
else
|
||||
power = min(power, 900U);
|
||||
|
||||
if (USB_CONFIG_ATT_WAKEUP & c->bmAttributes)
|
||||
usb_gadget_set_remote_wakeup(gadget, 1);
|
||||
else
|
||||
usb_gadget_set_remote_wakeup(gadget, 0);
|
||||
done:
|
||||
if (power <= USB_SELF_POWER_VBUS_MAX_DRAW)
|
||||
usb_gadget_set_selfpowered(gadget);
|
||||
|
||||
@@ -1416,9 +1416,6 @@ static int configfs_composite_bind(struct usb_gadget *gadget,
|
||||
if (gadget_is_otg(gadget))
|
||||
c->descriptors = otg_desc;
|
||||
|
||||
/* Properly configure the bmAttributes wakeup bit */
|
||||
check_remote_wakeup_config(gadget, c);
|
||||
|
||||
cfg = container_of(c, struct config_usb_cfg, c);
|
||||
if (!list_empty(&cfg->string_list)) {
|
||||
i = 0;
|
||||
|
||||
@@ -515,33 +515,6 @@ out:
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(usb_gadget_wakeup);
|
||||
|
||||
/**
|
||||
* usb_gadget_set_remote_wakeup - configures the device remote wakeup feature.
|
||||
* @gadget:the device being configured for remote wakeup
|
||||
* @set:value to be configured.
|
||||
*
|
||||
* set to one to enable remote wakeup feature and zero to disable it.
|
||||
*
|
||||
* returns zero on success, else negative errno.
|
||||
*/
|
||||
int usb_gadget_set_remote_wakeup(struct usb_gadget *gadget, int set)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (!gadget->ops->set_remote_wakeup) {
|
||||
ret = -EOPNOTSUPP;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = gadget->ops->set_remote_wakeup(gadget, set);
|
||||
|
||||
out:
|
||||
trace_usb_gadget_set_remote_wakeup(gadget, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(usb_gadget_set_remote_wakeup);
|
||||
|
||||
/**
|
||||
* usb_gadget_set_selfpowered - sets the device selfpowered feature.
|
||||
* @gadget:the device being declared as self-powered
|
||||
|
||||
@@ -91,11 +91,6 @@ DEFINE_EVENT(udc_log_gadget, usb_gadget_wakeup,
|
||||
TP_ARGS(g, ret)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(udc_log_gadget, usb_gadget_set_remote_wakeup,
|
||||
TP_PROTO(struct usb_gadget *g, int ret),
|
||||
TP_ARGS(g, ret)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(udc_log_gadget, usb_gadget_set_selfpowered,
|
||||
TP_PROTO(struct usb_gadget *g, int ret),
|
||||
TP_ARGS(g, ret)
|
||||
|
||||
@@ -426,8 +426,6 @@ extern int composite_dev_prepare(struct usb_composite_driver *composite,
|
||||
extern int composite_os_desc_req_prepare(struct usb_composite_dev *cdev,
|
||||
struct usb_ep *ep0);
|
||||
void composite_dev_cleanup(struct usb_composite_dev *cdev);
|
||||
void check_remote_wakeup_config(struct usb_gadget *g,
|
||||
struct usb_configuration *c);
|
||||
|
||||
static inline struct usb_composite_driver *to_cdriver(
|
||||
struct usb_gadget_driver *gdrv)
|
||||
|
||||
@@ -317,7 +317,6 @@ struct usb_udc;
|
||||
struct usb_gadget_ops {
|
||||
int (*get_frame)(struct usb_gadget *);
|
||||
int (*wakeup)(struct usb_gadget *);
|
||||
int (*set_remote_wakeup)(struct usb_gadget *, int set);
|
||||
int (*set_selfpowered) (struct usb_gadget *, int is_selfpowered);
|
||||
int (*vbus_session) (struct usb_gadget *, int is_active);
|
||||
int (*vbus_draw) (struct usb_gadget *, unsigned mA);
|
||||
@@ -397,8 +396,6 @@ struct usb_gadget_ops {
|
||||
* @connected: True if gadget is connected.
|
||||
* @lpm_capable: If the gadget max_speed is FULL or HIGH, this flag
|
||||
* indicates that it supports LPM as per the LPM ECN & errata.
|
||||
* @wakeup_capable: True if gadget is capable of sending remote wakeup.
|
||||
* @wakeup_armed: True if gadget is armed by the host for remote wakeup.
|
||||
* @irq: the interrupt number for device controller.
|
||||
*
|
||||
* Gadgets have a mostly-portable "gadget driver" implementing device
|
||||
@@ -459,8 +456,6 @@ struct usb_gadget {
|
||||
unsigned deactivated:1;
|
||||
unsigned connected:1;
|
||||
unsigned lpm_capable:1;
|
||||
unsigned wakeup_capable:1;
|
||||
unsigned wakeup_armed:1;
|
||||
int irq;
|
||||
};
|
||||
#define work_to_gadget(w) (container_of((w), struct usb_gadget, work))
|
||||
@@ -616,7 +611,6 @@ static inline int gadget_is_otg(struct usb_gadget *g)
|
||||
#if IS_ENABLED(CONFIG_USB_GADGET)
|
||||
int usb_gadget_frame_number(struct usb_gadget *gadget);
|
||||
int usb_gadget_wakeup(struct usb_gadget *gadget);
|
||||
int usb_gadget_set_remote_wakeup(struct usb_gadget *gadget, int set);
|
||||
int usb_gadget_set_selfpowered(struct usb_gadget *gadget);
|
||||
int usb_gadget_clear_selfpowered(struct usb_gadget *gadget);
|
||||
int usb_gadget_vbus_connect(struct usb_gadget *gadget);
|
||||
@@ -632,8 +626,6 @@ static inline int usb_gadget_frame_number(struct usb_gadget *gadget)
|
||||
{ return 0; }
|
||||
static inline int usb_gadget_wakeup(struct usb_gadget *gadget)
|
||||
{ return 0; }
|
||||
static inline int usb_gadget_set_remote_wakeup(struct usb_gadget *gadget, int set)
|
||||
{ return 0; }
|
||||
static inline int usb_gadget_set_selfpowered(struct usb_gadget *gadget)
|
||||
{ return 0; }
|
||||
static inline int usb_gadget_clear_selfpowered(struct usb_gadget *gadget)
|
||||
|
||||
Reference in New Issue
Block a user