summaryrefslogtreecommitdiff
path: root/firmware/target/arm/imx233/pinctrl-imx233.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/imx233/pinctrl-imx233.c')
-rw-r--r--firmware/target/arm/imx233/pinctrl-imx233.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/firmware/target/arm/imx233/pinctrl-imx233.c b/firmware/target/arm/imx233/pinctrl-imx233.c
index 7997292fcb..be2d8b2262 100644
--- a/firmware/target/arm/imx233/pinctrl-imx233.c
+++ b/firmware/target/arm/imx233/pinctrl-imx233.c
@@ -21,8 +21,47 @@
21#include "system.h" 21#include "system.h"
22#include "system-target.h" 22#include "system-target.h"
23#include "cpu.h" 23#include "cpu.h"
24#include "string.h"
24#include "pinctrl-imx233.h" 25#include "pinctrl-imx233.h"
25 26
27#ifdef IMX233_PINCTRL_DEBUG
28// 4 banks of 32 pins
29static const char *pin_use[4][32];
30
31void imx233_pinctrl_acquire_pin(unsigned bank, unsigned pin, const char *name)
32{
33 if(pin_use[bank][pin] != NULL && pin_use[bank][pin] != name)
34 panicf("acquire B%dP%02d for %s, was %s!", bank, pin, name, pin_use[bank][pin]);
35 pin_use[bank][pin] = name;
36}
37
38void imx233_pinctrl_acquire_pin_mask(unsigned bank, uint32_t mask, const char *name)
39{
40 for(unsigned pin = 0; pin < 32; pin++)
41 if(mask & (1 << pin))
42 imx233_pinctrl_acquire_pin(bank, pin, name);
43}
44
45void imx233_pinctrl_release_pin(unsigned bank, unsigned pin, const char *name)
46{
47 if(pin_use[bank][pin] != NULL && pin_use[bank][pin] != name)
48 panicf("release B%dP%02d for %s: was %s!", bank, pin, name, pin_use[bank][pin]);
49 pin_use[bank][pin] = NULL;
50}
51
52void imx233_pinctrl_release_pin_mask(unsigned bank, uint32_t mask, const char *name)
53{
54 for(unsigned pin = 0; pin < 32; pin++)
55 if(mask & (1 << pin))
56 imx233_pinctrl_release_pin(bank, pin, name);
57}
58
59const char *imx233_pinctrl_get_pin_use(unsigned bank, unsigned pin)
60{
61 return pin_use[bank][pin];
62}
63#endif
64
26static pin_irq_cb_t pin_cb[3][32]; /* 3 banks, 32 pins/bank */ 65static pin_irq_cb_t pin_cb[3][32]; /* 3 banks, 32 pins/bank */
27 66
28static void INT_GPIO(int bank) 67static void INT_GPIO(int bank)