Merge branch 'phylib-regressions-part-2'
Andrew Lunn says: ==================== Part 2 of v4.5-rc1 phylib regression White list PHY compatible values which indicate PHYs. Issue a warning when one is encountered. Update the documentation to make it clear what is expected in the compatible string. v2: Fix Grammar, reword changelog, add Tested-by and Acked-by. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Коммит
b64438853f
|
@ -68,7 +68,7 @@ ethernet@f0b60000 {
|
||||||
phy1: ethernet-phy@1 {
|
phy1: ethernet-phy@1 {
|
||||||
max-speed = <1000>;
|
max-speed = <1000>;
|
||||||
reg = <0x1>;
|
reg = <0x1>;
|
||||||
compatible = "brcm,28nm-gphy", "ethernet-phy-ieee802.3-c22";
|
compatible = "ethernet-phy-ieee802.3-c22";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -115,7 +115,7 @@ ethernet@f0ba0000 {
|
||||||
phy0: ethernet-phy@0 {
|
phy0: ethernet-phy@0 {
|
||||||
max-speed = <1000>;
|
max-speed = <1000>;
|
||||||
reg = <0x0>;
|
reg = <0x0>;
|
||||||
compatible = "brcm,bcm53125", "ethernet-phy-ieee802.3-c22";
|
compatible = "ethernet-phy-ieee802.3-c22";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -38,7 +38,6 @@ Example :
|
||||||
|
|
||||||
phy11: ethernet-phy@1 {
|
phy11: ethernet-phy@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
@ -48,7 +47,6 @@ Example :
|
||||||
};
|
};
|
||||||
phy12: ethernet-phy@2 {
|
phy12: ethernet-phy@2 {
|
||||||
reg = <2>;
|
reg = <2>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
@ -58,7 +56,6 @@ Example :
|
||||||
};
|
};
|
||||||
phy13: ethernet-phy@3 {
|
phy13: ethernet-phy@3 {
|
||||||
reg = <3>;
|
reg = <3>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
@ -68,7 +65,6 @@ Example :
|
||||||
};
|
};
|
||||||
phy14: ethernet-phy@4 {
|
phy14: ethernet-phy@4 {
|
||||||
reg = <4>;
|
reg = <4>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
@ -85,7 +81,6 @@ Example :
|
||||||
|
|
||||||
phy21: ethernet-phy@1 {
|
phy21: ethernet-phy@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
@ -95,7 +90,6 @@ Example :
|
||||||
};
|
};
|
||||||
phy22: ethernet-phy@2 {
|
phy22: ethernet-phy@2 {
|
||||||
reg = <2>;
|
reg = <2>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
@ -105,7 +99,6 @@ Example :
|
||||||
};
|
};
|
||||||
phy23: ethernet-phy@3 {
|
phy23: ethernet-phy@3 {
|
||||||
reg = <3>;
|
reg = <3>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
@ -115,7 +108,6 @@ Example :
|
||||||
};
|
};
|
||||||
phy24: ethernet-phy@4 {
|
phy24: ethernet-phy@4 {
|
||||||
reg = <4>;
|
reg = <4>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
|
|
@ -47,7 +47,6 @@ Example :
|
||||||
|
|
||||||
phy11: ethernet-phy@1 {
|
phy11: ethernet-phy@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
@ -57,7 +56,6 @@ Example :
|
||||||
};
|
};
|
||||||
phy12: ethernet-phy@2 {
|
phy12: ethernet-phy@2 {
|
||||||
reg = <2>;
|
reg = <2>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
@ -67,7 +65,6 @@ Example :
|
||||||
};
|
};
|
||||||
phy13: ethernet-phy@3 {
|
phy13: ethernet-phy@3 {
|
||||||
reg = <3>;
|
reg = <3>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
@ -77,7 +74,6 @@ Example :
|
||||||
};
|
};
|
||||||
phy14: ethernet-phy@4 {
|
phy14: ethernet-phy@4 {
|
||||||
reg = <4>;
|
reg = <4>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
@ -94,7 +90,6 @@ Example :
|
||||||
|
|
||||||
phy21: ethernet-phy@1 {
|
phy21: ethernet-phy@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
@ -104,7 +99,6 @@ Example :
|
||||||
};
|
};
|
||||||
phy22: ethernet-phy@2 {
|
phy22: ethernet-phy@2 {
|
||||||
reg = <2>;
|
reg = <2>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
@ -114,7 +108,6 @@ Example :
|
||||||
};
|
};
|
||||||
phy23: ethernet-phy@3 {
|
phy23: ethernet-phy@3 {
|
||||||
reg = <3>;
|
reg = <3>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
@ -124,7 +117,6 @@ Example :
|
||||||
};
|
};
|
||||||
phy24: ethernet-phy@4 {
|
phy24: ethernet-phy@4 {
|
||||||
reg = <4>;
|
reg = <4>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
|
|
@ -17,8 +17,7 @@ Optional Properties:
|
||||||
"ethernet-phy-ieee802.3-c22" or "ethernet-phy-ieee802.3-c45" for
|
"ethernet-phy-ieee802.3-c22" or "ethernet-phy-ieee802.3-c45" for
|
||||||
PHYs that implement IEEE802.3 clause 22 or IEEE802.3 clause 45
|
PHYs that implement IEEE802.3 clause 22 or IEEE802.3 clause 45
|
||||||
specifications. If neither of these are specified, the default is to
|
specifications. If neither of these are specified, the default is to
|
||||||
assume clause 22. The compatible list may also contain other
|
assume clause 22.
|
||||||
elements.
|
|
||||||
|
|
||||||
If the phy's identifier is known then the list may contain an entry
|
If the phy's identifier is known then the list may contain an entry
|
||||||
of the form: "ethernet-phy-idAAAA.BBBB" where
|
of the form: "ethernet-phy-idAAAA.BBBB" where
|
||||||
|
@ -28,6 +27,9 @@ Optional Properties:
|
||||||
4 hex digits. This is the chip vendor OUI bits 19:24,
|
4 hex digits. This is the chip vendor OUI bits 19:24,
|
||||||
followed by 10 bits of a vendor specific ID.
|
followed by 10 bits of a vendor specific ID.
|
||||||
|
|
||||||
|
The compatible list should not contain other values than those
|
||||||
|
listed here.
|
||||||
|
|
||||||
- max-speed: Maximum PHY supported speed (10, 100, 1000...)
|
- max-speed: Maximum PHY supported speed (10, 100, 1000...)
|
||||||
|
|
||||||
- broken-turn-around: If set, indicates the PHY device does not correctly
|
- broken-turn-around: If set, indicates the PHY device does not correctly
|
||||||
|
|
|
@ -143,11 +143,31 @@ int of_mdio_parse_addr(struct device *dev, const struct device_node *np)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(of_mdio_parse_addr);
|
EXPORT_SYMBOL(of_mdio_parse_addr);
|
||||||
|
|
||||||
|
/* The following is a list of PHY compatible strings which appear in
|
||||||
|
* some DTBs. The compatible string is never matched against a PHY
|
||||||
|
* driver, so is pointless. We only expect devices which are not PHYs
|
||||||
|
* to have a compatible string, so they can be matched to an MDIO
|
||||||
|
* driver. Encourage users to upgrade their DT blobs to remove these.
|
||||||
|
*/
|
||||||
|
static const struct of_device_id whitelist_phys[] = {
|
||||||
|
{ .compatible = "brcm,40nm-ephy" },
|
||||||
|
{ .compatible = "marvell,88E1111", },
|
||||||
|
{ .compatible = "marvell,88e1116", },
|
||||||
|
{ .compatible = "marvell,88e1118", },
|
||||||
|
{ .compatible = "marvell,88e1149r", },
|
||||||
|
{ .compatible = "marvell,88e1310", },
|
||||||
|
{ .compatible = "marvell,88E1510", },
|
||||||
|
{ .compatible = "marvell,88E1514", },
|
||||||
|
{ .compatible = "moxa,moxart-rtl8201cp", },
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return true if the child node is for a phy. It must either:
|
* Return true if the child node is for a phy. It must either:
|
||||||
* o Compatible string of "ethernet-phy-idX.X"
|
* o Compatible string of "ethernet-phy-idX.X"
|
||||||
* o Compatible string of "ethernet-phy-ieee802.3-c45"
|
* o Compatible string of "ethernet-phy-ieee802.3-c45"
|
||||||
* o Compatible string of "ethernet-phy-ieee802.3-c22"
|
* o Compatible string of "ethernet-phy-ieee802.3-c22"
|
||||||
|
* o In the white list above (and issue a warning)
|
||||||
* o No compatibility string
|
* o No compatibility string
|
||||||
*
|
*
|
||||||
* A device which is not a phy is expected to have a compatible string
|
* A device which is not a phy is expected to have a compatible string
|
||||||
|
@ -166,6 +186,13 @@ static bool of_mdiobus_child_is_phy(struct device_node *child)
|
||||||
if (of_device_is_compatible(child, "ethernet-phy-ieee802.3-c22"))
|
if (of_device_is_compatible(child, "ethernet-phy-ieee802.3-c22"))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
if (of_match_node(whitelist_phys, child)) {
|
||||||
|
pr_warn(FW_WARN
|
||||||
|
"%s: Whitelisted compatible string. Please remove\n",
|
||||||
|
child->full_name);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (!of_find_property(child, "compatible", NULL))
|
if (!of_find_property(child, "compatible", NULL))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче