linux/drivers/pinctrl/pinctrl-nomadik-db8540.c
<<
>>
Prefs
   1#include <linux/kernel.h>
   2#include <linux/pinctrl/pinctrl.h>
   3#include "pinctrl-nomadik.h"
   4
   5/* All the pins that can be used for GPIO and some other functions */
   6#define _GPIO(offset)           (offset)
   7
   8#define DB8540_PIN_AH6          _GPIO(0)
   9#define DB8540_PIN_AG7          _GPIO(1)
  10#define DB8540_PIN_AF2          _GPIO(2)
  11#define DB8540_PIN_AD3          _GPIO(3)
  12#define DB8540_PIN_AF6          _GPIO(4)
  13#define DB8540_PIN_AG6          _GPIO(5)
  14#define DB8540_PIN_AD5          _GPIO(6)
  15#define DB8540_PIN_AF7          _GPIO(7)
  16#define DB8540_PIN_AG5          _GPIO(8)
  17#define DB8540_PIN_AH5          _GPIO(9)
  18#define DB8540_PIN_AE4          _GPIO(10)
  19#define DB8540_PIN_AD1          _GPIO(11)
  20#define DB8540_PIN_AD2          _GPIO(12)
  21#define DB8540_PIN_AC2          _GPIO(13)
  22#define DB8540_PIN_AC4          _GPIO(14)
  23#define DB8540_PIN_AC3          _GPIO(15)
  24#define DB8540_PIN_AH7          _GPIO(16)
  25#define DB8540_PIN_AE7          _GPIO(17)
  26/* Hole */
  27#define DB8540_PIN_AF8          _GPIO(22)
  28#define DB8540_PIN_AH11         _GPIO(23)
  29#define DB8540_PIN_AG11         _GPIO(24)
  30#define DB8540_PIN_AF11         _GPIO(25)
  31#define DB8540_PIN_AH10         _GPIO(26)
  32#define DB8540_PIN_AG10         _GPIO(27)
  33#define DB8540_PIN_AF10         _GPIO(28)
  34/* Hole */
  35#define DB8540_PIN_AD4          _GPIO(33)
  36#define DB8540_PIN_AF3          _GPIO(34)
  37#define DB8540_PIN_AF5          _GPIO(35)
  38#define DB8540_PIN_AG4          _GPIO(36)
  39#define DB8540_PIN_AF9          _GPIO(37)
  40#define DB8540_PIN_AE8          _GPIO(38)
  41/* Hole */
  42#define DB8540_PIN_M26          _GPIO(64)
  43#define DB8540_PIN_M25          _GPIO(65)
  44#define DB8540_PIN_M27          _GPIO(66)
  45#define DB8540_PIN_N25          _GPIO(67)
  46/* Hole */
  47#define DB8540_PIN_M28          _GPIO(70)
  48#define DB8540_PIN_N26          _GPIO(71)
  49#define DB8540_PIN_M22          _GPIO(72)
  50#define DB8540_PIN_N22          _GPIO(73)
  51#define DB8540_PIN_N27          _GPIO(74)
  52#define DB8540_PIN_N28          _GPIO(75)
  53#define DB8540_PIN_P22          _GPIO(76)
  54#define DB8540_PIN_P28          _GPIO(77)
  55#define DB8540_PIN_P26          _GPIO(78)
  56#define DB8540_PIN_T22          _GPIO(79)
  57#define DB8540_PIN_R27          _GPIO(80)
  58#define DB8540_PIN_P27          _GPIO(81)
  59#define DB8540_PIN_R26          _GPIO(82)
  60#define DB8540_PIN_R25          _GPIO(83)
  61#define DB8540_PIN_U22          _GPIO(84)
  62#define DB8540_PIN_T27          _GPIO(85)
  63#define DB8540_PIN_T25          _GPIO(86)
  64#define DB8540_PIN_T26          _GPIO(87)
  65/* Hole */
  66#define DB8540_PIN_AF20         _GPIO(116)
  67#define DB8540_PIN_AG21         _GPIO(117)
  68#define DB8540_PIN_AH19         _GPIO(118)
  69#define DB8540_PIN_AE19         _GPIO(119)
  70#define DB8540_PIN_AG18         _GPIO(120)
  71#define DB8540_PIN_AH17         _GPIO(121)
  72#define DB8540_PIN_AF19         _GPIO(122)
  73#define DB8540_PIN_AF18         _GPIO(123)
  74#define DB8540_PIN_AE18         _GPIO(124)
  75#define DB8540_PIN_AG17         _GPIO(125)
  76#define DB8540_PIN_AF17         _GPIO(126)
  77#define DB8540_PIN_AE17         _GPIO(127)
  78#define DB8540_PIN_AC27         _GPIO(128)
  79#define DB8540_PIN_AD27         _GPIO(129)
  80#define DB8540_PIN_AE28         _GPIO(130)
  81#define DB8540_PIN_AG26         _GPIO(131)
  82#define DB8540_PIN_AF25         _GPIO(132)
  83#define DB8540_PIN_AE27         _GPIO(133)
  84#define DB8540_PIN_AF27         _GPIO(134)
  85#define DB8540_PIN_AG28         _GPIO(135)
  86#define DB8540_PIN_AF28         _GPIO(136)
  87#define DB8540_PIN_AG25         _GPIO(137)
  88#define DB8540_PIN_AG24         _GPIO(138)
  89#define DB8540_PIN_AD25         _GPIO(139)
  90#define DB8540_PIN_AH25         _GPIO(140)
  91#define DB8540_PIN_AF26         _GPIO(141)
  92#define DB8540_PIN_AF23         _GPIO(142)
  93#define DB8540_PIN_AG23         _GPIO(143)
  94#define DB8540_PIN_AE25         _GPIO(144)
  95#define DB8540_PIN_AH24         _GPIO(145)
  96#define DB8540_PIN_AJ25         _GPIO(146)
  97#define DB8540_PIN_AG27         _GPIO(147)
  98#define DB8540_PIN_AH23         _GPIO(148)
  99#define DB8540_PIN_AE26         _GPIO(149)
 100#define DB8540_PIN_AE24         _GPIO(150)
 101#define DB8540_PIN_AJ24         _GPIO(151)
 102#define DB8540_PIN_AE21         _GPIO(152)
 103#define DB8540_PIN_AG22         _GPIO(153)
 104#define DB8540_PIN_AF21         _GPIO(154)
 105#define DB8540_PIN_AF24         _GPIO(155)
 106#define DB8540_PIN_AH22         _GPIO(156)
 107#define DB8540_PIN_AJ23         _GPIO(157)
 108#define DB8540_PIN_AH21         _GPIO(158)
 109#define DB8540_PIN_AG20         _GPIO(159)
 110#define DB8540_PIN_AE23         _GPIO(160)
 111#define DB8540_PIN_AH20         _GPIO(161)
 112#define DB8540_PIN_AG19         _GPIO(162)
 113#define DB8540_PIN_AF22         _GPIO(163)
 114#define DB8540_PIN_AJ21         _GPIO(164)
 115#define DB8540_PIN_AD26         _GPIO(165)
 116#define DB8540_PIN_AD28         _GPIO(166)
 117#define DB8540_PIN_AC28         _GPIO(167)
 118#define DB8540_PIN_AC26         _GPIO(168)
 119/* Hole */
 120#define DB8540_PIN_J3           _GPIO(192)
 121#define DB8540_PIN_H1           _GPIO(193)
 122#define DB8540_PIN_J2           _GPIO(194)
 123#define DB8540_PIN_H2           _GPIO(195)
 124#define DB8540_PIN_H3           _GPIO(196)
 125#define DB8540_PIN_H4           _GPIO(197)
 126#define DB8540_PIN_G2           _GPIO(198)
 127#define DB8540_PIN_G3           _GPIO(199)
 128#define DB8540_PIN_G4           _GPIO(200)
 129#define DB8540_PIN_F2           _GPIO(201)
 130#define DB8540_PIN_C6           _GPIO(202)
 131#define DB8540_PIN_B6           _GPIO(203)
 132#define DB8540_PIN_B7           _GPIO(204)
 133#define DB8540_PIN_A7           _GPIO(205)
 134#define DB8540_PIN_D7           _GPIO(206)
 135#define DB8540_PIN_D8           _GPIO(207)
 136#define DB8540_PIN_F3           _GPIO(208)
 137#define DB8540_PIN_E2           _GPIO(209)
 138#define DB8540_PIN_C7           _GPIO(210)
 139#define DB8540_PIN_B8           _GPIO(211)
 140#define DB8540_PIN_C10          _GPIO(212)
 141#define DB8540_PIN_C8           _GPIO(213)
 142#define DB8540_PIN_C9           _GPIO(214)
 143/* Hole */
 144#define DB8540_PIN_B9           _GPIO(219)
 145#define DB8540_PIN_A10          _GPIO(220)
 146#define DB8540_PIN_D9           _GPIO(221)
 147#define DB8540_PIN_B11          _GPIO(222)
 148#define DB8540_PIN_B10          _GPIO(223)
 149#define DB8540_PIN_E10          _GPIO(224)
 150#define DB8540_PIN_B12          _GPIO(225)
 151#define DB8540_PIN_D10          _GPIO(226)
 152#define DB8540_PIN_D11          _GPIO(227)
 153#define DB8540_PIN_AJ6          _GPIO(228)
 154#define DB8540_PIN_B13          _GPIO(229)
 155#define DB8540_PIN_C12          _GPIO(230)
 156#define DB8540_PIN_B14          _GPIO(231)
 157#define DB8540_PIN_E11          _GPIO(232)
 158/* Hole */
 159#define DB8540_PIN_D12          _GPIO(256)
 160#define DB8540_PIN_D15          _GPIO(257)
 161#define DB8540_PIN_C13          _GPIO(258)
 162#define DB8540_PIN_C14          _GPIO(259)
 163#define DB8540_PIN_C18          _GPIO(260)
 164#define DB8540_PIN_C16          _GPIO(261)
 165#define DB8540_PIN_B16          _GPIO(262)
 166#define DB8540_PIN_D18          _GPIO(263)
 167#define DB8540_PIN_C15          _GPIO(264)
 168#define DB8540_PIN_C17          _GPIO(265)
 169#define DB8540_PIN_B17          _GPIO(266)
 170#define DB8540_PIN_D17          _GPIO(267)
 171
 172/*
 173 * The names of the pins are denoted by GPIO number and ball name, even
 174 * though they can be used for other things than GPIO, this is the first
 175 * column in the table of the data sheet and often used on schematics and
 176 * such.
 177 */
 178static const struct pinctrl_pin_desc nmk_db8540_pins[] = {
 179        PINCTRL_PIN(DB8540_PIN_AH6, "GPIO0_AH6"),
 180        PINCTRL_PIN(DB8540_PIN_AG7, "GPIO1_AG7"),
 181        PINCTRL_PIN(DB8540_PIN_AF2, "GPIO2_AF2"),
 182        PINCTRL_PIN(DB8540_PIN_AD3, "GPIO3_AD3"),
 183        PINCTRL_PIN(DB8540_PIN_AF6, "GPIO4_AF6"),
 184        PINCTRL_PIN(DB8540_PIN_AG6, "GPIO5_AG6"),
 185        PINCTRL_PIN(DB8540_PIN_AD5, "GPIO6_AD5"),
 186        PINCTRL_PIN(DB8540_PIN_AF7, "GPIO7_AF7"),
 187        PINCTRL_PIN(DB8540_PIN_AG5, "GPIO8_AG5"),
 188        PINCTRL_PIN(DB8540_PIN_AH5, "GPIO9_AH5"),
 189        PINCTRL_PIN(DB8540_PIN_AE4, "GPIO10_AE4"),
 190        PINCTRL_PIN(DB8540_PIN_AD1, "GPIO11_AD1"),
 191        PINCTRL_PIN(DB8540_PIN_AD2, "GPIO12_AD2"),
 192        PINCTRL_PIN(DB8540_PIN_AC2, "GPIO13_AC2"),
 193        PINCTRL_PIN(DB8540_PIN_AC4, "GPIO14_AC4"),
 194        PINCTRL_PIN(DB8540_PIN_AC3, "GPIO15_AC3"),
 195        PINCTRL_PIN(DB8540_PIN_AH7, "GPIO16_AH7"),
 196        PINCTRL_PIN(DB8540_PIN_AE7, "GPIO17_AE7"),
 197        /* Hole */
 198        PINCTRL_PIN(DB8540_PIN_AF8, "GPIO22_AF8"),
 199        PINCTRL_PIN(DB8540_PIN_AH11, "GPIO23_AH11"),
 200        PINCTRL_PIN(DB8540_PIN_AG11, "GPIO24_AG11"),
 201        PINCTRL_PIN(DB8540_PIN_AF11, "GPIO25_AF11"),
 202        PINCTRL_PIN(DB8540_PIN_AH10, "GPIO26_AH10"),
 203        PINCTRL_PIN(DB8540_PIN_AG10, "GPIO27_AG10"),
 204        PINCTRL_PIN(DB8540_PIN_AF10, "GPIO28_AF10"),
 205        /* Hole */
 206        PINCTRL_PIN(DB8540_PIN_AD4, "GPIO33_AD4"),
 207        PINCTRL_PIN(DB8540_PIN_AF3, "GPIO34_AF3"),
 208        PINCTRL_PIN(DB8540_PIN_AF5, "GPIO35_AF5"),
 209        PINCTRL_PIN(DB8540_PIN_AG4, "GPIO36_AG4"),
 210        PINCTRL_PIN(DB8540_PIN_AF9, "GPIO37_AF9"),
 211        PINCTRL_PIN(DB8540_PIN_AE8, "GPIO38_AE8"),
 212        /* Hole */
 213        PINCTRL_PIN(DB8540_PIN_M26, "GPIO64_M26"),
 214        PINCTRL_PIN(DB8540_PIN_M25, "GPIO65_M25"),
 215        PINCTRL_PIN(DB8540_PIN_M27, "GPIO66_M27"),
 216        PINCTRL_PIN(DB8540_PIN_N25, "GPIO67_N25"),
 217        /* Hole */
 218        PINCTRL_PIN(DB8540_PIN_M28, "GPIO70_M28"),
 219        PINCTRL_PIN(DB8540_PIN_N26, "GPIO71_N26"),
 220        PINCTRL_PIN(DB8540_PIN_M22, "GPIO72_M22"),
 221        PINCTRL_PIN(DB8540_PIN_N22, "GPIO73_N22"),
 222        PINCTRL_PIN(DB8540_PIN_N27, "GPIO74_N27"),
 223        PINCTRL_PIN(DB8540_PIN_N28, "GPIO75_N28"),
 224        PINCTRL_PIN(DB8540_PIN_P22, "GPIO76_P22"),
 225        PINCTRL_PIN(DB8540_PIN_P28, "GPIO77_P28"),
 226        PINCTRL_PIN(DB8540_PIN_P26, "GPIO78_P26"),
 227        PINCTRL_PIN(DB8540_PIN_T22, "GPIO79_T22"),
 228        PINCTRL_PIN(DB8540_PIN_R27, "GPIO80_R27"),
 229        PINCTRL_PIN(DB8540_PIN_P27, "GPIO81_P27"),
 230        PINCTRL_PIN(DB8540_PIN_R26, "GPIO82_R26"),
 231        PINCTRL_PIN(DB8540_PIN_R25, "GPIO83_R25"),
 232        PINCTRL_PIN(DB8540_PIN_U22, "GPIO84_U22"),
 233        PINCTRL_PIN(DB8540_PIN_T27, "GPIO85_T27"),
 234        PINCTRL_PIN(DB8540_PIN_T25, "GPIO86_T25"),
 235        PINCTRL_PIN(DB8540_PIN_T26, "GPIO87_T26"),
 236        /* Hole */
 237        PINCTRL_PIN(DB8540_PIN_AF20, "GPIO116_AF20"),
 238        PINCTRL_PIN(DB8540_PIN_AG21, "GPIO117_AG21"),
 239        PINCTRL_PIN(DB8540_PIN_AH19, "GPIO118_AH19"),
 240        PINCTRL_PIN(DB8540_PIN_AE19, "GPIO119_AE19"),
 241        PINCTRL_PIN(DB8540_PIN_AG18, "GPIO120_AG18"),
 242        PINCTRL_PIN(DB8540_PIN_AH17, "GPIO121_AH17"),
 243        PINCTRL_PIN(DB8540_PIN_AF19, "GPIO122_AF19"),
 244        PINCTRL_PIN(DB8540_PIN_AF18, "GPIO123_AF18"),
 245        PINCTRL_PIN(DB8540_PIN_AE18, "GPIO124_AE18"),
 246        PINCTRL_PIN(DB8540_PIN_AG17, "GPIO125_AG17"),
 247        PINCTRL_PIN(DB8540_PIN_AF17, "GPIO126_AF17"),
 248        PINCTRL_PIN(DB8540_PIN_AE17, "GPIO127_AE17"),
 249        PINCTRL_PIN(DB8540_PIN_AC27, "GPIO128_AC27"),
 250        PINCTRL_PIN(DB8540_PIN_AD27, "GPIO129_AD27"),
 251        PINCTRL_PIN(DB8540_PIN_AE28, "GPIO130_AE28"),
 252        PINCTRL_PIN(DB8540_PIN_AG26, "GPIO131_AG26"),
 253        PINCTRL_PIN(DB8540_PIN_AF25, "GPIO132_AF25"),
 254        PINCTRL_PIN(DB8540_PIN_AE27, "GPIO133_AE27"),
 255        PINCTRL_PIN(DB8540_PIN_AF27, "GPIO134_AF27"),
 256        PINCTRL_PIN(DB8540_PIN_AG28, "GPIO135_AG28"),
 257        PINCTRL_PIN(DB8540_PIN_AF28, "GPIO136_AF28"),
 258        PINCTRL_PIN(DB8540_PIN_AG25, "GPIO137_AG25"),
 259        PINCTRL_PIN(DB8540_PIN_AG24, "GPIO138_AG24"),
 260        PINCTRL_PIN(DB8540_PIN_AD25, "GPIO139_AD25"),
 261        PINCTRL_PIN(DB8540_PIN_AH25, "GPIO140_AH25"),
 262        PINCTRL_PIN(DB8540_PIN_AF26, "GPIO141_AF26"),
 263        PINCTRL_PIN(DB8540_PIN_AF23, "GPIO142_AF23"),
 264        PINCTRL_PIN(DB8540_PIN_AG23, "GPIO143_AG23"),
 265        PINCTRL_PIN(DB8540_PIN_AE25, "GPIO144_AE25"),
 266        PINCTRL_PIN(DB8540_PIN_AH24, "GPIO145_AH24"),
 267        PINCTRL_PIN(DB8540_PIN_AJ25, "GPIO146_AJ25"),
 268        PINCTRL_PIN(DB8540_PIN_AG27, "GPIO147_AG27"),
 269        PINCTRL_PIN(DB8540_PIN_AH23, "GPIO148_AH23"),
 270        PINCTRL_PIN(DB8540_PIN_AE26, "GPIO149_AE26"),
 271        PINCTRL_PIN(DB8540_PIN_AE24, "GPIO150_AE24"),
 272        PINCTRL_PIN(DB8540_PIN_AJ24, "GPIO151_AJ24"),
 273        PINCTRL_PIN(DB8540_PIN_AE21, "GPIO152_AE21"),
 274        PINCTRL_PIN(DB8540_PIN_AG22, "GPIO153_AG22"),
 275        PINCTRL_PIN(DB8540_PIN_AF21, "GPIO154_AF21"),
 276        PINCTRL_PIN(DB8540_PIN_AF24, "GPIO155_AF24"),
 277        PINCTRL_PIN(DB8540_PIN_AH22, "GPIO156_AH22"),
 278        PINCTRL_PIN(DB8540_PIN_AJ23, "GPIO157_AJ23"),
 279        PINCTRL_PIN(DB8540_PIN_AH21, "GPIO158_AH21"),
 280        PINCTRL_PIN(DB8540_PIN_AG20, "GPIO159_AG20"),
 281        PINCTRL_PIN(DB8540_PIN_AE23, "GPIO160_AE23"),
 282        PINCTRL_PIN(DB8540_PIN_AH20, "GPIO161_AH20"),
 283        PINCTRL_PIN(DB8540_PIN_AG19, "GPIO162_AG19"),
 284        PINCTRL_PIN(DB8540_PIN_AF22, "GPIO163_AF22"),
 285        PINCTRL_PIN(DB8540_PIN_AJ21, "GPIO164_AJ21"),
 286        PINCTRL_PIN(DB8540_PIN_AD26, "GPIO165_AD26"),
 287        PINCTRL_PIN(DB8540_PIN_AD28, "GPIO166_AD28"),
 288        PINCTRL_PIN(DB8540_PIN_AC28, "GPIO167_AC28"),
 289        PINCTRL_PIN(DB8540_PIN_AC26, "GPIO168_AC26"),
 290        /* Hole */
 291        PINCTRL_PIN(DB8540_PIN_J3, "GPIO192_J3"),
 292        PINCTRL_PIN(DB8540_PIN_H1, "GPIO193_H1"),
 293        PINCTRL_PIN(DB8540_PIN_J2, "GPIO194_J2"),
 294        PINCTRL_PIN(DB8540_PIN_H2, "GPIO195_H2"),
 295        PINCTRL_PIN(DB8540_PIN_H3, "GPIO196_H3"),
 296        PINCTRL_PIN(DB8540_PIN_H4, "GPIO197_H4"),
 297        PINCTRL_PIN(DB8540_PIN_G2, "GPIO198_G2"),
 298        PINCTRL_PIN(DB8540_PIN_G3, "GPIO199_G3"),
 299        PINCTRL_PIN(DB8540_PIN_G4, "GPIO200_G4"),
 300        PINCTRL_PIN(DB8540_PIN_F2, "GPIO201_F2"),
 301        PINCTRL_PIN(DB8540_PIN_C6, "GPIO202_C6"),
 302        PINCTRL_PIN(DB8540_PIN_B6, "GPIO203_B6"),
 303        PINCTRL_PIN(DB8540_PIN_B7, "GPIO204_B7"),
 304        PINCTRL_PIN(DB8540_PIN_A7, "GPIO205_A7"),
 305        PINCTRL_PIN(DB8540_PIN_D7, "GPIO206_D7"),
 306        PINCTRL_PIN(DB8540_PIN_D8, "GPIO207_D8"),
 307        PINCTRL_PIN(DB8540_PIN_F3, "GPIO208_F3"),
 308        PINCTRL_PIN(DB8540_PIN_E2, "GPIO209_E2"),
 309        PINCTRL_PIN(DB8540_PIN_C7, "GPIO210_C7"),
 310        PINCTRL_PIN(DB8540_PIN_B8, "GPIO211_B8"),
 311        PINCTRL_PIN(DB8540_PIN_C10, "GPIO212_C10"),
 312        PINCTRL_PIN(DB8540_PIN_C8, "GPIO213_C8"),
 313        PINCTRL_PIN(DB8540_PIN_C9, "GPIO214_C9"),
 314        /* Hole */
 315        PINCTRL_PIN(DB8540_PIN_B9, "GPIO219_B9"),
 316        PINCTRL_PIN(DB8540_PIN_A10, "GPIO220_A10"),
 317        PINCTRL_PIN(DB8540_PIN_D9, "GPIO221_D9"),
 318        PINCTRL_PIN(DB8540_PIN_B11, "GPIO222_B11"),
 319        PINCTRL_PIN(DB8540_PIN_B10, "GPIO223_B10"),
 320        PINCTRL_PIN(DB8540_PIN_E10, "GPIO224_E10"),
 321        PINCTRL_PIN(DB8540_PIN_B12, "GPIO225_B12"),
 322        PINCTRL_PIN(DB8540_PIN_D10, "GPIO226_D10"),
 323        PINCTRL_PIN(DB8540_PIN_D11, "GPIO227_D11"),
 324        PINCTRL_PIN(DB8540_PIN_AJ6, "GPIO228_AJ6"),
 325        PINCTRL_PIN(DB8540_PIN_B13, "GPIO229_B13"),
 326        PINCTRL_PIN(DB8540_PIN_C12, "GPIO230_C12"),
 327        PINCTRL_PIN(DB8540_PIN_B14, "GPIO231_B14"),
 328        PINCTRL_PIN(DB8540_PIN_E11, "GPIO232_E11"),
 329        /* Hole */
 330        PINCTRL_PIN(DB8540_PIN_D12, "GPIO256_D12"),
 331        PINCTRL_PIN(DB8540_PIN_D15, "GPIO257_D15"),
 332        PINCTRL_PIN(DB8540_PIN_C13, "GPIO258_C13"),
 333        PINCTRL_PIN(DB8540_PIN_C14, "GPIO259_C14"),
 334        PINCTRL_PIN(DB8540_PIN_C18, "GPIO260_C18"),
 335        PINCTRL_PIN(DB8540_PIN_C16, "GPIO261_C16"),
 336        PINCTRL_PIN(DB8540_PIN_B16, "GPIO262_B16"),
 337        PINCTRL_PIN(DB8540_PIN_D18, "GPIO263_D18"),
 338        PINCTRL_PIN(DB8540_PIN_C15, "GPIO264_C15"),
 339        PINCTRL_PIN(DB8540_PIN_C17, "GPIO265_C17"),
 340        PINCTRL_PIN(DB8540_PIN_B17, "GPIO266_B17"),
 341        PINCTRL_PIN(DB8540_PIN_D17, "GPIO267_D17"),
 342};
 343
 344#define DB8540_GPIO_RANGE(a, b, c) { .name = "db8540", .id = a, .base = b, \
 345                        .pin_base = b, .npins = c }
 346
 347/*
 348 * This matches the 32-pin gpio chips registered by the GPIO portion. This
 349 * cannot be const since we assign the struct gpio_chip * pointer at runtime.
 350 */
 351static struct pinctrl_gpio_range nmk_db8540_ranges[] = {
 352        DB8540_GPIO_RANGE(0, 0, 18),
 353        DB8540_GPIO_RANGE(0, 22, 7),
 354        DB8540_GPIO_RANGE(1, 33, 6),
 355        DB8540_GPIO_RANGE(2, 64, 4),
 356        DB8540_GPIO_RANGE(2, 70, 18),
 357        DB8540_GPIO_RANGE(3, 116, 12),
 358        DB8540_GPIO_RANGE(4, 128, 32),
 359        DB8540_GPIO_RANGE(5, 160, 9),
 360        DB8540_GPIO_RANGE(6, 192, 23),
 361        DB8540_GPIO_RANGE(6, 219, 5),
 362        DB8540_GPIO_RANGE(7, 224, 9),
 363        DB8540_GPIO_RANGE(8, 256, 12),
 364};
 365
 366/*
 367 * Read the pin group names like this:
 368 * u0_a_1    = first groups of pins for uart0 on alt function a
 369 * i2c2_b_2  = second group of pins for i2c2 on alt function b
 370 *
 371 * The groups are arranged as sets per altfunction column, so we can
 372 * mux in one group at a time by selecting the same altfunction for them
 373 * all. When functions require pins on different altfunctions, you need
 374 * to combine several groups.
 375 */
 376
 377/* Altfunction A column */
 378static const unsigned u0_a_1_pins[] = { DB8540_PIN_AH6, DB8540_PIN_AG7,
 379                                        DB8540_PIN_AF2, DB8540_PIN_AD3 };
 380static const unsigned u1rxtx_a_1_pins[] = { DB8540_PIN_AF6, DB8540_PIN_AG6 };
 381static const unsigned u1ctsrts_a_1_pins[] = { DB8540_PIN_AD5, DB8540_PIN_AF7 };
 382/* Image processor I2C line, this is driven by image processor firmware */
 383static const unsigned ipi2c_a_1_pins[] = { DB8540_PIN_AG5, DB8540_PIN_AH5 };
 384static const unsigned ipi2c_a_2_pins[] = { DB8540_PIN_AE4, DB8540_PIN_AD1 };
 385/* MSP0 can only be on these pins, but TXD and RXD can be flipped */
 386static const unsigned msp0txrx_a_1_pins[] = { DB8540_PIN_AD2, DB8540_PIN_AC3 };
 387static const unsigned msp0tfstck_a_1_pins[] = { DB8540_PIN_AC2,
 388        DB8540_PIN_AC4 };
 389static const unsigned msp0rfsrck_a_1_pins[] = { DB8540_PIN_AH7,
 390        DB8540_PIN_AE7 };
 391/* Basic pins of the MMC/SD card 0 interface */
 392static const unsigned mc0_a_1_pins[] = { DB8540_PIN_AH11, DB8540_PIN_AG11,
 393        DB8540_PIN_AF11, DB8540_PIN_AH10, DB8540_PIN_AG10, DB8540_PIN_AF10};
 394/* MSP1 can only be on these pins, but TXD and RXD can be flipped */
 395static const unsigned msp1txrx_a_1_pins[] = { DB8540_PIN_AD4, DB8540_PIN_AG4 };
 396static const unsigned msp1_a_1_pins[] = { DB8540_PIN_AF3, DB8540_PIN_AF5 };
 397
 398static const unsigned modobsclk_a_1_pins[] = { DB8540_PIN_AF9 };
 399static const unsigned clkoutreq_a_1_pins[] = { DB8540_PIN_AE8 };
 400/* LCD interface */
 401static const unsigned lcdb_a_1_pins[] = { DB8540_PIN_M26, DB8540_PIN_M25,
 402        DB8540_PIN_M27, DB8540_PIN_N25 };
 403static const unsigned lcdvsi0_a_1_pins[] = { DB8540_PIN_AJ24 };
 404static const unsigned lcdvsi1_a_1_pins[] = { DB8540_PIN_AE21 };
 405static const unsigned lcd_d0_d7_a_1_pins[] = { DB8540_PIN_M28, DB8540_PIN_N26,
 406        DB8540_PIN_M22, DB8540_PIN_N22, DB8540_PIN_N27, DB8540_PIN_N28,
 407        DB8540_PIN_P22, DB8540_PIN_P28 };
 408/* D8 thru D11 often used as TVOUT lines */
 409static const unsigned lcd_d8_d11_a_1_pins[] = { DB8540_PIN_P26, DB8540_PIN_T22,
 410        DB8540_PIN_R27, DB8540_PIN_P27 };
 411static const unsigned lcd_d12_d23_a_1_pins[] = { DB8540_PIN_R26, DB8540_PIN_R25,
 412        DB8540_PIN_U22, DB8540_PIN_T27, DB8540_PIN_AG22, DB8540_PIN_AF21,
 413        DB8540_PIN_AF24, DB8540_PIN_AH22, DB8540_PIN_AJ23, DB8540_PIN_AH21,
 414        DB8540_PIN_AG20, DB8540_PIN_AE23 };
 415static const unsigned kp_a_1_pins[] = { DB8540_PIN_AH20, DB8540_PIN_AG19,
 416        DB8540_PIN_AF22, DB8540_PIN_AJ21, DB8540_PIN_T25, DB8540_PIN_T26 };
 417/* MC2 has 8 data lines and no direction control, so only for (e)MMC */
 418static const unsigned mc2_a_1_pins[] = { DB8540_PIN_AC27, DB8540_PIN_AD27,
 419        DB8540_PIN_AE28, DB8540_PIN_AG26, DB8540_PIN_AF25, DB8540_PIN_AE27,
 420        DB8540_PIN_AF27, DB8540_PIN_AG28, DB8540_PIN_AF28, DB8540_PIN_AG25,
 421        DB8540_PIN_AG24 };
 422static const unsigned ssp1_a_1_pins[] = {  DB8540_PIN_AD25, DB8540_PIN_AH25,
 423        DB8540_PIN_AF26, DB8540_PIN_AF23 };
 424static const unsigned ssp0_a_1_pins[] = { DB8540_PIN_AG23, DB8540_PIN_AE25,
 425        DB8540_PIN_AH24, DB8540_PIN_AJ25 };
 426static const unsigned i2c0_a_1_pins[] = { DB8540_PIN_AG27, DB8540_PIN_AH23 };
 427/*
 428 * Image processor GPIO pins are named "ipgpio" and have their own
 429 * numberspace
 430 */
 431static const unsigned ipgpio0_a_1_pins[] = { DB8540_PIN_AE26 };
 432static const unsigned ipgpio1_a_1_pins[] = { DB8540_PIN_AE24 };
 433/* modem i2s interface */
 434static const unsigned modi2s_a_1_pins[] = { DB8540_PIN_AD26, DB8540_PIN_AD28,
 435        DB8540_PIN_AC28, DB8540_PIN_AC26 };
 436static const unsigned spi2_a_1_pins[] = { DB8540_PIN_AF20, DB8540_PIN_AG21,
 437        DB8540_PIN_AH19, DB8540_PIN_AE19 };
 438static const unsigned u2txrx_a_1_pins[] = { DB8540_PIN_AG18, DB8540_PIN_AH17 };
 439static const unsigned u2ctsrts_a_1_pins[] = { DB8540_PIN_AF19,
 440        DB8540_PIN_AF18 };
 441static const unsigned modsmb_a_1_pins[] = { DB8540_PIN_AF17, DB8540_PIN_AE17 };
 442static const unsigned msp2sck_a_1_pins[] = { DB8540_PIN_J3 };
 443static const unsigned msp2txdtcktfs_a_1_pins[] = { DB8540_PIN_H1, DB8540_PIN_J2,
 444        DB8540_PIN_H2 };
 445static const unsigned msp2rxd_a_1_pins[] = { DB8540_PIN_H3 };
 446static const unsigned mc4_a_1_pins[] = { DB8540_PIN_H4, DB8540_PIN_G2,
 447        DB8540_PIN_G3, DB8540_PIN_G4, DB8540_PIN_F2, DB8540_PIN_C6,
 448        DB8540_PIN_B6, DB8540_PIN_B7, DB8540_PIN_A7, DB8540_PIN_D7,
 449        DB8540_PIN_D8 };
 450static const unsigned mc1_a_1_pins[] = { DB8540_PIN_F3, DB8540_PIN_E2,
 451        DB8540_PIN_C7, DB8540_PIN_B8, DB8540_PIN_C10, DB8540_PIN_C8,
 452        DB8540_PIN_C9 };
 453/* mc1_a_2_pins exclude MC1_FBCLK */
 454static const unsigned mc1_a_2_pins[] = { DB8540_PIN_F3, DB8540_PIN_C7,
 455        DB8540_PIN_B8, DB8540_PIN_C10, DB8540_PIN_C8,
 456        DB8540_PIN_C9 };
 457static const unsigned hsir_a_1_pins[] = { DB8540_PIN_B9, DB8540_PIN_A10,
 458        DB8540_PIN_D9 };
 459static const unsigned hsit_a_1_pins[] = { DB8540_PIN_B11, DB8540_PIN_B10,
 460        DB8540_PIN_E10, DB8540_PIN_B12, DB8540_PIN_D10 };
 461static const unsigned hsit_a_2_pins[] = { DB8540_PIN_B11, DB8540_PIN_B10,
 462        DB8540_PIN_E10, DB8540_PIN_B12 };
 463static const unsigned clkout1_a_1_pins[] = { DB8540_PIN_D11 };
 464static const unsigned clkout1_a_2_pins[] = { DB8540_PIN_B13 };
 465static const unsigned clkout2_a_1_pins[] = { DB8540_PIN_AJ6 };
 466static const unsigned clkout2_a_2_pins[] = { DB8540_PIN_C12 };
 467static const unsigned msp4_a_1_pins[] = { DB8540_PIN_B14, DB8540_PIN_E11 };
 468static const unsigned usb_a_1_pins[] = { DB8540_PIN_D12, DB8540_PIN_D15,
 469        DB8540_PIN_C13, DB8540_PIN_C14, DB8540_PIN_C18, DB8540_PIN_C16,
 470        DB8540_PIN_B16, DB8540_PIN_D18, DB8540_PIN_C15, DB8540_PIN_C17,
 471        DB8540_PIN_B17, DB8540_PIN_D17 };
 472/* Altfunction B colum */
 473static const unsigned apetrig_b_1_pins[] = { DB8540_PIN_AH6, DB8540_PIN_AG7 };
 474static const unsigned modtrig_b_1_pins[] = { DB8540_PIN_AF2, DB8540_PIN_AD3 };
 475static const unsigned i2c4_b_1_pins[] = { DB8540_PIN_AF6, DB8540_PIN_AG6 };
 476static const unsigned i2c1_b_1_pins[] = { DB8540_PIN_AD5, DB8540_PIN_AF7 };
 477static const unsigned i2c2_b_1_pins[] = { DB8540_PIN_AG5, DB8540_PIN_AH5 };
 478static const unsigned i2c2_b_2_pins[] = { DB8540_PIN_AE4, DB8540_PIN_AD1 };
 479static const unsigned msp0txrx_b_1_pins[] = { DB8540_PIN_AD2, DB8540_PIN_AC3 };
 480static const unsigned i2c1_b_2_pins[] = { DB8540_PIN_AH7, DB8540_PIN_AE7 };
 481static const unsigned stmmod_b_1_pins[] = { DB8540_PIN_AH11, DB8540_PIN_AF11,
 482        DB8540_PIN_AH10, DB8540_PIN_AG10, DB8540_PIN_AF10 };
 483static const unsigned moduartstmmux_b_1_pins[] = { DB8540_PIN_AG11 };
 484static const unsigned msp1txrx_b_1_pins[] = { DB8540_PIN_AD4, DB8540_PIN_AG4 };
 485static const unsigned kp_b_1_pins[] = { DB8540_PIN_AJ24, DB8540_PIN_AE21,
 486        DB8540_PIN_M26, DB8540_PIN_M25, DB8540_PIN_M27, DB8540_PIN_N25,
 487        DB8540_PIN_M28, DB8540_PIN_N26, DB8540_PIN_M22, DB8540_PIN_N22,
 488        DB8540_PIN_N27, DB8540_PIN_N28, DB8540_PIN_P22, DB8540_PIN_P28,
 489        DB8540_PIN_P26, DB8540_PIN_T22, DB8540_PIN_R27, DB8540_PIN_P27,
 490        DB8540_PIN_R26, DB8540_PIN_R25 };
 491static const unsigned u2txrx_b_1_pins[] = { DB8540_PIN_U22, DB8540_PIN_T27 };
 492static const unsigned sm_b_1_pins[] = { DB8540_PIN_AG22, DB8540_PIN_AF21,
 493        DB8540_PIN_AF24, DB8540_PIN_AH22, DB8540_PIN_AJ23, DB8540_PIN_AH21,
 494        DB8540_PIN_AG20, DB8540_PIN_AE23, DB8540_PIN_AH20, DB8540_PIN_AF22,
 495        DB8540_PIN_AJ21, DB8540_PIN_AC27, DB8540_PIN_AD27, DB8540_PIN_AE28,
 496        DB8540_PIN_AG26, DB8540_PIN_AF25, DB8540_PIN_AE27, DB8540_PIN_AF27,
 497        DB8540_PIN_AG28, DB8540_PIN_AF28, DB8540_PIN_AG25, DB8540_PIN_AG24,
 498        DB8540_PIN_AD25 };
 499static const unsigned smcs0_b_1_pins[] = { DB8540_PIN_AG19 };
 500static const unsigned smcs1_b_1_pins[] = { DB8540_PIN_AE26 };
 501static const unsigned ipgpio7_b_1_pins[] = { DB8540_PIN_AH25 };
 502static const unsigned ipgpio2_b_1_pins[] = { DB8540_PIN_AF26 };
 503static const unsigned ipgpio3_b_1_pins[] = { DB8540_PIN_AF23 };
 504static const unsigned i2c6_b_1_pins[] = { DB8540_PIN_AG23, DB8540_PIN_AE25 };
 505static const unsigned i2c5_b_1_pins[] = { DB8540_PIN_AH24, DB8540_PIN_AJ25 };
 506static const unsigned u3txrx_b_1_pins[] = { DB8540_PIN_AF20, DB8540_PIN_AG21 };
 507static const unsigned u3ctsrts_b_1_pins[] = { DB8540_PIN_AH19,
 508        DB8540_PIN_AE19 };
 509static const unsigned i2c5_b_2_pins[] = { DB8540_PIN_AG18, DB8540_PIN_AH17 };
 510static const unsigned i2c4_b_2_pins[] = { DB8540_PIN_AF19, DB8540_PIN_AF18 };
 511static const unsigned u4txrx_b_1_pins[] = { DB8540_PIN_AE18, DB8540_PIN_AG17 };
 512static const unsigned u4ctsrts_b_1_pins[] = { DB8540_PIN_AF17,
 513        DB8540_PIN_AE17 };
 514static const unsigned ddrtrig_b_1_pins[] = { DB8540_PIN_J3 };
 515static const unsigned msp4_b_1_pins[] = { DB8540_PIN_H3 };
 516static const unsigned pwl_b_1_pins[] = { DB8540_PIN_C6 };
 517static const unsigned spi1_b_1_pins[] = { DB8540_PIN_E2, DB8540_PIN_C10,
 518        DB8540_PIN_C8, DB8540_PIN_C9 };
 519static const unsigned mc3_b_1_pins[] = { DB8540_PIN_B9, DB8540_PIN_A10,
 520        DB8540_PIN_D9, DB8540_PIN_B11, DB8540_PIN_B10, DB8540_PIN_E10,
 521        DB8540_PIN_B12 };
 522static const unsigned pwl_b_2_pins[] = { DB8540_PIN_D10 };
 523static const unsigned pwl_b_3_pins[] = { DB8540_PIN_B13 };
 524static const unsigned pwl_b_4_pins[] = { DB8540_PIN_C12 };
 525static const unsigned u2txrx_b_2_pins[] = { DB8540_PIN_B17, DB8540_PIN_D17 };
 526
 527/* Altfunction C column */
 528static const unsigned ipgpio6_c_1_pins[] = { DB8540_PIN_AG6 };
 529static const unsigned ipgpio0_c_1_pins[] = { DB8540_PIN_AD5 };
 530static const unsigned ipgpio1_c_1_pins[] = { DB8540_PIN_AF7 };
 531static const unsigned ipgpio3_c_1_pins[] = { DB8540_PIN_AE4 };
 532static const unsigned ipgpio2_c_1_pins[] = { DB8540_PIN_AD1 };
 533static const unsigned u0_c_1_pins[] = { DB8540_PIN_AD4, DB8540_PIN_AF3,
 534        DB8540_PIN_AF5, DB8540_PIN_AG4 };
 535static const unsigned smcleale_c_1_pins[] = { DB8540_PIN_AJ24,
 536        DB8540_PIN_AE21 };
 537static const unsigned ipgpio4_c_1_pins[] = { DB8540_PIN_M26 };
 538static const unsigned ipgpio5_c_1_pins[] = { DB8540_PIN_M25 };
 539static const unsigned ipgpio6_c_2_pins[] = { DB8540_PIN_M27 };
 540static const unsigned ipgpio7_c_1_pins[] = { DB8540_PIN_N25 };
 541static const unsigned stmape_c_1_pins[] = { DB8540_PIN_M28, DB8540_PIN_N26,
 542        DB8540_PIN_M22, DB8540_PIN_N22, DB8540_PIN_N27 };
 543static const unsigned u2rxtx_c_1_pins[] = { DB8540_PIN_N28, DB8540_PIN_P22 };
 544static const unsigned modobsresout_c_1_pins[] = { DB8540_PIN_P28 };
 545static const unsigned ipgpio2_c_2_pins[] = { DB8540_PIN_P26 };
 546static const unsigned ipgpio3_c_2_pins[] = { DB8540_PIN_T22 };
 547static const unsigned ipgpio4_c_2_pins[] = { DB8540_PIN_R27 };
 548static const unsigned ipgpio5_c_2_pins[] = { DB8540_PIN_P27 };
 549static const unsigned modaccgpo_c_1_pins[] = { DB8540_PIN_R26, DB8540_PIN_R25,
 550        DB8540_PIN_U22 };
 551static const unsigned modobspwrrst_c_1_pins[] = { DB8540_PIN_T27 };
 552static const unsigned mc5_c_1_pins[] = { DB8540_PIN_AG22, DB8540_PIN_AF21,
 553        DB8540_PIN_AF24, DB8540_PIN_AH22, DB8540_PIN_AJ23, DB8540_PIN_AH21,
 554        DB8540_PIN_AG20, DB8540_PIN_AE23, DB8540_PIN_AH20, DB8540_PIN_AF22,
 555        DB8540_PIN_AJ21};
 556static const unsigned smps0_c_1_pins[] = { DB8540_PIN_AG19 };
 557static const unsigned moduart1_c_1_pins[] = { DB8540_PIN_T25, DB8540_PIN_T26 };
 558static const unsigned mc2rstn_c_1_pins[] = { DB8540_PIN_AE28 };
 559static const unsigned i2c5_c_1_pins[] = { DB8540_PIN_AG28, DB8540_PIN_AF28 };
 560static const unsigned ipgpio0_c_2_pins[] = { DB8540_PIN_AG25 };
 561static const unsigned ipgpio1_c_2_pins[] = { DB8540_PIN_AG24 };
 562static const unsigned kp_c_1_pins[] = { DB8540_PIN_AD25, DB8540_PIN_AH25,
 563        DB8540_PIN_AF26, DB8540_PIN_AF23 };
 564static const unsigned modrf_c_1_pins[] = { DB8540_PIN_AG23, DB8540_PIN_AE25,
 565        DB8540_PIN_AH24 };
 566static const unsigned smps1_c_1_pins[] = { DB8540_PIN_AE26 };
 567static const unsigned i2c5_c_2_pins[] = { DB8540_PIN_AH19, DB8540_PIN_AE19 };
 568static const unsigned u4ctsrts_c_1_pins[] = { DB8540_PIN_AG18,
 569        DB8540_PIN_AH17 };
 570static const unsigned u3rxtx_c_1_pins[] = { DB8540_PIN_AF19, DB8540_PIN_AF18 };
 571static const unsigned msp4_c_1_pins[] = { DB8540_PIN_J3 };
 572static const unsigned mc4rstn_c_1_pins[] = { DB8540_PIN_C6 };
 573static const unsigned spi0_c_1_pins[] = { DB8540_PIN_A10, DB8540_PIN_B10,
 574        DB8540_PIN_E10, DB8540_PIN_B12 };
 575static const unsigned i2c3_c_1_pins[] = { DB8540_PIN_B13, DB8540_PIN_C12 };
 576
 577/* Other alt C1 column */
 578static const unsigned spi3_oc1_1_pins[] = { DB8540_PIN_AG5, DB8540_PIN_AH5,
 579        DB8540_PIN_AE4, DB8540_PIN_AD1 };
 580static const unsigned stmape_oc1_1_pins[] = { DB8540_PIN_AH11, DB8540_PIN_AF11,
 581        DB8540_PIN_AH10, DB8540_PIN_AG10, DB8540_PIN_AF10 };
 582static const unsigned u2_oc1_1_pins[] = { DB8540_PIN_AG11 };
 583static const unsigned remap0_oc1_1_pins[] = { DB8540_PIN_AJ24 };
 584static const unsigned remap1_oc1_1_pins[] = { DB8540_PIN_AE21 };
 585static const unsigned modobsrefclk_oc1_1_pins[] = { DB8540_PIN_M26 };
 586static const unsigned modobspwrctrl_oc1_1_pins[] = { DB8540_PIN_M25 };
 587static const unsigned modobsclkout_oc1_1_pins[] = { DB8540_PIN_M27 };
 588static const unsigned moduart1_oc1_1_pins[] = { DB8540_PIN_N25 };
 589static const unsigned modprcmudbg_oc1_1_pins[] = { DB8540_PIN_M28,
 590        DB8540_PIN_N26, DB8540_PIN_M22, DB8540_PIN_N22, DB8540_PIN_N27,
 591        DB8540_PIN_P22, DB8540_PIN_P28, DB8540_PIN_P26, DB8540_PIN_T22,
 592        DB8540_PIN_R26, DB8540_PIN_R25, DB8540_PIN_U22, DB8540_PIN_T27,
 593        DB8540_PIN_AH20, DB8540_PIN_AG19, DB8540_PIN_AF22, DB8540_PIN_AJ21,
 594        DB8540_PIN_T25};
 595static const unsigned modobsresout_oc1_1_pins[] = { DB8540_PIN_N28 };
 596static const unsigned modaccgpo_oc1_1_pins[] = { DB8540_PIN_R27, DB8540_PIN_P27,
 597        DB8540_PIN_T26 };
 598static const unsigned kp_oc1_1_pins[] = { DB8540_PIN_AG22, DB8540_PIN_AF21,
 599        DB8540_PIN_AF24, DB8540_PIN_AH22, DB8540_PIN_AJ23, DB8540_PIN_AH21,
 600        DB8540_PIN_AG20, DB8540_PIN_AE23 };
 601static const unsigned modxmip_oc1_1_pins[] = { DB8540_PIN_AD25, DB8540_PIN_AH25,
 602        DB8540_PIN_AG23, DB8540_PIN_AE25 };
 603static const unsigned i2c6_oc1_1_pins[] = { DB8540_PIN_AE26, DB8540_PIN_AE24 };
 604static const unsigned u2txrx_oc1_1_pins[] = { DB8540_PIN_B7, DB8540_PIN_A7 };
 605static const unsigned u2ctsrts_oc1_1_pins[] = { DB8540_PIN_D7, DB8540_PIN_D8 };
 606
 607/* Other alt C2 column */
 608static const unsigned sbag_oc2_1_pins[] = { DB8540_PIN_AH11, DB8540_PIN_AG11,
 609        DB8540_PIN_AF11, DB8540_PIN_AH10, DB8540_PIN_AG10, DB8540_PIN_AF10 };
 610static const unsigned hxclk_oc2_1_pins[] = { DB8540_PIN_M25 };
 611static const unsigned modaccuart_oc2_1_pins[] = { DB8540_PIN_N25 };
 612static const unsigned stmmod_oc2_1_pins[] = { DB8540_PIN_M28, DB8540_PIN_N26,
 613        DB8540_PIN_M22, DB8540_PIN_N22, DB8540_PIN_N27 };
 614static const unsigned moduartstmmux_oc2_1_pins[] = { DB8540_PIN_N28 };
 615static const unsigned hxgpio_oc2_1_pins[] = { DB8540_PIN_P22, DB8540_PIN_P28,
 616        DB8540_PIN_P26, DB8540_PIN_T22, DB8540_PIN_R27, DB8540_PIN_P27,
 617        DB8540_PIN_R26, DB8540_PIN_R25 };
 618static const unsigned sbag_oc2_2_pins[] = { DB8540_PIN_U22, DB8540_PIN_T27,
 619        DB8540_PIN_AG22, DB8540_PIN_AF21, DB8540_PIN_AF24, DB8540_PIN_AH22 };
 620static const unsigned modobsservice_oc2_1_pins[] = { DB8540_PIN_AJ23 };
 621static const unsigned moduart0_oc2_1_pins[] = { DB8540_PIN_AG20,
 622        DB8540_PIN_AE23 };
 623static const unsigned stmape_oc2_1_pins[] = { DB8540_PIN_AH20, DB8540_PIN_AG19,
 624        DB8540_PIN_AF22, DB8540_PIN_AJ21, DB8540_PIN_T25 };
 625static const unsigned u2_oc2_1_pins[] = { DB8540_PIN_T26, DB8540_PIN_AH21 };
 626static const unsigned modxmip_oc2_1_pins[] = { DB8540_PIN_AE26,
 627        DB8540_PIN_AE24 };
 628
 629/* Other alt C3 column */
 630static const unsigned modaccgpo_oc3_1_pins[] = { DB8540_PIN_AG11 };
 631static const unsigned tpui_oc3_1_pins[] = { DB8540_PIN_M26, DB8540_PIN_M25,
 632        DB8540_PIN_M27, DB8540_PIN_N25, DB8540_PIN_M28, DB8540_PIN_N26,
 633        DB8540_PIN_M22, DB8540_PIN_N22, DB8540_PIN_N27, DB8540_PIN_N28,
 634        DB8540_PIN_P22, DB8540_PIN_P28, DB8540_PIN_P26, DB8540_PIN_T22,
 635        DB8540_PIN_R27, DB8540_PIN_P27, DB8540_PIN_R26, DB8540_PIN_R25,
 636        DB8540_PIN_U22, DB8540_PIN_T27, DB8540_PIN_AG22, DB8540_PIN_AF21,
 637        DB8540_PIN_AF24, DB8540_PIN_AH22, DB8540_PIN_AJ23, DB8540_PIN_AH21,
 638        DB8540_PIN_AG20, DB8540_PIN_AE23, DB8540_PIN_AH20, DB8540_PIN_AG19,
 639        DB8540_PIN_AF22, DB8540_PIN_AJ21, DB8540_PIN_T25, DB8540_PIN_T26 };
 640
 641/* Other alt C4 column */
 642static const unsigned hwobs_oc4_1_pins[] = { DB8540_PIN_M26, DB8540_PIN_M25,
 643        DB8540_PIN_M27, DB8540_PIN_N25, DB8540_PIN_M28, DB8540_PIN_N26,
 644        DB8540_PIN_M22, DB8540_PIN_N22, DB8540_PIN_N27, DB8540_PIN_N28,
 645        DB8540_PIN_P22, DB8540_PIN_P28, DB8540_PIN_P26, DB8540_PIN_T22,
 646        DB8540_PIN_R27, DB8540_PIN_P27, DB8540_PIN_R26, DB8540_PIN_R25 };
 647static const unsigned moduart1txrx_oc4_1_pins[] = { DB8540_PIN_U22,
 648        DB8540_PIN_T27 };
 649static const unsigned moduart1rtscts_oc4_1_pins[] = { DB8540_PIN_AG22,
 650        DB8540_PIN_AF21 };
 651static const unsigned modaccuarttxrx_oc4_1_pins[] = { DB8540_PIN_AF24,
 652        DB8540_PIN_AH22 };
 653static const unsigned modaccuartrtscts_oc4_1_pins[] = { DB8540_PIN_AJ23,
 654        DB8540_PIN_AH21 };
 655static const unsigned stmmod_oc4_1_pins[] = { DB8540_PIN_AH20, DB8540_PIN_AG19,
 656        DB8540_PIN_AF22, DB8540_PIN_AJ21, DB8540_PIN_T25 };
 657static const unsigned moduartstmmux_oc4_1_pins[] = { DB8540_PIN_T26 };
 658
 659#define DB8540_PIN_GROUP(a, b) { .name = #a, .pins = a##_pins,          \
 660                        .npins = ARRAY_SIZE(a##_pins), .altsetting = b }
 661
 662static const struct nmk_pingroup nmk_db8540_groups[] = {
 663        /* Altfunction A column */
 664        DB8540_PIN_GROUP(u0_a_1, NMK_GPIO_ALT_A),
 665        DB8540_PIN_GROUP(u1rxtx_a_1, NMK_GPIO_ALT_A),
 666        DB8540_PIN_GROUP(u1ctsrts_a_1, NMK_GPIO_ALT_A),
 667        DB8540_PIN_GROUP(ipi2c_a_1, NMK_GPIO_ALT_A),
 668        DB8540_PIN_GROUP(ipi2c_a_2, NMK_GPIO_ALT_A),
 669        DB8540_PIN_GROUP(msp0txrx_a_1, NMK_GPIO_ALT_A),
 670        DB8540_PIN_GROUP(msp0tfstck_a_1, NMK_GPIO_ALT_A),
 671        DB8540_PIN_GROUP(msp0rfsrck_a_1, NMK_GPIO_ALT_A),
 672        DB8540_PIN_GROUP(mc0_a_1, NMK_GPIO_ALT_A),
 673        DB8540_PIN_GROUP(msp1txrx_a_1, NMK_GPIO_ALT_A),
 674        DB8540_PIN_GROUP(msp1_a_1, NMK_GPIO_ALT_A),
 675        DB8540_PIN_GROUP(modobsclk_a_1, NMK_GPIO_ALT_A),
 676        DB8540_PIN_GROUP(clkoutreq_a_1, NMK_GPIO_ALT_A),
 677        DB8540_PIN_GROUP(lcdb_a_1, NMK_GPIO_ALT_A),
 678        DB8540_PIN_GROUP(lcdvsi0_a_1, NMK_GPIO_ALT_A),
 679        DB8540_PIN_GROUP(lcdvsi1_a_1, NMK_GPIO_ALT_A),
 680        DB8540_PIN_GROUP(lcd_d0_d7_a_1, NMK_GPIO_ALT_A),
 681        DB8540_PIN_GROUP(lcd_d8_d11_a_1, NMK_GPIO_ALT_A),
 682        DB8540_PIN_GROUP(lcd_d12_d23_a_1, NMK_GPIO_ALT_A),
 683        DB8540_PIN_GROUP(kp_a_1, NMK_GPIO_ALT_A),
 684        DB8540_PIN_GROUP(mc2_a_1, NMK_GPIO_ALT_A),
 685        DB8540_PIN_GROUP(ssp1_a_1, NMK_GPIO_ALT_A),
 686        DB8540_PIN_GROUP(ssp0_a_1, NMK_GPIO_ALT_A),
 687        DB8540_PIN_GROUP(i2c0_a_1, NMK_GPIO_ALT_A),
 688        DB8540_PIN_GROUP(ipgpio0_a_1, NMK_GPIO_ALT_A),
 689        DB8540_PIN_GROUP(ipgpio1_a_1, NMK_GPIO_ALT_A),
 690        DB8540_PIN_GROUP(modi2s_a_1, NMK_GPIO_ALT_A),
 691        DB8540_PIN_GROUP(spi2_a_1, NMK_GPIO_ALT_A),
 692        DB8540_PIN_GROUP(u2txrx_a_1, NMK_GPIO_ALT_A),
 693        DB8540_PIN_GROUP(u2ctsrts_a_1, NMK_GPIO_ALT_A),
 694        DB8540_PIN_GROUP(modsmb_a_1, NMK_GPIO_ALT_A),
 695        DB8540_PIN_GROUP(msp2sck_a_1, NMK_GPIO_ALT_A),
 696        DB8540_PIN_GROUP(msp2txdtcktfs_a_1, NMK_GPIO_ALT_A),
 697        DB8540_PIN_GROUP(msp2rxd_a_1, NMK_GPIO_ALT_A),
 698        DB8540_PIN_GROUP(mc4_a_1, NMK_GPIO_ALT_A),
 699        DB8540_PIN_GROUP(mc1_a_1, NMK_GPIO_ALT_A),
 700        DB8540_PIN_GROUP(hsir_a_1, NMK_GPIO_ALT_A),
 701        DB8540_PIN_GROUP(hsit_a_1, NMK_GPIO_ALT_A),
 702        DB8540_PIN_GROUP(hsit_a_2, NMK_GPIO_ALT_A),
 703        DB8540_PIN_GROUP(clkout1_a_1, NMK_GPIO_ALT_A),
 704        DB8540_PIN_GROUP(clkout1_a_2, NMK_GPIO_ALT_A),
 705        DB8540_PIN_GROUP(clkout2_a_1, NMK_GPIO_ALT_A),
 706        DB8540_PIN_GROUP(clkout2_a_2, NMK_GPIO_ALT_A),
 707        DB8540_PIN_GROUP(msp4_a_1, NMK_GPIO_ALT_A),
 708        DB8540_PIN_GROUP(usb_a_1, NMK_GPIO_ALT_A),
 709        /* Altfunction B column */
 710        DB8540_PIN_GROUP(apetrig_b_1, NMK_GPIO_ALT_B),
 711        DB8540_PIN_GROUP(modtrig_b_1, NMK_GPIO_ALT_B),
 712        DB8540_PIN_GROUP(i2c4_b_1, NMK_GPIO_ALT_B),
 713        DB8540_PIN_GROUP(i2c1_b_1, NMK_GPIO_ALT_B),
 714        DB8540_PIN_GROUP(i2c2_b_1, NMK_GPIO_ALT_B),
 715        DB8540_PIN_GROUP(i2c2_b_2, NMK_GPIO_ALT_B),
 716        DB8540_PIN_GROUP(msp0txrx_b_1, NMK_GPIO_ALT_B),
 717        DB8540_PIN_GROUP(i2c1_b_2, NMK_GPIO_ALT_B),
 718        DB8540_PIN_GROUP(stmmod_b_1, NMK_GPIO_ALT_B),
 719        DB8540_PIN_GROUP(moduartstmmux_b_1, NMK_GPIO_ALT_B),
 720        DB8540_PIN_GROUP(msp1txrx_b_1, NMK_GPIO_ALT_B),
 721        DB8540_PIN_GROUP(kp_b_1, NMK_GPIO_ALT_B),
 722        DB8540_PIN_GROUP(u2txrx_b_1, NMK_GPIO_ALT_B),
 723        DB8540_PIN_GROUP(sm_b_1, NMK_GPIO_ALT_B),
 724        DB8540_PIN_GROUP(smcs0_b_1, NMK_GPIO_ALT_B),
 725        DB8540_PIN_GROUP(smcs1_b_1, NMK_GPIO_ALT_B),
 726        DB8540_PIN_GROUP(ipgpio7_b_1, NMK_GPIO_ALT_B),
 727        DB8540_PIN_GROUP(ipgpio2_b_1, NMK_GPIO_ALT_B),
 728        DB8540_PIN_GROUP(ipgpio3_b_1, NMK_GPIO_ALT_B),
 729        DB8540_PIN_GROUP(i2c6_b_1, NMK_GPIO_ALT_B),
 730        DB8540_PIN_GROUP(i2c5_b_1, NMK_GPIO_ALT_B),
 731        DB8540_PIN_GROUP(u3txrx_b_1, NMK_GPIO_ALT_B),
 732        DB8540_PIN_GROUP(u3ctsrts_b_1, NMK_GPIO_ALT_B),
 733        DB8540_PIN_GROUP(i2c5_b_2, NMK_GPIO_ALT_B),
 734        DB8540_PIN_GROUP(i2c4_b_2, NMK_GPIO_ALT_B),
 735        DB8540_PIN_GROUP(u4txrx_b_1, NMK_GPIO_ALT_B),
 736        DB8540_PIN_GROUP(u4ctsrts_b_1, NMK_GPIO_ALT_B),
 737        DB8540_PIN_GROUP(ddrtrig_b_1, NMK_GPIO_ALT_B),
 738        DB8540_PIN_GROUP(msp4_b_1, NMK_GPIO_ALT_B),
 739        DB8540_PIN_GROUP(pwl_b_1, NMK_GPIO_ALT_B),
 740        DB8540_PIN_GROUP(spi1_b_1, NMK_GPIO_ALT_B),
 741        DB8540_PIN_GROUP(mc3_b_1, NMK_GPIO_ALT_B),
 742        DB8540_PIN_GROUP(pwl_b_2, NMK_GPIO_ALT_B),
 743        DB8540_PIN_GROUP(pwl_b_3, NMK_GPIO_ALT_B),
 744        DB8540_PIN_GROUP(pwl_b_4, NMK_GPIO_ALT_B),
 745        DB8540_PIN_GROUP(u2txrx_b_2, NMK_GPIO_ALT_B),
 746        /* Altfunction C column */
 747        DB8540_PIN_GROUP(ipgpio6_c_1, NMK_GPIO_ALT_C),
 748        DB8540_PIN_GROUP(ipgpio0_c_1, NMK_GPIO_ALT_C),
 749        DB8540_PIN_GROUP(ipgpio1_c_1, NMK_GPIO_ALT_C),
 750        DB8540_PIN_GROUP(ipgpio3_c_1, NMK_GPIO_ALT_C),
 751        DB8540_PIN_GROUP(ipgpio2_c_1, NMK_GPIO_ALT_C),
 752        DB8540_PIN_GROUP(u0_c_1, NMK_GPIO_ALT_C),
 753        DB8540_PIN_GROUP(smcleale_c_1, NMK_GPIO_ALT_C),
 754        DB8540_PIN_GROUP(ipgpio4_c_1, NMK_GPIO_ALT_C),
 755        DB8540_PIN_GROUP(ipgpio5_c_1, NMK_GPIO_ALT_C),
 756        DB8540_PIN_GROUP(ipgpio6_c_2, NMK_GPIO_ALT_C),
 757        DB8540_PIN_GROUP(ipgpio7_c_1, NMK_GPIO_ALT_C),
 758        DB8540_PIN_GROUP(stmape_c_1, NMK_GPIO_ALT_C),
 759        DB8540_PIN_GROUP(u2rxtx_c_1, NMK_GPIO_ALT_C),
 760        DB8540_PIN_GROUP(modobsresout_c_1, NMK_GPIO_ALT_C),
 761        DB8540_PIN_GROUP(ipgpio2_c_2, NMK_GPIO_ALT_C),
 762        DB8540_PIN_GROUP(ipgpio3_c_2, NMK_GPIO_ALT_C),
 763        DB8540_PIN_GROUP(ipgpio4_c_2, NMK_GPIO_ALT_C),
 764        DB8540_PIN_GROUP(ipgpio5_c_2, NMK_GPIO_ALT_C),
 765        DB8540_PIN_GROUP(modaccgpo_c_1, NMK_GPIO_ALT_C),
 766        DB8540_PIN_GROUP(modobspwrrst_c_1, NMK_GPIO_ALT_C),
 767        DB8540_PIN_GROUP(mc5_c_1, NMK_GPIO_ALT_C),
 768        DB8540_PIN_GROUP(smps0_c_1, NMK_GPIO_ALT_C),
 769        DB8540_PIN_GROUP(moduart1_c_1, NMK_GPIO_ALT_C),
 770        DB8540_PIN_GROUP(mc2rstn_c_1, NMK_GPIO_ALT_C),
 771        DB8540_PIN_GROUP(i2c5_c_1, NMK_GPIO_ALT_C),
 772        DB8540_PIN_GROUP(ipgpio0_c_2, NMK_GPIO_ALT_C),
 773        DB8540_PIN_GROUP(ipgpio1_c_2, NMK_GPIO_ALT_C),
 774        DB8540_PIN_GROUP(kp_c_1, NMK_GPIO_ALT_C),
 775        DB8540_PIN_GROUP(modrf_c_1, NMK_GPIO_ALT_C),
 776        DB8540_PIN_GROUP(smps1_c_1, NMK_GPIO_ALT_C),
 777        DB8540_PIN_GROUP(i2c5_c_2, NMK_GPIO_ALT_C),
 778        DB8540_PIN_GROUP(u4ctsrts_c_1, NMK_GPIO_ALT_C),
 779        DB8540_PIN_GROUP(u3rxtx_c_1, NMK_GPIO_ALT_C),
 780        DB8540_PIN_GROUP(msp4_c_1, NMK_GPIO_ALT_C),
 781        DB8540_PIN_GROUP(mc4rstn_c_1, NMK_GPIO_ALT_C),
 782        DB8540_PIN_GROUP(spi0_c_1, NMK_GPIO_ALT_C),
 783        DB8540_PIN_GROUP(i2c3_c_1, NMK_GPIO_ALT_C),
 784
 785        /* Other alt C1 column */
 786        DB8540_PIN_GROUP(spi3_oc1_1, NMK_GPIO_ALT_C1),
 787        DB8540_PIN_GROUP(stmape_oc1_1, NMK_GPIO_ALT_C1),
 788        DB8540_PIN_GROUP(u2_oc1_1, NMK_GPIO_ALT_C1),
 789        DB8540_PIN_GROUP(remap0_oc1_1, NMK_GPIO_ALT_C1),
 790        DB8540_PIN_GROUP(remap1_oc1_1, NMK_GPIO_ALT_C1),
 791        DB8540_PIN_GROUP(modobsrefclk_oc1_1, NMK_GPIO_ALT_C1),
 792        DB8540_PIN_GROUP(modobspwrctrl_oc1_1, NMK_GPIO_ALT_C1),
 793        DB8540_PIN_GROUP(modobsclkout_oc1_1, NMK_GPIO_ALT_C1),
 794        DB8540_PIN_GROUP(moduart1_oc1_1, NMK_GPIO_ALT_C1),
 795        DB8540_PIN_GROUP(modprcmudbg_oc1_1, NMK_GPIO_ALT_C1),
 796        DB8540_PIN_GROUP(modobsresout_oc1_1, NMK_GPIO_ALT_C1),
 797        DB8540_PIN_GROUP(modaccgpo_oc1_1, NMK_GPIO_ALT_C1),
 798        DB8540_PIN_GROUP(kp_oc1_1, NMK_GPIO_ALT_C1),
 799        DB8540_PIN_GROUP(modxmip_oc1_1, NMK_GPIO_ALT_C1),
 800        DB8540_PIN_GROUP(i2c6_oc1_1, NMK_GPIO_ALT_C1),
 801        DB8540_PIN_GROUP(u2txrx_oc1_1, NMK_GPIO_ALT_C1),
 802        DB8540_PIN_GROUP(u2ctsrts_oc1_1, NMK_GPIO_ALT_C1),
 803
 804        /* Other alt C2 column */
 805        DB8540_PIN_GROUP(sbag_oc2_1, NMK_GPIO_ALT_C2),
 806        DB8540_PIN_GROUP(hxclk_oc2_1, NMK_GPIO_ALT_C2),
 807        DB8540_PIN_GROUP(modaccuart_oc2_1, NMK_GPIO_ALT_C2),
 808        DB8540_PIN_GROUP(stmmod_oc2_1, NMK_GPIO_ALT_C2),
 809        DB8540_PIN_GROUP(moduartstmmux_oc2_1, NMK_GPIO_ALT_C2),
 810        DB8540_PIN_GROUP(hxgpio_oc2_1, NMK_GPIO_ALT_C2),
 811        DB8540_PIN_GROUP(sbag_oc2_2, NMK_GPIO_ALT_C2),
 812        DB8540_PIN_GROUP(modobsservice_oc2_1, NMK_GPIO_ALT_C2),
 813        DB8540_PIN_GROUP(moduart0_oc2_1, NMK_GPIO_ALT_C2),
 814        DB8540_PIN_GROUP(stmape_oc2_1, NMK_GPIO_ALT_C2),
 815        DB8540_PIN_GROUP(u2_oc2_1, NMK_GPIO_ALT_C2),
 816        DB8540_PIN_GROUP(modxmip_oc2_1, NMK_GPIO_ALT_C2),
 817
 818        /* Other alt C3 column */
 819        DB8540_PIN_GROUP(modaccgpo_oc3_1, NMK_GPIO_ALT_C3),
 820        DB8540_PIN_GROUP(tpui_oc3_1, NMK_GPIO_ALT_C3),
 821
 822        /* Other alt C4 column */
 823        DB8540_PIN_GROUP(hwobs_oc4_1, NMK_GPIO_ALT_C4),
 824        DB8540_PIN_GROUP(moduart1txrx_oc4_1, NMK_GPIO_ALT_C4),
 825        DB8540_PIN_GROUP(moduart1rtscts_oc4_1, NMK_GPIO_ALT_C4),
 826        DB8540_PIN_GROUP(modaccuarttxrx_oc4_1, NMK_GPIO_ALT_C4),
 827        DB8540_PIN_GROUP(modaccuartrtscts_oc4_1, NMK_GPIO_ALT_C4),
 828        DB8540_PIN_GROUP(stmmod_oc4_1, NMK_GPIO_ALT_C4),
 829        DB8540_PIN_GROUP(moduartstmmux_oc4_1, NMK_GPIO_ALT_C4),
 830
 831};
 832
 833/* We use this macro to define the groups applicable to a function */
 834#define DB8540_FUNC_GROUPS(a, b...)        \
 835static const char * const a##_groups[] = { b };
 836
 837DB8540_FUNC_GROUPS(apetrig, "apetrig_b_1");
 838DB8540_FUNC_GROUPS(clkout, "clkoutreq_a_1", "clkout1_a_1", "clkout1_a_2",
 839                "clkout2_a_1", "clkout2_a_2");
 840DB8540_FUNC_GROUPS(ddrtrig, "ddrtrig_b_1");
 841DB8540_FUNC_GROUPS(hsi, "hsir_a_1", "hsit_a_1", "hsit_a_2");
 842DB8540_FUNC_GROUPS(hwobs, "hwobs_oc4_1");
 843DB8540_FUNC_GROUPS(hx, "hxclk_oc2_1", "hxgpio_oc2_1");
 844DB8540_FUNC_GROUPS(i2c0, "i2c0_a_1");
 845DB8540_FUNC_GROUPS(i2c1, "i2c1_b_1", "i2c1_b_2");
 846DB8540_FUNC_GROUPS(i2c2, "i2c2_b_1", "i2c2_b_2");
 847DB8540_FUNC_GROUPS(i2c3, "i2c3_c_1", "i2c4_b_1");
 848DB8540_FUNC_GROUPS(i2c4, "i2c4_b_2");
 849DB8540_FUNC_GROUPS(i2c5, "i2c5_b_1", "i2c5_b_2", "i2c5_c_1", "i2c5_c_2");
 850DB8540_FUNC_GROUPS(i2c6, "i2c6_b_1", "i2c6_oc1_1");
 851/* The image processor has 8 GPIO pins that can be muxed out */
 852DB8540_FUNC_GROUPS(ipgpio, "ipgpio0_a_1", "ipgpio0_c_1", "ipgpio0_c_2",
 853                "ipgpio1_a_1", "ipgpio1_c_1", "ipgpio1_c_2",
 854                "ipgpio2_b_1", "ipgpio2_c_1", "ipgpio2_c_2",
 855                "ipgpio3_b_1", "ipgpio3_c_1", "ipgpio3_c_2",
 856                "ipgpio4_c_1", "ipgpio4_c_2",
 857                "ipgpio5_c_1", "ipgpio5_c_2",
 858                "ipgpio6_c_1", "ipgpio6_c_2",
 859                "ipgpio7_b_1", "ipgpio7_c_1");
 860DB8540_FUNC_GROUPS(ipi2c, "ipi2c_a_1", "ipi2c_a_2");
 861DB8540_FUNC_GROUPS(kp, "kp_a_1", "kp_b_1", "kp_c_1", "kp_oc1_1");
 862DB8540_FUNC_GROUPS(lcd, "lcd_d0_d7_a_1", "lcd_d12_d23_a_1", "lcd_d8_d11_a_1",
 863                "lcdvsi0_a_1", "lcdvsi1_a_1");
 864DB8540_FUNC_GROUPS(lcdb, "lcdb_a_1");
 865DB8540_FUNC_GROUPS(mc0, "mc0_a_1");
 866DB8540_FUNC_GROUPS(mc1, "mc1_a_1", "mc1_a_2");
 867DB8540_FUNC_GROUPS(mc2, "mc2_a_1", "mc2rstn_c_1");
 868DB8540_FUNC_GROUPS(mc3, "mc3_b_1");
 869DB8540_FUNC_GROUPS(mc4, "mc4_a_1", "mc4rstn_c_1");
 870DB8540_FUNC_GROUPS(mc5, "mc5_c_1");
 871DB8540_FUNC_GROUPS(modaccgpo, "modaccgpo_c_1", "modaccgpo_oc1_1",
 872                "modaccgpo_oc3_1");
 873DB8540_FUNC_GROUPS(modaccuart, "modaccuart_oc2_1", "modaccuarttxrx_oc4_1",
 874                "modaccuartrtccts_oc4_1");
 875DB8540_FUNC_GROUPS(modi2s, "modi2s_a_1");
 876DB8540_FUNC_GROUPS(modobs, "modobsclk_a_1", "modobsclkout_oc1_1",
 877                "modobspwrctrl_oc1_1", "modobspwrrst_c_1",
 878                "modobsrefclk_oc1_1", "modobsresout_c_1",
 879                "modobsresout_oc1_1", "modobsservice_oc2_1");
 880DB8540_FUNC_GROUPS(modprcmudbg, "modprcmudbg_oc1_1");
 881DB8540_FUNC_GROUPS(modrf, "modrf_c_1");
 882DB8540_FUNC_GROUPS(modsmb, "modsmb_a_1");
 883DB8540_FUNC_GROUPS(modtrig, "modtrig_b_1");
 884DB8540_FUNC_GROUPS(moduart, "moduart1_c_1", "moduart1_oc1_1",
 885                "moduart1txrx_oc4_1", "moduart1rtscts_oc4_1", "moduart0_oc2_1");
 886DB8540_FUNC_GROUPS(moduartstmmux, "moduartstmmux_b_1", "moduartstmmux_oc2_1",
 887                "moduartstmmux_oc4_1");
 888DB8540_FUNC_GROUPS(modxmip, "modxmip_oc1_1", "modxmip_oc2_1");
 889/*
 890 * MSP0 can only be on a certain set of pins, but the TX/RX pins can be
 891 * switched around by selecting the altfunction A or B.
 892 */
 893DB8540_FUNC_GROUPS(msp0, "msp0rfsrck_a_1", "msp0tfstck_a_1", "msp0txrx_a_1",
 894                "msp0txrx_b_1");
 895DB8540_FUNC_GROUPS(msp1, "msp1_a_1", "msp1txrx_a_1", "msp1txrx_b_1");
 896DB8540_FUNC_GROUPS(msp2, "msp2sck_a_1", "msp2txdtcktfs_a_1", "msp2rxd_a_1");
 897DB8540_FUNC_GROUPS(msp4, "msp4_a_1", "msp4_b_1", "msp4_c_1");
 898DB8540_FUNC_GROUPS(pwl, "pwl_b_1", "pwl_b_2", "pwl_b_3", "pwl_b_4");
 899DB8540_FUNC_GROUPS(remap, "remap0_oc1_1", "remap1_oc1_1");
 900DB8540_FUNC_GROUPS(sbag, "sbag_oc2_1", "sbag_oc2_2");
 901/* Select between CS0 on alt B or PS1 on alt C */
 902DB8540_FUNC_GROUPS(sm, "sm_b_1", "smcleale_c_1", "smcs0_b_1", "smcs1_b_1",
 903                "smps0_c_1", "smps1_c_1");
 904DB8540_FUNC_GROUPS(spi0, "spi0_c_1");
 905DB8540_FUNC_GROUPS(spi1, "spi1_b_1");
 906DB8540_FUNC_GROUPS(spi2, "spi2_a_1");
 907DB8540_FUNC_GROUPS(spi3, "spi3_oc1_1");
 908DB8540_FUNC_GROUPS(ssp0, "ssp0_a_1");
 909DB8540_FUNC_GROUPS(ssp1, "ssp1_a_1");
 910DB8540_FUNC_GROUPS(stmape, "stmape_c_1", "stmape_oc1_1", "stmape_oc2_1");
 911DB8540_FUNC_GROUPS(stmmod, "stmmod_b_1", "stmmod_oc2_1", "stmmod_oc4_1");
 912DB8540_FUNC_GROUPS(tpui, "tpui_oc3_1");
 913DB8540_FUNC_GROUPS(u0, "u0_a_1", "u0_c_1");
 914DB8540_FUNC_GROUPS(u1, "u1ctsrts_a_1", "u1rxtx_a_1");
 915DB8540_FUNC_GROUPS(u2, "u2_oc1_1", "u2_oc2_1", "u2ctsrts_a_1", "u2ctsrts_oc1_1",
 916                "u2rxtx_c_1", "u2txrx_a_1", "u2txrx_b_1", "u2txrx_b_2",
 917                "u2txrx_oc1_1");
 918DB8540_FUNC_GROUPS(u3, "u3ctsrts_b_1", "u3rxtx_c_1", "u3txrxa_b_1");
 919DB8540_FUNC_GROUPS(u4, "u4ctsrts_b_1", "u4ctsrts_c_1", "u4txrx_b_1");
 920DB8540_FUNC_GROUPS(usb, "usb_a_1");
 921
 922
 923#define FUNCTION(fname)                                 \
 924        {                                               \
 925                .name = #fname,                         \
 926                .groups = fname##_groups,               \
 927                .ngroups = ARRAY_SIZE(fname##_groups),  \
 928        }
 929
 930static const struct nmk_function nmk_db8540_functions[] = {
 931        FUNCTION(apetrig),
 932        FUNCTION(clkout),
 933        FUNCTION(ddrtrig),
 934        FUNCTION(hsi),
 935        FUNCTION(hwobs),
 936        FUNCTION(hx),
 937        FUNCTION(i2c0),
 938        FUNCTION(i2c1),
 939        FUNCTION(i2c2),
 940        FUNCTION(i2c3),
 941        FUNCTION(i2c4),
 942        FUNCTION(i2c5),
 943        FUNCTION(i2c6),
 944        FUNCTION(ipgpio),
 945        FUNCTION(ipi2c),
 946        FUNCTION(kp),
 947        FUNCTION(lcd),
 948        FUNCTION(lcdb),
 949        FUNCTION(mc0),
 950        FUNCTION(mc1),
 951        FUNCTION(mc2),
 952        FUNCTION(mc3),
 953        FUNCTION(mc4),
 954        FUNCTION(mc5),
 955        FUNCTION(modaccgpo),
 956        FUNCTION(modaccuart),
 957        FUNCTION(modi2s),
 958        FUNCTION(modobs),
 959        FUNCTION(modprcmudbg),
 960        FUNCTION(modrf),
 961        FUNCTION(modsmb),
 962        FUNCTION(modtrig),
 963        FUNCTION(moduart),
 964        FUNCTION(modxmip),
 965        FUNCTION(msp0),
 966        FUNCTION(msp1),
 967        FUNCTION(msp2),
 968        FUNCTION(msp4),
 969        FUNCTION(pwl),
 970        FUNCTION(remap),
 971        FUNCTION(sbag),
 972        FUNCTION(sm),
 973        FUNCTION(spi0),
 974        FUNCTION(spi1),
 975        FUNCTION(spi2),
 976        FUNCTION(spi3),
 977        FUNCTION(ssp0),
 978        FUNCTION(ssp1),
 979        FUNCTION(stmape),
 980        FUNCTION(stmmod),
 981        FUNCTION(tpui),
 982        FUNCTION(u0),
 983        FUNCTION(u1),
 984        FUNCTION(u2),
 985        FUNCTION(u3),
 986        FUNCTION(u4),
 987        FUNCTION(usb)
 988};
 989
 990static const struct prcm_gpiocr_altcx_pin_desc db8540_altcx_pins[] = {
 991        PRCM_GPIOCR_ALTCX(8,    true, PRCM_IDX_GPIOCR1, 20,     /* SPI3_CLK */
 992                                false, 0, 0,
 993                                false, 0, 0,
 994                                false, 0, 0
 995        ),
 996        PRCM_GPIOCR_ALTCX(9,    true, PRCM_IDX_GPIOCR1, 20,     /* SPI3_RXD */
 997                                false, 0, 0,
 998                                false, 0, 0,
 999                                false, 0, 0
1000        ),
1001        PRCM_GPIOCR_ALTCX(10,   true, PRCM_IDX_GPIOCR1, 20,     /* SPI3_FRM */
1002                                false, 0, 0,
1003                                false, 0, 0,
1004                                false, 0, 0
1005        ),
1006        PRCM_GPIOCR_ALTCX(11,   true, PRCM_IDX_GPIOCR1, 20,     /* SPI3_TXD */
1007                                false, 0, 0,
1008                                false, 0, 0,
1009                                false, 0, 0
1010        ),
1011        PRCM_GPIOCR_ALTCX(23,   true, PRCM_IDX_GPIOCR1, 9,      /* STMAPE_CLK_a */
1012                                true, PRCM_IDX_GPIOCR2, 10,     /* SBAG_CLK_a */
1013                                false, 0, 0,
1014                                false, 0, 0
1015        ),
1016        PRCM_GPIOCR_ALTCX(24,   true, PRCM_IDX_GPIOCR3, 30,     /* U2_RXD_g */
1017                                true, PRCM_IDX_GPIOCR2, 10,     /* SBAG_VAL_a */
1018                                false, 0, 0,
1019                                false, 0, 0
1020        ),
1021        PRCM_GPIOCR_ALTCX(25,   true, PRCM_IDX_GPIOCR1, 9,      /* STMAPE_DAT_a[0] */
1022                                true, PRCM_IDX_GPIOCR2, 10,     /* SBAG_D_a[0] */
1023                                false, 0, 0,
1024                                false, 0, 0
1025        ),
1026        PRCM_GPIOCR_ALTCX(26,   true, PRCM_IDX_GPIOCR1, 9,      /* STMAPE_DAT_a[1] */
1027                                true, PRCM_IDX_GPIOCR2, 10,     /* SBAG_D_a[1] */
1028                                false, 0, 0,
1029                                false, 0, 0
1030        ),
1031        PRCM_GPIOCR_ALTCX(27,   true, PRCM_IDX_GPIOCR1, 9,      /* STMAPE_DAT_a[2] */
1032                                true, PRCM_IDX_GPIOCR2, 10,     /* SBAG_D_a[2] */
1033                                false, 0, 0,
1034                                false, 0, 0
1035        ),
1036        PRCM_GPIOCR_ALTCX(28,   true, PRCM_IDX_GPIOCR1, 9,      /* STMAPE_DAT_a[3] */
1037                                true, PRCM_IDX_GPIOCR2, 10,     /* SBAG_D_a[3] */
1038                                false, 0, 0,
1039                                false, 0, 0
1040        ),
1041        PRCM_GPIOCR_ALTCX(64,   true, PRCM_IDX_GPIOCR1, 15,     /* MODOBS_REFCLK_REQ */
1042                                false, 0, 0,
1043                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_CTL */
1044                                true, PRCM_IDX_GPIOCR2, 23      /* HW_OBS_APE_PRCMU[17] */
1045        ),
1046        PRCM_GPIOCR_ALTCX(65,   true, PRCM_IDX_GPIOCR1, 19,     /* MODOBS_PWRCTRL0 */
1047                                true, PRCM_IDX_GPIOCR1, 24,     /* Hx_CLK */
1048                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_CLK */
1049                                true, PRCM_IDX_GPIOCR2, 24      /* HW_OBS_APE_PRCMU[16] */
1050        ),
1051        PRCM_GPIOCR_ALTCX(66,   true, PRCM_IDX_GPIOCR1, 15,     /* MODOBS_CLKOUT1 */
1052                                false, 0, 0,
1053                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_D[15] */
1054                                true, PRCM_IDX_GPIOCR2, 25      /* HW_OBS_APE_PRCMU[15] */
1055        ),
1056        PRCM_GPIOCR_ALTCX(67,   true, PRCM_IDX_GPIOCR1, 1,      /* MODUART1_TXD_a */
1057                                true, PRCM_IDX_GPIOCR1, 6,      /* MODACCUART_TXD_a */
1058                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_D[14] */
1059                                true, PRCM_IDX_GPIOCR2, 26      /* HW_OBS_APE_PRCMU[14] */
1060        ),
1061        PRCM_GPIOCR_ALTCX(70,   true, PRCM_IDX_GPIOCR3, 6,      /* MOD_PRCMU_DEBUG[17] */
1062                                true, PRCM_IDX_GPIOCR1, 10,     /* STMMOD_CLK_b */
1063                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_D[13] */
1064                                true, PRCM_IDX_GPIOCR2, 27      /* HW_OBS_APE_PRCMU[13] */
1065        ),
1066        PRCM_GPIOCR_ALTCX(71,   true, PRCM_IDX_GPIOCR3, 6,      /* MOD_PRCMU_DEBUG[16] */
1067                                true, PRCM_IDX_GPIOCR1, 10,     /* STMMOD_DAT_b[3] */
1068                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_D[12] */
1069                                true, PRCM_IDX_GPIOCR2, 27      /* HW_OBS_APE_PRCMU[12] */
1070        ),
1071        PRCM_GPIOCR_ALTCX(72,   true, PRCM_IDX_GPIOCR3, 6,      /* MOD_PRCMU_DEBUG[15] */
1072                                true, PRCM_IDX_GPIOCR1, 10,     /* STMMOD_DAT_b[2] */
1073                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_D[11] */
1074                                true, PRCM_IDX_GPIOCR2, 27      /* HW_OBS_APE_PRCMU[11] */
1075        ),
1076        PRCM_GPIOCR_ALTCX(73,   true, PRCM_IDX_GPIOCR3, 6,      /* MOD_PRCMU_DEBUG[14] */
1077                                true, PRCM_IDX_GPIOCR1, 10,     /* STMMOD_DAT_b[1] */
1078                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_D[10] */
1079                                true, PRCM_IDX_GPIOCR2, 27      /* HW_OBS_APE_PRCMU[10] */
1080        ),
1081        PRCM_GPIOCR_ALTCX(74,   true, PRCM_IDX_GPIOCR3, 6,      /* MOD_PRCMU_DEBUG[13] */
1082                                true, PRCM_IDX_GPIOCR1, 10,     /* STMMOD_DAT_b[0] */
1083                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_D[9] */
1084                                true, PRCM_IDX_GPIOCR2, 27      /* HW_OBS_APE_PRCMU[9] */
1085        ),
1086        PRCM_GPIOCR_ALTCX(75,   true, PRCM_IDX_GPIOCR1, 12,     /* MODOBS_RESOUT0_N */
1087                                true, PRCM_IDX_GPIOCR2, 1,      /* MODUART_STMMUX_RXD_b */
1088                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_D[8] */
1089                                true, PRCM_IDX_GPIOCR2, 28      /* HW_OBS_APE_PRCMU[8] */
1090        ),
1091        PRCM_GPIOCR_ALTCX(76,   true, PRCM_IDX_GPIOCR3, 7,      /* MOD_PRCMU_DEBUG[12] */
1092                                true, PRCM_IDX_GPIOCR1, 25,     /* Hx_GPIO[7] */
1093                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_D[7] */
1094                                true, PRCM_IDX_GPIOCR2, 29      /* HW_OBS_APE_PRCMU[7] */
1095        ),
1096        PRCM_GPIOCR_ALTCX(77,   true, PRCM_IDX_GPIOCR3, 7,      /* MOD_PRCMU_DEBUG[11] */
1097                                true, PRCM_IDX_GPIOCR1, 25,     /* Hx_GPIO[6] */
1098                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_D[6] */
1099                                true, PRCM_IDX_GPIOCR2, 29      /* HW_OBS_APE_PRCMU[6] */
1100        ),
1101        PRCM_GPIOCR_ALTCX(78,   true, PRCM_IDX_GPIOCR3, 7,      /* MOD_PRCMU_DEBUG[10] */
1102                                true, PRCM_IDX_GPIOCR1, 25,     /* Hx_GPIO[5] */
1103                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_D[5] */
1104                                true, PRCM_IDX_GPIOCR2, 29      /* HW_OBS_APE_PRCMU[5] */
1105        ),
1106        PRCM_GPIOCR_ALTCX(79,   true, PRCM_IDX_GPIOCR3, 7,      /* MOD_PRCMU_DEBUG[9] */
1107                                true, PRCM_IDX_GPIOCR1, 25,     /* Hx_GPIO[4] */
1108                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_D[4] */
1109                                true, PRCM_IDX_GPIOCR2, 29      /* HW_OBS_APE_PRCMU[4] */
1110        ),
1111        PRCM_GPIOCR_ALTCX(80,   true, PRCM_IDX_GPIOCR1, 26,     /* MODACC_GPO[0] */
1112                                true, PRCM_IDX_GPIOCR1, 25,     /* Hx_GPIO[3] */
1113                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_D[3] */
1114                                true, PRCM_IDX_GPIOCR2, 30      /* HW_OBS_APE_PRCMU[3] */
1115        ),
1116        PRCM_GPIOCR_ALTCX(81,   true, PRCM_IDX_GPIOCR2, 17,     /* MODACC_GPO[1] */
1117                                true, PRCM_IDX_GPIOCR1, 25,     /* Hx_GPIO[2] */
1118                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_D[2] */
1119                                true, PRCM_IDX_GPIOCR2, 30      /* HW_OBS_APE_PRCMU[2] */
1120        ),
1121        PRCM_GPIOCR_ALTCX(82,   true, PRCM_IDX_GPIOCR3, 8,      /* MOD_PRCMU_DEBUG[8] */
1122                                true, PRCM_IDX_GPIOCR1, 25,     /* Hx_GPIO[1] */
1123                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_D[1] */
1124                                true, PRCM_IDX_GPIOCR2, 31      /* HW_OBS_APE_PRCMU[1] */
1125        ),
1126        PRCM_GPIOCR_ALTCX(83,   true, PRCM_IDX_GPIOCR3, 8,      /* MOD_PRCMU_DEBUG[7] */
1127                                true, PRCM_IDX_GPIOCR1, 25,     /* Hx_GPIO[0] */
1128                                true, PRCM_IDX_GPIOCR1, 2,      /* TPIU_D[0] */
1129                                true, PRCM_IDX_GPIOCR2, 31      /* HW_OBS_APE_PRCMU[0] */
1130        ),
1131        PRCM_GPIOCR_ALTCX(84,   true, PRCM_IDX_GPIOCR3, 9,      /* MOD_PRCMU_DEBUG[6] */
1132                                true, PRCM_IDX_GPIOCR1, 8,      /* SBAG_CLK_b */
1133                                true, PRCM_IDX_GPIOCR1, 3,      /* TPIU_D[23] */
1134                                true, PRCM_IDX_GPIOCR1, 16      /* MODUART1_RXD_b */
1135        ),
1136        PRCM_GPIOCR_ALTCX(85,   true, PRCM_IDX_GPIOCR3, 9,      /* MOD_PRCMU_DEBUG[5] */
1137                                true, PRCM_IDX_GPIOCR1, 8,      /* SBAG_D_b[3] */
1138                                true, PRCM_IDX_GPIOCR1, 3,      /* TPIU_D[22] */
1139                                true, PRCM_IDX_GPIOCR1, 16      /* MODUART1_TXD_b */
1140        ),
1141        PRCM_GPIOCR_ALTCX(86,   true, PRCM_IDX_GPIOCR3, 9,      /* MOD_PRCMU_DEBUG[0] */
1142                                true, PRCM_IDX_GPIOCR2, 18,     /* STMAPE_DAT_b[0] */
1143                                true, PRCM_IDX_GPIOCR1, 14,     /* TPIU_D[25] */
1144                                true, PRCM_IDX_GPIOCR1, 11      /* STMMOD_DAT_c[0] */
1145        ),
1146        PRCM_GPIOCR_ALTCX(87,   true, PRCM_IDX_GPIOCR3, 0,      /* MODACC_GPO_a[5] */
1147                                true, PRCM_IDX_GPIOCR2, 3,      /* U2_RXD_c */
1148                                true, PRCM_IDX_GPIOCR1, 4,      /* TPIU_D[24] */
1149                                true, PRCM_IDX_GPIOCR1, 21      /* MODUART_STMMUX_RXD_c */
1150        ),
1151        PRCM_GPIOCR_ALTCX(151,  true, PRCM_IDX_GPIOCR1, 18,     /* REMAP0 */
1152                                false, 0, 0,
1153                                false, 0, 0,
1154                                false, 0, 0
1155        ),
1156        PRCM_GPIOCR_ALTCX(152,  true, PRCM_IDX_GPIOCR1, 18,     /* REMAP1 */
1157                                false, 0, 0,
1158                                false, 0, 0,
1159                                false, 0, 0
1160        ),
1161        PRCM_GPIOCR_ALTCX(153,  true, PRCM_IDX_GPIOCR3, 2,      /* KP_O_b[6] */
1162                                true, PRCM_IDX_GPIOCR1, 8,      /* SBAG_D_b[2] */
1163                                true, PRCM_IDX_GPIOCR1, 3,      /* TPIU_D[21] */
1164                                true, PRCM_IDX_GPIOCR1, 0       /* MODUART1_RTS */
1165        ),
1166        PRCM_GPIOCR_ALTCX(154,  true, PRCM_IDX_GPIOCR3, 2,      /* KP_I_b[6] */
1167                                true, PRCM_IDX_GPIOCR1, 8,      /* SBAG_D_b[1] */
1168                                true, PRCM_IDX_GPIOCR1, 3,      /* TPIU_D[20] */
1169                                true, PRCM_IDX_GPIOCR1, 0       /* MODUART1_CTS */
1170        ),
1171        PRCM_GPIOCR_ALTCX(155,  true, PRCM_IDX_GPIOCR3, 3,      /* KP_O_b[5] */
1172                                true, PRCM_IDX_GPIOCR1, 8,      /* SBAG_D_b[0] */
1173                                true, PRCM_IDX_GPIOCR1, 3,      /* TPIU_D[19] */
1174                                true, PRCM_IDX_GPIOCR1, 5       /* MODACCUART_RXD_c */
1175        ),
1176        PRCM_GPIOCR_ALTCX(156,  true, PRCM_IDX_GPIOCR3, 3,      /* KP_O_b[4] */
1177                                true, PRCM_IDX_GPIOCR1, 8,      /* SBAG_VAL_b */
1178                                true, PRCM_IDX_GPIOCR1, 3,      /* TPIU_D[18] */
1179                                true, PRCM_IDX_GPIOCR1, 5       /* MODACCUART_TXD_b */
1180        ),
1181        PRCM_GPIOCR_ALTCX(157,  true, PRCM_IDX_GPIOCR3, 4,      /* KP_I_b[5] */
1182                                true, PRCM_IDX_GPIOCR1, 23,     /* MODOBS_SERVICE_N */
1183                                true, PRCM_IDX_GPIOCR1, 3,      /* TPIU_D[17] */
1184                                true, PRCM_IDX_GPIOCR1, 14      /* MODACCUART_RTS */
1185        ),
1186        PRCM_GPIOCR_ALTCX(158,  true, PRCM_IDX_GPIOCR3, 4,      /* KP_I_b[4] */
1187                                true, PRCM_IDX_GPIOCR2, 0,      /* U2_TXD_c */
1188                                true, PRCM_IDX_GPIOCR1, 3,      /* TPIU_D[16] */
1189                                true, PRCM_IDX_GPIOCR1, 14      /* MODACCUART_CTS */
1190        ),
1191        PRCM_GPIOCR_ALTCX(159,  true, PRCM_IDX_GPIOCR3, 5,      /* KP_O_b[3] */
1192                                true, PRCM_IDX_GPIOCR3, 10,     /* MODUART0_RXD */
1193                                true, PRCM_IDX_GPIOCR1, 4,      /* TPIU_D[31] */
1194                                false, 0, 0
1195        ),
1196        PRCM_GPIOCR_ALTCX(160,  true, PRCM_IDX_GPIOCR3, 5,      /* KP_I_b[3] */
1197                                true, PRCM_IDX_GPIOCR3, 10,     /* MODUART0_TXD */
1198                                true, PRCM_IDX_GPIOCR1, 4,      /* TPIU_D[30] */
1199                                false, 0, 0
1200        ),
1201        PRCM_GPIOCR_ALTCX(161,  true, PRCM_IDX_GPIOCR3, 9,      /* MOD_PRCMU_DEBUG[4] */
1202                                true, PRCM_IDX_GPIOCR2, 18,     /* STMAPE_CLK_b */
1203                                true, PRCM_IDX_GPIOCR1, 4,      /* TPIU_D[29] */
1204                                true, PRCM_IDX_GPIOCR1, 11      /* STMMOD_CLK_c */
1205        ),
1206        PRCM_GPIOCR_ALTCX(162,  true, PRCM_IDX_GPIOCR3, 9,      /* MOD_PRCMU_DEBUG[3] */
1207                                true, PRCM_IDX_GPIOCR2, 18,     /* STMAPE_DAT_b[3] */
1208                                true, PRCM_IDX_GPIOCR1, 4,      /* TPIU_D[28] */
1209                                true, PRCM_IDX_GPIOCR1, 11      /* STMMOD_DAT_c[3] */
1210        ),
1211        PRCM_GPIOCR_ALTCX(163,  true, PRCM_IDX_GPIOCR3, 9,      /* MOD_PRCMU_DEBUG[2] */
1212                                true, PRCM_IDX_GPIOCR2, 18,     /* STMAPE_DAT_b[2] */
1213                                true, PRCM_IDX_GPIOCR1, 4,      /* TPIU_D[27] */
1214                                true, PRCM_IDX_GPIOCR1, 11      /* STMMOD_DAT_c[2] */
1215        ),
1216        PRCM_GPIOCR_ALTCX(164,  true, PRCM_IDX_GPIOCR3, 9,      /* MOD_PRCMU_DEBUG[1] */
1217                                true, PRCM_IDX_GPIOCR2, 18,     /* STMAPE_DAT_b[1] */
1218                                true, PRCM_IDX_GPIOCR1, 4,      /* TPIU_D[26] */
1219                                true, PRCM_IDX_GPIOCR1, 11      /* STMMOD_DAT_c[1] */
1220        ),
1221        PRCM_GPIOCR_ALTCX(204,  true, PRCM_IDX_GPIOCR2, 2,      /* U2_RXD_f */
1222                                false, 0, 0,
1223                                false, 0, 0,
1224                                false, 0, 0
1225        ),
1226        PRCM_GPIOCR_ALTCX(205,  true, PRCM_IDX_GPIOCR2, 2,      /* U2_TXD_f */
1227                                false, 0, 0,
1228                                false, 0, 0,
1229                                false, 0, 0
1230        ),
1231        PRCM_GPIOCR_ALTCX(206,  true, PRCM_IDX_GPIOCR2, 2,      /* U2_CTSn_b */
1232                                false, 0, 0,
1233                                false, 0, 0,
1234                                false, 0, 0
1235        ),
1236        PRCM_GPIOCR_ALTCX(207,  true, PRCM_IDX_GPIOCR2, 2,      /* U2_RTSn_b */
1237                                false, 0, 0,
1238                                false, 0, 0,
1239                                false, 0, 0
1240        ),
1241};
1242
1243static const u16 db8540_prcm_gpiocr_regs[] = {
1244        [PRCM_IDX_GPIOCR1] = 0x138,
1245        [PRCM_IDX_GPIOCR2] = 0x574,
1246        [PRCM_IDX_GPIOCR3] = 0x2bc,
1247};
1248
1249static const struct nmk_pinctrl_soc_data nmk_db8540_soc = {
1250        .gpio_ranges = nmk_db8540_ranges,
1251        .gpio_num_ranges = ARRAY_SIZE(nmk_db8540_ranges),
1252        .pins = nmk_db8540_pins,
1253        .npins = ARRAY_SIZE(nmk_db8540_pins),
1254        .functions = nmk_db8540_functions,
1255        .nfunctions = ARRAY_SIZE(nmk_db8540_functions),
1256        .groups = nmk_db8540_groups,
1257        .ngroups = ARRAY_SIZE(nmk_db8540_groups),
1258        .altcx_pins = db8540_altcx_pins,
1259        .npins_altcx = ARRAY_SIZE(db8540_altcx_pins),
1260        .prcm_gpiocr_registers = db8540_prcm_gpiocr_regs,
1261};
1262
1263void nmk_pinctrl_db8540_init(const struct nmk_pinctrl_soc_data **soc)
1264{
1265        *soc = &nmk_db8540_soc;
1266}
1267
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.