]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/pinctrl/intel/pinctrl-intel.c
pinctrl: intel: Read back TX buffer state
[mirror_ubuntu-bionic-kernel.git] / drivers / pinctrl / intel / pinctrl-intel.c
index ac806891ff817d6e25f0753335cc9ea9e2c6891b..71df0f70b61f01c51484c87f35bdba9a1158cdbc 100644 (file)
@@ -751,12 +751,17 @@ static int intel_gpio_get(struct gpio_chip *chip, unsigned offset)
 {
        struct intel_pinctrl *pctrl = gpiochip_get_data(chip);
        void __iomem *reg;
+       u32 padcfg0;
 
        reg = intel_get_padcfg(pctrl, offset, PADCFG0);
        if (!reg)
                return -EINVAL;
 
-       return !!(readl(reg) & PADCFG0_GPIORXSTATE);
+       padcfg0 = readl(reg);
+       if (!(padcfg0 & PADCFG0_GPIOTXDIS))
+               return !!(padcfg0 & PADCFG0_GPIOTXSTATE);
+
+       return !!(padcfg0 & PADCFG0_GPIORXSTATE);
 }
 
 static void intel_gpio_set(struct gpio_chip *chip, unsigned offset, int value)