Patch "gpio: sifive: use the correct register to read output values" has been added to the 5.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    gpio: sifive: use the correct register to read output values

to the 5.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     gpio-sifive-use-the-correct-register-to-read-output-.patch
and it can be found in the queue-5.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 3057d4929183f2ea7867d975e3c3ea3aa16b4c76
Author: Niklas Cassel <niklas.cassel@xxxxxxx>
Date:   Fri Feb 4 13:02:25 2022 +0000

    gpio: sifive: use the correct register to read output values
    
    [ Upstream commit cc38ef936840ac29204d806deb4d1836ec509594 ]
    
    Setting the output of a GPIO to 1 using gpiod_set_value(), followed by
    reading the same GPIO using gpiod_get_value(), will currently yield an
    incorrect result.
    
    This is because the SiFive GPIO device stores the output values in reg_set,
    not reg_dat.
    
    Supply the flag BGPIOF_READ_OUTPUT_REG_SET to bgpio_init() so that the
    generic driver reads the correct register.
    
    Fixes: 96868dce644d ("gpio/sifive: Add GPIO driver for SiFive SoCs")
    Signed-off-by: Niklas Cassel <niklas.cassel@xxxxxxx>
    Reviewed-by: Linus Walleij <linus.walleij@xxxxxxxxxx>
    [Bartosz: added the Fixes tag]
    Signed-off-by: Bartosz Golaszewski <brgl@xxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/gpio/gpio-sifive.c b/drivers/gpio/gpio-sifive.c
index d5eb9ca119016..4f28fa73450c1 100644
--- a/drivers/gpio/gpio-sifive.c
+++ b/drivers/gpio/gpio-sifive.c
@@ -206,7 +206,7 @@ static int sifive_gpio_probe(struct platform_device *pdev)
 			 NULL,
 			 chip->base + SIFIVE_GPIO_OUTPUT_EN,
 			 chip->base + SIFIVE_GPIO_INPUT_EN,
-			 0);
+			 BGPIOF_READ_OUTPUT_REG_SET);
 	if (ret) {
 		dev_err(dev, "unable to init generic GPIO\n");
 		return ret;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux