@@ -377,7 +377,7 @@ static int qca807x_gpio_get(struct gpio_chip *gc, unsigned int offset)
377
377
return FIELD_GET (QCA807X_GPIO_FORCE_MODE_MASK , val );
378
378
}
379
379
380
- static void qca807x_gpio_set (struct gpio_chip * gc , unsigned int offset , int value )
380
+ static int qca807x_gpio_set (struct gpio_chip * gc , unsigned int offset , int value )
381
381
{
382
382
struct qca807x_gpio_priv * priv = gpiochip_get_data (gc );
383
383
u16 reg ;
@@ -386,18 +386,19 @@ static void qca807x_gpio_set(struct gpio_chip *gc, unsigned int offset, int valu
386
386
reg = QCA807X_MMD7_LED_FORCE_CTRL (offset );
387
387
388
388
val = phy_read_mmd (priv -> phy , MDIO_MMD_AN , reg );
389
+ if (val < 0 )
390
+ return val ;
391
+
389
392
val &= ~QCA807X_GPIO_FORCE_MODE_MASK ;
390
393
val |= QCA807X_GPIO_FORCE_EN ;
391
394
val |= FIELD_PREP (QCA807X_GPIO_FORCE_MODE_MASK , value );
392
395
393
- phy_write_mmd (priv -> phy , MDIO_MMD_AN , reg , val );
396
+ return phy_write_mmd (priv -> phy , MDIO_MMD_AN , reg , val );
394
397
}
395
398
396
399
static int qca807x_gpio_dir_out (struct gpio_chip * gc , unsigned int offset , int value )
397
400
{
398
- qca807x_gpio_set (gc , offset , value );
399
-
400
- return 0 ;
401
+ return qca807x_gpio_set (gc , offset , value );
401
402
}
402
403
403
404
static int qca807x_gpio (struct phy_device * phydev )
@@ -425,7 +426,7 @@ static int qca807x_gpio(struct phy_device *phydev)
425
426
gc -> get_direction = qca807x_gpio_get_direction ;
426
427
gc -> direction_output = qca807x_gpio_dir_out ;
427
428
gc -> get = qca807x_gpio_get ;
428
- gc -> set = qca807x_gpio_set ;
429
+ gc -> set_rv = qca807x_gpio_set ;
429
430
430
431
return devm_gpiochip_add_data (dev , gc , priv );
431
432
}
0 commit comments