Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'ib-armada-for-v6.16' into devel

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

+21 -13
+21 -13
drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
··· 358 358 359 359 val = grp->val[func]; 360 360 361 - regmap_update_bits(info->regmap, reg, mask, val); 362 - 363 - return 0; 361 + return regmap_update_bits(info->regmap, reg, mask, val); 364 362 } 365 363 366 364 static int armada_37xx_pmx_set(struct pinctrl_dev *pctldev, ··· 400 402 struct armada_37xx_pinctrl *info = gpiochip_get_data(chip); 401 403 unsigned int reg = OUTPUT_EN; 402 404 unsigned int val, mask; 405 + int ret; 403 406 404 407 armada_37xx_update_reg(&reg, &offset); 405 408 mask = BIT(offset); 406 - regmap_read(info->regmap, reg, &val); 409 + ret = regmap_read(info->regmap, reg, &val); 410 + if (ret) 411 + return ret; 407 412 408 413 if (val & mask) 409 414 return GPIO_LINE_DIRECTION_OUT; ··· 418 417 unsigned int offset, int value) 419 418 { 420 419 struct armada_37xx_pinctrl *info = gpiochip_get_data(chip); 421 - unsigned int reg = OUTPUT_EN; 420 + unsigned int en_offset = offset; 421 + unsigned int reg = OUTPUT_VAL; 422 422 unsigned int mask, val, ret; 423 423 424 424 armada_37xx_update_reg(&reg, &offset); 425 425 mask = BIT(offset); 426 + val = value ? mask : 0; 426 427 427 - ret = regmap_update_bits(info->regmap, reg, mask, mask); 428 + ret = regmap_update_bits(info->regmap, reg, mask, val); 428 429 if (ret) 429 430 return ret; 430 431 431 - reg = OUTPUT_VAL; 432 - val = value ? mask : 0; 433 - return regmap_update_bits(info->regmap, reg, mask, val); 432 + reg = OUTPUT_EN; 433 + armada_37xx_update_reg(&reg, &en_offset); 434 + 435 + return regmap_update_bits(info->regmap, reg, mask, mask); 434 436 } 435 437 436 438 static int armada_37xx_gpio_get(struct gpio_chip *chip, unsigned int offset) ··· 441 437 struct armada_37xx_pinctrl *info = gpiochip_get_data(chip); 442 438 unsigned int reg = INPUT_VAL; 443 439 unsigned int val, mask; 440 + int ret; 444 441 445 442 armada_37xx_update_reg(&reg, &offset); 446 443 mask = BIT(offset); 447 444 448 - regmap_read(info->regmap, reg, &val); 445 + ret = regmap_read(info->regmap, reg, &val); 446 + if (ret) 447 + return ret; 449 448 450 449 return (val & mask) != 0; 451 450 } ··· 473 466 { 474 467 struct armada_37xx_pinctrl *info = pinctrl_dev_get_drvdata(pctldev); 475 468 struct gpio_chip *chip = range->gc; 469 + int ret; 476 470 477 471 dev_dbg(info->dev, "gpio_direction for pin %u as %s-%d to %s\n", 478 472 offset, range->name, offset, input ? "input" : "output"); 479 473 480 474 if (input) 481 - armada_37xx_gpio_direction_input(chip, offset); 475 + ret = armada_37xx_gpio_direction_input(chip, offset); 482 476 else 483 - armada_37xx_gpio_direction_output(chip, offset, 0); 477 + ret = armada_37xx_gpio_direction_output(chip, offset, 0); 484 478 485 - return 0; 479 + return ret; 486 480 } 487 481 488 482 static int armada_37xx_gpio_request_enable(struct pinctrl_dev *pctldev,