/** \fn int32_t LED_Uninitialize (void) \brief De-initialize LEDs \returns - \b 0: function succeeded - \b -1: function failed */ int32_t LED_Uninitialize (void) { uint32_t n; /* Unconfigure pins: turn off Pull-up/down resistors */ for (n = 0; n < LED_COUNT; n++) { SCU_PinConfigure (LED_PIN[n].port, LED_PIN[n].num, 0); } return 0; }
/** \fn void USB0_PinsConfigure (void) \brief Configure USB pins */ void USB0_PinsConfigure (void) { // Common (Device and Host) Pins #if (RTE_USB0_IND0_PIN_EN) SCU_PinConfigure(RTE_USB0_IND0_PORT, RTE_USB0_IND0_BIT, RTE_USB0_IND0_FUNC); #endif #if (RTE_USB0_IND1_PIN_EN) SCU_PinConfigure(RTE_USB0_IND1_PORT, RTE_USB0_IND1_BIT, RTE_USB0_IND1_FUNC); #endif // Host Pins if (USB0_role == ARM_USB_ROLE_HOST) { #if (RTE_USB0_PPWR_PIN_EN) SCU_PinConfigure(RTE_USB0_PPWR_PORT, RTE_USB0_PPWR_BIT, RTE_USB0_PPWR_FUNC); #endif #if (RTE_USB0_PWR_FAULT_PIN_EN) SCU_PinConfigure(RTE_USB0_PWR_FAULT_PORT, RTE_USB0_PWR_FAULT_BIT, RTE_USB0_PWR_FAULT_FUNC); #endif } }
/** \fn int32_t LED_Initialize (void) \brief Initialize LEDs \returns - \b 0: function succeeded - \b -1: function failed */ int32_t LED_Initialize (void) { uint32_t n; /* Enable GPIO clock */ GPIO_PortClock (1); /* Configure pins: Output Mode with Pull-down resistors */ for (n = 0; n < LED_COUNT; n++) { SCU_PinConfigure (LED_PIN[n].port, LED_PIN[n].num, LED_PIN[n].config_val); GPIO_SetDir (LED_GPIO[n].port, LED_GPIO[n].num, GPIO_DIR_OUTPUT); GPIO_PinWrite (LED_GPIO[n].port, LED_GPIO[n].num, 0); } return 0; }
/** \fn int32_t Uninitialize (void) \brief De-initialize Memory Card Interface. \return \ref execution_status */ static int32_t Uninitialize (void) { /* Change SDIO base clock from PLL1 to IRC */ LPC_CGU->BASE_SDIO_CLK = (0x01 << 11) | (0x01 << 24); /* Unconfigure SD_CLK and SD_CMD and SD_DAT0 */ if (RTE_SD_CLK_PORT == 0x10) { SCU_CLK_PinConfigure (RTE_SD_CLK_PIN, 0); } else { SCU_PinConfigure(RTE_SD_CLK_PORT, RTE_SD_CLK_PIN, 0); } SCU_PinConfigure(RTE_SD_CMD_PORT, RTE_SD_CMD_PIN, 0); SCU_PinConfigure(RTE_SD_DAT0_PORT, RTE_SD_DAT0_PIN, 0); #if (RTE_SDMMC_BUS_WIDTH_4) /* SD_DAT[3..1] */ SCU_PinConfigure(RTE_SD_DAT1_PORT, RTE_SD_DAT1_PIN, 0); SCU_PinConfigure(RTE_SD_DAT2_PORT, RTE_SD_DAT2_PIN, 0); SCU_PinConfigure(RTE_SD_DAT3_PORT, RTE_SD_DAT3_PIN, 0); #if (RTE_SDMMC_BUS_WIDTH_8) /* SD_DAT[7..4] */ SCU_PinConfigure(RTE_SD_DAT4_PORT, RTE_SD_DAT4_PIN, 0); SCU_PinConfigure(RTE_SD_DAT5_PORT, RTE_SD_DAT5_PIN, 0); SCU_PinConfigure(RTE_SD_DAT6_PORT, RTE_SD_DAT6_PIN, 0); SCU_PinConfigure(RTE_SD_DAT7_PORT, RTE_SD_DAT7_PIN, 0); #endif /* RTE_SDMMC_BUS_WIDTH_8 */ #endif /* RTE_SDMMC_BUS_WIDTH_4 */ /* Unconfigure SD_CD (Card Detect) Pin */ #if (RTE_SD_CD_PIN_EN) SCU_PinConfigure(RTE_SD_CD_PORT, RTE_SD_CD_PIN, 0); #endif /* Unconfigure SD_WP (Write Protect) Pin */ #if (RTE_SD_WP_PIN_EN) SCU_PinConfigure(RTE_SD_WP_PORT, RTE_SD_WP_PIN, 0); #endif /* Unconfigure SD_POW Pin */ #if (RTE_SD_POW_PIN_EN) SCU_PinConfigure(RTE_SD_POW_PORT, RTE_SD_POW_PIN, 0); #endif /* Unconfigure SD_RST Pin */ #if (RTE_SD_RST_PIN_EN) SCU_PinConfigure(RTE_SD_RST_PORT, RTE_SD_RST_PIN, 0); #endif MCI.flags = 0; return ARM_DRIVER_OK; }
/** \fn int32_t Initialize (ARM_MCI_SignalEvent_t cb_event) \brief Initialize the Memory Card Interface \param[in] cb_event Pointer to \ref ARM_MCI_SignalEvent \return \ref execution_status */ static int32_t Initialize (ARM_MCI_SignalEvent_t cb_event) { if (MCI.flags & MCI_INIT) { return ARM_DRIVER_OK; } /* Enable GPIO register interface clock */ LPC_CCU1->CLK_M3_GPIO_CFG |= CCU_CLK_CFG_AUTO | CCU_CLK_CFG_RUN; while (!(LPC_CCU1->CLK_M3_GPIO_STAT & CCU_CLK_STAT_RUN)); /* Configure SD_CLK, SD_CMD and SD_DAT0 */ if (RTE_SD_CLK_PORT == 0x10) { SCU_CLK_PinConfigure (RTE_SD_CLK_PIN, RTE_SD_CLK_FUNC | SCU_PIN_CFG_PULLUP_DIS | SCU_PIN_CFG_INPUT_BUFFER_EN | SCU_PIN_CFG_INPUT_FILTER_DIS); } else { SCU_PinConfigure(RTE_SD_CLK_PORT, RTE_SD_CLK_PIN, RTE_SD_CLK_FUNC | SCU_PIN_CFG_PULLUP_DIS | SCU_PIN_CFG_INPUT_BUFFER_EN | SCU_PIN_CFG_INPUT_FILTER_DIS); } SCU_PinConfigure(RTE_SD_CMD_PORT, RTE_SD_CMD_PIN, RTE_SD_CMD_FUNC | SCU_PIN_CFG_PULLUP_DIS | SCU_PIN_CFG_INPUT_BUFFER_EN | SCU_PIN_CFG_INPUT_FILTER_DIS); SCU_PinConfigure(RTE_SD_DAT0_PORT, RTE_SD_DAT0_PIN, RTE_SD_DAT0_FUNC | SCU_PIN_CFG_PULLUP_DIS | SCU_PIN_CFG_INPUT_BUFFER_EN | SCU_PIN_CFG_INPUT_FILTER_DIS); #if (RTE_SDMMC_BUS_WIDTH_4) /* SD_DAT[3..1] */ SCU_PinConfigure(RTE_SD_DAT3_PORT, RTE_SD_DAT3_PIN, RTE_SD_DAT3_FUNC | SCU_PIN_CFG_PULLUP_DIS | SCU_PIN_CFG_INPUT_BUFFER_EN | SCU_PIN_CFG_INPUT_FILTER_DIS); SCU_PinConfigure(RTE_SD_DAT2_PORT, RTE_SD_DAT2_PIN, RTE_SD_DAT2_FUNC | SCU_PIN_CFG_PULLUP_DIS | SCU_PIN_CFG_INPUT_BUFFER_EN | SCU_PIN_CFG_INPUT_FILTER_DIS); SCU_PinConfigure(RTE_SD_DAT1_PORT, RTE_SD_DAT1_PIN, RTE_SD_DAT1_FUNC | SCU_PIN_CFG_PULLUP_DIS | SCU_PIN_CFG_INPUT_BUFFER_EN | SCU_PIN_CFG_INPUT_FILTER_DIS); #if (RTE_SDMMC_BUS_WIDTH_8) /* SD_DAT[7..4] */ SCU_PinConfigure(RTE_SD_DAT4_PORT, RTE_SD_DAT4_PIN, RTE_SD_DAT4_FUNC | SCU_PIN_CFG_PULLUP_DIS | SCU_PIN_CFG_INPUT_BUFFER_EN | SCU_PIN_CFG_INPUT_FILTER_DIS); SCU_PinConfigure(RTE_SD_DAT5_PORT, RTE_SD_DAT5_PIN, RTE_SD_DAT5_FUNC | SCU_PIN_CFG_PULLUP_DIS | SCU_PIN_CFG_INPUT_BUFFER_EN | SCU_PIN_CFG_INPUT_FILTER_DIS); SCU_PinConfigure(RTE_SD_DAT6_PORT, RTE_SD_DAT6_PIN, RTE_SD_DAT6_FUNC | SCU_PIN_CFG_PULLUP_DIS | SCU_PIN_CFG_INPUT_BUFFER_EN | SCU_PIN_CFG_INPUT_FILTER_DIS); SCU_PinConfigure(RTE_SD_DAT7_PORT, RTE_SD_DAT7_PIN, RTE_SD_DAT7_FUNC | SCU_PIN_CFG_PULLUP_DIS | SCU_PIN_CFG_INPUT_BUFFER_EN | SCU_PIN_CFG_INPUT_FILTER_DIS); #endif /* RTE_SDMMC_BUS_WIDTH_8 */ #endif /* RTE_SDMMC_BUS_WIDTH_4 */ #if (RTE_SD_CD_PIN_EN) /* Configure SD_CD (Card Detect) Pin */ SCU_PinConfigure(RTE_SD_CD_PORT, RTE_SD_CD_PIN, RTE_SD_CD_FUNC | SCU_PIN_CFG_PULLUP_DIS | SCU_PIN_CFG_INPUT_BUFFER_EN | SCU_PIN_CFG_INPUT_FILTER_DIS); #endif #if (RTE_SDIO_WP_PIN_EN) /* Configure SD_WP (Write Protect) Pin */ SCU_PinConfigure(RTE_SD_WP_PORT, RTE_SD_WP_PIN, RTE_SD_WP_FUNC | SCU_PIN_CFG_PULLUP_DIS | SCU_PIN_CFG_INPUT_BUFFER_EN | SCU_PIN_CFG_INPUT_FILTER_DIS); #endif /* Configure SD_POW Pin */ #if (RTE_SD_POW_PIN_EN) SCU_PinConfigure(RTE_SD_POW_PORT, RTE_SD_POW_PIN, RTE_SD_POW_FUNC | SCU_PIN_CFG_PULLUP_DIS | SCU_PIN_CFG_INPUT_BUFFER_EN | SCU_PIN_CFG_INPUT_FILTER_DIS); #endif /* Configure SD_RST Pin */ #if (RTE_SD_RST_PIN_EN) SCU_PinConfigure(RTE_SD_RST_PORT, RTE_SD_RST_PIN, RTE_SD_RST_FUNC | SCU_PIN_CFG_PULLUP_DIS | SCU_PIN_CFG_INPUT_BUFFER_EN | SCU_PIN_CFG_INPUT_FILTER_DIS); #endif /* Connect SDIO base clock to PLL1 */ LPC_CGU->BASE_SDIO_CLK = (0x01 << 11) | (SDIO_CLK_SEL_PLL1 << 24); /* Clear control structure */ memset (&MCI, 0, sizeof (MCI_INFO)); MCI.cb_event = cb_event; MCI.flags = MCI_INIT; return ARM_DRIVER_OK; }
/** \fn void USB1_PinsConfigure (void) \brief Configure USB pins */ void USB1_PinsConfigure (void) { // Common (Device and Host) Pins #if (RTE_USB1_IND0_PIN_EN) SCU_PinConfigure(RTE_USB1_IND0_PORT, RTE_USB1_IND0_BIT, RTE_USB1_IND0_FUNC); #endif #if (RTE_USB1_IND1_PIN_EN) SCU_PinConfigure(RTE_USB1_IND1_PORT, RTE_USB1_IND1_BIT, RTE_USB1_IND1_FUNC); #endif #if (RTE_USB_USB1_FS_PHY_EN) #if (RTE_USB1_VBUS_PIN_EN) // Device Pin if (USB1_role == ARM_USB_ROLE_DEVICE) { SCU_PinConfigure(RTE_USB1_VBUS_PORT, RTE_USB1_VBUS_BIT, RTE_USB1_VBUS_FUNC | SCU_SFS_EPD | SCU_SFS_EZI); } #endif #endif // Host Pins if (USB1_role == ARM_USB_ROLE_HOST) { #if (RTE_USB1_PPWR_PIN_EN) SCU_PinConfigure(RTE_USB1_PPWR_PORT, RTE_USB1_PPWR_BIT, RTE_USB1_PPWR_FUNC); #endif #if (RTE_USB1_PWR_FAULT_PIN_EN) SCU_PinConfigure(RTE_USB1_PWR_FAULT_PORT, RTE_USB1_PWR_FAULT_BIT, RTE_USB1_PWR_FAULT_FUNC); #endif } // ULPI Pins #if (RTE_USB_USB1_HS_PHY_EN) SCU_PinConfigure(RTE_USB1_ULPI_CLK_PORT, RTE_USB1_ULPI_CLK_BIT, RTE_USB1_ULPI_CLK_FUNC); SCU_PinConfigure(RTE_USB1_ULPI_DIR_PORT, RTE_USB1_ULPI_DIR_BIT, RTE_USB1_ULPI_DIR_FUNC); SCU_PinConfigure(RTE_USB1_ULPI_STP_PORT, RTE_USB1_ULPI_STP_BIT, RTE_USB1_ULPI_STP_FUNC); SCU_PinConfigure(RTE_USB1_ULPI_NXT_PORT, RTE_USB1_ULPI_NXT_BIT, RTE_USB1_ULPI_NXT_FUNC); SCU_PinConfigure(RTE_USB1_ULPI_D0_PORT, RTE_USB1_ULPI_D0_BIT, RTE_USB1_ULPI_D0_FUNC ); SCU_PinConfigure(RTE_USB1_ULPI_D1_PORT, RTE_USB1_ULPI_D1_BIT, RTE_USB1_ULPI_D1_FUNC ); SCU_PinConfigure(RTE_USB1_ULPI_D2_PORT, RTE_USB1_ULPI_D2_BIT, RTE_USB1_ULPI_D2_FUNC ); SCU_PinConfigure(RTE_USB1_ULPI_D3_PORT, RTE_USB1_ULPI_D3_BIT, RTE_USB1_ULPI_D3_FUNC ); SCU_PinConfigure(RTE_USB1_ULPI_D4_PORT, RTE_USB1_ULPI_D4_BIT, RTE_USB1_ULPI_D4_FUNC ); SCU_PinConfigure(RTE_USB1_ULPI_D5_PORT, RTE_USB1_ULPI_D5_BIT, RTE_USB1_ULPI_D5_FUNC ); SCU_PinConfigure(RTE_USB1_ULPI_D6_PORT, RTE_USB1_ULPI_D6_BIT, RTE_USB1_ULPI_D6_FUNC ); SCU_PinConfigure(RTE_USB1_ULPI_D7_PORT, RTE_USB1_ULPI_D7_BIT, RTE_USB1_ULPI_D7_FUNC ); #endif }