]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: phy: qca807x: use new GPIO line value setter callbacks
authorBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Mon, 16 Jun 2025 07:24:08 +0000 (09:24 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 18 Jun 2025 01:04:11 +0000 (18:04 -0700)
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20250616-gpiochip-set-rv-net-v2-5-cae0b182a552@linaro.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/qcom/qca807x.c

index 1af6b5ead74bf615ad155e396b0ecc6fe5636e8c..6d10ef7e9a8a4d906ea3a7e0d73087e8907be9c4 100644 (file)
@@ -377,7 +377,7 @@ static int qca807x_gpio_get(struct gpio_chip *gc, unsigned int offset)
        return FIELD_GET(QCA807X_GPIO_FORCE_MODE_MASK, val);
 }
 
-static void qca807x_gpio_set(struct gpio_chip *gc, unsigned int offset, int value)
+static int qca807x_gpio_set(struct gpio_chip *gc, unsigned int offset, int value)
 {
        struct qca807x_gpio_priv *priv = gpiochip_get_data(gc);
        u16 reg;
@@ -386,18 +386,19 @@ static void qca807x_gpio_set(struct gpio_chip *gc, unsigned int offset, int valu
        reg = QCA807X_MMD7_LED_FORCE_CTRL(offset);
 
        val = phy_read_mmd(priv->phy, MDIO_MMD_AN, reg);
+       if (val < 0)
+               return val;
+
        val &= ~QCA807X_GPIO_FORCE_MODE_MASK;
        val |= QCA807X_GPIO_FORCE_EN;
        val |= FIELD_PREP(QCA807X_GPIO_FORCE_MODE_MASK, value);
 
-       phy_write_mmd(priv->phy, MDIO_MMD_AN, reg, val);
+       return phy_write_mmd(priv->phy, MDIO_MMD_AN, reg, val);
 }
 
 static int qca807x_gpio_dir_out(struct gpio_chip *gc, unsigned int offset, int value)
 {
-       qca807x_gpio_set(gc, offset, value);
-
-       return 0;
+       return qca807x_gpio_set(gc, offset, value);
 }
 
 static int qca807x_gpio(struct phy_device *phydev)
@@ -425,7 +426,7 @@ static int qca807x_gpio(struct phy_device *phydev)
        gc->get_direction = qca807x_gpio_get_direction;
        gc->direction_output = qca807x_gpio_dir_out;
        gc->get = qca807x_gpio_get;
-       gc->set = qca807x_gpio_set;
+       gc->set_rv = qca807x_gpio_set;
 
        return devm_gpiochip_add_data(dev, gc, priv);
 }