This source file includes following definitions.
- abx500_pinctrl_ab8505_init
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 #include <linux/kernel.h>
   9 #include <linux/gpio/driver.h>
  10 #include <linux/pinctrl/pinctrl.h>
  11 #include <linux/mfd/abx500/ab8500.h>
  12 #include "pinctrl-abx500.h"
  13 
  14 
  15 #define ABX500_GPIO(offset)     (offset)
  16 
  17 #define AB8505_PIN_N4           ABX500_GPIO(1)
  18 #define AB8505_PIN_R5           ABX500_GPIO(2)
  19 #define AB8505_PIN_P5           ABX500_GPIO(3)
  20 
  21 #define AB8505_PIN_B16          ABX500_GPIO(10)
  22 #define AB8505_PIN_B17          ABX500_GPIO(11)
  23 
  24 #define AB8505_PIN_D17          ABX500_GPIO(13)
  25 #define AB8505_PIN_C16          ABX500_GPIO(14)
  26 
  27 #define AB8505_PIN_P2           ABX500_GPIO(17)
  28 #define AB8505_PIN_N3           ABX500_GPIO(18)
  29 #define AB8505_PIN_T1           ABX500_GPIO(19)
  30 #define AB8505_PIN_P3           ABX500_GPIO(20)
  31 
  32 #define AB8505_PIN_H14          ABX500_GPIO(34)
  33 
  34 #define AB8505_PIN_J15          ABX500_GPIO(40)
  35 #define AB8505_PIN_J14          ABX500_GPIO(41)
  36 
  37 #define AB8505_PIN_L4           ABX500_GPIO(50)
  38 
  39 #define AB8505_PIN_D16          ABX500_GPIO(52)
  40 #define AB8505_PIN_D15          ABX500_GPIO(53)
  41 
  42 
  43 #define AB8505_GPIO_MAX_NUMBER  53
  44 
  45 
  46 
  47 
  48 
  49 
  50 
  51 static const struct pinctrl_pin_desc ab8505_pins[] = {
  52         PINCTRL_PIN(AB8505_PIN_N4, "GPIO1_N4"),
  53         PINCTRL_PIN(AB8505_PIN_R5, "GPIO2_R5"),
  54         PINCTRL_PIN(AB8505_PIN_P5, "GPIO3_P5"),
  55 
  56         PINCTRL_PIN(AB8505_PIN_B16, "GPIO10_B16"),
  57         PINCTRL_PIN(AB8505_PIN_B17, "GPIO11_B17"),
  58 
  59         PINCTRL_PIN(AB8505_PIN_D17, "GPIO13_D17"),
  60         PINCTRL_PIN(AB8505_PIN_C16, "GPIO14_C16"),
  61 
  62         PINCTRL_PIN(AB8505_PIN_P2, "GPIO17_P2"),
  63         PINCTRL_PIN(AB8505_PIN_N3, "GPIO18_N3"),
  64         PINCTRL_PIN(AB8505_PIN_T1, "GPIO19_T1"),
  65         PINCTRL_PIN(AB8505_PIN_P3, "GPIO20_P3"),
  66 
  67         PINCTRL_PIN(AB8505_PIN_H14, "GPIO34_H14"),
  68 
  69         PINCTRL_PIN(AB8505_PIN_J15, "GPIO40_J15"),
  70         PINCTRL_PIN(AB8505_PIN_J14, "GPIO41_J14"),
  71 
  72         PINCTRL_PIN(AB8505_PIN_L4, "GPIO50_L4"),
  73 
  74         PINCTRL_PIN(AB8505_PIN_D16, "GPIO52_D16"),
  75         PINCTRL_PIN(AB8505_PIN_D15, "GPIO53_D15"),
  76 };
  77 
  78 
  79 
  80 
  81 static const struct abx500_pinrange ab8505_pinranges[] = {
  82         ABX500_PINRANGE(1, 3, ABX500_ALT_A),
  83         ABX500_PINRANGE(10, 2, ABX500_DEFAULT),
  84         ABX500_PINRANGE(13, 1, ABX500_DEFAULT),
  85         ABX500_PINRANGE(14, 1, ABX500_ALT_A),
  86         ABX500_PINRANGE(17, 4, ABX500_ALT_A),
  87         ABX500_PINRANGE(34, 1, ABX500_ALT_A),
  88         ABX500_PINRANGE(40, 2, ABX500_ALT_A),
  89         ABX500_PINRANGE(50, 1, ABX500_DEFAULT),
  90         ABX500_PINRANGE(52, 2, ABX500_ALT_A),
  91 };
  92 
  93 
  94 
  95 
  96 
  97 
  98 
  99 
 100 
 101 
 102 
 103 
 104 static const unsigned sysclkreq2_d_1_pins[] = { AB8505_PIN_N4 };
 105 static const unsigned sysclkreq3_d_1_pins[] = { AB8505_PIN_R5 };
 106 static const unsigned sysclkreq4_d_1_pins[] = { AB8505_PIN_P5 };
 107 static const unsigned gpio10_d_1_pins[] = { AB8505_PIN_B16 };
 108 static const unsigned gpio11_d_1_pins[] = { AB8505_PIN_B17 };
 109 static const unsigned gpio13_d_1_pins[] = { AB8505_PIN_D17 };
 110 static const unsigned pwmout1_d_1_pins[] = { AB8505_PIN_C16 };
 111 
 112 static const unsigned adi2_d_1_pins[] = { AB8505_PIN_P2, AB8505_PIN_N3,
 113                                         AB8505_PIN_T1, AB8505_PIN_P3 };
 114 static const unsigned extcpena_d_1_pins[] = { AB8505_PIN_H14 };
 115 
 116 static const unsigned modsclsda_d_1_pins[] = { AB8505_PIN_J15, AB8505_PIN_J14 };
 117 static const unsigned gpio50_d_1_pins[] = { AB8505_PIN_L4 };
 118 static const unsigned resethw_d_1_pins[] = { AB8505_PIN_D16 };
 119 static const unsigned service_d_1_pins[] = { AB8505_PIN_D15 };
 120 
 121 
 122 static const unsigned gpio1_a_1_pins[] = { AB8505_PIN_N4 };
 123 static const unsigned gpio2_a_1_pins[] = { AB8505_PIN_R5 };
 124 static const unsigned gpio3_a_1_pins[] = { AB8505_PIN_P5 };
 125 static const unsigned hiqclkena_a_1_pins[] = { AB8505_PIN_B16 };
 126 static const unsigned pdmclk_a_1_pins[] = { AB8505_PIN_B17 };
 127 static const unsigned uarttxdata_a_1_pins[] = { AB8505_PIN_D17 };
 128 static const unsigned gpio14_a_1_pins[] = { AB8505_PIN_C16 };
 129 static const unsigned gpio17_a_1_pins[] = { AB8505_PIN_P2 };
 130 static const unsigned gpio18_a_1_pins[] = { AB8505_PIN_N3 };
 131 static const unsigned gpio19_a_1_pins[] = { AB8505_PIN_T1 };
 132 static const unsigned gpio20_a_1_pins[] = { AB8505_PIN_P3 };
 133 static const unsigned gpio34_a_1_pins[] = { AB8505_PIN_H14 };
 134 static const unsigned gpio40_a_1_pins[] = { AB8505_PIN_J15 };
 135 static const unsigned gpio41_a_1_pins[] = { AB8505_PIN_J14 };
 136 static const unsigned uartrxdata_a_1_pins[] = { AB8505_PIN_J14 };
 137 static const unsigned gpio50_a_1_pins[] = { AB8505_PIN_L4 };
 138 static const unsigned gpio52_a_1_pins[] = { AB8505_PIN_D16 };
 139 static const unsigned gpio53_a_1_pins[] = { AB8505_PIN_D15 };
 140 
 141 
 142 static const unsigned pdmdata_b_1_pins[] = { AB8505_PIN_B16 };
 143 static const unsigned extvibrapwm1_b_1_pins[] = { AB8505_PIN_D17 };
 144 static const unsigned extvibrapwm2_b_1_pins[] = { AB8505_PIN_L4 };
 145 
 146 
 147 static const unsigned usbvdat_c_1_pins[] = { AB8505_PIN_D17 };
 148 
 149 #define AB8505_PIN_GROUP(a, b) { .name = #a, .pins = a##_pins,          \
 150                         .npins = ARRAY_SIZE(a##_pins), .altsetting = b }
 151 
 152 static const struct abx500_pingroup ab8505_groups[] = {
 153         AB8505_PIN_GROUP(sysclkreq2_d_1, ABX500_DEFAULT),
 154         AB8505_PIN_GROUP(sysclkreq3_d_1, ABX500_DEFAULT),
 155         AB8505_PIN_GROUP(sysclkreq4_d_1, ABX500_DEFAULT),
 156         AB8505_PIN_GROUP(gpio10_d_1, ABX500_DEFAULT),
 157         AB8505_PIN_GROUP(gpio11_d_1, ABX500_DEFAULT),
 158         AB8505_PIN_GROUP(gpio13_d_1, ABX500_DEFAULT),
 159         AB8505_PIN_GROUP(pwmout1_d_1, ABX500_DEFAULT),
 160         AB8505_PIN_GROUP(adi2_d_1, ABX500_DEFAULT),
 161         AB8505_PIN_GROUP(extcpena_d_1, ABX500_DEFAULT),
 162         AB8505_PIN_GROUP(modsclsda_d_1, ABX500_DEFAULT),
 163         AB8505_PIN_GROUP(gpio50_d_1, ABX500_DEFAULT),
 164         AB8505_PIN_GROUP(resethw_d_1, ABX500_DEFAULT),
 165         AB8505_PIN_GROUP(service_d_1, ABX500_DEFAULT),
 166         AB8505_PIN_GROUP(gpio1_a_1, ABX500_ALT_A),
 167         AB8505_PIN_GROUP(gpio2_a_1, ABX500_ALT_A),
 168         AB8505_PIN_GROUP(gpio3_a_1, ABX500_ALT_A),
 169         AB8505_PIN_GROUP(hiqclkena_a_1, ABX500_ALT_A),
 170         AB8505_PIN_GROUP(pdmclk_a_1, ABX500_ALT_A),
 171         AB8505_PIN_GROUP(uarttxdata_a_1, ABX500_ALT_A),
 172         AB8505_PIN_GROUP(gpio14_a_1, ABX500_ALT_A),
 173         AB8505_PIN_GROUP(gpio17_a_1, ABX500_ALT_A),
 174         AB8505_PIN_GROUP(gpio18_a_1, ABX500_ALT_A),
 175         AB8505_PIN_GROUP(gpio19_a_1, ABX500_ALT_A),
 176         AB8505_PIN_GROUP(gpio20_a_1, ABX500_ALT_A),
 177         AB8505_PIN_GROUP(gpio34_a_1, ABX500_ALT_A),
 178         AB8505_PIN_GROUP(gpio40_a_1, ABX500_ALT_A),
 179         AB8505_PIN_GROUP(gpio41_a_1, ABX500_ALT_A),
 180         AB8505_PIN_GROUP(uartrxdata_a_1, ABX500_ALT_A),
 181         AB8505_PIN_GROUP(gpio52_a_1, ABX500_ALT_A),
 182         AB8505_PIN_GROUP(gpio53_a_1, ABX500_ALT_A),
 183         AB8505_PIN_GROUP(pdmdata_b_1, ABX500_ALT_B),
 184         AB8505_PIN_GROUP(extvibrapwm1_b_1, ABX500_ALT_B),
 185         AB8505_PIN_GROUP(extvibrapwm2_b_1, ABX500_ALT_B),
 186         AB8505_PIN_GROUP(usbvdat_c_1, ABX500_ALT_C),
 187 };
 188 
 189 
 190 #define AB8505_FUNC_GROUPS(a, b...)        \
 191 static const char * const a##_groups[] = { b };
 192 
 193 AB8505_FUNC_GROUPS(sysclkreq, "sysclkreq2_d_1", "sysclkreq3_d_1",
 194                 "sysclkreq4_d_1");
 195 AB8505_FUNC_GROUPS(gpio, "gpio1_a_1", "gpio2_a_1", "gpio3_a_1",
 196                 "gpio10_d_1", "gpio11_d_1", "gpio13_d_1", "gpio14_a_1",
 197                 "gpio17_a_1", "gpio18_a_1", "gpio19_a_1", "gpio20_a_1",
 198                 "gpio34_a_1", "gpio40_a_1", "gpio41_a_1", "gpio50_d_1",
 199                 "gpio52_a_1", "gpio53_a_1");
 200 AB8505_FUNC_GROUPS(pwmout, "pwmout1_d_1");
 201 AB8505_FUNC_GROUPS(adi2, "adi2_d_1");
 202 AB8505_FUNC_GROUPS(extcpena, "extcpena_d_1");
 203 AB8505_FUNC_GROUPS(modsclsda, "modsclsda_d_1");
 204 AB8505_FUNC_GROUPS(resethw, "resethw_d_1");
 205 AB8505_FUNC_GROUPS(service, "service_d_1");
 206 AB8505_FUNC_GROUPS(hiqclkena, "hiqclkena_a_1");
 207 AB8505_FUNC_GROUPS(pdm, "pdmclk_a_1", "pdmdata_b_1");
 208 AB8505_FUNC_GROUPS(uartdata, "uarttxdata_a_1", "uartrxdata_a_1");
 209 AB8505_FUNC_GROUPS(extvibra, "extvibrapwm1_b_1", "extvibrapwm2_b_1");
 210 AB8505_FUNC_GROUPS(usbvdat, "usbvdat_c_1");
 211 
 212 #define FUNCTION(fname)                                 \
 213         {                                               \
 214                 .name = #fname,                         \
 215                 .groups = fname##_groups,               \
 216                 .ngroups = ARRAY_SIZE(fname##_groups),  \
 217         }
 218 
 219 static const struct abx500_function ab8505_functions[] = {
 220         FUNCTION(sysclkreq),
 221         FUNCTION(gpio),
 222         FUNCTION(pwmout),
 223         FUNCTION(adi2),
 224         FUNCTION(extcpena),
 225         FUNCTION(modsclsda),
 226         FUNCTION(resethw),
 227         FUNCTION(service),
 228         FUNCTION(hiqclkena),
 229         FUNCTION(pdm),
 230         FUNCTION(uartdata),
 231         FUNCTION(extvibra),
 232         FUNCTION(extvibra),
 233         FUNCTION(usbvdat),
 234 };
 235 
 236 
 237 
 238 
 239 
 240 
 241 
 242 
 243 
 244 
 245 
 246 
 247 
 248 
 249 
 250 
 251 
 252 
 253 
 254 
 255 
 256 
 257 
 258 
 259 
 260 
 261 
 262 
 263 
 264 
 265 
 266 
 267 
 268 
 269 
 270 
 271 static struct
 272 alternate_functions ab8505_alternate_functions[AB8505_GPIO_MAX_NUMBER + 1] = {
 273         ALTERNATE_FUNCTIONS(0, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 274         ALTERNATE_FUNCTIONS(1,      0, UNUSED, UNUSED, 0, 0, 0), 
 275         ALTERNATE_FUNCTIONS(2,      1, UNUSED, UNUSED, 0, 0, 0), 
 276         ALTERNATE_FUNCTIONS(3,      2, UNUSED, UNUSED, 0, 0, 0), 
 277         ALTERNATE_FUNCTIONS(4, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 278         ALTERNATE_FUNCTIONS(5, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 279         ALTERNATE_FUNCTIONS(6, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 280         ALTERNATE_FUNCTIONS(7, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 281         ALTERNATE_FUNCTIONS(8, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 282 
 283         ALTERNATE_FUNCTIONS(9, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 284         ALTERNATE_FUNCTIONS(10,      1,      0, UNUSED, 1, 0, 0), 
 285         ALTERNATE_FUNCTIONS(11,      2,      1, UNUSED, 0, 0, 0), 
 286         ALTERNATE_FUNCTIONS(12, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 287         ALTERNATE_FUNCTIONS(13,      4,      3,      4, 1, 0, 2), 
 288         ALTERNATE_FUNCTIONS(14,      5, UNUSED, UNUSED, 0, 0, 0), 
 289         ALTERNATE_FUNCTIONS(15, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 290         ALTERNATE_FUNCTIONS(16, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 291         
 292 
 293 
 294 
 295 
 296         ALTERNATE_FUNCTIONS(17,      0, UNUSED, UNUSED, 0, 0, 0), 
 297         ALTERNATE_FUNCTIONS(18,      0, UNUSED, UNUSED, 0, 0, 0), 
 298         ALTERNATE_FUNCTIONS(19,      0, UNUSED, UNUSED, 0, 0, 0), 
 299         ALTERNATE_FUNCTIONS(20,      0, UNUSED, UNUSED, 0, 0, 0), 
 300         ALTERNATE_FUNCTIONS(21, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 301         ALTERNATE_FUNCTIONS(22, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 302         ALTERNATE_FUNCTIONS(23, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 303         ALTERNATE_FUNCTIONS(24, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 304 
 305         ALTERNATE_FUNCTIONS(25, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 306         ALTERNATE_FUNCTIONS(26, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 307         ALTERNATE_FUNCTIONS(27, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 308         ALTERNATE_FUNCTIONS(28, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 309         ALTERNATE_FUNCTIONS(29, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 310         ALTERNATE_FUNCTIONS(30, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 311         ALTERNATE_FUNCTIONS(31, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 312         ALTERNATE_FUNCTIONS(32, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 313 
 314         ALTERNATE_FUNCTIONS(33, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 315         ALTERNATE_FUNCTIONS(34,      1, UNUSED, UNUSED, 0, 0, 0), 
 316         ALTERNATE_FUNCTIONS(35, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 317         ALTERNATE_FUNCTIONS(36, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 318         ALTERNATE_FUNCTIONS(37, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 319         ALTERNATE_FUNCTIONS(38, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 320         ALTERNATE_FUNCTIONS(39, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 321         ALTERNATE_FUNCTIONS(40,      7, UNUSED, UNUSED, 0, 0, 0), 
 322 
 323         ALTERNATE_FUNCTIONS(41,      0, UNUSED, UNUSED, 0, 0, 0), 
 324         ALTERNATE_FUNCTIONS(42, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 325         ALTERNATE_FUNCTIONS(43, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 326         ALTERNATE_FUNCTIONS(44, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 327         ALTERNATE_FUNCTIONS(45, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 328         ALTERNATE_FUNCTIONS(46, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 329         ALTERNATE_FUNCTIONS(47, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 330         ALTERNATE_FUNCTIONS(48, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 331 
 332         ALTERNATE_FUNCTIONS(49, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 333         ALTERNATE_FUNCTIONS(50,      1,      2, UNUSED, 1, 0, 0), 
 334         ALTERNATE_FUNCTIONS(51, UNUSED, UNUSED, UNUSED, 0, 0, 0), 
 335         ALTERNATE_FUNCTIONS(52,      3, UNUSED, UNUSED, 0, 0, 0), 
 336         ALTERNATE_FUNCTIONS(53,      4, UNUSED, UNUSED, 0, 0, 0), 
 337 };
 338 
 339 
 340 
 341 
 342 
 343 
 344 
 345 
 346 
 347 
 348 
 349 static struct abx500_gpio_irq_cluster ab8505_gpio_irq_cluster[] = {
 350         GPIO_IRQ_CLUSTER(10, 11, AB8500_INT_GPIO10R),
 351         GPIO_IRQ_CLUSTER(13, 13, AB8500_INT_GPIO13R),
 352         GPIO_IRQ_CLUSTER(40, 41, AB8500_INT_GPIO40R),
 353         GPIO_IRQ_CLUSTER(50, 50, AB9540_INT_GPIO50R),
 354         GPIO_IRQ_CLUSTER(52, 53, AB9540_INT_GPIO52R),
 355 };
 356 
 357 static struct abx500_pinctrl_soc_data ab8505_soc = {
 358         .gpio_ranges = ab8505_pinranges,
 359         .gpio_num_ranges = ARRAY_SIZE(ab8505_pinranges),
 360         .pins = ab8505_pins,
 361         .npins = ARRAY_SIZE(ab8505_pins),
 362         .functions = ab8505_functions,
 363         .nfunctions = ARRAY_SIZE(ab8505_functions),
 364         .groups = ab8505_groups,
 365         .ngroups = ARRAY_SIZE(ab8505_groups),
 366         .alternate_functions = ab8505_alternate_functions,
 367         .gpio_irq_cluster = ab8505_gpio_irq_cluster,
 368         .ngpio_irq_cluster = ARRAY_SIZE(ab8505_gpio_irq_cluster),
 369         .irq_gpio_rising_offset = AB8500_INT_GPIO6R,
 370         .irq_gpio_falling_offset = AB8500_INT_GPIO6F,
 371         .irq_gpio_factor = 1,
 372 };
 373 
 374 void
 375 abx500_pinctrl_ab8505_init(struct abx500_pinctrl_soc_data **soc)
 376 {
 377         *soc = &ab8505_soc;
 378 }