LPC1788 SD Card driver updates from Rommel Marcelo
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5753 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
990c1febf8
commit
0df69d1de3
@ -167,8 +167,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef CONFIG_GPIO_IRQ
|
#ifdef CONFIG_GPIO_IRQ
|
||||||
//~ # define LPC17_VALID_GPIOINT0 (0x7fff8ffful) /* GPIO port 0 interrrupt set */
|
# define LPC17_VALID_GPIOINT0 (0xfffffffful) /* GPIO port 0 interrrupt set */
|
||||||
//~ # define LPC17_VALID_GPIOINT2 (0x00003ffful) /* GPIO port 2 interrupt set */
|
# define LPC17_VALID_GPIOINT2 (0xfffffffful) /* GPIO port 2 interrupt set */
|
||||||
|
|
||||||
/* Set 1: 16 interrupts p0.0-p0.15 */
|
/* Set 1: 16 interrupts p0.0-p0.15 */
|
||||||
|
|
||||||
|
@ -169,12 +169,31 @@ static int lpc17_irq2port(int irq)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined (LPC176x)
|
||||||
/* Set 3: 14 interrupts p2.0-p2.13 */
|
/* Set 3: 14 interrupts p2.0-p2.13 */
|
||||||
|
|
||||||
else if (irq >= LPC17_VALID_FIRST2 && irq < (LPC17_VALID_FIRST2+LPC17_VALID_NIRQS2))
|
else if (irq >= LPC17_VALID_FIRST2 && irq < (LPC17_VALID_FIRST2+LPC17_VALID_NIRQS2))
|
||||||
{
|
{
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#elif defined (LPC178x)
|
||||||
|
/* Set 3: 15 interrupts p2.0-p2.15 */
|
||||||
|
|
||||||
|
else if (irq >= LPC17_VALID_FIRST2L && irq < (LPC17_VALID_FIRST2L+LPC17_VALID_NIRQS2L))
|
||||||
|
{
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set 4: 15 interrupts p2.16-p2.30 */
|
||||||
|
|
||||||
|
else if (irq >= LPC17_VALID_FIRST2H && irq < (LPC17_VALID_FIRST2L+LPC17_VALID_NIRQS2H))
|
||||||
|
{
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -213,6 +232,7 @@ static int lpc17_irq2pin(int irq)
|
|||||||
return irq - LPC17_VALID_FIRST0H + LPC17_VALID_SHIFT0H;
|
return irq - LPC17_VALID_FIRST0H + LPC17_VALID_SHIFT0H;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(LPC176x)
|
||||||
/* Set 3: 14 interrupts p2.0-p2.13
|
/* Set 3: 14 interrupts p2.0-p2.13
|
||||||
*
|
*
|
||||||
* LPC17_VALID_SHIFT2 0 - Bit 0 is the first bit in a group of 14 interrupts
|
* LPC17_VALID_SHIFT2 0 - Bit 0 is the first bit in a group of 14 interrupts
|
||||||
@ -224,6 +244,35 @@ static int lpc17_irq2pin(int irq)
|
|||||||
{
|
{
|
||||||
return irq - LPC17_VALID_FIRST2 + LPC17_VALID_SHIFT2;
|
return irq - LPC17_VALID_FIRST2 + LPC17_VALID_SHIFT2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#elif defined(LPC178x)
|
||||||
|
|
||||||
|
/* Set 3: 15 interrupts p2.0-p2.15
|
||||||
|
*
|
||||||
|
* LPC17_VALID_SHIFT2L 0 - Bit 0 is the first bit in a group of 14 interrupts
|
||||||
|
* LPC17_VALID_FIRST2L irq - IRQ number associated with p2.0
|
||||||
|
* LPC17_VALID_NIRQS2L 15 - 15 interrupt bits in the group
|
||||||
|
*/
|
||||||
|
|
||||||
|
else if (irq >= LPC17_VALID_FIRST2L && irq < (LPC17_VALID_FIRST2L+LPC17_VALID_NIRQS2L))
|
||||||
|
{
|
||||||
|
return irq - LPC17_VALID_FIRST2L + LPC17_VALID_SHIFT2L;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set 3: 15 interrupts p2.16-p2.30
|
||||||
|
*
|
||||||
|
* LPC17_VALID_SHIFT2H 0 - Bit 0 is the first bit in a group of 14 interrupts
|
||||||
|
* LPC17_VALID_FIRST2H irq - IRQ number associated with p2.0
|
||||||
|
* LPC17_VALID_NIRQS2H 15 - 15 interrupt bits in the group
|
||||||
|
*/
|
||||||
|
|
||||||
|
else if (irq >= LPC17_VALID_FIRST2H && irq < (LPC17_VALID_FIRST2H+LPC17_VALID_NIRQS2H))
|
||||||
|
{
|
||||||
|
return irq - LPC17_VALID_FIRST2H + LPC17_VALID_SHIFT2H;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -324,6 +373,7 @@ static int lpc17_gpiointerrupt(int irq, void *context)
|
|||||||
LPC17_VALID_FIRST0L, context);
|
LPC17_VALID_FIRST0L, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(LPC176x)
|
||||||
/* Check for an interrupt on GPIO2 */
|
/* Check for an interrupt on GPIO2 */
|
||||||
|
|
||||||
if ((intstatus & GPIOINT_IOINTSTATUS_P2INT) != 0)
|
if ((intstatus & GPIOINT_IOINTSTATUS_P2INT) != 0)
|
||||||
@ -332,6 +382,17 @@ static int lpc17_gpiointerrupt(int irq, void *context)
|
|||||||
LPC17_VALID_FIRST2, context);
|
LPC17_VALID_FIRST2, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#elif defined(LPC178x)
|
||||||
|
/* Check for an interrupt on GPIO2 */
|
||||||
|
|
||||||
|
if ((intstatus & GPIOINT_IOINTSTATUS_P2INT) != 0)
|
||||||
|
{
|
||||||
|
lpc17_gpiodemux(LPC17_GPIOINT2_BASE, LPC17_VALID_GPIOINT2,
|
||||||
|
LPC17_VALID_FIRST2L, context);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1567,6 +1567,7 @@ static void lpc17_clock(FAR struct sdio_dev_s *dev, enum sdio_clock_e rate)
|
|||||||
|
|
||||||
case CLOCK_MMC_TRANSFER:
|
case CLOCK_MMC_TRANSFER:
|
||||||
clkcr = (SDCARD_CLOCK_MMCXFR | SDCARD_CLOCK_CLKEN);
|
clkcr = (SDCARD_CLOCK_MMCXFR | SDCARD_CLOCK_CLKEN);
|
||||||
|
lpc17_setpwrctrl(SDCARD_PWR_OPENDRAIN);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* SD normal operation clocking (wide 4-bit mode) */
|
/* SD normal operation clocking (wide 4-bit mode) */
|
||||||
|
Loading…
Reference in New Issue
Block a user