On Thursday 09 January 2014, Roger Quadros wrote:
quoted
quoted
if (!IS_ERR(hpriv->phy)) {
rc = phy_init(hpriv->phy);
if (rc)
goto disable_unprepare_clk;
rc = phy_power_on(hpriv->phy);
if (rc) {
phy_exit(hpriv->phy);
goto disable_unprepare_clk;
}
}
As I said, I'd prefer to set hpriv->phy to NULL in case of -ENODEV,
but functionally it seems right (with the fixup from your other mail).
Why do you prefer setting hpriv->phy to NULL instead of using IS_ERR() check
before hpriv->phy is used?
The latter seems to be the norm at least among clock framework users.
Two reasons:
1. It feels more natural to read "if (clk)" in driver code as a check for
"a clock exists" than "if (!IS_ERR(clk))".
2. It clarifies that this code path is only there to check for the
clk-not-present case, not for other errors.
Obviously the first check after clk_get needs to be IS_ERR() because that
is the documented interface, but then you should decide on the action
based on the specific error.
Arnd