We're no longer updating This wiki!!

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:c2_gpio_default [2016/02/26 14:30]
charles.park [Expansion Connectors (J7)]
en:c2_gpio_default [2016/02/27 12:34] (current)
charles.park [Expansion Connectors (J2)]
Line 8: Line 8:
 |  205  |  I2CA_SDA ​ |   ​IN ​ |  1  |   ​- ​   |   ​3 ​ |   ​4 ​ |   ​- ​   |  -  |   ​- ​  ​| ​     5.0V  |   ​- ​  | |  205  |  I2CA_SDA ​ |   ​IN ​ |  1  |   ​- ​   |   ​3 ​ |   ​4 ​ |   ​- ​   |  -  |   ​- ​  ​| ​     5.0V  |   ​- ​  |
 |  206  |  I2CA_SCL ​ |   ​IN ​ |  1  |   ​- ​   |   ​5 ​ |   ​6 ​ |   ​- ​   |  -  |   ​- ​  ​| ​      ​GND ​ |   ​- ​  | |  206  |  I2CA_SCL ​ |   ​IN ​ |  1  |   ​- ​   |   ​5 ​ |   ​6 ​ |   ​- ​   |  -  |   ​- ​  ​| ​      ​GND ​ |   ​- ​  |
-|  249  |  GPIOX.21 ​ |   ​IN ​ |  ​ ​| ​  P/ ​| ​  ​7 ​ |   ​8 ​ |   ​P/​U ​ |  1  | ALT1  ​| ​ GPIOX.12 ​ |  240  | +|  249  |  GPIOX.21 ​ |   ​IN ​ |  ​ ​| ​  P/ ​| ​  ​7 ​ |   ​8 ​ |   ​P/​U ​ |  1  | ALT2  ​| ​ GPIOX.12 ​ |  240  | 
-|   ​- ​  ​| ​      ​GND ​ |   ​- ​  ​| ​ -  |   ​- ​   |   ​9 ​ |  10  |   ​P/​U ​ |  1  | ALT1  ​| ​ GPIOX.13 ​ |  241  |+|   ​- ​  ​| ​      ​GND ​ |   ​- ​  ​| ​ -  |   ​- ​   |   ​9 ​ |  10  |   ​P/​U ​ |  1  | ALT2  ​| ​ GPIOX.13 ​ |  241  |
 |  247  |  GPIOX.19 ​ |   ​IN ​ |  1  |   ​P/​U ​ |  11  |  12  |   ​P/​D ​ |  0  |   ​IN ​ |  GPIOX.10 ​ |  238  | |  247  |  GPIOX.19 ​ |   ​IN ​ |  1  |   ​P/​U ​ |  11  |  12  |   ​P/​D ​ |  0  |   ​IN ​ |  GPIOX.10 ​ |  238  |
 |  239  |  GPIOX.11 ​ |   ​IN ​ |  1  |   ​P/​U ​ |  13  |  14  |   ​- ​   |  -  |   ​- ​  ​| ​      ​GND ​ |   ​- ​  | |  239  |  GPIOX.11 ​ |   ​IN ​ |  1  |   ​P/​U ​ |  13  |  14  |   ​- ​   |  -  |   ​- ​  ​| ​      ​GND ​ |   ​- ​  |
-|  237  |   ​GPIOX.9 ​ |   ​IN ​ |  ​ ​| ​  P/ ​| ​ 15  |  16  |   ​P/​U ​ |  1  |   ​IN ​ |   ​GPIOX.8 ​ |  236  |+|  237  |   ​GPIOX.9 ​ |   ​IN ​ |  ​ ​| ​  P/ ​| ​ 15  |  16  |   ​P/​U ​ |  1  |   ​IN ​ |   ​GPIOX.8 ​ |  236  |
 |   ​- ​  ​| ​     3.3V  |   ​- ​  ​| ​ -  |   ​- ​   |  17  |  18  |   ​P/​U ​ |  1  |   ​IN ​ |   ​GPIOX.5 ​ |  233  | |   ​- ​  ​| ​     3.3V  |   ​- ​  ​| ​ -  |   ​- ​   |  17  |  18  |   ​P/​U ​ |  1  |   ​IN ​ |   ​GPIOX.5 ​ |  233  |
 |  235  |   ​GPIOX.7 ​ |   ​IN ​ |  1  |   ​P/​U ​ |  19  |  20  |   ​- ​   |  -  |   ​- ​  ​| ​      ​GND ​ |   ​- ​  | |  235  |   ​GPIOX.7 ​ |   ​IN ​ |  1  |   ​P/​U ​ |  19  |  20  |   ​- ​   |  -  |   ​- ​  ​| ​      ​GND ​ |   ​- ​  |
 |  232  |   ​GPIOX.4 ​ |   ​IN ​ |  1  |   ​P/​U ​ |  21  |  22  |   ​P/​U ​ |  1  |   ​IN ​ |   ​GPIOX.3 ​ |  231  | |  232  |   ​GPIOX.4 ​ |   ​IN ​ |  1  |   ​P/​U ​ |  21  |  22  |   ​P/​U ​ |  1  |   ​IN ​ |   ​GPIOX.3 ​ |  231  |
-|  230  |   ​GPIOX.2 ​ |   ​IN ​ |  1  |   ​P/​U ​ |  23  |  24  |   P/ ​|  ​ ​| ​  ​IN ​ |   ​GPIOX.1 ​ |  229  | +|  230  |   ​GPIOX.2 ​ |   ​IN ​ |  1  |   ​P/​U ​ |  23  |  24  |   P/ ​|  ​ ​| ​  ​IN ​ |   ​GPIOX.1 ​ |  229  | 
-|   ​- ​  ​| ​      ​GND ​ |   ​- ​  ​| ​ -  |   ​- ​   |  25  |  26  |   P/ ​|  ​ ​| ​  ​IN ​ |  GPIOY.14 ​ |  225  |+|   ​- ​  ​| ​      ​GND ​ |   ​- ​  ​| ​ -  |   ​- ​   |  25  |  26  |   P/ ​|  ​ ​| ​  ​IN ​ |  GPIOY.14 ​ |  225  |
 |  207  |  I2CB_SDA ​ |   ​IN ​ |  1  |   ​- ​   |  27  |  28  |   ​- ​   |  1  |   ​IN ​ |  I2CB_SCL ​ |  208  | |  207  |  I2CB_SDA ​ |   ​IN ​ |  1  |   ​- ​   |  27  |  28  |   ​- ​   |  1  |   ​IN ​ |  I2CB_SCL ​ |  208  |
 |  228  |   ​GPIOX.0 ​ |   ​IN ​ |  1  |   ​P/​U ​ |  29  |  30  |   ​- ​   |  -  |   ​- ​  ​| ​      ​GND ​ |   ​- ​  | |  228  |   ​GPIOX.0 ​ |   ​IN ​ |  1  |   ​P/​U ​ |  29  |  30  |   ​- ​   |  -  |   ​- ​  ​| ​      ​GND ​ |   ​- ​  |
Line 37: Line 37:
  
 ====== GPIO Status Check Program ====== ====== GPIO Status Check Program ======
-<file c gpio_status.c>+<file c gpio_status_c2.c>
 //​------------------------------------------------------------------------------------------------------------ //​------------------------------------------------------------------------------------------------------------
 // //
-// ODROID-C1 GPIO Status Check Application.+// ODROID-C2 GPIO Status Check Application.
 // //
 // Compile : gcc -o <create excute file name> <source file name> // Compile : gcc -o <create excute file name> <source file name>
Line 71: Line 71:
  
 // MMAP Address for GPIO // MMAP Address for GPIO
-#​define GPIO_REG_MAP 0xC1108000+// GPIO Banks Control Register Address 0xC8834400 
 +#​define GPIO_REG_MAP 0xC8834000 
 +// GPIO AO Control Register Address 0xC8100000
 #​define GPIO_AO_REG_MAP 0xC8100000 #​define GPIO_AO_REG_MAP 0xC8100000
  
Line 82: Line 84:
  
 //​------------------------------------------------------------------------------ //​------------------------------------------------------------------------------
-// refer kernel/arch/arm/mach-meson8b/​include/​mach/gpio.h +// refer kernel/include/dt-bindings/gpio/gxbb.h 
-#​define GPIOAO_PIN_START 0 +#​define GPIOAO_OFFSET 122 
-#​define GPIOAO_PIN_END 13+#​define GPIOAO_PIN_START (GPIOAO_OFFSET + 0) 
 +#​define GPIOAO_PIN_END (GPIOAO_OFFSET + 13)
  
 #define GPIOAO_FSEL_REG_OFFSET 0x09 #define GPIOAO_FSEL_REG_OFFSET 0x09
Line 93: Line 96:
  
 //​------------------------------------------------------------------------------ //​------------------------------------------------------------------------------
-#​define GPIODV_PIN_START 50 +#define GPIO_BANKS_OFFSET 136 
-#​define GPIODV_PIN_END 79+#​define GPIODV_PIN_START (GPIO_BANKS_OFFSET + 45) 
 +#​define GPIODV_PIN_END (GPIO_BANKS_OFFSET + 74)
  
-#define GPIODV_FSEL_REG_OFFSET 0x12 +#define GPIODV_FSEL_REG_OFFSET 0x10C 
-#define GPIODV_OUTP_REG_OFFSET 0x13 +#define GPIODV_OUTP_REG_OFFSET 0x10D 
-#define GPIODV_INP_REG_OFFSET 0x14 +#define GPIODV_INP_REG_OFFSET 0x10E 
-#define GPIODV_PUPD_REG_OFFSET 0x3A +#define GPIODV_PUPD_REG_OFFSET 0x13A 
-#define GPIODV_PUEN_REG_OFFSET 0x48+#define GPIODV_PUEN_REG_OFFSET 0x148
  
 //​------------------------------------------------------------------------------ //​------------------------------------------------------------------------------
-#​define GPIOY_PIN_START 80 +#​define GPIOY_PIN_START (GPIO_BANKS_OFFSET + 75) 
-#​define GPIOY_PIN_END 96+#​define GPIOY_PIN_END (GPIO_BANKS_OFFSET + 91)
  
-#define GPIOY_FSEL_REG_OFFSET ​  0x0F +#define GPIOY_FSEL_REG_OFFSET ​  0x10F 
-#define GPIOY_OUTP_REG_OFFSET ​  0x10 +#define GPIOY_OUTP_REG_OFFSET ​  0x110 
-#define GPIOY_INP_REG_OFFSET ​   ​0x11 +#define GPIOY_INP_REG_OFFSET ​   ​0x111 
-#define GPIOY_PUPD_REG_OFFSET ​  0x3D +#define GPIOY_PUPD_REG_OFFSET ​  0x13D 
-#define GPIOY_PUEN_REG_OFFSET ​  0x4B+#define GPIOY_PUEN_REG_OFFSET ​  0x149
  
 //​------------------------------------------------------------------------------ //​------------------------------------------------------------------------------
-#​define GPIOX_PIN_START 97 +#​define GPIOX_PIN_START (GPIO_BANKS_OFFSET + 92) 
-#​define GPIOX_PIN_END 118+#​define GPIOX_PIN_END (GPIO_BANKS_OFFSET + 114)
  
-#define GPIOX_FSEL_REG_OFFSET ​  0x0C +#define GPIOX_FSEL_REG_OFFSET ​  0x118 
-#define GPIOX_OUTP_REG_OFFSET ​  0x0D +#define GPIOX_OUTP_REG_OFFSET ​  0x119 
-#define GPIOX_INP_REG_OFFSET ​   ​0x0E +#define GPIOX_INP_REG_OFFSET ​   ​0x11A 
-#define GPIOX_PUPD_REG_OFFSET ​  0x3E +#define GPIOX_PUPD_REG_OFFSET ​  0x13E 
-#define GPIOX_PUEN_REG_OFFSET ​  0x4C+#define GPIOX_PUEN_REG_OFFSET ​  0x14C
  
 //​------------------------------------------------------------------------------ //​------------------------------------------------------------------------------
-#​define MUX_REG0 0x5 // MUX_AO Block +// GPIO Banks Pin Mux Control Register Address 0xC88344B0 ~ 0xC88344D4 (REG0 ~ REG9) 
-#​define MUX_REG1 0x2D +#​define MUX_REG0 0x12C 
-#​define MUX_REG2 0x2E +#​define MUX_REG1 0x12D 
-#​define MUX_REG3 0x2F +#​define MUX_REG2 0x12E 
-#​define MUX_REG4 0x30 +#​define MUX_REG3 0x12F 
-#​define MUX_REG5 0x31 +#​define MUX_REG4 0x130 
-#​define MUX_REG6 0x32 +#​define MUX_REG5 0x131 
-#​define MUX_REG7 0x33 +#​define MUX_REG6 0x132 
-#​define MUX_REG8 0x34 +#​define MUX_REG7 0x133 
-#​define MUX_REG9 0x35+#​define MUX_REG8 0x134 
 +#​define MUX_REG9 0x135 
 + 
 +// GPIO AO Pin Mux Control Register Address 0xC8100014/​0xC8100018 (AO_REG, A0_REG2) 
 +#define AO_MUX_REG1 0x005 
 +#​define AO_MUX_REG2 0x006
  
 //​------------------------------------------------------------------------------ //​------------------------------------------------------------------------------
Line 138: Line 147:
  
 //​------------------------------------------------------------------------------ //​------------------------------------------------------------------------------
-const char MODE_STR[8][5] = {+const char MODE_STR[9][5] = {
  " ​ - ",  " ​ - ",
  "​ALT1",​  "​ALT1",​
Line 145: Line 154:
  "​ALT4",​  "​ALT4",​
  "​ALT5",​  "​ALT5",​
 + "​ALT6",​
  "​IN",​  "​IN",​
  "​OUT",​  "​OUT",​
Line 165: Line 175:
 const struct header_info header_J2[40] = { const struct header_info header_J2[40] = {
  {    -1, "​3.3V"​ },​ {    -1, "​5.0V"​ },​  {    -1, "​3.3V"​ },​ {    -1, "​5.0V"​ },​
-   74, "​I2CA_SDA"​ },​ {    -1, "​5.0V"​ },​ +  205, "​I2CA_SDA"​ },​ {    -1, "​5.0V"​ },​ 
-   75, "​I2CA_SCL"​ },​ {    -1, "​GND"​ },​ +  206, "​I2CA_SCL"​ },​ {    -1, "​GND"​ },​ 
-   83, "GPIOY.3" }, {   113, "​GPIOX.16" }, +  249, "GPIOX.21" }, {   240, "​GPIOX.12" }, 
- {    -1, "​GND"​ },​ {   114, "​GPIOX.17" }, + {    -1, "​GND"​ },​ {   241, "​GPIOX.13" }, 
-   88, "GPIOY.8" }, {    87, "GPIOY.7" }, +  247, "GPIOX.19" }, {   238, "GPIOX.10" }, 
- {   116, "​GPIOX.19" }, {    -1, "​GND"​ },​ + {   239, "​GPIOX.11" }, {    -1, "​GND"​ },​ 
- {   115, "​GPIOX.18" }, {   104, "​GPIOX.7" }, + {   237, "​GPIOX.9" }, {   236, "​GPIOX.8" }, 
- {    -1, "​3.3V"​ },​ {   102, "​GPIOX.5"​ },​ + {    -1, "​3.3V"​ },​ {   233, "​GPIOX.5"​ },​ 
- {   107, "​GPIOX.10" }, {    -1, "​GND"​ },​ + {   235, "​GPIOX.7" }, {    -1, "​GND"​ },​ 
- {   106, "​GPIOX.9" }, {   103, "​GPIOX.6" }, + {   232, "​GPIOX.4" }, {   231, "​GPIOX.3" }, 
- {   105, "​GPIOX.8" }, {   117, "​GPIOX.20" }, + {   230, "​GPIOX.2" }, {   229, "​GPIOX.1" }, 
- {    -1, "​GND"​ },​ {   118, "GPIOX.21" }, + {    -1, "​GND"​ },​ {   225, "GPIOY.14" }, 
-   76, "​I2CB_SDA"​ },​ {    77, "​I2CB_SCL"​ },​ +  207, "​I2CB_SDA"​ },​ {   208, "​I2CB_SCL"​ },​ 
- {   101, "​GPIOX.4" }, {    -1, "​GND"​ },​ + {   228, "​GPIOX.0" }, {    -1, "​GND"​ },​ 
- {   100, "GPIOX.3" }, {    99, "GPIOX.2" }, + {   219, "GPIOY.8" }, {   224, "GPIOY.13" }, 
- {   108, "​GPIOX.11" }, {    -1, "​GND"​ },​ + {   234, "​GPIOX.6" }, {    -1, "​GND"​ },​ 
-   97, "GPIOX.0" }, {    98, "GPIOX.1" },+  214, "GPIOY.3" }, {   218, "GPIOY.7" },
  {    -1, "​ADC.AIN0"​ },​ {    -1, "1.8V REF"​ },​  {    -1, "​ADC.AIN0"​ },​ {    -1, "1.8V REF"​ },​
  {    -1, "​GND"​ },​ {    -1, "​ADC.AIN1"​ },​  {    -1, "​GND"​ },​ {    -1, "​ADC.AIN1"​ },​
Line 189: Line 199:
 const struct header_info header_J7[7] = { const struct header_info header_J7[7] = {
  {    -1, "​GND"​ },​  {    -1, "​GND"​ },​
-    6, "​GPIOAO.6"​ },​+  128, "​GPIOAO.6"​ },​
  {    -1, "​5.0V"​ },​  {    -1, "​5.0V"​ },​
-    8, "​GPIOAO.8"​ },​ +  130, "​GPIOAO.8"​ },​ 
-   10, "​GPIOAO.10"​ },​ +  132, "​GPIOAO.10"​ },​ 
-    9, "​GPIOAO.9"​ },​ +  131, "​GPIOAO.9"​ },​ 
-   11, "​GPIOAO.11"​ },​+  133, "​GPIOAO.11"​ },​
 }; };
  
Line 203: Line 213:
  case 0:  case 0:
  if (*(gpio + MUX_REG8) & BIT(5)) return 1;​  if (*(gpio + MUX_REG8) & BIT(5)) return 1;​
- if (*(gpio + MUX_REG5) & BIT(14)) return 2;​ 
  break;  break;
  case 1:  case 1:
  if (*(gpio + MUX_REG8) & BIT(4)) return 1;​  if (*(gpio + MUX_REG8) & BIT(4)) return 1;​
- if (*(gpio + MUX_REG5) & BIT(13)) return 2;​ 
  break;  break;
  case 2:  case 2:
  if (*(gpio + MUX_REG8) & BIT(3)) return 1;​  if (*(gpio + MUX_REG8) & BIT(3)) return 1;​
- if (*(gpio + MUX_REG5) & BIT(13)) return 2;​ 
  break;  break;
  case 3:  case 3:
  if (*(gpio + MUX_REG8) & BIT(2)) return 1;​  if (*(gpio + MUX_REG8) & BIT(2)) return 1;​
- if (*(gpio + MUX_REG5) & BIT(13)) return 2;​ 
  break;  break;
  case 4:  case 4:
- if ((*(gpio + MUX_REG5) & BIT(29)) && (*(gpio + MUX_REG5) & BIT(12))) + if (*(gpio + MUX_REG8) & BIT(1)) return 1;​
- return 1+
- if (*(gpio + MUX_REG3) & BIT(30)) return 2;​ +
- if (*(gpio + MUX_REG4) & BIT(17)) return 3;+
  break;  break;
  case 5:  case 5:
- if ((*(gpio + MUX_REG5) & BIT(28)) && (*(gpio + MUX_REG5) & BIT(12))) + if (*(gpio + MUX_REG8) & BIT(0)) return 1;​
- return 1+
- if (*(gpio + MUX_REG3) & BIT(29)) return 2;​ +
- if (*(gpio + MUX_REG4) & BIT(16)) return 3;+
  break;  break;
  case 6:  case 6:
- if ((*(gpio + MUX_REG5) & BIT(28)) && (*(gpio + MUX_REG5) & BIT(12))) + if (*(gpio + MUX_REG3) & BIT(9)) return 4
- return 1+ if (*(gpio + MUX_REG3) & BIT(17)) return 5;
- if (*(gpio + MUX_REG3) & BIT(27)) return 2; +
- if (*(gpio + MUX_REG4) & BIT(15)) return 3;​ +
- if (*(gpio + MUX_REG5) & BIT(9)) return 4;+
  break;  break;
  case 7:  case 7:
- if ((*(gpio + MUX_REG5) & BIT(28)) && (*(gpio + MUX_REG5) & BIT(12))) + if (*(gpio + MUX_REG8) & BIT(11)) return 1;​ 
- return 1; + if (*(gpio + MUX_REG3) & BIT(8)) return 4
- if (*(gpio + MUX_REG3) & BIT(27)) return 2+ if (*(gpio + MUX_REG3) & BIT(18)) return 5;
- if (*(gpio + MUX_REG4) & BIT(14)) return 3; +
- if (*(gpio + MUX_REG5) & BIT(8)) return 4;+
  break;  break;
  case 8:  case 8:
- if (*(gpio + MUX_REG8) & BIT(1)) return 1;​ + if (*(gpio + MUX_REG4) & BIT(7)) return 1;​ 
- if (*(gpio + MUX_REG5) & BIT(11)) return 2;​ + if (*(gpio + MUX_REG3) & BIT(30)) return 3;​ 
- if (*(gpio + MUX_REG6) & BIT(19)) return 3;​ + if (*(gpio + MUX_REG3) & BIT(10)) return 4;​
- if (*(gpio + MUX_REG4) & BIT(22)) return 4+
- if (*(gpio + MUX_REG3) & BIT(6)) return 5;+
  break;  break;
  case 9:  case 9:
- if (*(gpio + MUX_REG8) & BIT(0)) return 1;​ + if (*(gpio + MUX_REG4) & BIT(6)) return 1;​ 
- if (*(gpio + MUX_REG5) & BIT(10)) return 2;​ + if (*(gpio + MUX_REG3) & BIT(29)) return 3;​ 
- if (*(gpio + MUX_REG6) & BIT(18)) return 3;​ + if (*(gpio + MUX_REG3) & BIT(7)) return 4;​
- if (*(gpio + MUX_REG4) & BIT(24)) return 4+
- if (*(gpio + MUX_REG3) & BIT(6)) return 5;+
  break;  break;
  case 10:  case 10:
- if (*(gpio + MUX_REG3) & BIT(22)) return 1;​ + if (*(gpio + MUX_REG3) & BIT(28)) return 3;​
- if ((*(gpio + MUX_REG7) & BIT(31)) && (*(gpio + MUX_REG9) & BIT(19))) +
- return 2;​ +
- if (*(gpio + MUX_REG6) & BIT(17)) return 3+
- if (*(gpio + MUX_REG4) & BIT(23)) return 4;​ +
- if (*(gpio + MUX_REG3) & BIT(8)) return 5;+
  break;  break;
  case 11:  case 11:
- if (*(gpio + MUX_REG3) & BIT(20)) return 1; + if (*(gpio + MUX_REG3) & BIT(27)) return 3;​
- if (*(gpio + MUX_REG7) & BIT(30)) return 2;​ +
- if (*(gpio + MUX_REG2) & BIT(3)) return 5;+
  break;  break;
- case 16+ case 12
- if (*(gpio + MUX_REG4) & BIT(9)) return 1+ if (*(gpio + MUX_REG4) & BIT(13)) return 2
- if (*(gpio + MUX_REG4) & BIT(21)) return 4; + if (*(gpio + MUX_REG4) & BIT(17)) return 3;
- if (*(gpio + MUX_REG4) & BIT(5)) return 5;+
  break;  break;
- case 17+ case 13
- if (*(gpio + MUX_REG4) & BIT(8)) return 1+ if (*(gpio + MUX_REG4) & BIT(12)) return 2
- if (*(gpio + MUX_REG4) & BIT(20)) return 4; + if (*(gpio + MUX_REG4) & BIT(16)) return 3;
- if (*(gpio + MUX_REG4) & BIT(4)) return 5;+
  break;  break;
- case 18+ case 14
- if (*(gpio + MUX_REG4) & BIT(7)) return 1+ if (*(gpio + MUX_REG4) & BIT(11)) return 2
- if (*(gpio + MUX_REG4) & BIT(19)) return 4;+ if (*(gpio + MUX_REG4) & BIT(15)) return 3;
  break;  break;
- case 19+ case 15
- if (*(gpio + MUX_REG4) & BIT(6)) return 1+ if (*(gpio + MUX_REG4) & BIT(10)) return 2
- if (*(gpio + MUX_REG4) & BIT(18)) return 4;+ if (*(gpio + MUX_REG4) & BIT(14)) return 3;
  break;  break;
- case 20+ case 19
- if (*(gpio + MUX_REG6) & BIT(16)) return 3+ if (*(gpio + MUX_REG2) & BIT(22)) return 2
- if (*(gpio + MUX_REG4) & BIT(25)) return 4;​ + if (*(gpio + MUX_REG2) & BIT(30)) return 5;​
- if (*(gpio + MUX_REG3) & BIT(9)) return 5;​+
  break;  break;
- case 21:+ case 20: case 21:
  break;  break;
  default :  default :
  return 0;​  return 0;​
  }  }
- return *(gpio + GPIOX_FSEL_REG_OFFSET) & BIT(pin) ? 6 : 7;+ return *(gpio + GPIOX_FSEL_REG_OFFSET) & BIT(pin) ? 7 : 8;
 } }
  
Line 306: Line 287:
  switch(pin) {  switch(pin) {
  case 0:  case 0:
- if (*(gpio + MUX_REG3) & BIT(2)) return 1;+ if (*(gpio + MUX_REG2) & BIT(19)) return 1;​ 
 + if (*(gpio + MUX_REG3) & BIT(2)) return 2; 
 + if (*(gpio + MUX_REG1) & BIT(0)) return 5;
  break;  break;
  case 1:  case 1:
- if (*(gpio + MUX_REG3) & BIT(1)) return 1;​+ if (*(gpio + MUX_REG2) & BIT(18)) return 1;​ 
 + if (*(gpio + MUX_REG3) & BIT(1)) return 2; 
 + if (*(gpio + MUX_REG1) & BIT(1)) return 5;​ 
 + break; 
 + case 2: 
 + if (*(gpio + MUX_REG2) & BIT(17)) return 1;​ 
 + if (*(gpio + MUX_REG3) & BIT(0)) return 2;
  break;  break;
  case 3:  case 3:
- if (*(gpio + MUX_REG1) & BIT(7)) return 2;​ + if (*(gpio + MUX_REG2) & BIT(16)) return 1;​ 
- if (*(gpio + MUX_REG3) & BIT(18)) return 3;+ if (*(gpio + MUX_REG3) & BIT(4)) return 2;​ 
 + if (*(gpio + MUX_REG1) & BIT(2)) return 5;​ 
 + break; 
 + case 4: 
 + if (*(gpio + MUX_REG2) & BIT(16)) return 1;​ 
 + if (*(gpio + MUX_REG3) & BIT(5)) return 2
 + if (*(gpio + MUX_REG1) & BIT(12)) return 4;​ 
 + break; 
 + case 5: 
 + if (*(gpio + MUX_REG2) & BIT(16)) return 1
 + if (*(gpio + MUX_REG3) & BIT(5)) return 2;​ 
 + if (*(gpio + MUX_REG1) & BIT(13)) return 4;
  break;  break;
  case 6:  case 6:
- if (*(gpio + MUX_REG3) & BIT(5)) return 1;+ if (*(gpio + MUX_REG2) & BIT(16)) return 1;​ 
 + if (*(gpio + MUX_REG3) & BIT(5)) return 2; 
 + if (*(gpio + MUX_REG1) & BIT(3)) return 5;
  break;  break;
  case 7:  case 7:
- if (*(gpio + MUX_REG3) & BIT(5)) return 1;+ if (*(gpio + MUX_REG2) & BIT(16)) return 1;​ 
 + if (*(gpio + MUX_REG3) & BIT(5)) return 2; 
 + if (*(gpio + MUX_REG1) & BIT(4)) return 5;
  break;  break;
  case 8:  case 8:
- if (*(gpio + MUX_REG3) & BIT(0)) return 1;​+ if (*(gpio + MUX_REG2) & BIT(16)) return 1
 + if (*(gpio + MUX_REG3) & BIT(5)) return 2;​ 
 + if (*(gpio + MUX_REG1) & BIT(5)) return 5;
  break;  break;
  case 9:  case 9:
- if (*(gpio + MUX_REG3) & BIT(4)) return 1;​+ if (*(gpio + MUX_REG2) & BIT(16)) return 1
 + if (*(gpio + MUX_REG3) & BIT(5)) return 2;​ 
 + if (*(gpio + MUX_REG1) & BIT(6)) return 5;
  break;  break;
  case 10:  case 10:
- if (*(gpio + MUX_REG3) & BIT(5)) return 1;+ if (*(gpio + MUX_REG2) & BIT(16)) return 1;​ 
 + if (*(gpio + MUX_REG3) & BIT(5)) return 2; 
 + if (*(gpio + MUX_REG1) & BIT(7)) return 5;
  break;  break;
  case 11:  case 11:
- if (*(gpio + MUX_REG3) & BIT(5)) return 1;+ if (*(gpio + MUX_REG3) & BIT(3)) return 2; 
 + if (*(gpio + MUX_REG1) & BIT(19)) return 3;​ 
 + if (*(gpio + MUX_REG1) & BIT(8)) return 5;
  break;  break;
  case 12:  case 12:
- if (*(gpio + MUX_REG3) & BIT(5)) return 1;+ if (*(gpio + MUX_REG1) & BIT(18)) return 3; 
 + if (*(gpio + MUX_REG1) & BIT(9)) return 5;
  break;  break;
  case 13:  case 13:
- if (*(gpio + MUX_REG3) & BIT(5)) return 1+ if (*(gpio + MUX_REG1) & BIT(17)) return 3
- if (*(gpio + MUX_REG5) & BIT(7)) return 3;+ if (*(gpio + MUX_REG1) & BIT(10)) return 5;
  break;  break;
  case 14:  case 14:
- if (*(gpio + MUX_REG3) & BIT(5)) return 1;​ + if (*(gpio + MUX_REG1) & BIT(16)) return 3;​ 
- if (*(gpio + MUX_REG5) & BIT(6)) return 3;+ if (*(gpio + MUX_REG1) & BIT(11)) return 5
 + break; 
 + case 15:​ 
 + if (*(gpio + MUX_REG2) & BIT(20)) return 1;​ 
 + if (*(gpio + MUX_REG1) & BIT(20)) return 4; 
 + if (*(gpio + MUX_REG1) & BIT(22)) return 5;​ 
 + break; 
 + case 16:​ 
 + if (*(gpio + MUX_REG2) & BIT(21)) return 1;​ 
 + if (*(gpio + MUX_REG1) & BIT(21)) return 4;
  break;  break;
  default :  default :
  return 0;​  return 0;​
  }  }
- return *(gpio + GPIOY_FSEL_REG_OFFSET) & BIT(pin) ? 6 : 7;+ return *(gpio + GPIOY_FSEL_REG_OFFSET) & BIT(pin) ? 7 : 8;
 } }
  
Line 355: Line 377:
  switch(pin) {  switch(pin) {
  case 24:  case 24:
- if (*(gpio + MUX_REG6) & BIT(23)) return 4+ if (*(gpio + MUX_REG0) & BIT(7)) return 1
- if (*(gpio + MUX_REG9) & BIT(31)) return 5;​+ if (*(gpio + MUX_REG0) & BIT(12)) return 2;​ 
 + if (*(gpio + MUX_REG5) & BIT(12)) return 3;​ 
 + if (*(gpio + MUX_REG2) & BIT(29)) return 5
 + if (*(gpio + MUX_REG7) & BIT(26)) return 6;
  break;  break;
  case 25:  case 25:
- if (*(gpio + MUX_REG6) & BIT(22)) return 4+ if (*(gpio + MUX_REG0) & BIT(6)) return 1
- if (*(gpio + MUX_REG9) & BIT(30)) return 5;​+ if (*(gpio + MUX_REG0) & BIT(11)) return 2;​ 
 + if (*(gpio + MUX_REG5) & BIT(11)) return 3;​ 
 + if (*(gpio + MUX_REG2) & BIT(28)) return 5
 + if (*(gpio + MUX_REG7) & BIT(27)) return 6;
  break;  break;
  case 26:  case 26:
- if (*(gpio + MUX_REG6) & BIT(21)) return 4+ if (*(gpio + MUX_REG0) & BIT(10)) return 2
- if (*(gpio + MUX_REG9) & BIT(29)) return 5;​+ if (*(gpio + MUX_REG5) & BIT(10)) return 3;​ 
 + if (*(gpio + MUX_REG2) & BIT(27)) return 5
 + if (*(gpio + MUX_REG7) & BIT(24)) return 6;
  break;  break;
  case 27:  case 27:
- if (*(gpio + MUX_REG6) & BIT(20)) return 4;​ + if (*(gpio + MUX_REG0) & BIT(9)) return 2;​ 
- if (*(gpio + MUX_REG9) & BIT(28)) return 5;​+ if (*(gpio + MUX_REG5) & BIT(9)) return 3;​ 
 + if (*(gpio + MUX_REG5) & BIT(8)) return 4;​ 
 + if (*(gpio + MUX_REG2) & BIT(26)) return 5;​ 
 + if (*(gpio + MUX_REG7) & BIT(25)) return 6;​ 
 + break; 
 + case 28
 + if (*(gpio + MUX_REG3) & BIT(20)) return 5
 + if (*(gpio + MUX_REG7) & BIT(22)) return 6;​ 
 + break; 
 + case 29:​ 
 + if (*(gpio + MUX_REG3) & BIT(22)) return 4;​ 
 + if (*(gpio + MUX_REG3) & BIT(21)) return 5;​ 
 + if (*(gpio + MUX_REG7) & BIT(23)) return 6;
  break;  break;
  default :  default :
  return 0;​  return 0;​
  }  }
- return *(gpio + GPIODV_FSEL_REG_OFFSET) & BIT(pin) ? 6 : 7;+ return *(gpio + GPIODV_FSEL_REG_OFFSET) & BIT(pin) ? 7 : 8;
 } }
  
Line 381: Line 423:
  switch(pin) {  switch(pin) {
  case 0:  case 0:
- if (*(gpio_ao + MUX_REG0) & BIT(12)) return 1;​ + if (*(gpio_ao + AO_MUX_REG1) & BIT(12)) return 1;​ 
- if (*(gpio_ao + MUX_REG0) & BIT(26)) return 3;+ if (*(gpio_ao + AO_MUX_REG1) & BIT(26)) return 2;
  break;  break;
  case 1:  case 1:
- if (*(gpio_ao + MUX_REG0) & BIT(11)) return 1;​ + if (*(gpio_ao + AO_MUX_REG1) & BIT(11)) return 1;​ 
- if (*(gpio_ao + MUX_REG0) & BIT(25)) return 3;+ if (*(gpio_ao + AO_MUX_REG1) & BIT(25)) return 2;
  break;  break;
  case 2:  case 2:
- if (*(gpio_ao + MUX_REG0) & BIT(10)) return 1;​ + if (*(gpio_ao + AO_MUX_REG1) & BIT(10)) return 1;​ 
- if (*(gpio_ao + MUX_REG0) & BIT(8)) return 3;+ if (*(gpio_ao + AO_MUX_REG1) & BIT(8)) return 2;
  break;  break;
  case 3:  case 3:
- if (*(gpio_ao + MUX_REG0) & BIT(9)) return 1;​ + if (*(gpio_ao + AO_MUX_REG1) & BIT(9)) return 1;​ 
- if (*(gpio_ao + MUX_REG0) & BIT(22)) return 2;​ + if (*(gpio_ao + AO_MUX_REG1) & BIT(7)) return 2;​ 
- if (*(gpio_ao + MUX_REG0) & BIT(7)) return 3;​+ if (*(gpio_ao + AO_MUX_REG1) & BIT(22)) return 3;​
  break;  break;
  case 4:  case 4:
- if (*(gpio_ao + MUX_REG0) & BIT(6)) return 1+ if (*(gpio_ao + AO_MUX_REG1) & BIT(24)) return 2
- if (*(gpio_ao + MUX_REG0) & BIT(2)) return 2+ if (*(gpio_ao + AO_MUX_REG1) & BIT(6)) return 3
- if (*(gpio_ao + MUX_REG0) & BIT(24)) return 3;+ if (*(gpio_ao + AO_MUX_REG1) & BIT(2)) return 4;
  break;  break;
  case 5:  case 5:
- if (*(gpio_ao + MUX_REG0) & BIT(5)) return 1+ if (*(gpio_ao + AO_MUX_REG1) & BIT(25)) return 2
- if (*(gpio_ao + MUX_REG0) & BIT(1)) return 2+ if (*(gpio_ao + AO_MUX_REG1) & BIT(5)) return 3
- if (*(gpio_ao + MUX_REG0) & BIT(23)) return 3;+ if (*(gpio_ao + AO_MUX_REG1) & BIT(1)) return 4;
  break;  break;
  case 6:  case 6:
- if (*(gpio_ao + MUX_REG0) & BIT(18)) return 1+ if (*(gpio_ao + AO_MUX_REG1) & BIT(18)) return 3
- if (*(gpio_ao + MUX_REG0) & BIT(16)) return 4;​ + if (*(gpio_ao + AO_MUX_REG1) & BIT(16)) return 4;​ 
- if (*(gpio + MUX_REG1) & BIT(13)) return 5; + return 2;
- break;+
  case 7:  case 7:
- if (*(gpio_ao + MUX_REG0) & BIT(0)) return 1;​ + if (*(gpio_ao + AO_MUX_REG1) & BIT(0)) return 1;​ 
- if (*(gpio_ao + MUX_REG0) & BIT(21)) return 2;​+ if (*(gpio_ao + AO_MUX_REG1) & BIT(21)) return 2;​
  break;  break;
  case 8:  case 8:
- if (*(gpio_ao + MUX_REG0) & BIT(30)) return 2+ if (*(gpio_ao + AO_MUX_REG1) & BIT(30)) return 4
- return 1;+ return 3;
  case 9:  case 9:
- if (*(gpio_ao + MUX_REG0) & BIT(29)) return 2+ if (*(gpio_ao + AO_MUX_REG1) & BIT(29)) return 4
- if (*(gpio + MUX_REG1) & BIT(15)) return 5; + return 2;
- return 1;+
  case 10:  case 10:
- if (*(gpio_ao + MUX_REG0) & BIT(28)) return 2+ if (*(gpio_ao + AO_MUX_REG1) & BIT(28)) return 4
- if (*(gpio + MUX_REG1) & BIT(14)) return 5; + return 2;
- return 1;+
  case 11:  case 11:
- if (*(gpio_ao + MUX_REG0) & BIT(27)) return 2+ if (*(gpio_ao + AO_MUX_REG1) & BIT(27)) return 4
- return 1;+ return 3;
  case 12:  case 12:
- if (*(gpio_ao + MUX_REG0) & BIT(17)) return 1;​+ if (*(gpio_ao + AO_MUX_REG1) & BIT(15)) return 1
 + if (*(gpio_ao + AO_MUX_REG1) & BIT(14)) return 2;​ 
 + if (*(gpio_ao + AO_MUX_REG1) & BIT(17)) return 3;​ 
 + if (*(gpio_ao + AO_MUX_REG2) & BIT(0)) return 4;
  break;  break;
  case 13:  case 13:
- if (*(gpio_ao + MUX_REG0) & BIT(31)) return 1;​+ if (*(gpio_ao + AO_MUX_REG1) & BIT(31)) return 1
 + if (*(gpio_ao + AO_MUX_REG1) & BIT(4)) return 2;​ 
 + if (*(gpio_ao + AO_MUX_REG1) & BIT(3)) return 3;​ 
 + if (*(gpio_ao + AO_MUX_REG2) & BIT(1)) return 4;
  break;  break;
  default :  default :
  return 0;​  return 0;​
  }  }
- return *(gpio_ao + GPIOAO_FSEL_REG_OFFSET) & BIT(pin) ? 6 : 7;+ return *(gpio_ao + GPIOAO_FSEL_REG_OFFSET) & BIT(pin) ? 7 : 8;
 } }
  
Line 619: Line 664:
  
 //​------------------------------------------------------------------------------------------------------------ //​------------------------------------------------------------------------------------------------------------
 +//​------------------------------------------------------------------------------------------------------------
 </​file>​ </​file>​
  
en/c2_gpio_default.1456466440.txt.gz · Last modified: 2016/02/26 14:30 by charles.park
CC Attribution-Share Alike 3.0 Unported
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0