otg.c -- USB OTG utility code Copyright (C) 2004 Texas Instruments

来源:互联网 发布:windows私有云软件 编辑:程序博客网 时间:2024/06/05 20:17


https://source.codeaurora.org/external/gigabyte/ag-gb-dsds-7227/plain/kernel/drivers/usb/otg/otg.c


/* * otg.c -- USB OTG utility code * * Copyright (C) 2004 Texas Instruments * * 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. */#include <linux/kernel.h>#include <linux/device.h>#include <linux/usb/otg.h>static struct otg_transceiver *xceiv;/** * otg_get_transceiver - find the (single) OTG transceiver * * Returns the transceiver driver, after getting a refcount to it; or * null if there is no such transceiver.  The caller is responsible for * calling otg_put_transceiver() to release that count. * * For use by USB host and peripheral drivers. */struct otg_transceiver *otg_get_transceiver(void){if (xceiv)get_device(xceiv->dev);return xceiv;}EXPORT_SYMBOL(otg_get_transceiver);/** * otg_put_transceiver - release the (single) OTG transceiver * @x: the transceiver returned by otg_get_transceiver() * * Releases a refcount the caller received from otg_get_transceiver(). * * For use by USB host and peripheral drivers. */void otg_put_transceiver(struct otg_transceiver *x){if (x)put_device(x->dev);}EXPORT_SYMBOL(otg_put_transceiver);/** * otg_set_transceiver - declare the (single) OTG transceiver * @x: the USB OTG transceiver to be used; or NULL * * This call is exclusively for use by transceiver drivers, which * coordinate the activities of drivers for host and peripheral * controllers, and in some cases for VBUS current regulation. */int otg_set_transceiver(struct otg_transceiver *x){if (xceiv && x)return -EBUSY;xceiv = x;return 0;}EXPORT_SYMBOL(otg_set_transceiver);int otg_send_event(enum usb_otg_event event){struct otg_transceiver *otg = otg_get_transceiver();int ret = -ENOTSUPP;if (otg && otg->send_event)ret = otg->send_event(otg, event);if (otg)otg_put_transceiver(otg);return ret;}EXPORT_SYMBOL(otg_send_event);


0 0
原创粉丝点击