Add new set_mode phy ops
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIcBAABAgAGBQJXelfSAAoJEA5ceFyATYLZNZ4QAIyGsCDp9OyWFbstr+iR7+JG TFIlrRvtCX2AdG0C0/cX5XWDWji4vmWlnjmyKtjQqCwe+LmRXUOzbHgayhmzm2XK 8HgDbj0YUHUZLAK4yoZ3S5un+kG/tyPJSKnLfZj3yfzPjslQQzPSDCcqdULtPMi1 bgsvCM8plEgP7Bl6STMShR6WJCHTXP6/p1RsBgnmEZ74yMkSri5Usxlrd3oOmql6 2rREqWhrmVCQaGcQfLLNmFjU8vjI2ow54VPBRxnI/ZbNsmu/c5b0EpQ6SQVOiX1q QAsf+YiaR+sL4/orHeEXTWO/J3qtSoIGHSo6ypnlKN7A/29taXqHm7G6AqYmchN2 zbWXCnNAcL8r7z4xHMovjks5FLRMTsN1IQSX3X6cvp9x/RDdhmEXjDyxoJdQHVh5 cT0R2oDQ6qdAemT34HW4/F7oE6ft2v6amQPY1HChIi2KGT5mnf7qc79Ma5++aEq5 +qPmAXBTkhz0uowZ1MH996XfuYzIoU37qRsB4IQX3zLEM4SFt5De/7QX+BrpiyY9 /V3tUA/aaHBqoGvIJmggty71V0HDzmjIqtmR+z2ALS2IEavnv7lrfsURh0Wi7uKb Wq8U0l6j/LKMrMqmGIGSl/POYrn7i/DVzAAQnxFA2AHQHKOqC8noOn3jQJeWHByC xuRjNTQUfynjx0IXenk0 =lBOF -----END PGP SIGNATURE----- Merge tag 'phy-set-mode-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/kishon/linux-phy into next Add new set_mode phy ops Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
This commit is contained in:
commit
6f7d2346cb
|
@ -342,6 +342,21 @@ int phy_power_off(struct phy *phy)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(phy_power_off);
|
EXPORT_SYMBOL_GPL(phy_power_off);
|
||||||
|
|
||||||
|
int phy_set_mode(struct phy *phy, enum phy_mode mode)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (!phy || !phy->ops->set_mode)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
mutex_lock(&phy->mutex);
|
||||||
|
ret = phy->ops->set_mode(phy, mode);
|
||||||
|
mutex_unlock(&phy->mutex);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(phy_set_mode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* _of_phy_get() - lookup and obtain a reference to a phy by phandle
|
* _of_phy_get() - lookup and obtain a reference to a phy by phandle
|
||||||
* @np: device_node for which to get the phy
|
* @np: device_node for which to get the phy
|
||||||
|
|
|
@ -518,7 +518,7 @@ enum clk_type_t {
|
||||||
CLK_INT_SING = 2, /* Internal single ended */
|
CLK_INT_SING = 2, /* Internal single ended */
|
||||||
};
|
};
|
||||||
|
|
||||||
enum phy_mode {
|
enum xgene_phy_mode {
|
||||||
MODE_SATA = 0, /* List them for simple reference */
|
MODE_SATA = 0, /* List them for simple reference */
|
||||||
MODE_SGMII = 1,
|
MODE_SGMII = 1,
|
||||||
MODE_PCIE = 2,
|
MODE_PCIE = 2,
|
||||||
|
@ -542,7 +542,7 @@ struct xgene_sata_override_param {
|
||||||
struct xgene_phy_ctx {
|
struct xgene_phy_ctx {
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
struct phy *phy;
|
struct phy *phy;
|
||||||
enum phy_mode mode; /* Mode of operation */
|
enum xgene_phy_mode mode; /* Mode of operation */
|
||||||
enum clk_type_t clk_type; /* Input clock selection */
|
enum clk_type_t clk_type; /* Input clock selection */
|
||||||
void __iomem *sds_base; /* PHY CSR base addr */
|
void __iomem *sds_base; /* PHY CSR base addr */
|
||||||
struct clk *clk; /* Optional clock */
|
struct clk *clk; /* Optional clock */
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue