1 /*- 2 * Copyright 2015 John Wehle <john@feith.com> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * 26 * $FreeBSD$ 27 */ 28 29 /* 30 * In addition to supplying entries for pins which need to be configured 31 * by the operating system it's also necessary to supply entries for pins 32 * which may have been configured by the firmware for a different purpose. 33 */ 34 35 #ifndef _ARM_AMLOGIC_AML8726_PINCTRL_H 36 #define _ARM_AMLOGIC_AML8726_PINCTRL_H 37 38 enum aml8726_pinctrl_pull_mode { 39 aml8726_unknown_pm, 40 aml8726_disable_pm, 41 aml8726_enable_pm, 42 aml8726_enable_down_pm, 43 aml8726_enable_up_pm 44 }; 45 46 struct aml8726_pinctrl_pkg_pin { 47 const char *pkg_name; 48 boolean_t aobus; 49 uint32_t pull_addr; 50 uint32_t pull_bits; 51 }; 52 53 struct aml8726_pinctrl_pin { 54 const char *name; 55 const char *pkg_name; 56 uint32_t mux_addr; 57 uint32_t mux_bits; 58 }; 59 60 struct aml8726_pinctrl_function { 61 const char *name; 62 struct aml8726_pinctrl_pin *pins; 63 }; 64 65 /* 66 * aml8726-m3 67 * 68 * start size 69 * cbus mux 0x202c 36 70 * cbus pu_pd 0x203a 24 71 * cbus pull_en 0x203a 24 72 * aobus mux 0x0005 4 73 * aobus pu_pd 0x000b 4 74 * aobus pull_en 0x000b 4 75 */ 76 77 static struct aml8726_pinctrl_pkg_pin aml8726_m3_pkg_pin[] = { 78 { "card_0", false, 0, 0x00000000 }, 79 { "card_1", false, 0, 0x00000000 }, 80 { "card_2", false, 0, 0x00000000 }, 81 { "card_3", false, 0, 0x00000000 }, 82 { "card_4", false, 0, 0x00000000 }, 83 { "card_5", false, 0, 0x00000000 }, 84 { "card_6", false, 0, 0x00000000 }, 85 86 { "gpioc_10", false, 0, 0x00000000 }, 87 { "gpioc_11", false, 0, 0x00000000 }, 88 { "gpioc_12", false, 0, 0x00000000 }, 89 { "gpioc_13", false, 0, 0x00000000 }, 90 91 { "gpiox_13", false, 0, 0x00000000 }, 92 { "gpiox_14", false, 0, 0x00000000 }, 93 { "gpiox_15", false, 0, 0x00000000 }, 94 { "gpiox_16", false, 0, 0x00000000 }, 95 { "gpiox_17", false, 0, 0x00000000 }, 96 { "gpiox_18", false, 0, 0x00000000 }, 97 { "gpiox_19", false, 0, 0x00000000 }, 98 { "gpiox_20", false, 0, 0x00000000 }, 99 { "gpiox_21", false, 0, 0x00000000 }, 100 { "gpiox_22", false, 0, 0x00000000 }, 101 { "gpiox_23", false, 0, 0x00000000 }, 102 { "gpiox_24", false, 0, 0x00000000 }, 103 { "gpiox_25", false, 0, 0x00000000 }, 104 { "gpiox_26", false, 0, 0x00000000 }, 105 { "gpiox_27", false, 0, 0x00000000 }, 106 { "gpiox_28", false, 0, 0x00000000 }, 107 108 { "gpioy_0", false, 0, 0x00000000 }, 109 { "gpioy_1", false, 0, 0x00000000 }, 110 { "gpioy_2", false, 0, 0x00000000 }, 111 { "gpioy_3", false, 0, 0x00000000 }, 112 { "gpioy_4", false, 0, 0x00000000 }, 113 { "gpioy_5", false, 0, 0x00000000 }, 114 { "gpioy_6", false, 0, 0x00000000 }, 115 { "gpioy_7", false, 0, 0x00000000 }, 116 { "gpioy_8", false, 0, 0x00000000 }, 117 { "gpioy_9", false, 0, 0x00000000 }, 118 119 { "gpioao_0", true, 0, 0x00000000 }, 120 { "gpioao_1", true, 0, 0x00000000 }, 121 { "gpioao_2", true, 0, 0x00000000 }, 122 { "gpioao_3", true, 0, 0x00000000 }, 123 { "gpioao_4", true, 0, 0x00000000 }, 124 { "gpioao_5", true, 0, 0x00000000 }, 125 { NULL } 126 }; 127 128 static struct aml8726_pinctrl_pin aml8726_m3_gpio[] = { 129 { "card_0", "card_0", 0, 0x00000000 }, 130 { "card_1", "card_1", 0, 0x00000000 }, 131 { "card_2", "card_2", 0, 0x00000000 }, 132 { "card_3", "card_3", 0, 0x00000000 }, 133 { "card_4", "card_4", 0, 0x00000000 }, 134 { "card_5", "card_5", 0, 0x00000000 }, 135 { "card_6", "card_6", 0, 0x00000000 }, 136 137 { "gpioc_10", "gpioc_10", 0, 0x00000000 }, 138 { "gpioc_11", "gpioc_11", 0, 0x00000000 }, 139 { "gpioc_12", "gpioc_12", 0, 0x00000000 }, 140 { "gpioc_13", "gpioc_13", 0, 0x00000000 }, 141 142 { "gpiox_13", "gpiox_13", 0, 0x00000000 }, 143 { "gpiox_14", "gpiox_14", 0, 0x00000000 }, 144 { "gpiox_15", "gpiox_15", 0, 0x00000000 }, 145 { "gpiox_16", "gpiox_16", 0, 0x00000000 }, 146 { "gpiox_17", "gpiox_17", 0, 0x00000000 }, 147 { "gpiox_18", "gpiox_18", 0, 0x00000000 }, 148 { "gpiox_19", "gpiox_19", 0, 0x00000000 }, 149 { "gpiox_20", "gpiox_20", 0, 0x00000000 }, 150 { "gpiox_21", "gpiox_21", 0, 0x00000000 }, 151 { "gpiox_22", "gpiox_22", 0, 0x00000000 }, 152 { "gpiox_23", "gpiox_23", 0, 0x00000000 }, 153 { "gpiox_24", "gpiox_24", 0, 0x00000000 }, 154 { "gpiox_25", "gpiox_25", 0, 0x00000000 }, 155 { "gpiox_26", "gpiox_26", 0, 0x00000000 }, 156 { "gpiox_27", "gpiox_27", 0, 0x00000000 }, 157 { "gpiox_28", "gpiox_28", 0, 0x00000000 }, 158 159 { "gpioy_0", "gpioy_0", 0, 0x00000000 }, 160 { "gpioy_1", "gpioy_1", 0, 0x00000000 }, 161 { "gpioy_2", "gpioy_2", 0, 0x00000000 }, 162 { "gpioy_3", "gpioy_3", 0, 0x00000000 }, 163 { "gpioy_4", "gpioy_4", 0, 0x00000000 }, 164 { "gpioy_5", "gpioy_5", 0, 0x00000000 }, 165 { "gpioy_6", "gpioy_6", 0, 0x00000000 }, 166 { "gpioy_7", "gpioy_7", 0, 0x00000000 }, 167 { "gpioy_8", "gpioy_8", 0, 0x00000000 }, 168 { "gpioy_9", "gpioy_9", 0, 0x00000000 }, 169 170 { "gpioao_0", "gpioao_0", 0, 0x00000000 }, 171 { "gpioao_1", "gpioao_1", 0, 0x00000000 }, 172 { "gpioao_2", "gpioao_2", 0, 0x00000000 }, 173 { "gpioao_3", "gpioao_3", 0, 0x00000000 }, 174 { "gpioao_4", "gpioao_4", 0, 0x00000000 }, 175 { "gpioao_5", "gpioao_5", 0, 0x00000000 }, 176 { NULL } 177 }; 178 179 static struct aml8726_pinctrl_pin aml8726_m3_ethernet[] = { 180 { "clk50_in", "gpioy_0", 24, 0x00040000 }, 181 { "clk_out", "gpioy_0", 24, 0x00020000 }, 182 { "tx_en", "gpioy_5", 24, 0x00001000 }, 183 { "tx_d0", "gpioy_7", 24, 0x00000400 }, 184 { "tx_d1", "gpioy_6", 24, 0x00000800 }, 185 { "crs_dv", "gpioy_2", 24, 0x00008000 }, 186 { "rx_err", "gpioy_1", 24, 0x00010000 }, 187 { "rx_d0", "gpioy_4", 24, 0x00002000 }, 188 { "rx_d1", "gpioy_3", 24, 0x00004000 }, 189 { "mdc", "gpioy_8", 24, 0x00000200 }, 190 { "mdio", "gpioy_9", 24, 0x00000100 }, 191 { NULL } 192 }; 193 194 static struct aml8726_pinctrl_pin aml8726_m3_hdmi[] = { 195 { "cec", "gpioc_13", 4, 0x02000000 }, 196 { "hpd", "gpioc_10", 4, 0x00400000 }, 197 { "scl", "gpioc_12", 4, 0x01000000 }, 198 { "sda", "gpioc_11", 4, 0x00800000 }, 199 { NULL } 200 }; 201 202 static struct aml8726_pinctrl_pin aml8726_m3_i2c_a[] = { 203 { "scl", "gpiox_26", 20, 0x04000000 }, 204 { "sda", "gpiox_25", 20, 0x08000000 }, 205 { NULL } 206 }; 207 208 static struct aml8726_pinctrl_pin aml8726_m3_i2c_b[] = { 209 { "scl", "gpiox_28", 20, 0x40000000 }, 210 { "sda", "gpiox_27", 20, 0x80000000 }, 211 { NULL } 212 }; 213 214 static struct aml8726_pinctrl_pin aml8726_m3_sdio_b[] = { 215 { "clk", "card_4", 8, 0x00000800 }, 216 { "cmd", "card_5", 8, 0x00000400 }, 217 { "d0", "card_0", 8, 0x00008000 }, 218 { "d1", "card_1", 8, 0x00004000 }, 219 { "d2", "card_2", 8, 0x00002000 }, 220 { "d3", "card_3", 8, 0x00001000 }, 221 { NULL } 222 }; 223 224 static struct aml8726_pinctrl_pin aml8726_m3_sdxc_b[] = { 225 { "clk", "card_4", 8, 0x00000020 }, 226 { "cmd", "card_5", 8, 0x00000010 }, 227 { "d0", "card_0", 8, 0x00000080 }, 228 { "d1", "card_1", 8, 0x00000040 }, 229 { "d2", "card_2", 8, 0x00000040 }, 230 { "d3", "card_3", 8, 0x00000040 }, 231 { NULL } 232 }; 233 234 static struct aml8726_pinctrl_pin aml8726_m3_uart_a[] = { 235 { "tx", "gpiox_13", 16, 0x00002000 }, 236 { "rx", "gpiox_14", 16, 0x00001000 }, 237 { "cts", "gpiox_15", 16, 0x00000800 }, 238 { "rts", "gpiox_16", 16, 0x00000400 }, 239 { NULL } 240 }; 241 242 static struct aml8726_pinctrl_pin aml8726_m3_uart_b[] = { 243 { "tx", "gpiox_17", 16, 0x00000200 }, 244 { "rx", "gpiox_18", 16, 0x00000100 }, 245 { "cts", "gpiox_19", 16, 0x00000080 }, 246 { "rts", "gpiox_20", 16, 0x00000040 }, 247 { NULL } 248 }; 249 250 static struct aml8726_pinctrl_pin aml8726_m3_uart_c[] = { 251 { "tx", "gpiox_21", 16, 0x00000008 }, 252 { "rx", "gpiox_22", 16, 0x00000004 }, 253 { "cts", "gpiox_23", 16, 0x00000002 }, 254 { "rts", "gpiox_24", 16, 0x00000001 }, 255 { NULL } 256 }; 257 258 static struct aml8726_pinctrl_pin aml8726_m3_i2c_ao[] = { 259 { "scl", "gpioao_4", 0, 0x00000400 }, 260 { "sda", "gpioao_5", 0, 0x00000200 }, 261 { NULL } 262 }; 263 264 static struct aml8726_pinctrl_pin aml8726_m3_uart_ao[] = { 265 { "tx", "gpioao_0", 0, 0x00001000 }, 266 { "rx", "gpioao_1", 0, 0x00000800 }, 267 { "cts", "gpioao_2", 0, 0x00000400 }, 268 { "rts", "gpioao_3", 0, 0x00000200 }, 269 { NULL } 270 }; 271 272 struct aml8726_pinctrl_function aml8726_m3_pinctrl[] = { 273 { "gpio", aml8726_m3_gpio }, 274 { "ethernet", aml8726_m3_ethernet }, 275 { "hdmi", aml8726_m3_hdmi }, 276 { "i2c-a", aml8726_m3_i2c_a }, 277 { "i2c-b", aml8726_m3_i2c_b }, 278 { "sdio-b", aml8726_m3_sdio_b }, 279 { "sdxc-b", aml8726_m3_sdxc_b }, 280 { "uart-a", aml8726_m3_uart_a }, 281 { "uart-b", aml8726_m3_uart_b }, 282 { "uart-c", aml8726_m3_uart_c }, 283 { "i2c-ao", aml8726_m3_i2c_ao }, 284 { "uart-ao", aml8726_m3_uart_ao }, 285 { NULL } 286 }; 287 288 /* 289 * aml8726-m6 290 * 291 * start size 292 * cbus mux 0x202c 40 293 * cbus pu_pd 0x203a 24 294 * cbus pull_en 0x203a 24 295 * aobus mux 0x0005 4 296 * aobus pu_pd 0x000b 4 297 * aobus pull_en 0x000b 4 298 * 299 * For simplicity we don't support setting pull for gpioe and gpioz. 300 */ 301 302 static struct aml8726_pinctrl_pkg_pin aml8726_m6_pkg_pin[] = { 303 { "card_0", false, 12, 0x00100000 }, 304 { "card_1", false, 12, 0x00200000 }, 305 { "card_2", false, 12, 0x00400000 }, 306 { "card_3", false, 12, 0x00800000 }, 307 { "card_4", false, 12, 0x01000000 }, 308 { "card_5", false, 12, 0x02000000 }, 309 { "card_6", false, 12, 0x04000000 }, 310 311 { "gpioc_10", false, 8, 0x00000400 }, 312 { "gpioc_11", false, 8, 0x00000800 }, 313 { "gpioc_12", false, 8, 0x00001000 }, 314 { "gpioc_13", false, 8, 0x00002000 }, 315 316 { "gpiox_13", false, 16, 0x00002000 }, 317 { "gpiox_14", false, 16, 0x00004000 }, 318 { "gpiox_15", false, 16, 0x00008000 }, 319 { "gpiox_16", false, 16, 0x00010000 }, 320 { "gpiox_17", false, 16, 0x00020000 }, 321 { "gpiox_18", false, 16, 0x00040000 }, 322 { "gpiox_19", false, 16, 0x00080000 }, 323 { "gpiox_20", false, 16, 0x00100000 }, 324 { "gpiox_21", false, 16, 0x00200000 }, 325 { "gpiox_22", false, 16, 0x00400000 }, 326 { "gpiox_23", false, 16, 0x00800000 }, 327 { "gpiox_24", false, 16, 0x01000000 }, 328 { "gpiox_25", false, 16, 0x02000000 }, 329 { "gpiox_26", false, 16, 0x04000000 }, 330 { "gpiox_27", false, 16, 0x08000000 }, 331 { "gpiox_28", false, 16, 0x10000000 }, 332 333 { "gpioy_0", false, 20, 0x00000010 }, 334 { "gpioy_1", false, 20, 0x00000020 }, 335 { "gpioy_2", false, 20, 0x00000040 }, 336 { "gpioy_3", false, 20, 0x00000080 }, 337 { "gpioy_4", false, 20, 0x00000100 }, 338 { "gpioy_5", false, 20, 0x00000200 }, 339 { "gpioy_6", false, 20, 0x00000400 }, 340 { "gpioy_7", false, 20, 0x00000800 }, 341 { "gpioy_8", false, 20, 0x00001000 }, 342 { "gpioy_9", false, 20, 0x00002000 }, 343 { "gpioy_10", false, 20, 0x00004000 }, 344 { "gpioy_11", false, 20, 0x00008000 }, 345 { "gpioy_12", false, 20, 0x00010000 }, 346 { "gpioy_13", false, 20, 0x00020000 }, 347 { "gpioy_14", false, 20, 0x00040000 }, 348 349 { "gpioao_0", true, 0, 0x00000001 }, 350 { "gpioao_1", true, 0, 0x00000002 }, 351 { "gpioao_2", true, 0, 0x00000004 }, 352 { "gpioao_3", true, 0, 0x00000008 }, 353 { "gpioao_4", true, 0, 0x00000010 }, 354 { "gpioao_5", true, 0, 0x00000020 }, 355 { NULL } 356 }; 357 358 static struct aml8726_pinctrl_pin aml8726_m6_gpio[] = { 359 { "card_0", "card_0", 0, 0x00000000 }, 360 { "card_1", "card_1", 0, 0x00000000 }, 361 { "card_2", "card_2", 0, 0x00000000 }, 362 { "card_3", "card_3", 0, 0x00000000 }, 363 { "card_4", "card_4", 0, 0x00000000 }, 364 { "card_5", "card_5", 0, 0x00000000 }, 365 { "card_6", "card_6", 0, 0x00000000 }, 366 367 { "gpioc_10", "gpioc_10", 0, 0x00000000 }, 368 { "gpioc_11", "gpioc_11", 0, 0x00000000 }, 369 { "gpioc_12", "gpioc_12", 0, 0x00000000 }, 370 { "gpioc_13", "gpioc_13", 0, 0x00000000 }, 371 372 { "gpiox_13", "gpiox_13", 0, 0x00000000 }, 373 { "gpiox_14", "gpiox_14", 0, 0x00000000 }, 374 { "gpiox_15", "gpiox_15", 0, 0x00000000 }, 375 { "gpiox_16", "gpiox_16", 0, 0x00000000 }, 376 { "gpiox_17", "gpiox_17", 0, 0x00000000 }, 377 { "gpiox_18", "gpiox_18", 0, 0x00000000 }, 378 { "gpiox_19", "gpiox_19", 0, 0x00000000 }, 379 { "gpiox_20", "gpiox_20", 0, 0x00000000 }, 380 { "gpiox_21", "gpiox_21", 0, 0x00000000 }, 381 { "gpiox_22", "gpiox_22", 0, 0x00000000 }, 382 { "gpiox_23", "gpiox_23", 0, 0x00000000 }, 383 { "gpiox_24", "gpiox_24", 0, 0x00000000 }, 384 { "gpiox_25", "gpiox_25", 0, 0x00000000 }, 385 { "gpiox_26", "gpiox_26", 0, 0x00000000 }, 386 { "gpiox_27", "gpiox_27", 0, 0x00000000 }, 387 { "gpiox_28", "gpiox_28", 0, 0x00000000 }, 388 389 { "gpioy_0", "gpioy_0", 0, 0x00000000 }, 390 { "gpioy_1", "gpioy_1", 0, 0x00000000 }, 391 { "gpioy_2", "gpioy_2", 0, 0x00000000 }, 392 { "gpioy_3", "gpioy_3", 0, 0x00000000 }, 393 { "gpioy_4", "gpioy_4", 0, 0x00000000 }, 394 { "gpioy_5", "gpioy_5", 0, 0x00000000 }, 395 { "gpioy_6", "gpioy_6", 0, 0x00000000 }, 396 { "gpioy_7", "gpioy_7", 0, 0x00000000 }, 397 { "gpioy_8", "gpioy_8", 0, 0x00000000 }, 398 { "gpioy_9", "gpioy_9", 0, 0x00000000 }, 399 { "gpioy_10", "gpioy_10", 0, 0x00000000 }, 400 { "gpioy_11", "gpioy_11", 0, 0x00000000 }, 401 { "gpioy_12", "gpioy_12", 0, 0x00000000 }, 402 { "gpioy_13", "gpioy_13", 0, 0x00000000 }, 403 { "gpioy_14", "gpioy_14", 0, 0x00000000 }, 404 405 { "gpioao_0", "gpioao_0", 0, 0x00000000 }, 406 { "gpioao_1", "gpioao_1", 0, 0x00000000 }, 407 { "gpioao_2", "gpioao_2", 0, 0x00000000 }, 408 { "gpioao_3", "gpioao_3", 0, 0x00000000 }, 409 { "gpioao_4", "gpioao_4", 0, 0x00000000 }, 410 { "gpioao_5", "gpioao_5", 0, 0x00000000 }, 411 { NULL } 412 }; 413 414 static struct aml8726_pinctrl_pin aml8726_m6_ethernet[] = { 415 { "ref_clk_in", "gpioy_0", 24, 0x80000000 }, 416 { "ref_clk_out", "gpioy_0", 24, 0x40000000 }, 417 { "tx_clk", "gpioy_1", 24, 0x00040000 }, 418 { "tx_en", "gpioy_2", 24, 0x00020000 }, 419 { "tx_d0", "gpioy_6", 24, 0x00002000 }, 420 { "tx_d1", "gpioy_5", 24, 0x00004000 }, 421 { "tx_d2", "gpioy_4", 24, 0x00008000 }, 422 { "tx_d3", "gpioy_3", 24, 0x00010000 }, 423 { "rx_clk", "gpioy_7", 24, 0x00001000 }, 424 { "rx_dv", "gpioy_8", 24, 0x00000800 }, 425 { "rx_d0", "gpioy_12", 24, 0x00000080 }, 426 { "rx_d1", "gpioy_11", 24, 0x00000100 }, 427 { "rx_d2", "gpioy_10", 24, 0x00000200 }, 428 { "rx_d3", "gpioy_9", 24, 0x00000400 }, 429 { "mdc", "gpioy_14", 24, 0x00000020 }, 430 { "mdio", "gpioy_13", 24, 0x00000040 }, 431 { NULL } 432 }; 433 434 static struct aml8726_pinctrl_pin aml8726_m6_hdmi[] = { 435 { "cec", "gpioc_13", 4, 0x02000000 }, 436 { "hpd", "gpioc_10", 4, 0x00400000 }, 437 { "scl", "gpioc_12", 4, 0x01000000 }, 438 { "sda", "gpioc_11", 4, 0x00800000 }, 439 { NULL } 440 }; 441 442 static struct aml8726_pinctrl_pin aml8726_m6_i2c_a[] = { 443 { "scl", "gpiox_26", 20, 0x04000000 }, 444 { "sda", "gpiox_25", 20, 0x08000000 }, 445 { NULL } 446 }; 447 448 static struct aml8726_pinctrl_pin aml8726_m6_i2c_b[] = { 449 { "scl", "gpiox_28", 20, 0x40000000 }, 450 { "sda", "gpiox_27", 20, 0x80000000 }, 451 { NULL } 452 }; 453 454 static struct aml8726_pinctrl_pin aml8726_m6_sdio_b[] = { 455 { "clk", "card_4", 8, 0x00000800 }, 456 { "cmd", "card_5", 8, 0x00000400 }, 457 { "d0", "card_0", 8, 0x00008000 }, 458 { "d1", "card_1", 8, 0x00004000 }, 459 { "d2", "card_2", 8, 0x00002000 }, 460 { "d3", "card_3", 8, 0x00001000 }, 461 { NULL } 462 }; 463 464 static struct aml8726_pinctrl_pin aml8726_m6_sdxc_b[] = { 465 { "clk", "card_4", 8, 0x00000020 }, 466 { "cmd", "card_5", 8, 0x00000010 }, 467 { "d0", "card_0", 8, 0x00000080 }, 468 { "d1", "card_1", 8, 0x00000040 }, 469 { "d2", "card_2", 8, 0x00000040 }, 470 { "d3", "card_3", 8, 0x00000040 }, 471 { NULL } 472 }; 473 474 static struct aml8726_pinctrl_pin aml8726_m6_uart_a[] = { 475 { "tx", "gpiox_13", 16, 0x00002000 }, 476 { "rx", "gpiox_14", 16, 0x00001000 }, 477 { "cts", "gpiox_15", 16, 0x00000800 }, 478 { "rts", "gpiox_16", 16, 0x00000400 }, 479 { NULL } 480 }; 481 482 static struct aml8726_pinctrl_pin aml8726_m6_uart_b[] = { 483 { "tx", "gpiox_17", 16, 0x00000200 }, 484 { "rx", "gpiox_18", 16, 0x00000100 }, 485 { "cts", "gpiox_19", 16, 0x00000080 }, 486 { "rts", "gpiox_20", 16, 0x00000040 }, 487 { NULL } 488 }; 489 490 static struct aml8726_pinctrl_pin aml8726_m6_uart_c[] = { 491 { "tx", "gpiox_21", 16, 0x00000008 }, 492 { "rx", "gpiox_22", 16, 0x00000004 }, 493 { "cts", "gpiox_23", 16, 0x00000002 }, 494 { "rts", "gpiox_24", 16, 0x00000001 }, 495 { NULL } 496 }; 497 498 static struct aml8726_pinctrl_pin aml8726_m6_i2c_ao[] = { 499 { "scl", "gpioao_4", 0, 0x00000400 }, 500 { "sda", "gpioao_5", 0, 0x00000200 }, 501 { NULL } 502 }; 503 504 static struct aml8726_pinctrl_pin aml8726_m6_uart_ao[] = { 505 { "tx", "gpioao_0", 0, 0x00001000 }, 506 { "rx", "gpioao_1", 0, 0x00000800 }, 507 { "cts", "gpioao_2", 0, 0x00000400 }, 508 { "rts", "gpioao_3", 0, 0x00000200 }, 509 { NULL } 510 }; 511 512 struct aml8726_pinctrl_function aml8726_m6_pinctrl[] = { 513 { "gpio", aml8726_m6_gpio }, 514 { "ethernet", aml8726_m6_ethernet }, 515 { "hdmi", aml8726_m6_hdmi }, 516 { "i2c-a", aml8726_m6_i2c_a }, 517 { "i2c-b", aml8726_m6_i2c_b }, 518 { "sdio-b", aml8726_m6_sdio_b }, 519 { "sdxc-b", aml8726_m6_sdxc_b }, 520 { "uart-a", aml8726_m6_uart_a }, 521 { "uart-b", aml8726_m6_uart_b }, 522 { "uart-c", aml8726_m6_uart_c }, 523 { "i2c-ao", aml8726_m6_i2c_ao }, 524 { "uart-ao", aml8726_m6_uart_ao }, 525 { NULL } 526 }; 527 528 529 /* 530 * aml8726-m8 531 * 532 * start size 533 * cbus mux 0x202c 40 534 * cbus pu_pd 0x203a 20 535 * cbus pull_en 0x2048 20 536 * aobus mux 0x0005 4 537 * aobus pu_pd 0x000b 4 538 * aobus pull_en 0x000b 4 539 */ 540 541 static struct aml8726_pinctrl_pkg_pin aml8726_m8_pkg_pin[] = { 542 { "boot_0", false, 8, 0x00000001 }, 543 { "boot_1", false, 8, 0x00000002 }, 544 { "boot_2", false, 8, 0x00000004 }, 545 { "boot_3", false, 8, 0x00000008 }, 546 { "boot_4", false, 8, 0x00000010 }, 547 { "boot_5", false, 8, 0x00000020 }, 548 { "boot_6", false, 8, 0x00000040 }, 549 { "boot_7", false, 8, 0x00000080 }, 550 551 { "boot_16", false, 8, 0x00010000 }, 552 { "boot_17", false, 8, 0x00020000 }, 553 554 { "card_0", false, 8, 0x00100000 }, 555 { "card_1", false, 8, 0x00200000 }, 556 { "card_2", false, 8, 0x00400000 }, 557 { "card_3", false, 8, 0x00800000 }, 558 { "card_4", false, 8, 0x01000000 }, 559 { "card_5", false, 8, 0x02000000 }, 560 { "card_6", false, 8, 0x04000000 }, 561 562 { "gpioh_0", false, 4, 0x00001000 }, 563 { "gpioh_1", false, 4, 0x00002000 }, 564 { "gpioh_2", false, 4, 0x00004000 }, 565 { "gpioh_3", false, 4, 0x00008000 }, 566 567 { "gpiox_12", false, 16, 0x00001000 }, 568 { "gpiox_13", false, 16, 0x00002000 }, 569 { "gpiox_14", false, 16, 0x00004000 }, 570 { "gpiox_15", false, 16, 0x00008000 }, 571 { "gpiox_16", false, 16, 0x00010000 }, 572 { "gpiox_17", false, 16, 0x00020000 }, 573 { "gpiox_18", false, 16, 0x00040000 }, 574 { "gpiox_19", false, 16, 0x00080000 }, 575 576 { "gpioy_0", false, 12, 0x00000001 }, 577 { "gpioy_1", false, 12, 0x00000002 }, 578 { "gpioy_2", false, 12, 0x00000004 }, 579 { "gpioy_3", false, 12, 0x00000008 }, 580 581 { "gpioz_2", false, 4, 0x00000004 }, 582 { "gpioz_3", false, 4, 0x00000008 }, 583 { "gpioz_4", false, 4, 0x00000010 }, 584 { "gpioz_5", false, 4, 0x00000020 }, 585 { "gpioz_6", false, 4, 0x00000040 }, 586 { "gpioz_7", false, 4, 0x00000080 }, 587 { "gpioz_8", false, 4, 0x00000100 }, 588 { "gpioz_9", false, 4, 0x00000200 }, 589 { "gpioz_10", false, 4, 0x00000400 }, 590 { "gpioz_11", false, 4, 0x00000800 }, 591 { "gpioz_12", false, 4, 0x00001000 }, 592 { "gpioz_13", false, 4, 0x00002000 }, 593 594 { "gpioao_0", true, 0, 0x00000001 }, 595 { "gpioao_1", true, 0, 0x00000002 }, 596 { "gpioao_2", true, 0, 0x00000004 }, 597 { "gpioao_3", true, 0, 0x00000008 }, 598 { "gpioao_4", true, 0, 0x00000010 }, 599 { "gpioao_5", true, 0, 0x00000020 }, 600 { NULL } 601 }; 602 603 static struct aml8726_pinctrl_pin aml8726_m8_gpio[] = { 604 { "boot_0", "boot_0", 0, 0x00000000 }, 605 { "boot_1", "boot_1", 0, 0x00000000 }, 606 { "boot_2", "boot_2", 0, 0x00000000 }, 607 { "boot_3", "boot_3", 0, 0x00000000 }, 608 { "boot_4", "boot_4", 0, 0x00000000 }, 609 { "boot_5", "boot_5", 0, 0x00000000 }, 610 { "boot_6", "boot_6", 0, 0x00000000 }, 611 { "boot_7", "boot_7", 0, 0x00000000 }, 612 613 { "boot_16", "boot_16", 0, 0x00000000 }, 614 { "boot_17", "boot_17", 0, 0x00000000 }, 615 616 { "card_0", "card_0", 0, 0x00000000 }, 617 { "card_1", "card_1", 0, 0x00000000 }, 618 { "card_2", "card_2", 0, 0x00000000 }, 619 { "card_3", "card_3", 0, 0x00000000 }, 620 { "card_4", "card_4", 0, 0x00000000 }, 621 { "card_5", "card_5", 0, 0x00000000 }, 622 { "card_6", "card_6", 0, 0x00000000 }, 623 624 { "gpioh_0", "gpioh_0", 0, 0x00000000 }, 625 { "gpioh_1", "gpioh_1", 0, 0x00000000 }, 626 { "gpioh_2", "gpioh_2", 0, 0x00000000 }, 627 { "gpioh_3", "gpioh_3", 0, 0x00000000 }, 628 629 { "gpiox_12", "gpiox_12", 0, 0x00000000 }, 630 { "gpiox_13", "gpiox_13", 0, 0x00000000 }, 631 { "gpiox_14", "gpiox_14", 0, 0x00000000 }, 632 { "gpiox_15", "gpiox_15", 0, 0x00000000 }, 633 { "gpiox_16", "gpiox_16", 0, 0x00000000 }, 634 { "gpiox_17", "gpiox_17", 0, 0x00000000 }, 635 { "gpiox_18", "gpiox_18", 0, 0x00000000 }, 636 { "gpiox_19", "gpiox_19", 0, 0x00000000 }, 637 638 { "gpioy_0", "gpioy_0", 0, 0x00000000 }, 639 { "gpioy_1", "gpioy_1", 0, 0x00000000 }, 640 { "gpioy_2", "gpioy_2", 0, 0x00000000 }, 641 { "gpioy_3", "gpioy_3", 0, 0x00000000 }, 642 643 { "gpioz_2", "gpioz_2", 0, 0x00000000 }, 644 { "gpioz_3", "gpioz_3", 0, 0x00000000 }, 645 { "gpioz_4", "gpioz_4", 0, 0x00000000 }, 646 { "gpioz_5", "gpioz_5", 0, 0x00000000 }, 647 { "gpioz_6", "gpioz_6", 0, 0x00000000 }, 648 { "gpioz_7", "gpioz_7", 0, 0x00000000 }, 649 { "gpioz_8", "gpioz_8", 0, 0x00000000 }, 650 { "gpioz_9", "gpioz_9", 0, 0x00000000 }, 651 { "gpioz_10", "gpioz_10", 0, 0x00000000 }, 652 { "gpioz_11", "gpioz_11", 0, 0x00000000 }, 653 { "gpioz_12", "gpioz_12", 0, 0x00000000 }, 654 { "gpioz_13", "gpioz_13", 0, 0x00000000 }, 655 656 { "gpioao_0", "gpioao_0", 0, 0x00000000 }, 657 { "gpioao_1", "gpioao_1", 0, 0x00000000 }, 658 { "gpioao_2", "gpioao_2", 0, 0x00000000 }, 659 { "gpioao_3", "gpioao_3", 0, 0x00000000 }, 660 { "gpioao_4", "gpioao_4", 0, 0x00000000 }, 661 { "gpioao_5", "gpioao_5", 0, 0x00000000 }, 662 { NULL } 663 }; 664 665 static struct aml8726_pinctrl_pin aml8726_m8_ethernet[] = { 666 { "tx_clk", "gpioz_4", 24, 0x00008000 }, 667 { "tx_en", "gpioz_5", 24, 0x00004000 }, 668 { "tx_d0", "gpioz_7", 24, 0x00001000 }, 669 { "tx_d1", "gpioz_6", 24, 0x00002000 }, 670 { "rx_clk_in", "gpioz_8", 24, 0x00000400 }, 671 { "rx_clk_out", "gpioz_8", 24, 0x00000200 }, 672 { "rx_dv", "gpioz_9", 24, 0x00000800 }, 673 { "rx_d0", "gpioz_11", 24, 0x00000080 }, 674 { "rx_d1", "gpioz_10", 24, 0x00000100 }, 675 { "mdc", "gpioz_13", 24, 0x00000020 }, 676 { "mdio", "gpioz_12", 24, 0x00000040 }, 677 { NULL } 678 }; 679 680 static struct aml8726_pinctrl_pin aml8726_m8_hdmi[] = { 681 { "cec", "gpioh_3", 4, 0x00800000 }, 682 { "hpd", "gpioh_0", 4, 0x04000000 }, 683 { "scl", "gpioh_2", 4, 0x01000000 }, 684 { "sda", "gpioh_1", 4, 0x02000000 }, 685 { NULL } 686 }; 687 688 static struct aml8726_pinctrl_pin aml8726_m8_i2c_a[] = { 689 { "scl", "gpioz_12", 20, 0x00000040 }, 690 { "sda", "gpioz_11", 20, 0x00000080 }, 691 { NULL } 692 }; 693 694 static struct aml8726_pinctrl_pin aml8726_m8_i2c_b[] = { 695 { "scl", "gpioz_3", 20, 0x04000000 }, 696 { "sda", "gpioz_2", 20, 0x08000000 }, 697 { NULL } 698 }; 699 700 static struct aml8726_pinctrl_pin aml8726_m8_sdio_b[] = { 701 { "clk", "card_2", 8, 0x00000800 }, 702 { "cmd", "card_3", 8, 0x00000400 }, 703 { "d0", "card_1", 8, 0x00008000 }, 704 { "d1", "card_0", 8, 0x00004000 }, 705 { "d2", "card_5", 8, 0x00002000 }, 706 { "d3", "card_4", 8, 0x00001000 }, 707 { NULL } 708 }; 709 710 static struct aml8726_pinctrl_pin aml8726_m8_sdxc_b[] = { 711 { "clk", "card_2", 8, 0x00000020 }, 712 { "cmd", "card_3", 8, 0x00000010 }, 713 { "d0", "card_1", 8, 0x00000080 }, 714 { "d1", "card_0", 8, 0x00000040 }, 715 { "d2", "card_5", 8, 0x00000040 }, 716 { "d3", "card_4", 8, 0x00000040 }, 717 { NULL } 718 }; 719 720 static struct aml8726_pinctrl_pin aml8726_m8_sdio_c[] = { 721 { "clk", "boot_17", 24, 0x01000000 }, 722 { "cmd", "boot_16", 24, 0x02000000 }, 723 { "d0", "boot_0", 24, 0x20000000 }, 724 { "d1", "boot_1", 24, 0x10000000 }, 725 { "d2", "boot_2", 24, 0x08000000 }, 726 { "d3", "boot_3", 24, 0x04000000 }, 727 { NULL } 728 }; 729 730 static struct aml8726_pinctrl_pin aml8726_m8_sdxc_c[] = { 731 { "clk", "boot_17", 16, 0x04000000 }, 732 { "cmd", "boot_16", 16, 0x08000000 }, 733 { "d0", "boot_0", 16, 0x40000000 }, 734 { "d1", "boot_1", 16, 0x20000000 }, 735 { "d2", "boot_2", 16, 0x20000000 }, 736 { "d3", "boot_3", 16, 0x20000000 }, 737 { "d4", "boot_4", 16, 0x10000000 }, 738 { "d5", "boot_5", 16, 0x10000000 }, 739 { "d6", "boot_6", 16, 0x10000000 }, 740 { "d7", "boot_7", 16, 0x10000000 }, 741 { NULL } 742 }; 743 744 static struct aml8726_pinctrl_pin aml8726_m8_uart_a[] = { 745 { "tx", "gpiox_4", 16, 0x00020000 }, 746 { "rx", "gpiox_5", 16, 0x00010000 }, 747 { "cts", "gpiox_6", 16, 0x00008000 }, 748 { "rts", "gpiox_7", 16, 0x00004000 }, 749 { NULL } 750 }; 751 752 static struct aml8726_pinctrl_pin aml8726_m8_uart_b[] = { 753 { "tx", "gpiox_16", 16, 0x00000200 }, 754 { "rx", "gpiox_17", 16, 0x00000100 }, 755 { "cts", "gpiox_18", 16, 0x00000080 }, 756 { "rts", "gpiox_19", 16, 0x00000040 }, 757 { NULL } 758 }; 759 760 static struct aml8726_pinctrl_pin aml8726_m8_uart_c[] = { 761 { "tx", "gpioy_0", 4, 0x00080000 }, 762 { "rx", "gpioy_1", 4, 0x00040000 }, 763 { "cts", "gpioy_2", 4, 0x00020000 }, 764 { "rts", "gpioy_3", 4, 0x00010000 }, 765 { NULL } 766 }; 767 768 static struct aml8726_pinctrl_pin aml8726_m8_i2c_ao[] = { 769 { "scl", "gpioao_4", 0, 0x00000400 }, 770 { "sda", "gpioao_5", 0, 0x00000200 }, 771 { NULL } 772 }; 773 774 static struct aml8726_pinctrl_pin aml8726_m8_uart_ao[] = { 775 { "tx", "gpioao_0", 0, 0x00001000 }, 776 { "rx", "gpioao_1", 0, 0x00000800 }, 777 { "cts", "gpioao_2", 0, 0x00000400 }, 778 { "rts", "gpioao_3", 0, 0x00000200 }, 779 { NULL } 780 }; 781 782 struct aml8726_pinctrl_function aml8726_m8_pinctrl[] = { 783 { "gpio", aml8726_m8_gpio }, 784 { "ethernet", aml8726_m8_ethernet }, 785 { "hdmi", aml8726_m8_hdmi }, 786 { "i2c-a", aml8726_m8_i2c_a }, 787 { "i2c-b", aml8726_m8_i2c_b }, 788 { "sdio-b", aml8726_m8_sdio_b }, 789 { "sdxc-b", aml8726_m8_sdxc_b }, 790 { "sdio-c", aml8726_m8_sdio_c }, 791 { "sdxc-c", aml8726_m8_sdxc_c }, 792 { "uart-a", aml8726_m8_uart_a }, 793 { "uart-b", aml8726_m8_uart_b }, 794 { "uart-c", aml8726_m8_uart_c }, 795 { "i2c-ao", aml8726_m8_i2c_ao }, 796 { "uart-ao", aml8726_m8_uart_ao }, 797 { NULL } 798 }; 799 800 801 /* 802 * aml8726-m8b 803 * 804 * start size 805 * cbus mux 0x202c 40 806 * cbus pu_pd 0x203a 24 807 * cbus pull_en 0x2048 24 808 * aobus mux 0x0005 4 809 * aobus pu_pd 0x000b 4 810 * aobus pull_en 0x000b 4 811 */ 812 813 static struct aml8726_pinctrl_pkg_pin aml8726_m8b_pkg_pin[] = { 814 { "boot_0", false, 8, 0x00000001 }, 815 { "boot_1", false, 8, 0x00000002 }, 816 { "boot_2", false, 8, 0x00000004 }, 817 { "boot_3", false, 8, 0x00000008 }, 818 { "boot_4", false, 8, 0x00000010 }, 819 { "boot_5", false, 8, 0x00000020 }, 820 { "boot_6", false, 8, 0x00000040 }, 821 { "boot_7", false, 8, 0x00000080 }, 822 { "boot_8", false, 8, 0x00000100 }, 823 { "boot_9", false, 8, 0x00000200 }, 824 { "boot_10", false, 8, 0x00000400 }, 825 826 { "card_0", false, 8, 0x00100000 }, 827 { "card_1", false, 8, 0x00200000 }, 828 { "card_2", false, 8, 0x00400000 }, 829 { "card_3", false, 8, 0x00800000 }, 830 { "card_4", false, 8, 0x01000000 }, 831 { "card_5", false, 8, 0x02000000 }, 832 { "card_6", false, 8, 0x04000000 }, 833 834 { "dif_0p", false, 20, 0x00000100 }, 835 { "dif_0n", false, 20, 0x00000200 }, 836 { "dif_1p", false, 20, 0x00000400 }, 837 { "dif_1n", false, 20, 0x00000800 }, 838 { "dif_2p", false, 20, 0x00001000 }, 839 { "dif_2n", false, 20, 0x00002000 }, 840 { "dif_3p", false, 20, 0x00004000 }, 841 { "dif_3n", false, 20, 0x00008000 }, 842 { "dif_4p", false, 20, 0x00010000 }, 843 { "dif_4n", false, 20, 0x00020000 }, 844 845 { "gpiodv_24", false, 0, 0x01000000 }, 846 { "gpiodv_25", false, 0, 0x02000000 }, 847 { "gpiodv_26", false, 0, 0x04000000 }, 848 { "gpiodv_27", false, 0, 0x08000000 }, 849 850 { "gpioh_0", false, 4, 0x00010000 }, 851 { "gpioh_1", false, 4, 0x00020000 }, 852 { "gpioh_2", false, 4, 0x00040000 }, 853 { "gpioh_3", false, 4, 0x00080000 }, 854 { "gpioh_4", false, 4, 0x00100000 }, 855 { "gpioh_5", false, 4, 0x00200000 }, 856 { "gpioh_6", false, 4, 0x00400000 }, 857 { "gpioh_7", false, 4, 0x00800000 }, 858 { "gpioh_8", false, 4, 0x01000000 }, 859 { "gpioh_9", false, 4, 0x02000000 }, 860 861 { "gpiox_4", false, 16, 0x00000010 }, 862 { "gpiox_5", false, 16, 0x00000020 }, 863 { "gpiox_6", false, 16, 0x00000040 }, 864 { "gpiox_7", false, 16, 0x00000080 }, 865 { "gpiox_16", false, 16, 0x00010000 }, 866 { "gpiox_17", false, 16, 0x00020000 }, 867 { "gpiox_18", false, 16, 0x00040000 }, 868 { "gpiox_19", false, 16, 0x00080000 }, 869 870 { "gpioao_0", true, 0, 0x00000001 }, 871 { "gpioao_1", true, 0, 0x00000002 }, 872 { "gpioao_2", true, 0, 0x00000004 }, 873 { "gpioao_3", true, 0, 0x00000008 }, 874 { "gpioao_4", true, 0, 0x00000010 }, 875 { "gpioao_5", true, 0, 0x00000020 }, 876 { NULL } 877 }; 878 879 static struct aml8726_pinctrl_pin aml8726_m8b_gpio[] = { 880 { "boot_0", "boot_0", 0, 0x00000000 }, 881 { "boot_1", "boot_1", 0, 0x00000000 }, 882 { "boot_2", "boot_2", 0, 0x00000000 }, 883 { "boot_3", "boot_3", 0, 0x00000000 }, 884 { "boot_4", "boot_4", 0, 0x00000000 }, 885 { "boot_5", "boot_5", 0, 0x00000000 }, 886 { "boot_6", "boot_6", 0, 0x00000000 }, 887 { "boot_7", "boot_7", 0, 0x00000000 }, 888 { "boot_8", "boot_8", 0, 0x00000000 }, 889 { "boot_9", "boot_9", 0, 0x00000000 }, 890 { "boot_10", "boot_10", 0, 0x00000000 }, 891 892 { "card_0", "card_0", 0, 0x00000000 }, 893 { "card_1", "card_1", 0, 0x00000000 }, 894 { "card_2", "card_2", 0, 0x00000000 }, 895 { "card_3", "card_3", 0, 0x00000000 }, 896 { "card_4", "card_4", 0, 0x00000000 }, 897 { "card_5", "card_5", 0, 0x00000000 }, 898 { "card_6", "card_6", 0, 0x00000000 }, 899 900 { "dif_0p", "dif_0p", 0, 0x00000000 }, 901 { "dif_0n", "dif_0n", 0, 0x00000000 }, 902 { "dif_1p", "dif_1p", 0, 0x00000000 }, 903 { "dif_1n", "dif_1n", 0, 0x00000000 }, 904 { "dif_2p", "dif_2p", 0, 0x00000000 }, 905 { "dif_2n", "dif_2n", 0, 0x00000000 }, 906 { "dif_3p", "dif_3p", 0, 0x00000000 }, 907 { "dif_3n", "dif_3n", 0, 0x00000000 }, 908 { "dif_4p", "dif_4p", 0, 0x00000000 }, 909 { "dif_4n", "dif_4n", 0, 0x00000000 }, 910 911 { "gpiodv_24", "gpiodv_24", 0, 0x00000000 }, 912 { "gpiodv_25", "gpiodv_25", 0, 0x00000000 }, 913 { "gpiodv_26", "gpiodv_26", 0, 0x00000000 }, 914 { "gpiodv_27", "gpiodv_27", 0, 0x00000000 }, 915 916 { "gpioh_0", "gpioh_0", 0, 0x00000000 }, 917 { "gpioh_1", "gpioh_1", 0, 0x00000000 }, 918 { "gpioh_2", "gpioh_2", 0, 0x00000000 }, 919 { "gpioh_3", "gpioh_3", 0, 0x00000000 }, 920 { "gpioh_4", "gpioh_4", 0, 0x00000000 }, 921 { "gpioh_5", "gpioh_5", 0, 0x00000000 }, 922 { "gpioh_6", "gpioh_6", 0, 0x00000000 }, 923 { "gpioh_7", "gpioh_7", 0, 0x00000000 }, 924 { "gpioh_8", "gpioh_8", 0, 0x00000000 }, 925 { "gpioh_9", "gpioh_9", 0, 0x00000000 }, 926 927 { "gpiox_4", "gpiox_4", 0, 0x00000000 }, 928 { "gpiox_5", "gpiox_5", 0, 0x00000000 }, 929 { "gpiox_6", "gpiox_6", 0, 0x00000000 }, 930 { "gpiox_7", "gpiox_7", 0, 0x00000000 }, 931 { "gpiox_16", "gpiox_16", 0, 0x00000000 }, 932 { "gpiox_17", "gpiox_17", 0, 0x00000000 }, 933 { "gpiox_18", "gpiox_18", 0, 0x00000000 }, 934 { "gpiox_19", "gpiox_19", 0, 0x00000000 }, 935 936 { "gpioao_0", "gpioao_0", 0, 0x00000000 }, 937 { "gpioao_1", "gpioao_1", 0, 0x00000000 }, 938 { "gpioao_2", "gpioao_2", 0, 0x00000000 }, 939 { "gpioao_3", "gpioao_3", 0, 0x00000000 }, 940 { "gpioao_4", "gpioao_4", 0, 0x00000000 }, 941 { "gpioao_5", "gpioao_5", 0, 0x00000000 }, 942 { NULL } 943 }; 944 945 static struct aml8726_pinctrl_pin aml8726_m8b_ethernet[] = { 946 { "ref_clk", "dif_3n", 24, 0x00000100 }, 947 { "tx_clk", "gpioh_9", 24, 0x00000800 }, 948 { "tx_en", "dif_3p", 24, 0x00000040 }, 949 { "tx_d0", "gpioh_6", 28, 0x00100000 }, 950 { "tx_d1", "gpioh_5", 28, 0x00200000 }, 951 { "tx_d2", "gpioh_8", 24, 0x00001000 }, 952 { "tx_d3", "gpioh_7", 24, 0x00002000 }, 953 { "rx_clk", "dif_1n", 24, 0x00000008 }, 954 { "rx_dv", "dif_1p", 24, 0x00000004 }, 955 { "rx_d0", "dif_0n", 24, 0x00000002 }, 956 { "rx_d1", "dif_0p", 24, 0x00000001 }, 957 { "rx_d2", "dif_2n", 28, 0x00800000 }, 958 { "rx_d3", "dif_2p", 28, 0x00400000 }, 959 { "mdc", "dif_4p", 24, 0x00000200 }, 960 { "mdio", "dif_4n", 24, 0x00000400 }, 961 { NULL } 962 }; 963 964 static struct aml8726_pinctrl_pin aml8726_m8b_hdmi[] = { 965 { "cec", "gpioh_3", 4, 0x00800000 }, 966 { "hpd", "gpioh_0", 4, 0x04000000 }, 967 { "scl", "gpioh_2", 4, 0x01000000 }, 968 { "sda", "gpioh_1", 4, 0x02000000 }, 969 { NULL } 970 }; 971 972 static struct aml8726_pinctrl_pin aml8726_m8b_i2c_a[] = { 973 { "scl", "gpiodv_25", 36, 0x40000000 }, 974 { "sda", "gpiodv_24", 36, 0x80000000 }, 975 { NULL } 976 }; 977 978 static struct aml8726_pinctrl_pin aml8726_m8b_i2c_b[] = { 979 { "scl", "gpiodv_27", 36, 0x10000000 }, 980 { "sda", "gpiodv_26", 36, 0x20000000 }, 981 { NULL } 982 }; 983 984 static struct aml8726_pinctrl_pin aml8726_m8b_sdio_b[] = { 985 { "clk", "card_2", 8, 0x00000800 }, 986 { "cmd", "card_3", 8, 0x00000400 }, 987 { "d0", "card_1", 8, 0x00008000 }, 988 { "d1", "card_0", 8, 0x00004000 }, 989 { "d2", "card_5", 8, 0x00002000 }, 990 { "d3", "card_4", 8, 0x00001000 }, 991 { NULL } 992 }; 993 994 static struct aml8726_pinctrl_pin aml8726_m8b_sdxc_b[] = { 995 { "clk", "card_2", 8, 0x00000020 }, 996 { "cmd", "card_3", 8, 0x00000010 }, 997 { "d0", "card_1", 8, 0x00000080 }, 998 { "d1", "card_0", 8, 0x00000040 }, 999 { "d2", "card_5", 8, 0x00000040 }, 1000 { "d3", "card_4", 8, 0x00000040 }, 1001 { NULL } 1002 }; 1003 1004 static struct aml8726_pinctrl_pin aml8726_m8b_sdio_c[] = { 1005 { "clk", "boot_8", 24, 0x80000000 }, 1006 { "cmd", "boot_10", 24, 0x40000000 }, 1007 { "d0", "boot_0", 24, 0x20000000 }, 1008 { "d1", "boot_1", 24, 0x10000000 }, 1009 { "d2", "boot_2", 24, 0x08000000 }, 1010 { "d3", "boot_3", 24, 0x04000000 }, 1011 { NULL } 1012 }; 1013 1014 static struct aml8726_pinctrl_pin aml8726_m8b_sdxc_c[] = { 1015 { "clk", "boot_8", 28, 0x00080000 }, 1016 { "cmd", "boot_10", 28, 0x00040000 }, 1017 { "d0", "boot_0", 16, 0x40000000 }, 1018 { "d1", "boot_1", 16, 0x20000000 }, 1019 { "d2", "boot_2", 16, 0x20000000 }, 1020 { "d3", "boot_3", 16, 0x20000000 }, 1021 { "d4", "boot_4", 16, 0x10000000 }, 1022 { "d5", "boot_5", 16, 0x10000000 }, 1023 { "d6", "boot_6", 16, 0x10000000 }, 1024 { "d7", "boot_7", 16, 0x10000000 }, 1025 { NULL } 1026 }; 1027 1028 static struct aml8726_pinctrl_pin aml8726_m8b_uart_a[] = { 1029 { "tx", "gpiox_4", 16, 0x00020000 }, 1030 { "rx", "gpiox_5", 16, 0x00010000 }, 1031 { "cts", "gpiox_6", 16, 0x00008000 }, 1032 { "rts", "gpiox_7", 16, 0x00004000 }, 1033 { NULL } 1034 }; 1035 1036 static struct aml8726_pinctrl_pin aml8726_m8b_uart_b[] = { 1037 { "tx", "gpiox_16", 16, 0x00000200 }, 1038 { "rx", "gpiox_17", 16, 0x00000100 }, 1039 { "cts", "gpiox_18", 16, 0x00000080 }, 1040 { "rts", "gpiox_19", 16, 0x00000040 }, 1041 { NULL } 1042 }; 1043 1044 static struct aml8726_pinctrl_pin aml8726_m8b_uart_c[] = { 1045 { "tx", "gpiodv_24", 24, 0x00800000 }, 1046 { "rx", "gpiodv_25", 24, 0x00400000 }, 1047 { "cts", "gpiodv_26", 24, 0x00200000 }, 1048 { "rts", "gpiodv_27", 24, 0x00100000 }, 1049 { NULL } 1050 }; 1051 1052 static struct aml8726_pinctrl_pin aml8726_m8b_i2c_ao[] = { 1053 { "scl", "gpioao_4", 0, 0x00000400 }, 1054 { "sda", "gpioao_5", 0, 0x00000200 }, 1055 { NULL } 1056 }; 1057 1058 static struct aml8726_pinctrl_pin aml8726_m8b_uart_ao[] = { 1059 { "tx", "gpioao_0", 0, 0x00001000 }, 1060 { "rx", "gpioao_1", 0, 0x00000800 }, 1061 { "cts", "gpioao_2", 0, 0x00000400 }, 1062 { "rts", "gpioao_3", 0, 0x00000200 }, 1063 { NULL } 1064 }; 1065 1066 struct aml8726_pinctrl_function aml8726_m8b_pinctrl[] = { 1067 { "gpio", aml8726_m8b_gpio }, 1068 { "ethernet", aml8726_m8b_ethernet }, 1069 { "hdmi", aml8726_m8b_hdmi }, 1070 { "i2c-a", aml8726_m8b_i2c_a }, 1071 { "i2c-b", aml8726_m8b_i2c_b }, 1072 { "sdio-b", aml8726_m8b_sdio_b }, 1073 { "sdxc-b", aml8726_m8b_sdxc_b }, 1074 { "sdio-c", aml8726_m8b_sdio_c }, 1075 { "sdxc-c", aml8726_m8b_sdxc_c }, 1076 { "uart-a", aml8726_m8b_uart_a }, 1077 { "uart-b", aml8726_m8b_uart_b }, 1078 { "uart-c", aml8726_m8b_uart_c }, 1079 { "i2c-ao", aml8726_m8b_i2c_ao }, 1080 { "uart-ao", aml8726_m8b_uart_ao }, 1081 { NULL } 1082 }; 1083 1084 #endif /* _ARM_AMLOGIC_AML8726_PINCTRL_H */ 1085