mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-02-23 14:11:31 -05:00
net: pcs: xpcs: move searching ID list out of line
Move the searching of the physical ID out of xpcs_create() and into its own xpcs_identify() function, which makes it self contained. This reduces the complexity in xpcs_craete(), making it easier to follow, rather than having a lot of once-run code in the big for() loop. Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
135d118bfd
commit
7921d3e602
@@ -1339,6 +1339,26 @@ static const struct phylink_pcs_ops xpcs_phylink_ops = {
|
||||
.pcs_link_up = xpcs_link_up,
|
||||
};
|
||||
|
||||
static int xpcs_identify(struct dw_xpcs *xpcs)
|
||||
{
|
||||
int i, ret;
|
||||
|
||||
ret = xpcs_read_ids(xpcs);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(xpcs_desc_list); i++) {
|
||||
const struct dw_xpcs_desc *entry = &xpcs_desc_list[i];
|
||||
|
||||
if ((xpcs->info.pcs & entry->mask) == entry->id) {
|
||||
xpcs->desc = entry;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static struct dw_xpcs *xpcs_create_data(struct mdio_device *mdiodev)
|
||||
{
|
||||
struct dw_xpcs *xpcs;
|
||||
@@ -1395,7 +1415,6 @@ static void xpcs_clear_clks(struct dw_xpcs *xpcs)
|
||||
static int xpcs_init_id(struct dw_xpcs *xpcs)
|
||||
{
|
||||
const struct dw_xpcs_info *info;
|
||||
int i, ret;
|
||||
|
||||
info = dev_get_platdata(&xpcs->mdiodev->dev);
|
||||
if (!info) {
|
||||
@@ -1405,25 +1424,7 @@ static int xpcs_init_id(struct dw_xpcs *xpcs)
|
||||
xpcs->info = *info;
|
||||
}
|
||||
|
||||
ret = xpcs_read_ids(xpcs);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(xpcs_desc_list); i++) {
|
||||
const struct dw_xpcs_desc *desc = &xpcs_desc_list[i];
|
||||
|
||||
if ((xpcs->info.pcs & desc->mask) != desc->id)
|
||||
continue;
|
||||
|
||||
xpcs->desc = desc;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (!xpcs->desc)
|
||||
return -ENODEV;
|
||||
|
||||
return 0;
|
||||
return xpcs_identify(xpcs);
|
||||
}
|
||||
|
||||
static struct dw_xpcs *xpcs_create(struct mdio_device *mdiodev)
|
||||
|
||||
Reference in New Issue
Block a user