GPIO mapping

Started by low, May 01, 2023, 01:16:39 PM

Previous topic - Next topic

low

Hello, I'm trying to use GPIOs on a Olinuxino A20 micro rev G which runs archlinux.

I don't understand how to map pins from this document https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-MICRO/resources/A20-OLinuXino-Micro.pdf and the result of `gpioinfo` :

gpiochip0 - 288 lines:
line   0:      unnamed       unused   input  active-high
line   1:      unnamed       unused   input  active-high
line   2:      unnamed       unused   input  active-high
line   3:      unnamed       unused   input  active-high
line   4:      unnamed       unused   input  active-high
line   5:      unnamed       unused   input  active-high
line   6:      unnamed       unused   input  active-high
line   7:      unnamed       unused   input  active-high
line   8:      unnamed       unused   input  active-high
line   9:      unnamed       unused   input  active-high
line  10:      unnamed       unused   input  active-high
line  11:      unnamed       unused   input  active-high
line  12:      unnamed       unused   input  active-high
line  13:      unnamed       unused   input  active-high
line  14:      unnamed       unused   input  active-high
line  15:      unnamed       unused   input  active-high
line  16:      unnamed       unused   input  active-high
line  17:      unnamed       unused   input  active-high
line  18:      unnamed       unused   input  active-high
line  19:      unnamed       unused   input  active-high
line  20:      unnamed       unused   input  active-high
line  21:      unnamed       unused   input  active-high
line  22:      unnamed       unused   input  active-high
line  23:      unnamed       unused   input  active-high
line  24:      unnamed       unused   input  active-high
line  25:      unnamed       unused   input  active-high
line  26:      unnamed       unused   input  active-high
line  27:      unnamed       unused   input  active-high
line  28:      unnamed       unused   input  active-high
line  29:      unnamed       unused   input  active-high
line  30:      unnamed       unused   input  active-high
line  31:      unnamed       unused   input  active-high
line  32:      unnamed       unused   input  active-high
line  33:      unnamed       unused   input  active-high
line  34:      unnamed       unused   input  active-high
line  35:      unnamed       unused   input  active-high
line  36:      unnamed       unused   input  active-high
line  37:      unnamed       unused   input  active-high
line  38:      unnamed       unused   input  active-high
line  39:      unnamed       unused   input  active-high
line  40:      unnamed    "ahci-5v"  output  active-high [used]
line  41:      unnamed  "usb0-vbus"  output  active-high [used]
line  42:      unnamed       unused   input  active-high
line  43:      unnamed       unused   input  active-high
line  44:      unnamed       unused   input  active-high
line  45:      unnamed       unused   input  active-high
line  46:      unnamed       unused   input  active-high
line  47:      unnamed       unused   input  active-high
line  48:      unnamed       unused   input  active-high
line  49:      unnamed       unused   input  active-high
line  50:      unnamed       unused   input  active-high
line  51:      unnamed       unused   input  active-high
line  52:      unnamed       unused   input  active-high
line  53:      unnamed       unused   input  active-high
line  54:      unnamed       unused   input  active-high
line  55:      unnamed       unused   input  active-high
line  56:      unnamed       unused   input  active-high
line  57:      unnamed       unused   input  active-high
line  58:      unnamed       unused   input  active-high
line  59:      unnamed       unused   input  active-high
line  60:      unnamed       unused   input  active-high
line  61:      unnamed       unused   input  active-high
line  62:      unnamed       unused   input  active-high
line  63:      unnamed       unused   input  active-high
line  64:      unnamed       unused   input  active-high
line  65:      unnamed       unused   input  active-high
line  66:      unnamed       unused   input  active-high
line  67:      unnamed       unused   input  active-high
line  68:      unnamed       unused   input  active-high
line  69:      unnamed       unused   input  active-high
line  70:      unnamed       unused   input  active-high
line  71:      unnamed       unused   input  active-high
line  72:      unnamed       unused   input  active-high
line  73:      unnamed       unused   input  active-high
line  74:      unnamed       unused   input  active-high
line  75:      unnamed       unused   input  active-high
line  76:      unnamed       unused   input  active-high
line  77:      unnamed       unused   input  active-high
line  78:      unnamed       unused   input  active-high
line  79:      unnamed       unused   input  active-high
line  80:      unnamed       unused   input  active-high
line  81:      unnamed       unused   input  active-high
line  82:      unnamed       unused   input  active-high
line  83:      unnamed       unused   input  active-high
line  84:      unnamed       unused   input  active-high
line  85:      unnamed       unused   input  active-high
line  86:      unnamed       unused   input  active-high
line  87:      unnamed       unused   input  active-high
line  88:      unnamed       unused   input  active-high
line  89:      unnamed       unused   input  active-high
line  90:      unnamed       unused   input  active-high
line  91:      unnamed       unused   input  active-high
line  92:      unnamed       unused   input  active-high
line  93:      unnamed       unused   input  active-high
line  94:      unnamed       unused   input  active-high
line  95:      unnamed       unused   input  active-high
line  96:      unnamed       unused   input  active-high
line  97:      unnamed       unused   input  active-high
line  98:      unnamed       unused   input  active-high
line  99:      unnamed       unused   input  active-high
line 100:      unnamed       unused   input  active-high
line 101:      unnamed       unused   input  active-high
line 102:      unnamed       unused   input  active-high
line 103:      unnamed       unused   input  active-high
line 104:      unnamed       unused   input  active-high
line 105:      unnamed       unused   input  active-high
line 106:      unnamed       unused   input  active-high
line 107:      unnamed       unused   input  active-high
line 108:      unnamed       unused   input  active-high
line 109:      unnamed       unused   input  active-high
line 110:      unnamed       unused   input  active-high
line 111:      unnamed       unused   input  active-high
line 112:      unnamed       unused   input  active-high
line 113:      unnamed       unused   input  active-high
line 114:      unnamed       unused   input  active-high
line 115:      unnamed       unused   input  active-high
line 116:      unnamed       unused   input  active-high
line 117:      unnamed       unused   input  active-high
line 118:      unnamed       unused   input  active-high
line 119:      unnamed       unused   input  active-high
line 120:      unnamed       unused   input  active-high
line 121:      unnamed       unused   input  active-high
line 122:      unnamed       unused   input  active-high
line 123:      unnamed       unused   input  active-high
line 124:      unnamed       unused   input  active-high
line 125:      unnamed       unused   input  active-high
line 126:      unnamed       unused   input  active-high
line 127:      unnamed       unused   input  active-high
line 128:      unnamed       unused   input  active-high
line 129:      unnamed       unused   input  active-high
line 130:      unnamed       unused   input  active-high
line 131:      unnamed       unused   input  active-high
line 132:      unnamed       unused   input  active-high
line 133:      unnamed       unused   input  active-high
line 134:      unnamed       unused   input  active-high
line 135:      unnamed       unused   input  active-high
line 136:      unnamed       unused   input  active-high
line 137:      unnamed       unused   input  active-high
line 138:      unnamed       unused   input  active-high
line 139:      unnamed       unused   input  active-high
line 140:      unnamed       unused   input  active-high
line 141:      unnamed       unused   input  active-high
line 142:      unnamed       unused   input  active-high
line 143:      unnamed       unused   input  active-high
line 144:      unnamed       unused   input  active-high
line 145:      unnamed       unused   input  active-high
line 146:      unnamed       unused   input  active-high
line 147:      unnamed       unused   input  active-high
line 148:      unnamed       unused   input  active-high
line 149:      unnamed       unused   input  active-high
line 150:      unnamed       unused   input  active-high
line 151:      unnamed       unused   input  active-high
line 152:      unnamed       unused   input  active-high
line 153:      unnamed       unused   input  active-high
line 154:      unnamed       unused   input  active-high
line 155:      unnamed       unused   input  active-high
line 156:      unnamed       unused   input  active-high
line 157:      unnamed       unused   input  active-high
line 158:      unnamed       unused   input  active-high
line 159:      unnamed       unused   input  active-high
line 160:      unnamed       unused   input  active-high
line 161:      unnamed       unused   input  active-high
line 162:      unnamed       unused   input  active-high
line 163:      unnamed       unused   input  active-high
line 164:      unnamed       unused   input  active-high
line 165:      unnamed       unused   input  active-high
line 166:      unnamed       unused   input  active-high
line 167:      unnamed       unused   input  active-high
line 168:      unnamed       unused   input  active-high
line 169:      unnamed       unused   input  active-high
line 170:      unnamed       unused   input  active-high
line 171:      unnamed       unused   input  active-high
line 172:      unnamed       unused   input  active-high
line 173:      unnamed       unused   input  active-high
line 174:      unnamed       unused   input  active-high
line 175:      unnamed       unused   input  active-high
line 176:      unnamed       unused   input  active-high
line 177:      unnamed       unused   input  active-high
line 178:      unnamed       unused   input  active-high
line 179:      unnamed       unused   input  active-high
line 180:      unnamed       unused   input  active-high
line 181:      unnamed       unused   input  active-high
line 182:      unnamed       unused   input  active-high
line 183:      unnamed       unused   input  active-high
line 184:      unnamed       unused   input  active-high
line 185:      unnamed       unused   input  active-high
line 186:      unnamed       unused   input  active-high
line 187:      unnamed       unused   input  active-high
line 188:      unnamed       unused   input  active-high
line 189:      unnamed       unused   input  active-high
line 190:      unnamed       unused   input  active-high
line 191:      unnamed       unused   input  active-high
line 192:      unnamed       unused   input  active-high
line 193:      unnamed       unused   input  active-high
line 194:      unnamed       unused   input  active-high
line 195:      unnamed       unused   input  active-high
line 196:      unnamed       unused   input  active-high
line 197:      unnamed       unused   input  active-high
line 198:      unnamed       unused   input  active-high
line 199:      unnamed       unused   input  active-high
line 200:      unnamed       unused   input  active-high
line 201:      unnamed       unused   input  active-high
line 202:      unnamed       unused   input  active-high
line 203:      unnamed       unused   input  active-high
line 204:      unnamed       unused   input  active-high
line 205:      unnamed       unused   input  active-high
line 206:      unnamed       unused   input  active-high
line 207:      unnamed       unused   input  active-high
line 208:      unnamed       unused   input  active-high
line 209:      unnamed       unused   input  active-high
line 210:      unnamed       unused   input  active-high
line 211:      unnamed       unused   input  active-high
line 212:      unnamed       unused   input  active-high
line 213:      unnamed       unused   input  active-high
line 214:      unnamed       unused   input  active-high
line 215:      unnamed       unused   input  active-high
line 216:      unnamed       unused   input  active-high
line 217:      unnamed       unused   input  active-high
line 218:      unnamed       unused   input  active-high
line 219:      unnamed       unused   input  active-high
line 220:      unnamed       unused   input  active-high
line 221:      unnamed       unused   input  active-high
line 222:      unnamed       unused   input  active-high
line 223:      unnamed       unused   input  active-high
line 224:      unnamed       unused   input  active-high
line 225:      unnamed         "cd"   input   active-low [used]
line 226:      unnamed "a20-olinuxino-micro:green:usr" output active-high [used]
line 227:      unnamed  "usb2-vbus"  output  active-high [used]
line 228:      unnamed "usb0_id_det" input active-high [used pull-up]
line 229:      unnamed "usb0_vbus_det" input active-high [used pull-down]
line 230:      unnamed  "usb1-vbus"  output  active-high [used]
line 231:      unnamed       unused   input  active-high
line 232:      unnamed       unused   input  active-high
line 233:      unnamed       unused   input  active-high
line 234:      unnamed       unused   input  active-high
line 235:      unnamed         "cd"   input   active-low [used]
line 236:      unnamed       unused   input  active-high
line 237:      unnamed       unused   input  active-high
line 238:      unnamed       unused   input  active-high
line 239:      unnamed       unused   input  active-high
line 240:      unnamed       unused   input  active-high
line 241:      unnamed       unused   input  active-high
line 242:      unnamed       unused  output  active-high
line 243:      unnamed       unused   input  active-high
line 244:      unnamed       unused   input  active-high
line 245:      unnamed       unused   input  active-high
line 246:      unnamed       unused   input  active-high
line 247:      unnamed       unused   input  active-high
line 248:      unnamed       unused   input  active-high
line 249:      unnamed       unused   input  active-high
line 250:      unnamed       unused   input  active-high
line 251:      unnamed       unused   input  active-high
line 252:      unnamed       unused   input  active-high
line 253:      unnamed       unused   input  active-high
line 254:      unnamed       unused   input  active-high
line 255:      unnamed       unused   input  active-high
line 256:      unnamed       unused   input  active-high
line 257:      unnamed       unused   input  active-high
line 258:      unnamed       unused   input  active-high
line 259:      unnamed       unused   input  active-high
line 260:      unnamed       unused   input  active-high
line 261:      unnamed       unused   input  active-high
line 262:      unnamed       unused   input  active-high
line 263:      unnamed       unused   input  active-high
line 264:      unnamed       unused   input  active-high
line 265:      unnamed       unused   input  active-high
line 266:      unnamed       unused   input  active-high
line 267:      unnamed       unused   input  active-high
line 268:      unnamed       unused   input  active-high
line 269:      unnamed       unused   input  active-high
line 270:      unnamed       unused   input  active-high
line 271:      unnamed       unused   input  active-high
line 272:      unnamed       unused   input  active-high
line 273:      unnamed       unused   input  active-high
line 274:      unnamed       unused   input  active-high
line 275:      unnamed       unused   input  active-high
line 276:      unnamed       unused   input  active-high
line 277:      unnamed       unused   input  active-high
line 278:      unnamed       unused   input  active-high
line 279:      unnamed       unused   input  active-high
line 280:      unnamed       unused   input  active-high
line 281:      unnamed       unused   input  active-high
line 282:      unnamed       unused   input  active-high
line 283:      unnamed       unused   input  active-high
line 284:      unnamed       unused   input  active-high
line 285:      unnamed       unused   input  active-high
line 286:      unnamed       unused   input  active-high
line 287:      unnamed       unused   input  active-high
gpiochip1 - 3 lines:
line   0:      unnamed       unused   input  active-high
line   1:      unnamed       unused   input  active-high
line   2:      unnamed       unused   input  active-high

Why did I got 2 gpio chips here instead of the 3 in the docs ?
How did I found where is for example PE0/E23 ? From the schematic (https://raw.githubusercontent.com/OLIMEX/OLINUXINO/master/HARDWARE/A20-OLinuXino-MICRO/2.%20Older%20hardware%20revisions/Hardware%20revision%20G1/A20-OLINUXINO-MICRO_Rev_G1.pdf) I see its also TS0_CLK/CSI0_PCLK ... but I don't know what to do with this !

After some tries I can control PH 16/17/18 (B1/C1/C2, pin 25 27 29 on GPIO 3) with pins 240 241 and 242 from gpiochip0 (using gpioset 0 240=0 241=0 242=0), but I still don't understand the logic

Thank you for any help !

LubOlimex

Technical support and documentation manager at Olimex

low

thank for the link I totally missed this document !

Indeed it is exactly what I needed:

QuotegpioNumberLinux = (portLetterChip position in the alphabet - 1) * bit-width-max +
pinNumberChip