Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
pinmux-shx3.c
Go to the documentation of this file.
1 /*
2  * SH-X3 prototype CPU pinmux
3  *
4  * Copyright (C) 2010 Paul Mundt
5  *
6  * This file is subject to the terms and conditions of the GNU General Public
7  * License. See the file "COPYING" in the main directory of this archive
8  * for more details.
9  */
10 #include <linux/init.h>
11 #include <linux/kernel.h>
12 #include <linux/gpio.h>
13 #include <cpu/shx3.h>
14 
15 enum {
17 
33 
37 
53 
57 
73 
77 
93 
97 
113 
117 
119 
123 
128 
131 
133 
135 
140 
143 
145 
147 };
148 
149 static pinmux_enum_t shx3_pinmux_data[] = {
150 
151  /* PA GPIO */
160 
161  /* PB GPIO */
170 
171  /* PC GPIO */
180 
181  /* PD GPIO */
190 
191  /* PE GPIO */
200 
201  /* PF GPIO */
210 
211  /* PG GPIO */
220 
221  /* PH GPIO */
228 
229  /* PA FN */
238 
239  /* PB FN */
248 
249  /* PC FN */
258 
259  /* PD FN */
268 
269  /* PE FN */
278 
279  /* PF FN */
288 
289  /* PG FN */
298 
299  /* PH FN */
306 };
307 
308 static struct pinmux_gpio shx3_pinmux_gpios[] = {
309  /* PA */
318 
319  /* PB */
328 
329  /* PC */
338 
339  /* PD */
348 
349  /* PE */
358 
359  /* PF */
368 
369  /* PG */
378 
379  /* PH */
386 
387  /* FN */
450 };
451 
452 static struct pinmux_cfg_reg shx3_pinmux_config_regs[] = {
453  { PINMUX_CFG_REG("PABCR", 0xffc70000, 32, 2) {
470  },
471  { PINMUX_CFG_REG("PCDCR", 0xffc70004, 32, 2) {
488  },
489  { PINMUX_CFG_REG("PEFCR", 0xffc70008, 32, 2) {
506  },
507  { PINMUX_CFG_REG("PGHCR", 0xffc7000c, 32, 2) {
516  0, 0, 0, 0,
517  0, 0, 0, 0,
524  },
525  { },
526 };
527 
528 static struct pinmux_data_reg shx3_pinmux_data_regs[] = {
529  { PINMUX_DATA_REG("PABDR", 0xffc70010, 32) {
530  0, 0, 0, 0, 0, 0, 0, 0,
533  0, 0, 0, 0, 0, 0, 0, 0,
536  },
537  { PINMUX_DATA_REG("PCDDR", 0xffc70014, 32) {
538  0, 0, 0, 0, 0, 0, 0, 0,
541  0, 0, 0, 0, 0, 0, 0, 0,
544  },
545  { PINMUX_DATA_REG("PEFDR", 0xffc70018, 32) {
546  0, 0, 0, 0, 0, 0, 0, 0,
549  0, 0, 0, 0, 0, 0, 0, 0,
552  },
553  { PINMUX_DATA_REG("PGHDR", 0xffc7001c, 32) {
554  0, 0, 0, 0, 0, 0, 0, 0,
557  0, 0, 0, 0, 0, 0, 0, 0,
558  0, 0, PH5_DATA, PH4_DATA,
560  },
561  { },
562 };
563 
564 static struct pinmux_info shx3_pinmux_info = {
565  .name = "shx3_pfc",
566  .reserved_id = PINMUX_RESERVED,
567  .data = { PINMUX_DATA_BEGIN, PINMUX_DATA_END },
568  .input = { PINMUX_INPUT_BEGIN, PINMUX_INPUT_END },
569  .input_pu = { PINMUX_INPUT_PULLUP_BEGIN,
571  .output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END },
572  .mark = { PINMUX_MARK_BEGIN, PINMUX_MARK_END },
574  .first_gpio = GPIO_PA7,
575  .last_gpio = GPIO_FN_IRQOUT,
576  .gpios = shx3_pinmux_gpios,
577  .gpio_data = shx3_pinmux_data,
578  .gpio_data_size = ARRAY_SIZE(shx3_pinmux_data),
579  .cfg_regs = shx3_pinmux_config_regs,
580  .data_regs = shx3_pinmux_data_regs,
581 };
582 
583 static int __init shx3_pinmux_setup(void)
584 {
585  return register_pinmux(&shx3_pinmux_info);
586 }
587 arch_initcall(shx3_pinmux_setup);