uboot-d1: add bootloader for upcoming d1 target
[openwrt/staging/mans0n.git] / package / boot / uboot-d1 / patches / 0012-gpio-axp-Remove-virtual-VBUS-enable-GPIO.patch
1 From cbb281e0ec847b9de41970e470348b3534bb9a9f Mon Sep 17 00:00:00 2001
2 From: Samuel Holland <samuel@sholland.org>
3 Date: Thu, 26 Aug 2021 18:02:54 -0500
4 Subject: [PATCH 12/90] gpio: axp: Remove virtual VBUS enable GPIO
5
6 Now that this functionality is modeled using the device tree and
7 regulator uclass, the named GPIO is not referenced anywhere. Remove
8 it, along with the rest of the support for AXP virtual GPIOs.
9
10 Signed-off-by: Samuel Holland <samuel@sholland.org>
11 ---
12 arch/arm/include/asm/arch-sunxi/gpio.h | 8 ---
13 drivers/gpio/axp_gpio.c | 75 ++++++++------------------
14 drivers/gpio/sunxi_gpio.c | 8 ---
15 include/axp221.h | 4 --
16 include/axp809.h | 4 --
17 include/axp818.h | 4 --
18 6 files changed, 21 insertions(+), 82 deletions(-)
19
20 --- a/arch/arm/include/asm/arch-sunxi/gpio.h
21 +++ b/arch/arm/include/asm/arch-sunxi/gpio.h
22 @@ -111,7 +111,6 @@ enum sunxi_gpio_number {
23 SUNXI_GPIO_L_START = 352,
24 SUNXI_GPIO_M_START = SUNXI_GPIO_NEXT(SUNXI_GPIO_L),
25 SUNXI_GPIO_N_START = SUNXI_GPIO_NEXT(SUNXI_GPIO_M),
26 - SUNXI_GPIO_AXP0_START = 1024,
27 };
28
29 /* SUNXI GPIO number definitions */
30 @@ -128,8 +127,6 @@ enum sunxi_gpio_number {
31 #define SUNXI_GPM(_nr) (SUNXI_GPIO_M_START + (_nr))
32 #define SUNXI_GPN(_nr) (SUNXI_GPIO_N_START + (_nr))
33
34 -#define SUNXI_GPAXP0(_nr) (SUNXI_GPIO_AXP0_START + (_nr))
35 -
36 /* GPIO pin function config */
37 #define SUNXI_GPIO_INPUT 0
38 #define SUNXI_GPIO_OUTPUT 1
39 @@ -207,11 +204,6 @@ enum sunxi_gpio_number {
40 #define SUNXI_GPIO_PULL_UP 1
41 #define SUNXI_GPIO_PULL_DOWN 2
42
43 -/* Virtual AXP0 GPIOs */
44 -#define SUNXI_GPIO_AXP0_PREFIX "AXP0-"
45 -#define SUNXI_GPIO_AXP0_VBUS_ENABLE 5
46 -#define SUNXI_GPIO_AXP0_GPIO_COUNT 6
47 -
48 struct sunxi_gpio_plat {
49 struct sunxi_gpio *regs;
50 char bank_name[3];
51 --- a/drivers/gpio/axp_gpio.c
52 +++ b/drivers/gpio/axp_gpio.c
53 @@ -15,6 +15,9 @@
54 #include <dm/root.h>
55 #include <errno.h>
56
57 +#define AXP_GPIO_PREFIX "AXP0-"
58 +#define AXP_GPIO_COUNT 4
59 +
60 static int axp_gpio_set_value(struct udevice *dev, unsigned pin, int val);
61
62 static u8 axp_get_gpio_ctrl_reg(unsigned pin)
63 @@ -46,28 +49,14 @@ static int axp_gpio_direction_input(stru
64 static int axp_gpio_direction_output(struct udevice *dev, unsigned pin,
65 int val)
66 {
67 - __maybe_unused int ret;
68 u8 reg;
69
70 - switch (pin) {
71 -#ifdef AXP_MISC_CTRL_N_VBUSEN_FUNC
72 - /* Only available on later PMICs */
73 - case SUNXI_GPIO_AXP0_VBUS_ENABLE:
74 - ret = pmic_bus_clrbits(AXP_MISC_CTRL,
75 - AXP_MISC_CTRL_N_VBUSEN_FUNC);
76 - if (ret)
77 - return ret;
78 -
79 - return axp_gpio_set_value(dev, pin, val);
80 -#endif
81 - default:
82 - reg = axp_get_gpio_ctrl_reg(pin);
83 - if (reg == 0)
84 - return -EINVAL;
85 + reg = axp_get_gpio_ctrl_reg(pin);
86 + if (reg == 0)
87 + return -EINVAL;
88
89 - return pmic_bus_write(reg, val ? AXP_GPIO_CTRL_OUTPUT_HIGH :
90 - AXP_GPIO_CTRL_OUTPUT_LOW);
91 - }
92 + return pmic_bus_write(reg, val ? AXP_GPIO_CTRL_OUTPUT_HIGH :
93 + AXP_GPIO_CTRL_OUTPUT_LOW);
94 }
95
96 static int axp_gpio_get_value(struct udevice *dev, unsigned pin)
97 @@ -75,25 +64,16 @@ static int axp_gpio_get_value(struct ude
98 u8 reg, val, mask;
99 int ret;
100
101 - switch (pin) {
102 -#ifdef AXP_MISC_CTRL_N_VBUSEN_FUNC
103 - /* Only available on later PMICs */
104 - case SUNXI_GPIO_AXP0_VBUS_ENABLE:
105 - ret = pmic_bus_read(AXP_VBUS_IPSOUT, &val);
106 - mask = AXP_VBUS_IPSOUT_DRIVEBUS;
107 - break;
108 -#endif
109 - default:
110 - reg = axp_get_gpio_ctrl_reg(pin);
111 - if (reg == 0)
112 - return -EINVAL;
113 + reg = axp_get_gpio_ctrl_reg(pin);
114 + if (reg == 0)
115 + return -EINVAL;
116
117 - ret = pmic_bus_read(AXP_GPIO_STATE, &val);
118 - mask = 1 << (pin + AXP_GPIO_STATE_OFFSET);
119 - }
120 + ret = pmic_bus_read(AXP_GPIO_STATE, &val);
121 if (ret)
122 return ret;
123
124 + mask = 1 << (pin + AXP_GPIO_STATE_OFFSET);
125 +
126 return (val & mask) ? 1 : 0;
127 }
128
129 @@ -101,25 +81,12 @@ static int axp_gpio_set_value(struct ude
130 {
131 u8 reg;
132
133 - switch (pin) {
134 -#ifdef AXP_MISC_CTRL_N_VBUSEN_FUNC
135 - /* Only available on later PMICs */
136 - case SUNXI_GPIO_AXP0_VBUS_ENABLE:
137 - if (val)
138 - return pmic_bus_setbits(AXP_VBUS_IPSOUT,
139 - AXP_VBUS_IPSOUT_DRIVEBUS);
140 - else
141 - return pmic_bus_clrbits(AXP_VBUS_IPSOUT,
142 - AXP_VBUS_IPSOUT_DRIVEBUS);
143 -#endif
144 - default:
145 - reg = axp_get_gpio_ctrl_reg(pin);
146 - if (reg == 0)
147 - return -EINVAL;
148 + reg = axp_get_gpio_ctrl_reg(pin);
149 + if (reg == 0)
150 + return -EINVAL;
151
152 - return pmic_bus_write(reg, val ? AXP_GPIO_CTRL_OUTPUT_HIGH :
153 - AXP_GPIO_CTRL_OUTPUT_LOW);
154 - }
155 + return pmic_bus_write(reg, val ? AXP_GPIO_CTRL_OUTPUT_HIGH :
156 + AXP_GPIO_CTRL_OUTPUT_LOW);
157 }
158
159 static const struct dm_gpio_ops gpio_axp_ops = {
160 @@ -134,8 +101,8 @@ static int gpio_axp_probe(struct udevice
161 struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
162
163 /* Tell the uclass how many GPIOs we have */
164 - uc_priv->bank_name = strdup(SUNXI_GPIO_AXP0_PREFIX);
165 - uc_priv->gpio_count = SUNXI_GPIO_AXP0_GPIO_COUNT;
166 + uc_priv->bank_name = AXP_GPIO_PREFIX;
167 + uc_priv->gpio_count = AXP_GPIO_COUNT;
168
169 return 0;
170 }
171 --- a/drivers/gpio/sunxi_gpio.c
172 +++ b/drivers/gpio/sunxi_gpio.c
173 @@ -114,15 +114,7 @@ int sunxi_name_to_gpio(const char *name)
174 {
175 unsigned int gpio;
176 int ret;
177 -#if !defined CONFIG_SPL_BUILD && defined CONFIG_AXP_GPIO
178 - char lookup[8];
179
180 - if (strcasecmp(name, "AXP0-VBUS-ENABLE") == 0) {
181 - sprintf(lookup, SUNXI_GPIO_AXP0_PREFIX "%d",
182 - SUNXI_GPIO_AXP0_VBUS_ENABLE);
183 - name = lookup;
184 - }
185 -#endif
186 ret = gpio_lookup_name(name, NULL, NULL, &gpio);
187
188 return ret ? ret : gpio;
189 --- a/include/axp221.h
190 +++ b/include/axp221.h
191 @@ -53,10 +53,6 @@
192 #ifdef CONFIG_AXP221_POWER
193 #define AXP_POWER_STATUS 0x00
194 #define AXP_POWER_STATUS_ALDO_IN BIT(0)
195 -#define AXP_VBUS_IPSOUT 0x30
196 -#define AXP_VBUS_IPSOUT_DRIVEBUS (1 << 2)
197 -#define AXP_MISC_CTRL 0x8f
198 -#define AXP_MISC_CTRL_N_VBUSEN_FUNC (1 << 4)
199 #define AXP_GPIO0_CTRL 0x90
200 #define AXP_GPIO1_CTRL 0x92
201 #define AXP_GPIO_CTRL_OUTPUT_LOW 0x00 /* Drive pin low */
202 --- a/include/axp809.h
203 +++ b/include/axp809.h
204 @@ -47,10 +47,6 @@
205 #ifdef CONFIG_AXP809_POWER
206 #define AXP_POWER_STATUS 0x00
207 #define AXP_POWER_STATUS_ALDO_IN BIT(0)
208 -#define AXP_VBUS_IPSOUT 0x30
209 -#define AXP_VBUS_IPSOUT_DRIVEBUS (1 << 2)
210 -#define AXP_MISC_CTRL 0x8f
211 -#define AXP_MISC_CTRL_N_VBUSEN_FUNC (1 << 4)
212 #define AXP_GPIO0_CTRL 0x90
213 #define AXP_GPIO1_CTRL 0x92
214 #define AXP_GPIO_CTRL_OUTPUT_LOW 0x00 /* Drive pin low */
215 --- a/include/axp818.h
216 +++ b/include/axp818.h
217 @@ -61,10 +61,6 @@
218 #ifdef CONFIG_AXP818_POWER
219 #define AXP_POWER_STATUS 0x00
220 #define AXP_POWER_STATUS_ALDO_IN BIT(0)
221 -#define AXP_VBUS_IPSOUT 0x30
222 -#define AXP_VBUS_IPSOUT_DRIVEBUS (1 << 2)
223 -#define AXP_MISC_CTRL 0x8f
224 -#define AXP_MISC_CTRL_N_VBUSEN_FUNC (1 << 4)
225 #define AXP_GPIO0_CTRL 0x90
226 #define AXP_GPIO1_CTRL 0x92
227 #define AXP_GPIO_CTRL_OUTPUT_LOW 0x00 /* Drive pin low */