19dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#ifndef _VME_PIO2_H_ 29dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define _VME_PIO2_H_ 39dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 49dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CARDS_MAX 32 59dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 69dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_VARIANT_LENGTH 5 79dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 89dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_NUM_CHANNELS 32 99dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_NUM_IRQS 11 109dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_NUM_CNTRS 6 119dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 129dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_SIZE 0x40 139dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 149dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_DATA0 0x0 159dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_DATA1 0x1 169dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_DATA2 0x2 179dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_DATA3 0x3 189dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 199dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchstatic const int PIO2_REGS_DATA[4] = { PIO2_REGS_DATA0, PIO2_REGS_DATA1, 209dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_DATA2, PIO2_REGS_DATA3 }; 219dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 229dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_INT_STAT0 0x8 239dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_INT_STAT1 0x9 249dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_INT_STAT2 0xa 259dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_INT_STAT3 0xb 269dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 279dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchstatic const int PIO2_REGS_INT_STAT[4] = { PIO2_REGS_INT_STAT0, 289dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_INT_STAT1, 299dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_INT_STAT2, 309dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_INT_STAT3 }; 319dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 329dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_INT_STAT_CNTR 0xc 339dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_INT_MASK0 0x10 349dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_INT_MASK1 0x11 359dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_INT_MASK2 0x12 369dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_INT_MASK3 0x13 379dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_INT_MASK4 0x14 389dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_INT_MASK5 0x15 399dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_INT_MASK6 0x16 409dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_INT_MASK7 0x17 419dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 429dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchstatic const int PIO2_REGS_INT_MASK[8] = { PIO2_REGS_INT_MASK0, 439dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_INT_MASK1, 449dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_INT_MASK2, 459dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_INT_MASK3, 469dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_INT_MASK4, 479dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_INT_MASK5, 489dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_INT_MASK6, 499dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_INT_MASK7 }; 509dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 519dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 529dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 539dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_CTRL 0x18 549dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_VME_VECTOR 0x19 559dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_CNTR0 0x20 569dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_CNTR1 0x22 579dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_CNTR2 0x24 589dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_CTRL_WRD0 0x26 599dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_CNTR3 0x28 609dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_CNTR4 0x2a 619dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_CNTR5 0x2c 629dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_CTRL_WRD1 0x2e 639dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 649dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_REGS_ID 0x30 659dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 669dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 679dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch/* PIO2_REGS_DATAx (0x0 - 0x3) */ 689dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 699dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchstatic const int PIO2_CHANNEL_BANK[32] = { 0, 0, 0, 0, 0, 0, 0, 0, 709dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 1, 1, 1, 1, 1, 1, 1, 1, 719dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 2, 2, 2, 2, 2, 2, 2, 2, 729dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 3, 3, 3, 3, 3, 3, 3, 3 }; 739dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 749dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL0_BIT (1 << 0) 759dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL1_BIT (1 << 1) 769dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL2_BIT (1 << 2) 779dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL3_BIT (1 << 3) 789dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL4_BIT (1 << 4) 799dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL5_BIT (1 << 5) 809dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL6_BIT (1 << 6) 819dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL7_BIT (1 << 7) 829dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL8_BIT (1 << 0) 839dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL9_BIT (1 << 1) 849dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL10_BIT (1 << 2) 859dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL11_BIT (1 << 3) 869dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL12_BIT (1 << 4) 879dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL13_BIT (1 << 5) 889dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL14_BIT (1 << 6) 899dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL15_BIT (1 << 7) 909dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL16_BIT (1 << 0) 919dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL17_BIT (1 << 1) 929dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL18_BIT (1 << 2) 939dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL19_BIT (1 << 3) 949dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL20_BIT (1 << 4) 959dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL21_BIT (1 << 5) 969dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL22_BIT (1 << 6) 979dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL23_BIT (1 << 7) 989dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL24_BIT (1 << 0) 999dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL25_BIT (1 << 1) 1009dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL26_BIT (1 << 2) 1019dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL27_BIT (1 << 3) 1029dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL28_BIT (1 << 4) 1039dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL29_BIT (1 << 5) 1049dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL30_BIT (1 << 6) 1059dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CHANNEL31_BIT (1 << 7) 1069dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 1079dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchstatic const int PIO2_CHANNEL_BIT[32] = { PIO2_CHANNEL0_BIT, PIO2_CHANNEL1_BIT, 1089dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_CHANNEL2_BIT, PIO2_CHANNEL3_BIT, 1099dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_CHANNEL4_BIT, PIO2_CHANNEL5_BIT, 1109dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_CHANNEL6_BIT, PIO2_CHANNEL7_BIT, 1119dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_CHANNEL8_BIT, PIO2_CHANNEL9_BIT, 1129dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_CHANNEL10_BIT, PIO2_CHANNEL11_BIT, 1139dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_CHANNEL12_BIT, PIO2_CHANNEL13_BIT, 1149dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_CHANNEL14_BIT, PIO2_CHANNEL15_BIT, 1159dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_CHANNEL16_BIT, PIO2_CHANNEL17_BIT, 1169dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_CHANNEL18_BIT, PIO2_CHANNEL19_BIT, 1179dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_CHANNEL20_BIT, PIO2_CHANNEL21_BIT, 1189dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_CHANNEL22_BIT, PIO2_CHANNEL23_BIT, 1199dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_CHANNEL24_BIT, PIO2_CHANNEL25_BIT, 1209dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_CHANNEL26_BIT, PIO2_CHANNEL27_BIT, 1219dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_CHANNEL28_BIT, PIO2_CHANNEL29_BIT, 1229dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_CHANNEL30_BIT, PIO2_CHANNEL31_BIT 1239dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch }; 1249dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 1259dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch/* PIO2_REGS_INT_STAT_CNTR (0xc) */ 1269dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_COUNTER0 (1 << 0) 1279dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_COUNTER1 (1 << 1) 1289dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_COUNTER2 (1 << 2) 1299dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_COUNTER3 (1 << 3) 1309dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_COUNTER4 (1 << 4) 1319dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_COUNTER5 (1 << 5) 1329dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 1339dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchstatic const int PIO2_COUNTER[6] = { PIO2_COUNTER0, PIO2_COUNTER1, 1349dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_COUNTER2, PIO2_COUNTER3, 1359dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_COUNTER4, PIO2_COUNTER5 }; 1369dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 1379dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch/* PIO2_REGS_CTRL (0x18) */ 1389dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_VME_INT_MASK 0x7 1399dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_LED (1 << 6) 1409dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_LOOP (1 << 7) 1419dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 1429dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch/* PIO2_REGS_VME_VECTOR (0x19) */ 1439dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_VME_VECTOR_SPUR 0x0 1449dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_VME_VECTOR_BANK0 0x1 1459dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_VME_VECTOR_BANK1 0x2 1469dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_VME_VECTOR_BANK2 0x3 1479dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_VME_VECTOR_BANK3 0x4 1489dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_VME_VECTOR_CNTR0 0x5 1499dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_VME_VECTOR_CNTR1 0x6 1509dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_VME_VECTOR_CNTR2 0x7 1519dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_VME_VECTOR_CNTR3 0x8 1529dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_VME_VECTOR_CNTR4 0x9 1539dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_VME_VECTOR_CNTR5 0xa 1549dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 1559dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_VME_VECTOR_MASK 0xf0 1569dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 1579dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchstatic const int PIO2_VECTOR_BANK[4] = { PIO2_VME_VECTOR_BANK0, 1589dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_VME_VECTOR_BANK1, 1599dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_VME_VECTOR_BANK2, 1609dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_VME_VECTOR_BANK3 }; 1619dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 1629dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchstatic const int PIO2_VECTOR_CNTR[6] = { PIO2_VME_VECTOR_CNTR0, 1639dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_VME_VECTOR_CNTR1, 1649dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_VME_VECTOR_CNTR2, 1659dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_VME_VECTOR_CNTR3, 1669dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_VME_VECTOR_CNTR4, 1679dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_VME_VECTOR_CNTR5 }; 1689dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 1699dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch/* PIO2_REGS_CNTRx (0x20 - 0x24 & 0x28 - 0x2c) */ 1709dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 1719dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchstatic const int PIO2_CNTR_DATA[6] = { PIO2_REGS_CNTR0, PIO2_REGS_CNTR1, 1729dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_CNTR2, PIO2_REGS_CNTR3, 1739dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_CNTR4, PIO2_REGS_CNTR5 }; 1749dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 1759dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch/* PIO2_REGS_CTRL_WRDx (0x26 & 0x2e) */ 1769dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 1779dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchstatic const int PIO2_CNTR_CTRL[6] = { PIO2_REGS_CTRL_WRD0, 1789dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_CTRL_WRD0, 1799dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_CTRL_WRD0, 1809dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_CTRL_WRD1, 1819dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_CTRL_WRD1, 1829dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_REGS_CTRL_WRD1 }; 1839dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 1849dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CNTR_SC_DEV0 0 1859dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CNTR_SC_DEV1 (1 << 6) 1869dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CNTR_SC_DEV2 (2 << 6) 1879dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CNTR_SC_RDBACK (3 << 6) 1889dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 1899dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchstatic const int PIO2_CNTR_SC_DEV[6] = { PIO2_CNTR_SC_DEV0, PIO2_CNTR_SC_DEV1, 1909dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_CNTR_SC_DEV2, PIO2_CNTR_SC_DEV0, 1919dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch PIO2_CNTR_SC_DEV1, PIO2_CNTR_SC_DEV2 }; 1929dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 1939dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CNTR_RW_LATCH 0 1949dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CNTR_RW_LSB (1 << 4) 1959dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CNTR_RW_MSB (2 << 4) 1969dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CNTR_RW_BOTH (3 << 4) 1979dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 1989dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CNTR_MODE0 0 1999dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CNTR_MODE1 (1 << 1) 2009dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CNTR_MODE2 (2 << 1) 2019dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CNTR_MODE3 (3 << 1) 2029dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CNTR_MODE4 (4 << 1) 2039dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CNTR_MODE5 (5 << 1) 2049dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 2059dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#define PIO2_CNTR_BCD 1 2069dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 2079dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 2089dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 2099dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchenum pio2_bank_config { NOFIT, INPUT, OUTPUT, BOTH }; 2109dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchenum pio2_int_config { NONE = 0, LOW2HIGH = 1, HIGH2LOW = 2, EITHER = 4 }; 2119dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 2129dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch/* Bank configuration structure */ 2139dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchstruct pio2_io_bank { 2149dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch enum pio2_bank_config config; 2159dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch u8 value; 2169dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch enum pio2_int_config irq[8]; 2179dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch}; 2189dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 2199dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch/* Counter configuration structure */ 2209dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchstruct pio2_cntr { 2219dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch int mode; 2229dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch int count; 2239dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch}; 2249dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 2259dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchstruct pio2_card { 2269dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch int id; 2279dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch int bus; 2289dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch long base; 2299dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch int irq_vector; 2309dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch int irq_level; 2319dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch char variant[6]; 2329dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch int led; 2339dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 2349dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch struct vme_dev *vdev; 2359dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch struct vme_resource *window; 2369dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 2379dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch struct gpio_chip gc; 2389dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch struct pio2_io_bank bank[4]; 2399dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 2409dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch struct pio2_cntr cntr[6]; 2419dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch}; 2429dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 2439dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchint pio2_cntr_reset(struct pio2_card *); 2449dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 2459dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welchint pio2_gpio_reset(struct pio2_card *); 246bf3a85be67068a0f55804349e6e1dce80008c45cGerard Snitselaarint __devinit pio2_gpio_init(struct pio2_card *); 247bf3a85be67068a0f55804349e6e1dce80008c45cGerard Snitselaarvoid pio2_gpio_exit(struct pio2_card *); 2489dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch 2499dc367bc4c76cc4c6595e9fab6a5a02523b537c6Martyn Welch#endif /* _VME_PIO2_H_ */ 250