cregit-Linux how code gets into the kernel

Release 4.7 include/linux/usb/otg.h

/* USB OTG (On The Go) defines */
/*
 *
 * These APIs may be used between USB controllers.  USB device drivers
 * (for either host or peripheral roles) don't use these calls; they
 * continue to use just usb_device and usb_gadget.
 */

#ifndef __LINUX_USB_OTG_H

#define __LINUX_USB_OTG_H

#include <linux/phy/phy.h>
#include <linux/usb/phy.h>


struct usb_otg {
	
u8			default_a;

	
struct phy		*phy;
	/* old usb_phy interface */
	
struct usb_phy		*usb_phy;
	
struct usb_bus		*host;
	
struct usb_gadget	*gadget;

	
enum usb_otg_state	state;

	/* bind/unbind the host controller */
	
int	(*set_host)(struct usb_otg *otg, struct usb_bus *host);

	/* bind/unbind the peripheral controller */
	
int	(*set_peripheral)(struct usb_otg *otg,
					struct usb_gadget *gadget);

	/* effective for A-peripheral, ignored for B devices */
	
int	(*set_vbus)(struct usb_otg *otg, bool enabled);

	/* for B devices only:  start session with A-Host */
	
int	(*start_srp)(struct usb_otg *otg);

	/* start or continue HNP role switch */
	
int	(*start_hnp)(struct usb_otg *otg);

};

/**
 * struct usb_otg_caps - describes the otg capabilities of the device
 * @otg_rev: The OTG revision number the device is compliant with, it's
 *              in binary-coded decimal (i.e. 2.0 is 0200H).
 * @hnp_support: Indicates if the device supports HNP.
 * @srp_support: Indicates if the device supports SRP.
 * @adp_support: Indicates if the device supports ADP.
 */

struct usb_otg_caps {
	
u16 otg_rev;
	
bool hnp_support;
	
bool srp_support;
	
bool adp_support;
};

extern const char *usb_otg_state_string(enum usb_otg_state state);

/* Context: can sleep */

static inline int otg_start_hnp(struct usb_otg *otg) { if (otg && otg->start_hnp) return otg->start_hnp(otg); return -ENOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
heikki krogerusheikki krogerus2062.50%375.00%
david brownelldavid brownell1237.50%125.00%
Total32100.00%4100.00%

/* Context: can sleep */
static inline int otg_set_vbus(struct usb_otg *otg, bool enabled) { if (otg && otg->set_vbus) return otg->set_vbus(otg, enabled); return -ENOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
heikki krogerusheikki krogerus2259.46%375.00%
daniel mackdaniel mack1540.54%125.00%
Total37100.00%4100.00%

/* for HCDs */
static inline int otg_set_host(struct usb_otg *otg, struct usb_bus *host) { if (otg && otg->set_host) return otg->set_host(otg, host); return -ENOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
heikki krogerusheikki krogerus2256.41%375.00%
david brownelldavid brownell1743.59%125.00%
Total39100.00%4100.00%

/* for usb peripheral controller drivers */ /* Context: can sleep */
static inline int otg_set_peripheral(struct usb_otg *otg, struct usb_gadget *periph) { if (otg && otg->set_peripheral) return otg->set_peripheral(otg, periph); return -ENOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
heikki krogerusheikki krogerus2256.41%375.00%
david brownelldavid brownell1743.59%125.00%
Total39100.00%4100.00%


static inline int otg_start_srp(struct usb_otg *otg) { if (otg && otg->start_srp) return otg->start_srp(otg); return -ENOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
heikki krogerusheikki krogerus2062.50%375.00%
david brownelldavid brownell1237.50%125.00%
Total32100.00%4100.00%

/* for OTG controller drivers (and maybe other stuff) */ extern int usb_bus_start_enum(struct usb_bus *bus, unsigned port_num); enum usb_dr_mode { USB_DR_MODE_UNKNOWN, USB_DR_MODE_HOST, USB_DR_MODE_PERIPHERAL, USB_DR_MODE_OTG, }; /** * usb_get_dr_mode - Get dual role mode for given device * @dev: Pointer to the given device * * The function gets phy interface string from property 'dr_mode', * and returns the correspondig enum usb_dr_mode */ extern enum usb_dr_mode usb_get_dr_mode(struct device *dev); #endif /* __LINUX_USB_OTG_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
heikki krogerusheikki krogerus20052.77%419.05%
david brownelldavid brownell7419.53%29.52%
li junli jun184.75%14.76%
daniel mackdaniel mack164.22%14.76%
antoine tenartantoine tenart143.69%314.29%
venu byravarasuvenu byravarasu123.17%14.76%
michael grzeschikmichael grzeschik123.17%14.76%
robert p. j. dayrobert p. j. day102.64%14.76%
anatolij gustschinanatolij gustschin92.37%14.76%
kishon vijay abraham ikishon vijay abraham i61.58%14.76%
felipe balbifelipe balbi30.79%29.52%
philipp zabelphilipp zabel20.53%14.76%
robert jarzmikrobert jarzmik20.53%14.76%
greg kroah-hartmangreg kroah-hartman10.26%14.76%
Total379100.00%21100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
{% endraw %}