gpio: intel_gpio: Pass pinctrl device to pcr_clrsetbits32()
authorWolfgang Wallner <wolfgang.wallner@br-automation.com>
Mon, 3 Feb 2020 10:38:04 +0000 (11:38 +0100)
committerBin Meng <bmeng.cn@gmail.com>
Tue, 4 Feb 2020 04:54:54 +0000 (12:54 +0800)
The function pcr_clrsetbits32() expects a device with a P2SB parent
device. In intel_gpio_direction_output() and intel_gpio_set_value()
the device 'dev' is passed to pcr_clrsetbits32(), which is a
gpio-controller with a device 'pinctrl' as parent. This does not match
the expectations of pcr_clrsetbits32(). But the 'pinctrl' device has a
P2SB as parent.

Pass the 'pinctrl' device instead of the 'dev' device to
pcr_clrsetbits32().

Signed-off-by: Wolfgang Wallner <wolfgang.wallner@br-automation.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
drivers/gpio/intel_gpio.c

index 4bf1c9ddc4e7057544d287b9aa08f41612955814..b05cfc4aeda3208ade962b5610924972dce5467a 100644 (file)
@@ -39,7 +39,7 @@ static int intel_gpio_direction_output(struct udevice *dev, uint offset,
        struct udevice *pinctrl = dev_get_parent(dev);
        uint config_offset = intel_pinctrl_get_config_reg_addr(pinctrl, offset);
 
-       pcr_clrsetbits32(dev, config_offset,
+       pcr_clrsetbits32(pinctrl, config_offset,
                         PAD_CFG0_MODE_MASK | PAD_CFG0_RX_STATE |
                                  PAD_CFG0_TX_DISABLE,
                         PAD_CFG0_MODE_GPIO | PAD_CFG0_RX_DISABLE |
@@ -72,7 +72,7 @@ static int intel_gpio_set_value(struct udevice *dev, unsigned offset, int value)
        struct udevice *pinctrl = dev_get_parent(dev);
        uint config_offset = intel_pinctrl_get_config_reg_addr(pinctrl, offset);
 
-       pcr_clrsetbits32(dev, config_offset, PAD_CFG0_TX_STATE,
+       pcr_clrsetbits32(pinctrl, config_offset, PAD_CFG0_TX_STATE,
                         value ? PAD_CFG0_TX_STATE : 0);
 
        return 0;