-
Notifications
You must be signed in to change notification settings - Fork 59
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
imx8x: Add Mackerel definition for GPIO
Signed-off-by: Daniel Schwyn <[email protected]>
- Loading branch information
Showing
2 changed files
with
392 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,391 @@ | ||
/* | ||
* Copyright (c) 2009, ETH Zurich. All rights reserved. | ||
* | ||
* This file is distributed under the terms in the attached LICENSE file. | ||
* If you do not find this file, copies can be found by writing to: | ||
* ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group. | ||
*/ | ||
|
||
/* | ||
* lpuart.dev | ||
* | ||
* DESCRIPTION: iMX8X GPIO | ||
* | ||
* This is derived from: | ||
* | ||
* i.MX 8DualXPlus Appliacations Processor Reference Manual, revision D, NXP | ||
* Pages 7950 - 7968 | ||
* (IMX8DQXPRM.pdf) | ||
* | ||
*/ | ||
|
||
device imx8x_gpio msbfirst (addr base) "IMX8X GPIO" { | ||
|
||
constants direction "GPIO directon" { | ||
input = 0b0 "GPIO is configured as input."; | ||
output = 0b1 "GPIO is configured as output."; | ||
}; | ||
|
||
constants ic "Interrupt condition" { | ||
ll = 0b00 "Low-level sensitive"; | ||
hl = 0b01 "High-level sensitive"; | ||
re = 0b10 "Rising-edge sensitive"; | ||
fe = 0b11 "Falling-edge sensitive"; | ||
}; | ||
|
||
register DR rw addr(base, 0x0) "GPIO Data Register" { | ||
pin31 1 "Pin 31 data"; | ||
pin30 1 "Pin 30 data"; | ||
pin29 1 "Pin 29 data"; | ||
pin28 1 "Pin 28 data"; | ||
pin27 1 "Pin 27 data"; | ||
pin26 1 "Pin 26 data"; | ||
pin25 1 "Pin 25 data"; | ||
pin24 1 "Pin 24 data"; | ||
pin23 1 "Pin 23 data"; | ||
pin22 1 "Pin 22 data"; | ||
pin21 1 "Pin 21 data"; | ||
pin20 1 "Pin 20 data"; | ||
pin19 1 "Pin 19 data"; | ||
pin18 1 "Pin 18 data"; | ||
pin17 1 "Pin 17 data"; | ||
pin16 1 "Pin 16 data"; | ||
pin15 1 "Pin 15 data"; | ||
pin14 1 "Pin 14 data"; | ||
pin13 1 "Pin 13 data"; | ||
pin12 1 "Pin 12 data"; | ||
pin11 1 "Pin 11 data"; | ||
pin10 1 "Pin 10 data"; | ||
pin9 1 "Pin 9 data"; | ||
pin8 1 "Pin 8 data"; | ||
pin7 1 "Pin 7 data"; | ||
pin6 1 "Pin 6 data"; | ||
pin5 1 "Pin 5 data"; | ||
pin4 1 "Pin 4 data"; | ||
pin3 1 "Pin 3 data"; | ||
pin2 1 "Pin 2 data"; | ||
pin1 1 "Pin 1 data"; | ||
pin0 1 "Pin 0 data"; | ||
}; | ||
|
||
register GDIR rw addr(base, 0x4) "GPIO direction register" { | ||
pin31 1 type(direction) "Pin 31 direction"; | ||
pin30 1 type(direction) "Pin 30 direction"; | ||
pin29 1 type(direction) "Pin 29 direction"; | ||
pin28 1 type(direction) "Pin 28 direction"; | ||
pin27 1 type(direction) "Pin 27 direction"; | ||
pin26 1 type(direction) "Pin 26 direction"; | ||
pin25 1 type(direction) "Pin 25 direction"; | ||
pin24 1 type(direction) "Pin 24 direction"; | ||
pin23 1 type(direction) "Pin 23 direction"; | ||
pin22 1 type(direction) "Pin 22 direction"; | ||
pin21 1 type(direction) "Pin 21 direction"; | ||
pin20 1 type(direction) "Pin 20 direction"; | ||
pin19 1 type(direction) "Pin 19 direction"; | ||
pin18 1 type(direction) "Pin 18 direction"; | ||
pin17 1 type(direction) "Pin 17 direction"; | ||
pin16 1 type(direction) "Pin 16 direction"; | ||
pin15 1 type(direction) "Pin 15 direction"; | ||
pin14 1 type(direction) "Pin 14 direction"; | ||
pin13 1 type(direction) "Pin 13 direction"; | ||
pin12 1 type(direction) "Pin 12 direction"; | ||
pin11 1 type(direction) "Pin 11 direction"; | ||
pin10 1 type(direction) "Pin 10 direction"; | ||
pin9 1 type(direction) "Pin 9 direction"; | ||
pin8 1 type(direction) "Pin 8 direction"; | ||
pin7 1 type(direction) "Pin 7 direction"; | ||
pin6 1 type(direction) "Pin 6 direction"; | ||
pin5 1 type(direction) "Pin 5 direction"; | ||
pin4 1 type(direction) "Pin 4 direction"; | ||
pin3 1 type(direction) "Pin 3 direction"; | ||
pin2 1 type(direction) "Pin 2 direction"; | ||
pin1 1 type(direction) "Pin 1 direction"; | ||
pin0 1 type(direction) "Pin 0 direction"; | ||
}; | ||
|
||
register PSR ro addr(base, 0x8) "GPIO pad status register" { | ||
pin31 1 "Pin 31 pad status"; | ||
pin30 1 "Pin 30 pad status"; | ||
pin29 1 "Pin 29 pad status"; | ||
pin28 1 "Pin 28 pad status"; | ||
pin27 1 "Pin 27 pad status"; | ||
pin26 1 "Pin 26 pad status"; | ||
pin25 1 "Pin 25 pad status"; | ||
pin24 1 "Pin 24 pad status"; | ||
pin23 1 "Pin 23 pad status"; | ||
pin22 1 "Pin 22 pad status"; | ||
pin21 1 "Pin 21 pad status"; | ||
pin20 1 "Pin 20 pad status"; | ||
pin19 1 "Pin 19 pad status"; | ||
pin18 1 "Pin 18 pad status"; | ||
pin17 1 "Pin 17 pad status"; | ||
pin16 1 "Pin 16 pad status"; | ||
pin15 1 "Pin 15 pad status"; | ||
pin14 1 "Pin 14 pad status"; | ||
pin13 1 "Pin 13 pad status"; | ||
pin12 1 "Pin 12 pad status"; | ||
pin11 1 "Pin 11 pad status"; | ||
pin10 1 "Pin 10 pad status"; | ||
pin9 1 "Pin 9 pad status"; | ||
pin8 1 "Pin 8 pad status"; | ||
pin7 1 "Pin 7 pad status"; | ||
pin6 1 "Pin 6 pad status"; | ||
pin5 1 "Pin 5 pad status"; | ||
pin4 1 "Pin 4 pad status"; | ||
pin3 1 "Pin 3 pad status"; | ||
pin2 1 "Pin 2 pad status"; | ||
pin1 1 "Pin 1 pad status"; | ||
pin0 1 "Pin 0 pad status"; | ||
}; | ||
|
||
register ICR1 rw addr(base, 0xc) "GPIO interrupt configuration register1" { | ||
icr15 2 type(ic) "Pin 15 interrupt configuration"; | ||
icr14 2 type(ic) "Pin 14 interrupt configuration"; | ||
icr13 2 type(ic) "Pin 13 interrupt configuration"; | ||
icr12 2 type(ic) "Pin 12 interrupt configuration"; | ||
icr11 2 type(ic) "Pin 11 interrupt configuration"; | ||
icr10 2 type(ic) "Pin 10 interrupt configuration"; | ||
icr9 2 type(ic) "Pin 9 interrupt configuration"; | ||
icr8 2 type(ic) "Pin 8 interrupt configuration"; | ||
icr7 2 type(ic) "Pin 7 interrupt configuration"; | ||
icr6 2 type(ic) "Pin 6 interrupt configuration"; | ||
icr5 2 type(ic) "Pin 5 interrupt configuration"; | ||
icr4 2 type(ic) "Pin 4 interrupt configuration"; | ||
icr3 2 type(ic) "Pin 3 interrupt configuration"; | ||
icr2 2 type(ic) "Pin 2 interrupt configuration"; | ||
icr1 2 type(ic) "Pin 1 interrupt configuration"; | ||
icr0 2 type(ic) "Pin 0 interrupt configuration"; | ||
}; | ||
|
||
register ICR2 rw addr(base, 0x10) "GPIO interrupt configuration register2" { | ||
icr31 2 type(ic) "Pin 31 interrupt configuration"; | ||
icr30 2 type(ic) "Pin 30 interrupt configuration"; | ||
icr29 2 type(ic) "Pin 29 interrupt configuration"; | ||
icr28 2 type(ic) "Pin 28 interrupt configuration"; | ||
icr27 2 type(ic) "Pin 27 interrupt configuration"; | ||
icr26 2 type(ic) "Pin 26 interrupt configuration"; | ||
icr25 2 type(ic) "Pin 25 interrupt configuration"; | ||
icr24 2 type(ic) "Pin 24 interrupt configuration"; | ||
icr23 2 type(ic) "Pin 23 interrupt configuration"; | ||
icr22 2 type(ic) "Pin 22 interrupt configuration"; | ||
icr21 2 type(ic) "Pin 21 interrupt configuration"; | ||
icr20 2 type(ic) "Pin 20 interrupt configuration"; | ||
icr19 2 type(ic) "Pin 19 interrupt configuration"; | ||
icr18 2 type(ic) "Pin 18 interrupt configuration"; | ||
icr17 2 type(ic) "Pin 17 interrupt configuration"; | ||
icr16 2 type(ic) "Pin 16 interrupt configuration"; | ||
}; | ||
|
||
register IMR rw addr(base, 0x14) "GPIO interrupt mask register" { | ||
pin31 1 "Pin 31 interrupt mask"; | ||
pin30 1 "Pin 30 interrupt mask"; | ||
pin29 1 "Pin 29 interrupt mask"; | ||
pin28 1 "Pin 28 interrupt mask"; | ||
pin27 1 "Pin 27 interrupt mask"; | ||
pin26 1 "Pin 26 interrupt mask"; | ||
pin25 1 "Pin 25 interrupt mask"; | ||
pin24 1 "Pin 24 interrupt mask"; | ||
pin23 1 "Pin 23 interrupt mask"; | ||
pin22 1 "Pin 22 interrupt mask"; | ||
pin21 1 "Pin 21 interrupt mask"; | ||
pin20 1 "Pin 20 interrupt mask"; | ||
pin19 1 "Pin 19 interrupt mask"; | ||
pin18 1 "Pin 18 interrupt mask"; | ||
pin17 1 "Pin 17 interrupt mask"; | ||
pin16 1 "Pin 16 interrupt mask"; | ||
pin15 1 "Pin 15 interrupt mask"; | ||
pin14 1 "Pin 14 interrupt mask"; | ||
pin13 1 "Pin 13 interrupt mask"; | ||
pin12 1 "Pin 12 interrupt mask"; | ||
pin11 1 "Pin 11 interrupt mask"; | ||
pin10 1 "Pin 10 interrupt mask"; | ||
pin9 1 "Pin 9 interrupt mask"; | ||
pin8 1 "Pin 8 interrupt mask"; | ||
pin7 1 "Pin 7 interrupt mask"; | ||
pin6 1 "Pin 6 interrupt mask"; | ||
pin5 1 "Pin 5 interrupt mask"; | ||
pin4 1 "Pin 4 interrupt mask"; | ||
pin3 1 "Pin 3 interrupt mask"; | ||
pin2 1 "Pin 2 interrupt mask"; | ||
pin1 1 "Pin 1 interrupt mask"; | ||
pin0 1 "Pin 0 interrupt mask"; | ||
}; | ||
|
||
register ISR rw1c addr(base, 0x18) "GPIO interrupt status regsiter" { | ||
pin31 1 "Pin 31 interrupt status"; | ||
pin30 1 "Pin 30 interrupt status"; | ||
pin29 1 "Pin 29 interrupt status"; | ||
pin28 1 "Pin 28 interrupt status"; | ||
pin27 1 "Pin 27 interrupt status"; | ||
pin26 1 "Pin 26 interrupt status"; | ||
pin25 1 "Pin 25 interrupt status"; | ||
pin24 1 "Pin 24 interrupt status"; | ||
pin23 1 "Pin 23 interrupt status"; | ||
pin22 1 "Pin 22 interrupt status"; | ||
pin21 1 "Pin 21 interrupt status"; | ||
pin20 1 "Pin 20 interrupt status"; | ||
pin19 1 "Pin 19 interrupt status"; | ||
pin18 1 "Pin 18 interrupt status"; | ||
pin17 1 "Pin 17 interrupt status"; | ||
pin16 1 "Pin 16 interrupt status"; | ||
pin15 1 "Pin 15 interrupt status"; | ||
pin14 1 "Pin 14 interrupt status"; | ||
pin13 1 "Pin 13 interrupt status"; | ||
pin12 1 "Pin 12 interrupt status"; | ||
pin11 1 "Pin 11 interrupt status"; | ||
pin10 1 "Pin 10 interrupt status"; | ||
pin9 1 "Pin 9 interrupt status"; | ||
pin8 1 "Pin 8 interrupt status"; | ||
pin7 1 "Pin 7 interrupt status"; | ||
pin6 1 "Pin 6 interrupt status"; | ||
pin5 1 "Pin 5 interrupt status"; | ||
pin4 1 "Pin 4 interrupt status"; | ||
pin3 1 "Pin 3 interrupt status"; | ||
pin2 1 "Pin 2 interrupt status"; | ||
pin1 1 "Pin 1 interrupt status"; | ||
pin0 1 "Pin 0 interrupt status"; | ||
}; | ||
|
||
register EDGE_SEL rw addr(base, 0x1c) "GPIO edge select register" { | ||
pin31 1 "Pin 31 edge select"; | ||
pin30 1 "Pin 30 edge select"; | ||
pin29 1 "Pin 29 edge select"; | ||
pin28 1 "Pin 28 edge select"; | ||
pin27 1 "Pin 27 edge select"; | ||
pin26 1 "Pin 26 edge select"; | ||
pin25 1 "Pin 25 edge select"; | ||
pin24 1 "Pin 24 edge select"; | ||
pin23 1 "Pin 23 edge select"; | ||
pin22 1 "Pin 22 edge select"; | ||
pin21 1 "Pin 21 edge select"; | ||
pin20 1 "Pin 20 edge select"; | ||
pin19 1 "Pin 19 edge select"; | ||
pin18 1 "Pin 18 edge select"; | ||
pin17 1 "Pin 17 edge select"; | ||
pin16 1 "Pin 16 edge select"; | ||
pin15 1 "Pin 15 edge select"; | ||
pin14 1 "Pin 14 edge select"; | ||
pin13 1 "Pin 13 edge select"; | ||
pin12 1 "Pin 12 edge select"; | ||
pin11 1 "Pin 11 edge select"; | ||
pin10 1 "Pin 10 edge select"; | ||
pin9 1 "Pin 9 edge select"; | ||
pin8 1 "Pin 8 edge select"; | ||
pin7 1 "Pin 7 edge select"; | ||
pin6 1 "Pin 6 edge select"; | ||
pin5 1 "Pin 5 edge select"; | ||
pin4 1 "Pin 4 edge select"; | ||
pin3 1 "Pin 3 edge select"; | ||
pin2 1 "Pin 2 edge select"; | ||
pin1 1 "Pin 1 edge select"; | ||
pin0 1 "Pin 0 edge select"; | ||
}; | ||
|
||
/* The following 3 registers seem not to work... */ | ||
|
||
register DR_SET wo addr(base, 0x84) "GPIO data register set" { | ||
pin31 1 "Set pin 31"; | ||
pin30 1 "Set pin 30"; | ||
pin29 1 "Set pin 29"; | ||
pin28 1 "Set pin 28"; | ||
pin27 1 "Set pin 27"; | ||
pin26 1 "Set pin 26"; | ||
pin25 1 "Set pin 25"; | ||
pin24 1 "Set pin 24"; | ||
pin23 1 "Set pin 23"; | ||
pin22 1 "Set pin 22"; | ||
pin21 1 "Set pin 21"; | ||
pin20 1 "Set pin 20"; | ||
pin19 1 "Set pin 19"; | ||
pin18 1 "Set pin 18"; | ||
pin17 1 "Set pin 17"; | ||
pin16 1 "Set pin 16"; | ||
pin15 1 "Set pin 15"; | ||
pin14 1 "Set pin 14"; | ||
pin13 1 "Set pin 13"; | ||
pin12 1 "Set pin 12"; | ||
pin11 1 "Set pin 11"; | ||
pin10 1 "Set pin 10"; | ||
pin9 1 "Set pin 9"; | ||
pin8 1 "Set pin 8"; | ||
pin7 1 "Set pin 7"; | ||
pin6 1 "Set pin 6"; | ||
pin5 1 "Set pin 5"; | ||
pin4 1 "Set pin 4"; | ||
pin3 1 "Set pin 3"; | ||
pin2 1 "Set pin 2"; | ||
pin1 1 "Set pin 1"; | ||
pin0 1 "Set pin 0"; | ||
}; | ||
|
||
register DR_CLEAR wo addr(base, 0x88) "GPIO data register clear" { | ||
pin31 1 "Clear pin 31"; | ||
pin30 1 "Clear pin 30"; | ||
pin29 1 "Clear pin 29"; | ||
pin28 1 "Clear pin 28"; | ||
pin27 1 "Clear pin 27"; | ||
pin26 1 "Clear pin 26"; | ||
pin25 1 "Clear pin 25"; | ||
pin24 1 "Clear pin 24"; | ||
pin23 1 "Clear pin 23"; | ||
pin22 1 "Clear pin 22"; | ||
pin21 1 "Clear pin 21"; | ||
pin20 1 "Clear pin 20"; | ||
pin19 1 "Clear pin 19"; | ||
pin18 1 "Clear pin 18"; | ||
pin17 1 "Clear pin 17"; | ||
pin16 1 "Clear pin 16"; | ||
pin15 1 "Clear pin 15"; | ||
pin14 1 "Clear pin 14"; | ||
pin13 1 "Clear pin 13"; | ||
pin12 1 "Clear pin 12"; | ||
pin11 1 "Clear pin 11"; | ||
pin10 1 "Clear pin 10"; | ||
pin9 1 "Clear pin 9"; | ||
pin8 1 "Clear pin 8"; | ||
pin7 1 "Clear pin 7"; | ||
pin6 1 "Clear pin 6"; | ||
pin5 1 "Clear pin 5"; | ||
pin4 1 "Clear pin 4"; | ||
pin3 1 "Clear pin 3"; | ||
pin2 1 "Clear pin 2"; | ||
pin1 1 "Clear pin 1"; | ||
pin0 1 "Clear pin 0"; | ||
}; | ||
|
||
register DR_TOGGLE wo addr(base, 0x8c) "GPIO data register toggle" { | ||
pin31 1 "Toggle pin 31"; | ||
pin30 1 "Toggle pin 30"; | ||
pin29 1 "Toggle pin 29"; | ||
pin28 1 "Toggle pin 28"; | ||
pin27 1 "Toggle pin 27"; | ||
pin26 1 "Toggle pin 26"; | ||
pin25 1 "Toggle pin 25"; | ||
pin24 1 "Toggle pin 24"; | ||
pin23 1 "Toggle pin 23"; | ||
pin22 1 "Toggle pin 22"; | ||
pin21 1 "Toggle pin 21"; | ||
pin20 1 "Toggle pin 20"; | ||
pin19 1 "Toggle pin 19"; | ||
pin18 1 "Toggle pin 18"; | ||
pin17 1 "Toggle pin 17"; | ||
pin16 1 "Toggle pin 16"; | ||
pin15 1 "Toggle pin 15"; | ||
pin14 1 "Toggle pin 14"; | ||
pin13 1 "Toggle pin 13"; | ||
pin12 1 "Toggle pin 12"; | ||
pin11 1 "Toggle pin 11"; | ||
pin10 1 "Toggle pin 10"; | ||
pin9 1 "Toggle pin 9"; | ||
pin8 1 "Toggle pin 8"; | ||
pin7 1 "Toggle pin 7"; | ||
pin6 1 "Toggle pin 6"; | ||
pin5 1 "Toggle pin 5"; | ||
pin4 1 "Toggle pin 4"; | ||
pin3 1 "Toggle pin 3"; | ||
pin2 1 "Toggle pin 2"; | ||
pin1 1 "Toggle pin 1"; | ||
pin0 1 "Toggle pin 0"; | ||
}; | ||
}; | ||
|