diff options
Diffstat (limited to 'firmware/target/mips')
-rw-r--r-- | firmware/target/mips/ingenic_x1000/gpio-x1000.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/firmware/target/mips/ingenic_x1000/gpio-x1000.c b/firmware/target/mips/ingenic_x1000/gpio-x1000.c index a47865e397..8e93f865bf 100644 --- a/firmware/target/mips/ingenic_x1000/gpio-x1000.c +++ b/firmware/target/mips/ingenic_x1000/gpio-x1000.c | |||
@@ -32,19 +32,15 @@ void gpio_init(void) | |||
32 | mutex_init(&gpio_z_mutex); | 32 | mutex_init(&gpio_z_mutex); |
33 | #endif | 33 | #endif |
34 | 34 | ||
35 | /* Set all pins to input state */ | 35 | /* Any GPIO pins left in an IRQ trigger state need to be switched off, |
36 | * because the drivers won't be ready to handle the interrupts until they | ||
37 | * get initialized later in the boot. */ | ||
36 | for(int i = 0; i < 4; ++i) { | 38 | for(int i = 0; i < 4; ++i) { |
37 | jz_clr(GPIO_INT(GPIO_Z), 0xffffffff); | 39 | uint32_t intbits = REG_GPIO_INT(i); |
38 | jz_set(GPIO_MSK(GPIO_Z), 0xffffffff); | 40 | if(intbits) { |
39 | jz_set(GPIO_PAT1(GPIO_Z), 0xffffffff); | 41 | gpio_config(i, intbits, GPIO_INPUT); |
40 | jz_clr(GPIO_PAT0(GPIO_Z), 0xffffffff); | 42 | jz_clr(GPIO_FLAG(i), intbits); |
41 | REG_GPIO_Z_GID2LD = i; | 43 | } |
42 | } | ||
43 | |||
44 | /* Clear flag and disable pull resistor */ | ||
45 | for(int i = 0; i < 4; ++i) { | ||
46 | jz_clr(GPIO_FLAG(i), 0xffffffff); | ||
47 | jz_set(GPIO_PULL(i), 0xffffffff); | ||
48 | } | 44 | } |
49 | } | 45 | } |
50 | 46 | ||