summaryrefslogtreecommitdiff
path: root/nuttx/arch/arm/src/lpc17xx
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2010-11-17 03:16:26 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2010-11-17 03:16:26 +0000
commit4f3a80e30cf925912316179463f7f1288bd0aac8 (patch)
treec6eac2ed2d8c57861d33663cebc9c39e11a909ec /nuttx/arch/arm/src/lpc17xx
parent4d176147d29f98d75bcf15c0a377cf92048174e9 (diff)
downloadpx4-nuttx-4f3a80e30cf925912316179463f7f1288bd0aac8.tar.gz
px4-nuttx-4f3a80e30cf925912316179463f7f1288bd0aac8.tar.bz2
px4-nuttx-4f3a80e30cf925912316179463f7f1288bd0aac8.zip
misc updates
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3116 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/arm/src/lpc17xx')
-rw-r--r--nuttx/arch/arm/src/lpc17xx/lpc17_ethernet.c11
-rwxr-xr-xnuttx/arch/arm/src/lpc17xx/lpc17_irq.c28
-rwxr-xr-xnuttx/arch/arm/src/lpc17xx/lpc17_vectors.S2
3 files changed, 35 insertions, 6 deletions
diff --git a/nuttx/arch/arm/src/lpc17xx/lpc17_ethernet.c b/nuttx/arch/arm/src/lpc17xx/lpc17_ethernet.c
index 874ef1c96..33540549c 100644
--- a/nuttx/arch/arm/src/lpc17xx/lpc17_ethernet.c
+++ b/nuttx/arch/arm/src/lpc17xx/lpc17_ethernet.c
@@ -714,10 +714,10 @@ static int lpc17_transmit(struct lpc17_driver_s *priv)
(priv->lp_dev.d_len - 1);
/* Copy the packet data into the Tx buffer assignd to this descriptor. It
- * should fit because each packet buffer is the MTU size and breaking up larger
- * TCP messasges is handled by higher level logic. The hardware does, however,t
- * support breaking up larger messages into many fragments, however, that
- * capability is not exploited here.
+ * should fit because each packet buffer is the MTU size and breaking up
+ * largerTCP messasges is handled by higher level logic. The hardware
+ * does, however, support breaking up larger messages into many fragments,
+ * however, that capability is not exploited here.
*
* This would be a great performance improvement: Remove the buffer from
* the lp_dev structure and replace it a pointer directly into the EMAC
@@ -744,7 +744,8 @@ static int lpc17_transmit(struct lpc17_driver_s *priv)
/* Setup the TX timeout watchdog (perhaps restarting the timer) */
- (void)wd_start(priv->lp_txtimeout, LPC17_TXTIMEOUT, lpc17_txtimeout, 1, (uint32_t)priv);
+ (void)wd_start(priv->lp_txtimeout, LPC17_TXTIMEOUT, lpc17_txtimeout,
+ 1, (uint32_t)priv);
return OK;
}
diff --git a/nuttx/arch/arm/src/lpc17xx/lpc17_irq.c b/nuttx/arch/arm/src/lpc17xx/lpc17_irq.c
index 886bb7480..59802d87d 100755
--- a/nuttx/arch/arm/src/lpc17xx/lpc17_irq.c
+++ b/nuttx/arch/arm/src/lpc17xx/lpc17_irq.c
@@ -260,6 +260,33 @@ static int lpc17_irqinfo(int irq, uint32_t *regaddr, uint32_t *bit)
}
/****************************************************************************
+ * Name: lpc17_clrpend
+ *
+ * Description:
+ * Clear a pending interrupt.
+ *
+ ****************************************************************************/
+
+static inline void lpc17_clrpend(int irq)
+{
+#if 0 /* Necessary? */
+ /* Check for external interrupt */
+
+ if (irq >= LPC17_IRQ_EXTINT)
+ {
+ if (irq < (LPC17_IRQ_EXTINT+32))
+ {
+ putreg32(1 << (irq - LPC17_IRQ_EXTINT), NVIC_IRQ0_31_CLRPEND);
+ }
+ else if (irq < LPC17_IRQ_NIRQS)
+ {
+ putreg32(1 << (irq - LPC17_IRQ_EXTINT - 32), NVIC_IRQ32_63_CLRPEND);
+ }
+ }
+#endif
+}
+
+/****************************************************************************
* Public Functions
****************************************************************************/
@@ -426,6 +453,7 @@ void up_enable_irq(int irq)
void up_maskack_irq(int irq)
{
up_disable_irq(irq);
+ lpc17_clrpend(irq);
}
/****************************************************************************
diff --git a/nuttx/arch/arm/src/lpc17xx/lpc17_vectors.S b/nuttx/arch/arm/src/lpc17xx/lpc17_vectors.S
index 8498dd87a..ae36da345 100755
--- a/nuttx/arch/arm/src/lpc17xx/lpc17_vectors.S
+++ b/nuttx/arch/arm/src/lpc17xx/lpc17_vectors.S
@@ -295,7 +295,7 @@ lpc17_common:
2:
msr msp, r1 /* Recover the return MSP value */
- /* Do we need to restore interrupts? */
+ /* Do we need to restore interrupts? Why not just: msr primask, r3 */
tst r3, #1 /* PRIMASK bit 1=1 means that interrupts are masked */
bne 3f