|
@@ -22,12 +22,20 @@
|
|
|
|
|
|
struct phy;
|
|
struct phy;
|
|
|
|
|
|
|
|
+enum phy_mode {
|
|
|
|
+ PHY_MODE_INVALID,
|
|
|
|
+ PHY_MODE_USB_HOST,
|
|
|
|
+ PHY_MODE_USB_DEVICE,
|
|
|
|
+ PHY_MODE_USB_OTG,
|
|
|
|
+};
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* struct phy_ops - set of function pointers for performing phy operations
|
|
* struct phy_ops - set of function pointers for performing phy operations
|
|
* @init: operation to be performed for initializing phy
|
|
* @init: operation to be performed for initializing phy
|
|
* @exit: operation to be performed while exiting
|
|
* @exit: operation to be performed while exiting
|
|
* @power_on: powering on the phy
|
|
* @power_on: powering on the phy
|
|
* @power_off: powering off the phy
|
|
* @power_off: powering off the phy
|
|
|
|
+ * @set_mode: set the mode of the phy
|
|
* @owner: the module owner containing the ops
|
|
* @owner: the module owner containing the ops
|
|
*/
|
|
*/
|
|
struct phy_ops {
|
|
struct phy_ops {
|
|
@@ -35,6 +43,7 @@ struct phy_ops {
|
|
int (*exit)(struct phy *phy);
|
|
int (*exit)(struct phy *phy);
|
|
int (*power_on)(struct phy *phy);
|
|
int (*power_on)(struct phy *phy);
|
|
int (*power_off)(struct phy *phy);
|
|
int (*power_off)(struct phy *phy);
|
|
|
|
+ int (*set_mode)(struct phy *phy, enum phy_mode mode);
|
|
struct module *owner;
|
|
struct module *owner;
|
|
};
|
|
};
|
|
|
|
|
|
@@ -126,6 +135,7 @@ int phy_init(struct phy *phy);
|
|
int phy_exit(struct phy *phy);
|
|
int phy_exit(struct phy *phy);
|
|
int phy_power_on(struct phy *phy);
|
|
int phy_power_on(struct phy *phy);
|
|
int phy_power_off(struct phy *phy);
|
|
int phy_power_off(struct phy *phy);
|
|
|
|
+int phy_set_mode(struct phy *phy, enum phy_mode mode);
|
|
static inline int phy_get_bus_width(struct phy *phy)
|
|
static inline int phy_get_bus_width(struct phy *phy)
|
|
{
|
|
{
|
|
return phy->attrs.bus_width;
|
|
return phy->attrs.bus_width;
|
|
@@ -233,6 +243,13 @@ static inline int phy_power_off(struct phy *phy)
|
|
return -ENOSYS;
|
|
return -ENOSYS;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static inline int phy_set_mode(struct phy *phy, enum phy_mode mode)
|
|
|
|
+{
|
|
|
|
+ if (!phy)
|
|
|
|
+ return 0;
|
|
|
|
+ return -ENOSYS;
|
|
|
|
+}
|
|
|
|
+
|
|
static inline int phy_get_bus_width(struct phy *phy)
|
|
static inline int phy_get_bus_width(struct phy *phy)
|
|
{
|
|
{
|
|
return -ENOSYS;
|
|
return -ENOSYS;
|