net: of_get_phy_mode: Change API to solve int/unit warnings
Before this change of_get_phy_mode() returned an enum, phy_interface_t. On error, -ENODEV etc, is returned. If the result of the function is stored in a variable of type phy_interface_t, and the compiler has decided to represent this as an unsigned int, comparision with -ENODEV etc, is a signed vs unsigned comparision. Fix this problem by changing the API. Make the function return an error, or 0 on success, and pass a pointer, of type phy_interface_t, where the phy mode should be stored. v2: Return with *interface set to PHY_INTERFACE_MODE_NA on error. Add error checks to all users of of_get_phy_mode() Fixup a few reverse christmas tree errors Fixup a few slightly malformed reverse christmas trees v3: Fix 0-day reported errors. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
5d1fcaf35d
commit
0c65b2b90d
@@ -381,8 +381,9 @@ static void bcm_sf2_identify_ports(struct bcm_sf2_priv *priv,
|
||||
struct device_node *dn)
|
||||
{
|
||||
struct device_node *port;
|
||||
int mode;
|
||||
unsigned int port_num;
|
||||
phy_interface_t mode;
|
||||
int err;
|
||||
|
||||
priv->moca_port = -1;
|
||||
|
||||
@@ -395,8 +396,8 @@ static void bcm_sf2_identify_ports(struct bcm_sf2_priv *priv,
|
||||
* has completed, since they might be turned off at that
|
||||
* time
|
||||
*/
|
||||
mode = of_get_phy_mode(port);
|
||||
if (mode < 0)
|
||||
err = of_get_phy_mode(port, &mode);
|
||||
if (err)
|
||||
continue;
|
||||
|
||||
if (mode == PHY_INTERFACE_MODE_INTERNAL)
|
||||
|
@@ -422,6 +422,7 @@ EXPORT_SYMBOL(ksz_switch_alloc);
|
||||
int ksz_switch_register(struct ksz_device *dev,
|
||||
const struct ksz_dev_ops *ops)
|
||||
{
|
||||
phy_interface_t interface;
|
||||
int ret;
|
||||
|
||||
if (dev->pdata)
|
||||
@@ -456,9 +457,9 @@ int ksz_switch_register(struct ksz_device *dev,
|
||||
* device tree.
|
||||
*/
|
||||
if (dev->dev->of_node) {
|
||||
ret = of_get_phy_mode(dev->dev->of_node);
|
||||
if (ret >= 0)
|
||||
dev->interface = ret;
|
||||
ret = of_get_phy_mode(dev->dev->of_node, &interface);
|
||||
if (ret == 0)
|
||||
dev->interface = interface;
|
||||
dev->synclko_125 = of_property_read_bool(dev->dev->of_node,
|
||||
"microchip,synclko-125");
|
||||
}
|
||||
|
@@ -1340,7 +1340,9 @@ mt7530_setup(struct dsa_switch *ds)
|
||||
|
||||
if (!dsa_is_unused_port(ds, 5)) {
|
||||
priv->p5_intf_sel = P5_INTF_SEL_GMAC5;
|
||||
interface = of_get_phy_mode(dsa_to_port(ds, 5)->dn);
|
||||
ret = of_get_phy_mode(dsa_to_port(ds, 5)->dn, &interface);
|
||||
if (ret && ret != -ENODEV)
|
||||
return ret;
|
||||
} else {
|
||||
/* Scan the ethernet nodes. look for GMAC1, lookup used phy */
|
||||
for_each_child_of_node(dn, mac_np) {
|
||||
@@ -1354,7 +1356,9 @@ mt7530_setup(struct dsa_switch *ds)
|
||||
|
||||
phy_node = of_parse_phandle(mac_np, "phy-handle", 0);
|
||||
if (phy_node->parent == priv->dev->of_node->parent) {
|
||||
interface = of_get_phy_mode(mac_np);
|
||||
ret = of_get_phy_mode(mac_np, &interface);
|
||||
if (ret && ret != -ENODEV)
|
||||
return ret;
|
||||
id = of_mdio_parse_addr(ds->dev, phy_node);
|
||||
if (id == 0)
|
||||
priv->p5_intf_sel = P5_INTF_SEL_PHY_P0;
|
||||
|
@@ -639,7 +639,8 @@ static int
|
||||
qca8k_setup(struct dsa_switch *ds)
|
||||
{
|
||||
struct qca8k_priv *priv = (struct qca8k_priv *)ds->priv;
|
||||
int ret, i, phy_mode = -1;
|
||||
phy_interface_t phy_mode = PHY_INTERFACE_MODE_NA;
|
||||
int ret, i;
|
||||
u32 mask;
|
||||
|
||||
/* Make sure that port 0 is the cpu port */
|
||||
@@ -661,10 +662,10 @@ qca8k_setup(struct dsa_switch *ds)
|
||||
return ret;
|
||||
|
||||
/* Initialize CPU port pad mode (xMII type, delays...) */
|
||||
phy_mode = of_get_phy_mode(dsa_to_port(ds, QCA8K_CPU_PORT)->dn);
|
||||
if (phy_mode < 0) {
|
||||
ret = of_get_phy_mode(dsa_to_port(ds, QCA8K_CPU_PORT)->dn, &phy_mode);
|
||||
if (ret) {
|
||||
pr_err("Can't find phy-mode for master device\n");
|
||||
return phy_mode;
|
||||
return ret;
|
||||
}
|
||||
ret = qca8k_set_pad_ctrl(priv, QCA8K_CPU_PORT, phy_mode);
|
||||
if (ret < 0)
|
||||
|
@@ -584,8 +584,9 @@ static int sja1105_parse_ports_node(struct sja1105_private *priv,
|
||||
|
||||
for_each_child_of_node(ports_node, child) {
|
||||
struct device_node *phy_node;
|
||||
int phy_mode;
|
||||
phy_interface_t phy_mode;
|
||||
u32 index;
|
||||
int err;
|
||||
|
||||
/* Get switch port number from DT */
|
||||
if (of_property_read_u32(child, "reg", &index) < 0) {
|
||||
@@ -596,8 +597,8 @@ static int sja1105_parse_ports_node(struct sja1105_private *priv,
|
||||
}
|
||||
|
||||
/* Get PHY mode from DT */
|
||||
phy_mode = of_get_phy_mode(child);
|
||||
if (phy_mode < 0) {
|
||||
err = of_get_phy_mode(child, &phy_mode);
|
||||
if (err) {
|
||||
dev_err(dev, "Failed to read phy-mode or "
|
||||
"phy-interface-type property for port %d\n",
|
||||
index);
|
||||
|
Reference in New Issue
Block a user