summaryrefslogtreecommitdiff
path: root/firmware/target/mips/ingenic_x1000
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/mips/ingenic_x1000')
-rw-r--r--firmware/target/mips/ingenic_x1000/gpio-x1000.c20
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