+static int
qca8k_set_page(struct mii_bus *bus, u16 page)
{
if (page == qca8k_current_page)
- return;
+ return 0;
- if (bus->write(bus, 0x18, 0, page) < 0)
+ if (bus->write(bus, 0x18, 0, page) < 0) {
dev_err_ratelimited(&bus->dev,
"failed to set qca8k page\n");
+ return -EBUSY;
EBUSY is a bit odd. bus->write() should return an error code. Please
return that.
quoted hunk ↗ jump to hunk
@@ -161,14 +169,19 @@ static void
qca8k_write(struct qca8k_priv *priv, u32 reg, u32 val)
{
u16 r1, r2, page;
+ int ret;
qca8k_split_addr(reg, &r1, &r2, &page);
mutex_lock_nested(&priv->bus->mdio_lock, MDIO_MUTEX_NESTED);
- qca8k_set_page(priv->bus, page);
+ ret = qca8k_set_page(priv->bus, page);
+ if (ret < 0)
+ goto exit;
+
qca8k_mii_write32(priv->bus, 0x10 | r2, r1, val);
+exit:
mutex_unlock(&priv->bus->mdio_lock);
Maybe make this function also return the error?
}