Browse Source

修改GPIO174-181管脚配置

huangliang 9 months ago
parent
commit
b012959d32
2 changed files with 9 additions and 1 deletions
  1. 1 1
      linux/arch/arm/boot/dts/ark1668e.dtsi
  2. 8 0
      linux/drivers/pinctrl/pinctrl-ark.c

+ 1 - 1
linux/arch/arm/boot/dts/ark1668e.dtsi

@@ -545,7 +545,7 @@
 			reg = <0xe4900000 0x1000>;
 			pad-reg-offset = <0x1c0>;
 			npins = <192>;
-			gpio-mux-pins = <182>;
+			gpio-mux-pins = <170>;
 		};
 
 		dmac: dmac@e0000000 {

+ 8 - 0
linux/drivers/pinctrl/pinctrl-ark.c

@@ -30,6 +30,8 @@
 #define PIN_REG_OFFSET(x)	(((x) / PAD_NUMS_PER_REG) * 4)
 #define PIN_BIT_OFFSET(x)	(((x) % PAD_NUMS_PER_REG) * BITS_PER_PAD)
 
+#define ARKE_PAD_CTL2A		0xa8
+
 struct ark_pad_ctrl {
 	int reg;
 	int offset;
@@ -655,6 +657,12 @@ static int ark_gpio_request_enable(struct pinctrl_dev *pctldev, struct pinctrl_g
 			val = readl_relaxed(info->regbase + info->pad_reg_offset + PIN_REG_OFFSET(offset));
 			val &= ~(PAD_BITS_MASK << PIN_BIT_OFFSET(offset));
 			writel_relaxed(val, info->regbase + info->pad_reg_offset + PIN_REG_OFFSET(offset));
+		} else {
+			if (offset >= 174 && offset <= 181) {
+				val = readl_relaxed(info->regbase + ARKE_PAD_CTL2A);
+				val &= ~(0x3 << 30);
+				writel_relaxed(val, info->regbase + ARKE_PAD_CTL2A);
+			}
 		}
 	} else {
 		pctrl = &info->pctrl[offset];