Ejemplo n.º 1
0
static ssize_t bcmpmu_otg_xceiv_wake_store(struct device *dev,
        struct device_attribute *attr,
        const char *buf, size_t count)
{
    struct usb_gadget *gadget;
    ssize_t result = 0;
    unsigned int val;
    struct bcmpmu_otg_xceiv_data *xceiv_data = dev_get_drvdata(dev);
    int error;

    gadget = xceiv_data->otg_xceiver.xceiver.gadget;

    result = sscanf(buf, "%02x\n", &val);
    if (result != 1) {
        result = -EINVAL;
    } else if (val == 0) {
        dev_warn(xceiv_data->dev, "Illegal value\n");
    } else {
        dev_info(xceiv_data->dev, "Waking up host\n");

        /* Bring core out of suspend */
        bcm_hsotgctrl_wakeup_core();

        error = usb_gadget_wakeup(gadget);
        if (error)
            dev_err(xceiv_data->dev,
                    "Failed to issue wakeup\n");
    }

    return result < 0 ? result : count;
}
Ejemplo n.º 2
0
static void zero_autoresume(unsigned long _dev)
{
    struct zero_dev	*dev = (struct zero_dev *) _dev;
    int		status;

    /* normally the host would be woken up for something
     * more significant than just a timer firing...
     */
    if (dev->gadget->speed != USB_SPEED_UNKNOWN) {
        status = usb_gadget_wakeup(dev->gadget);
        DBG(dev, "wakeup --> %d\n", status);
    }
}
Ejemplo n.º 3
0
static void zero_autoresume(unsigned long _c)
{
	struct usb_composite_dev	*cdev = (void *)_c;
	struct usb_gadget		*g = cdev->gadget;

	
	if (!cdev->config)
		return;

	if (g->speed != USB_SPEED_UNKNOWN) {
		int status = usb_gadget_wakeup(g);
		INFO(cdev, "%s --> %d\n", __func__, status);
	}
}
Ejemplo n.º 4
0
static void zero_autoresume(unsigned long _c)
{
	struct usb_composite_dev	*cdev = (void *)_c;
	struct usb_gadget		*g = cdev->gadget;

	/* unconfigured devices can't issue wakeups */
	if (!cdev->config)
		return;

	/* Normally the host would be woken up for something
	 * more significant than just a timer firing; likely
	 * because of some direct user request.
	 */
	if (g->speed != USB_SPEED_UNKNOWN) {
		int status = usb_gadget_wakeup(g);
		INFO(cdev, "%s --> %d\n", __func__, status);
	}
}
Ejemplo n.º 5
0
static int bam_data_wake_cb(void *param)
{
	struct bam_data_port *port = (struct bam_data_port *)param;
	struct data_port *d_port = port->port_usb;

	pr_debug("%s: woken up by peer\n", __func__);

	if (!d_port) {
		pr_err("FAILED: d_port == NULL");
		return -ENODEV;
	}

	if (!d_port->cdev) {
		pr_err("FAILED: d_port->cdev == NULL");
		return -ENODEV;
	}

	if (!d_port->cdev->gadget) {
		pr_err("FAILED: d_port->cdev->gadget == NULL");
		return -ENODEV;
	}

	return usb_gadget_wakeup(d_port->cdev->gadget);
}