From 4ca286201676e5b2f43f807085785686f61266d0 Mon Sep 17 00:00:00 2001 From: patacongo Date: Mon, 25 Jun 2012 15:24:52 +0000 Subject: [PATCH] Fix a critical PIC32 GPIO configuration bug git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4867 42af7a65-404d-4744-a932-0658087f49c3 --- arch/mips/src/pic32mx/pic32mx-gpio.c | 8 +++----- arch/mips/src/pic32mx/pic32mx-ioport.h | 1 + 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/arch/mips/src/pic32mx/pic32mx-gpio.c b/arch/mips/src/pic32mx/pic32mx-gpio.c index a4bef47836..ecff125adf 100644 --- a/arch/mips/src/pic32mx/pic32mx-gpio.c +++ b/arch/mips/src/pic32mx/pic32mx-gpio.c @@ -160,7 +160,7 @@ int pic32mx_configgpio(uint16_t cfgset) sched_lock(); if (pic32mx_output(cfgset)) { - /* It is an output; set the corresponding bit in the TRIS register */ + /* It is an output; clear the corresponding bit in the TRIS register */ putreg32(1 << pin, base + PIC32MX_IOPORT_TRISCLR_OFFSET); @@ -189,11 +189,9 @@ int pic32mx_configgpio(uint16_t cfgset) } else { - /* It is an input; clear the corresponding bit in the TRIS - * register. - */ + /* It is an input; set the corresponding bit in the TRIS register. */ - putreg32(1 << pin, base + PIC32MX_IOPORT_TRISCLR_OFFSET); + putreg32(1 << pin, base + PIC32MX_IOPORT_TRISSET_OFFSET); putreg32(1 << pin, base + PIC32MX_IOPORT_ODCCLR_OFFSET); } diff --git a/arch/mips/src/pic32mx/pic32mx-ioport.h b/arch/mips/src/pic32mx/pic32mx-ioport.h index 578ce055bb..fb70676fe4 100644 --- a/arch/mips/src/pic32mx/pic32mx-ioport.h +++ b/arch/mips/src/pic32mx/pic32mx-ioport.h @@ -73,6 +73,7 @@ # define PIC32MX_IOPORT_ODCCLR_OFFSET 0x0044 /* Open drain control clear register */ # define PIC32MX_IOPORT_ODCSET_OFFSET 0x0048 /* Open drain control set register */ # define PIC32MX_IOPORT_ODCINV_OFFSET 0x004c /* Open drain control invert register */ + # define PIC32MX_IOPORT_CNPU_OFFSET 0x0050 /* Change Notification Pull-up register */ # define PIC32MX_IOPORT_CNPUCLR_OFFSET 0x0054 /* Change Notification Pull-up clear register */ # define PIC32MX_IOPORT_CNPUSET_OFFSET 0x0058 /* Change Notification Pull-up set register */