Commit 462938cd authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull pin control fixes from Linus Walleij:
 "An assortment of pin control fixes of varying importance, the most
  important ones affecting Intel and AMD laptops turned up the recent
  few days so it's time to push this to your tree.

   - Fix the Kconfig dependency for Qualcomm SM8350 pin controller

   - Fix pin biasing fallback behaviour on the Mediatek pin controller

   - Fix the GPIO numbering scheme for Intel Tiger Lake-H to correspond
     to the products that are now actually out on the market

   - Fix a pin control function itemization in the Sunxi driver
     out-of-bounds access bug

   - Fix disable clocking for the RISC-V K210 pin controller on the
     errorpath

   - Fix a system shutdown bug affecting AMD Ryzen-based laptops, the
     system would not suspend but just bounce back up"

* tag 'pinctrl-v5.14-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
  pinctrl: amd: Fix an issue with shutdown when system set to s0ix
  pinctrl: k210: Fix k210_fpioa_probe()
  pinctrl: sunxi: Don't underestimate number of functions
  pinctrl: tigerlake: Fix GPIO mapping for newer version of software
  pinctrl: mediatek: Fix fallback behavior for bias_set_combo
  pinctrl: qcom: fix GPIOLIB dependencies
parents f8e6dfc6 c4b68e51
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -701,32 +701,32 @@ static const struct pinctrl_pin_desc tglh_pins[] = {

static const struct intel_padgroup tglh_community0_gpps[] = {
	TGL_GPP(0, 0, 24, 0),				/* GPP_A */
	TGL_GPP(1, 25, 44, 128),			/* GPP_R */
	TGL_GPP(2, 45, 70, 32),				/* GPP_B */
	TGL_GPP(3, 71, 78, INTEL_GPIO_BASE_NOMAP),	/* vGPIO_0 */
	TGL_GPP(1, 25, 44, 32),				/* GPP_R */
	TGL_GPP(2, 45, 70, 64),				/* GPP_B */
	TGL_GPP(3, 71, 78, 96),				/* vGPIO_0 */
};

static const struct intel_padgroup tglh_community1_gpps[] = {
	TGL_GPP(0, 79, 104, 96),			/* GPP_D */
	TGL_GPP(1, 105, 128, 64),			/* GPP_C */
	TGL_GPP(2, 129, 136, 160),			/* GPP_S */
	TGL_GPP(3, 137, 153, 192),			/* GPP_G */
	TGL_GPP(4, 154, 180, 224),			/* vGPIO */
	TGL_GPP(0, 79, 104, 128),			/* GPP_D */
	TGL_GPP(1, 105, 128, 160),			/* GPP_C */
	TGL_GPP(2, 129, 136, 192),			/* GPP_S */
	TGL_GPP(3, 137, 153, 224),			/* GPP_G */
	TGL_GPP(4, 154, 180, 256),			/* vGPIO */
};

static const struct intel_padgroup tglh_community3_gpps[] = {
	TGL_GPP(0, 181, 193, 256),			/* GPP_E */
	TGL_GPP(1, 194, 217, 288),			/* GPP_F */
	TGL_GPP(0, 181, 193, 288),			/* GPP_E */
	TGL_GPP(1, 194, 217, 320),			/* GPP_F */
};

static const struct intel_padgroup tglh_community4_gpps[] = {
	TGL_GPP(0, 218, 241, 320),			/* GPP_H */
	TGL_GPP(0, 218, 241, 352),			/* GPP_H */
	TGL_GPP(1, 242, 251, 384),			/* GPP_J */
	TGL_GPP(2, 252, 266, 352),			/* GPP_K */
	TGL_GPP(2, 252, 266, 416),			/* GPP_K */
};

static const struct intel_padgroup tglh_community5_gpps[] = {
	TGL_GPP(0, 267, 281, 416),			/* GPP_I */
	TGL_GPP(0, 267, 281, 448),			/* GPP_I */
	TGL_GPP(1, 282, 290, INTEL_GPIO_BASE_NOMAP),	/* JTAG */
};

+3 −5
Original line number Diff line number Diff line
@@ -925,12 +925,10 @@ int mtk_pinconf_adv_pull_set(struct mtk_pinctrl *hw,
			err = hw->soc->bias_set(hw, desc, pullup);
			if (err)
				return err;
		} else if (hw->soc->bias_set_combo) {
			err = hw->soc->bias_set_combo(hw, desc, pullup, arg);
			if (err)
				return err;
		} else {
			return -ENOTSUPP;
			err = mtk_pinconf_bias_set_rev1(hw, desc, pullup);
			if (err)
				err = mtk_pinconf_bias_set(hw, desc, pullup);
		}
	}

+1 −2
Original line number Diff line number Diff line
@@ -444,8 +444,7 @@ static int amd_gpio_irq_set_wake(struct irq_data *d, unsigned int on)
	unsigned long flags;
	struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
	struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
	u32 wake_mask = BIT(WAKE_CNTRL_OFF_S0I3) | BIT(WAKE_CNTRL_OFF_S3) |
			BIT(WAKE_CNTRL_OFF_S4);
	u32 wake_mask = BIT(WAKE_CNTRL_OFF_S0I3) | BIT(WAKE_CNTRL_OFF_S3);

	raw_spin_lock_irqsave(&gpio_dev->lock, flags);
	pin_reg = readl(gpio_dev->base + (d->hwirq)*4);
+20 −6
Original line number Diff line number Diff line
@@ -950,23 +950,37 @@ static int k210_fpioa_probe(struct platform_device *pdev)
		return ret;

	pdata->pclk = devm_clk_get_optional(dev, "pclk");
	if (!IS_ERR(pdata->pclk))
		clk_prepare_enable(pdata->pclk);
	if (!IS_ERR(pdata->pclk)) {
		ret = clk_prepare_enable(pdata->pclk);
		if (ret)
			goto disable_clk;
	}

	pdata->sysctl_map =
		syscon_regmap_lookup_by_phandle_args(np,
						"canaan,k210-sysctl-power",
						1, &pdata->power_offset);
	if (IS_ERR(pdata->sysctl_map))
		return PTR_ERR(pdata->sysctl_map);
	if (IS_ERR(pdata->sysctl_map)) {
		ret = PTR_ERR(pdata->sysctl_map);
		goto disable_pclk;
	}

	k210_fpioa_init_ties(pdata);

	pdata->pctl = pinctrl_register(&k210_pinctrl_desc, dev, (void *)pdata);
	if (IS_ERR(pdata->pctl))
		return PTR_ERR(pdata->pctl);
	if (IS_ERR(pdata->pctl)) {
		ret = PTR_ERR(pdata->pctl);
		goto disable_pclk;
	}

	return 0;

disable_pclk:
	clk_disable_unprepare(pdata->pclk);
disable_clk:
	clk_disable_unprepare(pdata->clk);

	return ret;
}

static const struct of_device_id k210_fpioa_dt_ids[] = {
+31 −32
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ config PINCTRL_MSM

config PINCTRL_APQ8064
	tristate "Qualcomm APQ8064 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -21,7 +21,7 @@ config PINCTRL_APQ8064

config PINCTRL_APQ8084
	tristate "Qualcomm APQ8084 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -29,7 +29,7 @@ config PINCTRL_APQ8084

config PINCTRL_IPQ4019
	tristate "Qualcomm IPQ4019 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -37,7 +37,7 @@ config PINCTRL_IPQ4019

config PINCTRL_IPQ8064
	tristate "Qualcomm IPQ8064 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -45,7 +45,7 @@ config PINCTRL_IPQ8064

config PINCTRL_IPQ8074
	tristate "Qualcomm Technologies, Inc. IPQ8074 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for
@@ -55,7 +55,7 @@ config PINCTRL_IPQ8074

config PINCTRL_IPQ6018
	tristate "Qualcomm Technologies, Inc. IPQ6018 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for
@@ -65,7 +65,7 @@ config PINCTRL_IPQ6018

config PINCTRL_MSM8226
	tristate "Qualcomm 8226 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -74,7 +74,7 @@ config PINCTRL_MSM8226

config PINCTRL_MSM8660
	tristate "Qualcomm 8660 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -82,7 +82,7 @@ config PINCTRL_MSM8660

config PINCTRL_MSM8960
	tristate "Qualcomm 8960 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -90,7 +90,7 @@ config PINCTRL_MSM8960

config PINCTRL_MDM9615
	tristate "Qualcomm 9615 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -98,7 +98,7 @@ config PINCTRL_MDM9615

config PINCTRL_MSM8X74
	tristate "Qualcomm 8x74 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -106,7 +106,7 @@ config PINCTRL_MSM8X74

config PINCTRL_MSM8916
	tristate "Qualcomm 8916 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -114,7 +114,7 @@ config PINCTRL_MSM8916

config PINCTRL_MSM8953
	tristate "Qualcomm 8953 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -124,7 +124,7 @@ config PINCTRL_MSM8953

config PINCTRL_MSM8976
	tristate "Qualcomm 8976 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -134,7 +134,7 @@ config PINCTRL_MSM8976

config PINCTRL_MSM8994
	tristate "Qualcomm 8994 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -143,7 +143,7 @@ config PINCTRL_MSM8994

config PINCTRL_MSM8996
	tristate "Qualcomm MSM8996 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -151,7 +151,7 @@ config PINCTRL_MSM8996

config PINCTRL_MSM8998
	tristate "Qualcomm MSM8998 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -159,7 +159,7 @@ config PINCTRL_MSM8998

config PINCTRL_QCS404
	tristate "Qualcomm QCS404 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -167,7 +167,7 @@ config PINCTRL_QCS404

config PINCTRL_QDF2XXX
	tristate "Qualcomm Technologies QDF2xxx pin controller driver"
	depends on GPIOLIB && ACPI
	depends on ACPI
	depends on PINCTRL_MSM
	help
	  This is the GPIO driver for the TLMM block found on the
@@ -175,7 +175,7 @@ config PINCTRL_QDF2XXX

config PINCTRL_QCOM_SPMI_PMIC
	tristate "Qualcomm SPMI PMIC pin controller driver"
	depends on GPIOLIB && OF && SPMI
	depends on OF && SPMI
	select REGMAP_SPMI
	select PINMUX
	select PINCONF
@@ -190,7 +190,7 @@ config PINCTRL_QCOM_SPMI_PMIC

config PINCTRL_QCOM_SSBI_PMIC
	tristate "Qualcomm SSBI PMIC pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	select PINMUX
	select PINCONF
	select GENERIC_PINCONF
@@ -204,7 +204,7 @@ config PINCTRL_QCOM_SSBI_PMIC

config PINCTRL_SC7180
	tristate "Qualcomm Technologies Inc SC7180 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -213,7 +213,7 @@ config PINCTRL_SC7180

config PINCTRL_SC7280
	tristate "Qualcomm Technologies Inc SC7280 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -222,7 +222,7 @@ config PINCTRL_SC7280

config PINCTRL_SC8180X
	tristate "Qualcomm Technologies Inc SC8180x pin controller driver"
	depends on GPIOLIB && (OF || ACPI)
	depends on (OF || ACPI)
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -231,7 +231,7 @@ config PINCTRL_SC8180X

config PINCTRL_SDM660
	tristate "Qualcomm Technologies Inc SDM660 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	 This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -240,7 +240,7 @@ config PINCTRL_SDM660

config PINCTRL_SDM845
	tristate "Qualcomm Technologies Inc SDM845 pin controller driver"
	depends on GPIOLIB && (OF || ACPI)
	depends on (OF || ACPI)
	depends on PINCTRL_MSM
	help
	 This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -249,7 +249,7 @@ config PINCTRL_SDM845

config PINCTRL_SDX55
	tristate "Qualcomm Technologies Inc SDX55 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	 This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -258,7 +258,7 @@ config PINCTRL_SDX55

config PINCTRL_SM6125
	tristate "Qualcomm Technologies Inc SM6125 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	 This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -267,7 +267,7 @@ config PINCTRL_SM6125

config PINCTRL_SM8150
	tristate "Qualcomm Technologies Inc SM8150 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	 This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -276,7 +276,7 @@ config PINCTRL_SM8150

config PINCTRL_SM8250
	tristate "Qualcomm Technologies Inc SM8250 pin controller driver"
	depends on GPIOLIB && OF
	depends on OF
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
@@ -285,8 +285,7 @@ config PINCTRL_SM8250

config PINCTRL_SM8350
	tristate "Qualcomm Technologies Inc SM8350 pin controller driver"
	depends on GPIOLIB && OF
	select PINCTRL_MSM
	depends on PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
	  Qualcomm Technologies Inc TLMM block found on the Qualcomm
Loading