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:
Коммит
6f7d2346cb
|
@ -342,6 +342,21 @@ int phy_power_off(struct phy *phy)
|
|||
}
|
||||
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
|
||||
* @np: device_node for which to get the phy
|
||||
|
|
|
@ -518,7 +518,7 @@ enum clk_type_t {
|
|||
CLK_INT_SING = 2, /* Internal single ended */
|
||||
};
|
||||
|
||||
enum phy_mode {
|
||||
enum xgene_phy_mode {
|
||||
MODE_SATA = 0, /* List them for simple reference */
|
||||
MODE_SGMII = 1,
|
||||
MODE_PCIE = 2,
|
||||
|
@ -542,7 +542,7 @@ struct xgene_sata_override_param {
|
|||
struct xgene_phy_ctx {
|
||||
struct device *dev;
|
||||
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 */
|
||||
void __iomem *sds_base; /* PHY CSR base addr */
|
||||
struct clk *clk; /* Optional clock */
|
||||
|
|
|
@ -22,12 +22,20 @@
|
|||
|
||||
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
|
||||
* @init: operation to be performed for initializing phy
|
||||
* @exit: operation to be performed while exiting
|
||||
* @power_on: powering on the phy
|
||||
* @power_off: powering off the phy
|
||||
* @set_mode: set the mode of the phy
|
||||
* @owner: the module owner containing the ops
|
||||
*/
|
||||
struct phy_ops {
|
||||
|
@ -35,6 +43,7 @@ struct phy_ops {
|
|||
int (*exit)(struct phy *phy);
|
||||
int (*power_on)(struct phy *phy);
|
||||
int (*power_off)(struct phy *phy);
|
||||
int (*set_mode)(struct phy *phy, enum phy_mode mode);
|
||||
struct module *owner;
|
||||
};
|
||||
|
||||
|
@ -126,6 +135,7 @@ int phy_init(struct phy *phy);
|
|||
int phy_exit(struct phy *phy);
|
||||
int phy_power_on(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)
|
||||
{
|
||||
return phy->attrs.bus_width;
|
||||
|
@ -233,6 +243,13 @@ static inline int phy_power_off(struct phy *phy)
|
|||
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)
|
||||
{
|
||||
return -ENOSYS;
|
||||
|
|
Загрузка…
Ссылка в новой задаче