Esempio n. 1
0
/* Configure pin function */
void Chip_SCU_PinMux(uint8_t port, uint8_t pin, uint8_t mode, uint8_t func)
{
	if (port == PINMUX_CLK) {
		LPC_SCU_CLK(((uint32_t) LPC_SCU), pin) = mode + func;
	}
	else {
		LPC_SCU->SFSP[port][pin] = mode + func;
	}
}
Esempio n. 2
0
/*----------------------------------------------------------------------------
  Initialize board specific IO
 *----------------------------------------------------------------------------*/
void vIOInit(void)
{	
	uint32_t *conf;

	// disable clocks to peripherals we don't use	
	LPC_CCU1->CLK_APB3_I2C1_CFG = 0;
	LPC_CCU1->CLK_APB3_DAC_CFG = 0;
	LPC_CCU1->CLK_APB3_ADC1_CFG = 0;
	LPC_CCU1->CLK_APB3_CAN0_CFG = 0;
	LPC_CCU1->CLK_APB1_MOTOCONPWM_CFG = 0;
	LPC_CCU1->CLK_APB1_I2S_CFG = 0;
	LPC_CCU1->CLK_APB1_CAN1_CFG = 0;
	LPC_CCU1->CLK_M4_LCD_CFG = 0;
	LPC_CCU1->CLK_M4_ETHERNET_CFG = 0;
	LPC_CCU1->CLK_M4_EMC_CFG = 0;
	LPC_CCU1->CLK_M4_SDIO_CFG = 0;
	LPC_CCU1->CLK_M4_USB1_CFG = 0;
	LPC_CCU1->CLK_M4_EMCDIV_CFG = 0;

	LPC_CCU1->CLK_M4_USART2_CFG = 0;
	LPC_CCU1->CLK_M4_USART3_CFG = 0;

	LPC_CCU1->CLK_M4_SSP0_CFG = 0;
	LPC_CCU1->CLK_M4_QEI_CFG = 0;
	LPC_CCU1->CLK_PERIPH_SGPIO_CFG = 0;

	LPC_CCU2->CLK_APB0_SSP0_CFG = 0;
	LPC_CCU2->CLK_APB2_USART3_CFG = 0;
	LPC_CCU2->CLK_APB2_USART2_CFG = 0;
	LPC_CCU2->CLK_SDIO_CFG = 0;

	// reset all pin configs
	for (conf=(uint32_t *)0x40086000; conf<(uint32_t *)0x400867ac; conf++)
		*conf = 0; 

	scu_pinmux(0x0, 0,  (MD_PUP | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	     // gpio0[0] siod
	scu_pinmux(0x0, 1,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	     // gpio0[1] sioc
	scu_pinmux(0x1, 15, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	     // gpio0[2] PWDN
	scu_pinmux(0x1, 16, (MD_PUP | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	     // gpio0[3] RSTB

	scu_pinmux(0x1, 7,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0);          // gpio1[0] Y0 
	scu_pinmux(0x1, 8,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0);          // gpio1[1] Y1
	scu_pinmux(0x1, 9,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0);          // gpio1[2] Y2
	scu_pinmux(0x1, 10, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0);          // gpio1[3] Y3
	scu_pinmux(0x1, 11, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	     // gpio1[4] Y4
	scu_pinmux(0x1, 12, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	     // gpio1[5] Y5
	scu_pinmux(0x1, 13, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	     // gpio1[6] Y6
	scu_pinmux(0x1, 14, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	     // gpio1[7] Y7
	scu_pinmux(0x1, 5,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	     // gpio1[8] Y8
	scu_pinmux(0x1, 6,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	     // gpio1[9] Y9
	scu_pinmux(0x2, 11, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	     // gpio1[11] HSYNC
	scu_pinmux(0x2, 12, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	     // gpio1[12] VSYNC
	scu_pinmux(0x2, 13, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	     // gpio1[13] PCLK
	scu_pinmux(0x6, 5, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC1); 	         // CTOUT_6 RCS0	CHANGED FROM FUNC1 TO FUNC0
	scu_pinmux(0x6, 12, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC1); 	     // CTOUT_7 RCS1

	scu_pinmux(0x4, 2, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC1); 	         // CTOUT_0 RED		ORIGINALLY FUNC1
	scu_pinmux(0x2, 7, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC1); 	         // CTOUT_1 GREEN	ORIGINALLY FUNC1
	scu_pinmux(0x2, 10, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC1); 	     // CTOUT_2 BLUE		ORIGINALLY FUNC1

	scu_pinmux(0x3, 1, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC4); 	         // gpio5[8] VBUS_EN

	scu_pinmux(0x5, 6, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC4); 	         // U1_TXD (output)
	scu_pinmux(0x5, 7, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC4); 	         // U1_RXD (input)
	scu_pinmux(0x2, 0, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC4); 	         // U0_TXD 
	scu_pinmux(0x2, 1, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC4); 	         // U0_RXD

	scu_pinmux(0x1, 3, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC5); 	         // SSP1_MISO 
	scu_pinmux(0x1, 4, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC5); 	         // SSP1_MOSI 
	scu_pinmux(0x1, 19, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC1); 	         // SSP1_SCK 
	scu_pinmux(0x1, 20, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC1); 	         // SSP1_SSEL 
	scu_pinmux(0x2, 2, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC4); 	         // gpio5[2] 
	scu_pinmux(0x2, 3, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC4); 	         // gpio5[3] 
	scu_pinmux(0x2, 4, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC4); 	         // gpio5[4] 
	scu_pinmux(0x2, 5, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC4); 	         // gpio5[5] rev 1.1 SS control
	scu_pinmux(0x3, 2, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC4); 	         // gpio5[9]
	
	scu_pinmux(0x2, 8, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC4); 	         // push-button gpio5[7]
	scu_pinmux(0x4, 1, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	         // gpio2[1] rev 1.1 


	//scu_pinmux(0x7, 4, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	     // gpio4[9] 
	//scu_pinmux(0x7, 5, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	     // gpio4[9] 
	//scu_pinmux(0x7, 6, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	     // gpio4[9] 
	//scu_pinmux(0x7, 7, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC0); 	     // gpio4[9] 

	LPC_SCU_CLK(0) = 1 + (MD_PLN | MD_EZI | MD_ZI | MD_EHS); /*  EXTBUS_CLK0  IDIVB input */
}
Esempio n. 3
0
void MemoryPinInit(void)
{
  /* select correct functions on the GPIOs */

#if 1
  /* DATA LINES 0..31 > D0..D31 */
  	/* P1_7 - EXTBUS_D0 — External memory data line 0 */
    scu_pinmux(0x1,  7,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* P1_7: D0 (function 0) errata */
    scu_pinmux(0x1,  8,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* P1_8: D1 (function 0) errata */
    scu_pinmux(0x1,  9,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* P1_9: D2 (function 0) errata */
    scu_pinmux(0x1,  10, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* P1_10: D3 (function 0) errata */
    scu_pinmux(0x1,  11, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* P1_11: D4 (function 0) errata */
    scu_pinmux(0x1,  12, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* P1_12: D5 (function 0) errata */
    scu_pinmux(0x1,  13, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* P1_13: D6 (function 0) errata */
    scu_pinmux(0x1,  14, (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* P1_14: D7 (function 0) errata */
    scu_pinmux(0x5,  4,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);  /* P5_4: D8 (function 0) errata */
    scu_pinmux(0x5,  5,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);  /* P5_5: D9 (function 0) errata */
    scu_pinmux(0x5,  6,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);  /* P5_6: D10 (function 0) errata */
    scu_pinmux(0x5,  7,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);  /* P5_7: D11 (function 0) errata */
    scu_pinmux(0x5,  0,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);  /* P5_0: D12 (function 0) errata */
    scu_pinmux(0x5,  1,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);  /* P5_1: D13 (function 0) errata */
    scu_pinmux(0x5,  2,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);  /* P5_2: D14 (function 0) errata */
    scu_pinmux(0x5,  3,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);  /* P5_3: D15 (function 0) errata */
#if 1
    scu_pinmux(0xD,  2,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);  /* PD_2: D16 (function 0) errata */
    scu_pinmux(0xD,  3,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);  /* PD_3: D17 (function 0) errata */
    scu_pinmux(0xD,  4,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);  /* PD_4: D18 (function 0) errata */
    scu_pinmux(0xD,  5,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);  /* PD_5: D19 (function 0) errata */
    scu_pinmux(0xD,  6,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);  /* PD_6: D20 (function 0) errata */
    scu_pinmux(0xD,  7,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);  /* PD_7: D21 (function 0) errata */
    scu_pinmux(0xD,  8,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);  /* PD_8: D22 (function 0) errata */
    scu_pinmux(0xD,  9,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);  /* PD_9: D23 (function 0) errata */
    scu_pinmux(0xE,  5,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* PE_5: D24 (function 0) errata */
    scu_pinmux(0xE,  6,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* PE_6: D25 (function 0) errata */
    scu_pinmux(0xE,  7,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* PE_7: D26 (function 0) errata */
    scu_pinmux(0xE,  8,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* PE_8: D27 (function 0) errata */
    scu_pinmux(0xE,  9,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* PE_9: D28 (function 0) errata */
    scu_pinmux(0xE, 10,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* PE_10: D29 (function 0) errata */
    scu_pinmux(0xE, 11,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* PE_11: D30 (function 0) errata */
    scu_pinmux(0xE, 12,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* PE_12: D31 (function 0) errata */
#endif

  /* ADDRESS LINES A0..A11 > A0..A11 */
	scu_pinmux(0x2,  9,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);	/* P2_9 - EXTBUS_A0 — External memory address line 0 */
	scu_pinmux(0x2, 10,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);	/* P2_10 - EXTBUS_A1 — External memory address line 1 */	
	scu_pinmux(0x2, 11,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);	/* P2_11 - EXTBUS_A2 — External memory address line 2 */	
	scu_pinmux(0x2, 12,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);	/* P2_12 - EXTBUS_A3 — External memory address line 3 */
	scu_pinmux(0x2, 13,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);	/* P2_13 - EXTBUS_A4 — External memory address line 4 */	
	scu_pinmux(0x1,  0,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);	/* P1_0 - EXTBUS_A5 — External memory address line 5 */
	scu_pinmux(0x1,  1,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);	/* P1_1 - EXTBUS_A6 — External memory address line 6 */	
	scu_pinmux(0x1,  2,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);	/* P1_2 - EXTBUS_A7 — External memory address line 7 */	
	scu_pinmux(0x2,  8,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);	/* P2_8 - EXTBUS_A8 — External memory address line 8 */
	scu_pinmux(0x2,  7,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);	/* P2_7 - EXTBUS_A9 — External memory address line 9 */	
	scu_pinmux(0x2,  6,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);	/* P2_6 - EXTBUS_A10 — External memory address line 10 */
	scu_pinmux(0x2,  2,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);	/* P2_2 - EXTBUS_A11 — External memory address line 11 */
	scu_pinmux(0x2,  1,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);	/* P2_1 - EXTBUS_A12 — External memory address line 12 */
	scu_pinmux(0x2,  0,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);	/* P2_0 - EXTBUS_A13 — External memory address line 13 */	
	scu_pinmux(0x6,  8,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC1);	/* P6_8 - EXTBUS_A14 — External memory address line 14 */
	scu_pinmux(0x6,  7,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC1);	/* P6_7 - EXTBUS_A15 — External memory address line 15 */	
	scu_pinmux(0xD, 16,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);	/* PD_16 - EXTBUS_A16 — External memory address line 16 */
	scu_pinmux(0xD, 15,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);	/* PD_15 - EXTBUS_A17 — External memory address line 17 */	
	scu_pinmux(0xE,  0,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);	/* PE_0 - EXTBUS_A18 — External memory address line 18 */
	scu_pinmux(0xE,  1,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);	/* PE_1 - EXTBUS_A19 — External memory address line 19 */
	scu_pinmux(0xE,  2,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);	/* PE_2 - EXTBUS_A20 — External memory address line 20 */
	scu_pinmux(0xE,  3,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);	/* PE_3 - EXTBUS_A21 — External memory address line 21 */
	scu_pinmux(0xE,  4,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);	/* PE_4 - EXTBUS_A22 — External memory address line 22 */	
	scu_pinmux(0xA,  4,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);	/* PA_4 - EXTBUS_A23 — External memory address line 23 */

  /* BYTE ENABLES */
	scu_pinmux(0x1,  4,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);	/* P1_4 - EXTBUS_BLS0 — LOW active Byte Lane select signal 0 */
	scu_pinmux(0x6,  6,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC1);	/* P6_6 - EXTBUS_BLS1 — LOW active Byte Lane select signal 1 */	
	scu_pinmux(0xD, 13,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);	/* PD_13 - EXTBUS_BLS2 — LOW active Byte Lane select signal 2 */
	scu_pinmux(0xD, 10,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);	/* PD_10 - EXTBUS_BLS3 — LOW active Byte Lane select signal 3 */		

    scu_pinmux(0x6,  9,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* P6_9: EXTBUS_DYCS0  (function 0) > CS# errata */
    scu_pinmux(0x1,  6,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* P1_6: WE (function 0) errata */
    scu_pinmux(0x6,  4,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* P6_4: CAS  (function 0) > CAS# errata */
    scu_pinmux(0x6,  5,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* P6_5: RAS  (function 0) > RAS# errata */

	LPC_SCU_CLK(0) = 0 + (MD_PLN | MD_EZI | MD_ZI | MD_EHS); /* SFSCLK0: EXTBUS_CLK0  (function 0, from datasheet) > CLK ds */
    LPC_SCU_CLK(1) = 0 + (MD_PLN | MD_EZI | MD_ZI | MD_EHS); /* SFSCLK1: EXTBUS_CLK1  (function 2, from datasheet) */
    LPC_SCU_CLK(2) = 0 + (MD_PLN | MD_EZI | MD_ZI | MD_EHS); /* SFSCLK2: EXTBUS_CLK2  (function 2, from datasheet) */
    LPC_SCU_CLK(3) = 0 + (MD_PLN | MD_EZI | MD_ZI | MD_EHS); /* SFSCLK3: EXTBUS_CLK3  (function 2, from datasheet) */

    scu_pinmux(0x6, 11,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* P6_11: CKEOUT0  (function 0) > CKE errata */
    scu_pinmux(0x6, 12,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* P6_12: DQMOUT0  (function 0) > DQM0 errata */
    scu_pinmux(0x6, 10,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* P6_10: DQMOUT1  (function 0) > DQM1 errata */
    scu_pinmux(0xD,  0,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC2);  /* PD_0: DQMOUT2  (function 2, from datasheet) > DQM2 errata */
    scu_pinmux(0xE, 13,  (MD_PLN | MD_EZI | MD_ZI | MD_EHS), FUNC3);  /* PE_13: DQMOUT3  (function 3, from datasheet) > DQM3 errata */

	scu_pinmux(	1	,	3	,	MD_PLN_FAST	,	3	);	//OE
	scu_pinmux(	1	,	4	,	MD_PLN_FAST	,	3	);	//BLS0
	scu_pinmux(	1	,	5	,	MD_PLN_FAST	,	3	);	//CS0
	scu_pinmux(	1	,	6	,	MD_PLN_FAST	,	3	);	//WE

#endif
}
Esempio n. 4
0
/****************************************************************************************
* Set up the address/data pins for external memory interface in LP43xx
*
* Modify this function in case not all of the address/data pins are needed.
****************************************************************************************/
void EMC_Config_Pinmux(void)
{

    // Disable the external memory controller before changing pin control configuration
    LPC_EMC->CONTROL = 0x00000000;

// EMC_OUT	   (PUP_CLEAR | SLEWRATE_FAST | FILTER_DISABLE)
// EMC_IO	   (PUP_CLEAR | SLEWRATE_FAST | INBUF_ENABLE | FILTER_DISABLE)

    // Data line configuration
    scu_pinmux(0x1,  7, EMC_IO, FUNC3);  // P1_7:   D0
    scu_pinmux(0x1,  8, EMC_IO, FUNC3);  // P1_8:   D1
    scu_pinmux(0x1,  9, EMC_IO, FUNC3);  // P1_9:   D2
    scu_pinmux(0x1, 10, EMC_IO, FUNC3);  // P1_10:  D3
    scu_pinmux(0x1, 11, EMC_IO, FUNC3);  // P1_11:  D4
    scu_pinmux(0x1, 12, EMC_IO, FUNC3);  // P1_12:  D5
    scu_pinmux(0x1, 13, EMC_IO, FUNC3);  // P1_13:  D6
    scu_pinmux(0x1, 14, EMC_IO, FUNC3);  // P1_14:  D7
    scu_pinmux(0x5,  4, EMC_IO, FUNC2);  // P5_4:   D8
    scu_pinmux(0x5,  5, EMC_IO, FUNC2);  // P5_5:   D9
    scu_pinmux(0x5,  6, EMC_IO, FUNC2);  // P5_6:   D10
    scu_pinmux(0x5,  7, EMC_IO, FUNC2);  // P5_7:  D11
    scu_pinmux(0x5,  0, EMC_IO, FUNC2);  // P5_0:  D12
    scu_pinmux(0x5,  1, EMC_IO, FUNC2);  // P5_1:  D13
    scu_pinmux(0x5,  2, EMC_IO, FUNC2);  // P5_2:  D14
    scu_pinmux(0x5,  3, EMC_IO, FUNC2);  // P5_3:  D15
    scu_pinmux(0xD,  2, EMC_IO, FUNC2);  // PD_2:  D16
    scu_pinmux(0xD,  3, EMC_IO, FUNC2);  // PD_3:  D17
    scu_pinmux(0xD,  4, EMC_IO, FUNC2);  // PD_4:  D18
    scu_pinmux(0xD,  5, EMC_IO, FUNC2);  // PD_5:  D19
    scu_pinmux(0xD,  6, EMC_IO, FUNC2);  // PD_6:  D20
    scu_pinmux(0xD,  7, EMC_IO, FUNC2);  // PD_7:  D21
    scu_pinmux(0xD,  8, EMC_IO, FUNC2);  // PD_8:  D22
    scu_pinmux(0xD,  9, EMC_IO, FUNC2);  // PD_9:  D23
    scu_pinmux(0xE,  5, EMC_IO, FUNC3);  // PE_5:  D24
    scu_pinmux(0xE,  6, EMC_IO, FUNC3);  // PE_6:  D25
    scu_pinmux(0xE,  7, EMC_IO, FUNC3);  // PE_7:  D26
    scu_pinmux(0xE,  8, EMC_IO, FUNC3);  // PE_8:  D27
    scu_pinmux(0xE,  9, EMC_IO, FUNC3);  // PE_9:  D28
    scu_pinmux(0xE, 10, EMC_IO, FUNC3);  // PE_10: D29
    scu_pinmux(0xE, 11, EMC_IO, FUNC3);  // PE_11: D30
    scu_pinmux(0xE, 12, EMC_IO, FUNC3);  // PE_12: D31

    // Address line configuration
    scu_pinmux(0x2,  9, EMC_IO, FUNC3);  // P2_9: A0
    scu_pinmux(0x2, 10, EMC_IO, FUNC3);  // P2_10: A1
    scu_pinmux(0x2, 11, EMC_IO, FUNC3);  // P2_11: A2
    scu_pinmux(0x2, 12, EMC_IO, FUNC3);  // P2_12: A3
    scu_pinmux(0x2, 13, EMC_IO, FUNC3);  // P2_13: A4
    scu_pinmux(0x1,  0, EMC_IO, FUNC2);  // P1_0: A5
    scu_pinmux(0x1,  1, EMC_IO, FUNC2);  // P1_1: A6
    scu_pinmux(0x1,  2, EMC_IO, FUNC2);  // P1_2: A7
    scu_pinmux(0x2,  8, EMC_IO, FUNC3);  // P2_8: A8
    scu_pinmux(0x2,  7, EMC_IO, FUNC3);  // P2_7: A9
    scu_pinmux(0x2,  6, EMC_IO, FUNC2);  // P2_6: A10
    scu_pinmux(0x2,  2, EMC_IO, FUNC2);  // P2_2: A11
    scu_pinmux(0x2,  1, EMC_IO, FUNC2);  // P2_0: A12
    scu_pinmux(0x2,  0, EMC_IO, FUNC2);  // P2_0: A13
    scu_pinmux(0x6,  8, EMC_IO, FUNC1);  // P6_8: A14
    scu_pinmux(0x6,  7, EMC_IO, FUNC1);  // P6_7: A15
    scu_pinmux(0xD, 16, EMC_IO, FUNC2);  // PD_16: A16
    scu_pinmux(0xD, 15, EMC_IO, FUNC2);  // PD_15: A17
    scu_pinmux(0xE,  0, EMC_IO, FUNC3);  // PE_0: A18
    scu_pinmux(0xE,  1, EMC_IO, FUNC3);  // PE_1: A19
    scu_pinmux(0xE,  2, EMC_IO, FUNC3);  // PE_2: A20
    scu_pinmux(0xE,  3, EMC_IO, FUNC3);  // PE_3: A21
    scu_pinmux(0xE,  4, EMC_IO, FUNC3);  // PE_4: A22

    // Control signals for static memory
    scu_pinmux(0x1,  6, EMC_IO, FUNC3);  // P1_6: WE
    scu_pinmux(0x1,  5, EMC_IO, FUNC3);  // P1_5: CS0
    scu_pinmux(0x1,  3, EMC_IO, FUNC3);  // P1_6: OE
    scu_pinmux(0x1,  4, EMC_IO, FUNC3);  // P1_5: BLS0
    scu_pinmux(0x6,  6, EMC_IO, FUNC1);  // P1_6: BLS1
    scu_pinmux(0xD, 12, EMC_IO, FUNC2);  // PD_12: CS2

#if (USE_EXT_DYNAMIC_MEM == YES)
    // Control signals for dynamic memory
    scu_pinmux(0x6,  9, EMC_IO, FUNC3);  // P6_9: DYCS0
    scu_pinmux(0x6,  4, EMC_IO, FUNC3);  // P6_4: CAS
    scu_pinmux(0x6,  5, EMC_IO, FUNC3);  // P6_5: RAS
    scu_pinmux(0x6, 11, EMC_IO, FUNC3);  // P6_11: CKEOUT0
    scu_pinmux(0x6, 12, EMC_IO, FUNC3);  // P6_12: DQMOUT0
    scu_pinmux(0x6, 10, EMC_IO, FUNC3);  // P6_10: DQMOUT1

    LPC_SCU_CLK(0) = 0 + EMC_IO;   // EMC_CLK0 signal on pin CLK0 (needed for SDRAM)
    LPC_SCU_CLK(1) = 0 + EMC_IO;
    LPC_SCU_CLK(2) = 0 + EMC_IO;
    LPC_SCU_CLK(3) = 0 + EMC_IO;
#endif

}