void board_button_initialize(void) { /* Configure the two buttons as inputs */ kinetis_pinconfig(GPIO_SW1); kinetis_pinconfig(GPIO_SW2); }
int board_app_initialize(uintptr_t arg) { #ifdef NSH_HAVEMMCSD int ret; /* Configure GPIO pins. * * First CD power. The initial state will provide SD power. */ kinetis_pinconfig(GPIO_SD_CARDON); /* Applies power to the card */ /* Attached the card detect interrupt (but don't enable it yet) */ kinetis_pinconfig(GPIO_SD_CARDDETECT); kinetis_pinirqattach(GPIO_SD_CARDDETECT, kinetis_cdinterrupt); /* Mount the SDHC-based MMC/SD block driver */ /* First, get an instance of the SDHC interface */ syslog(LOG_INFO, "Initializing SDHC slot %d\n", CONFIG_NSH_MMCSDSLOTNO); g_nsh.sdhc = sdhc_initialize(CONFIG_NSH_MMCSDSLOTNO); if (!g_nsh.sdhc) { syslog(LOG_ERR, "ERROR: Failed to initialize SDHC slot %d\n", CONFIG_NSH_MMCSDSLOTNO); return -ENODEV; } /* Now bind the SDHC interface to the MMC/SD driver */ syslog(LOG_INFO, "Bind SDHC to the MMC/SD driver, minor=%d\n", CONFIG_NSH_MMCSDMINOR); ret = mmcsd_slotinitialize(CONFIG_NSH_MMCSDMINOR, g_nsh.sdhc); if (ret != OK) { syslog(LOG_ERR, "ERROR: Failed to bind SDHC to the MMC/SD driver: %d\n", ret); return ret; } syslog(LOG_INFO, "Successfully bound SDHC to the MMC/SD driver\n"); /* Handle the initial card state */ kinetis_mediachange(); /* Enable CD interrupts to handle subsequent media changes */ kinetis_pinirqenable(GPIO_SD_CARDDETECT); #endif return OK; }
int nsh_archinitialize(void) { #ifdef NSH_HAVEMMCSD int ret; /* Configure GPIO pins */ /* Attached the card detect interrupt (but don't enable it yet) */ kinetis_pinconfig(GPIO_SD_CARDDETECT); kinetis_pinirqattach(GPIO_SD_CARDDETECT, kinetis_cdinterrupt); /* Configure the write protect GPIO */ kinetis_pinconfig(GPIO_SD_WRPROTECT); /* Mount the SDHC-based MMC/SD block driver */ /* First, get an instance of the SDHC interface */ message("nsh_archinitialize: Initializing SDHC slot %d\n", CONFIG_NSH_MMCSDSLOTNO); g_nsh.sdhc = sdhc_initialize(CONFIG_NSH_MMCSDSLOTNO); if (!g_nsh.sdhc) { message("nsh_archinitialize: Failed to initialize SDHC slot %d\n", CONFIG_NSH_MMCSDSLOTNO); return -ENODEV; } /* Now bind the SDHC interface to the MMC/SD driver */ message("nsh_archinitialize: Bind SDHC to the MMC/SD driver, minor=%d\n", CONFIG_NSH_MMCSDMINOR); ret = mmcsd_slotinitialize(CONFIG_NSH_MMCSDMINOR, g_nsh.sdhc); if (ret != OK) { message("nsh_archinitialize: Failed to bind SDHC to the MMC/SD driver: %d\n", ret); return ret; } message("nsh_archinitialize: Successfully bound SDHC to the MMC/SD driver\n"); /* Handle the initial card state */ kinetis_mediachange(); /* Enable CD interrupts to handle subsequent media changes */ kinetis_pinirqenable(GPIO_SD_CARDDETECT); #endif return OK; }
__EXPORT void led_init(void) { /* Configure LED GPIOs for output */ for (size_t l = 0; l < (sizeof(g_ledmap) / sizeof(g_ledmap[0])); l++) { kinetis_pinconfig(g_ledmap[l]); } }
int k64_sdhc_initialize(void) { int ret; /* Configure GPIO pins */ kinetis_pinconfig(GPIO_SD_CARDDETECT); /* Attached the card detect interrupt (but don't enable it yet) */ kinetis_pinirqattach(GPIO_SD_CARDDETECT, k64_cdinterrupt); /* Configure the write protect GPIO -- None */ /* Mount the SDHC-based MMC/SD block driver */ /* First, get an instance of the SDHC interface */ mcinfo("Initializing SDHC slot %d\n", MMCSD_SLOTNO); g_sdhc.sdhc = sdhc_initialize(MMCSD_SLOTNO); if (!g_sdhc.sdhc) { mcerr("ERROR: Failed to initialize SDHC slot %d\n", MMCSD_SLOTNO); return -ENODEV; } /* Now bind the SDHC interface to the MMC/SD driver */ mcinfo("Bind SDHC to the MMC/SD driver, minor=%d\n", MMSCD_MINOR); ret = mmcsd_slotinitialize(MMSCD_MINOR, g_sdhc.sdhc); if (ret != OK) { syslog(LOG_ERR, "ERROR: Failed to bind SDHC to the MMC/SD driver: %d\n", ret); return ret; } syslog(LOG_INFO, "Successfully bound SDHC to the MMC/SD driver\n"); /* Handle the initial card state */ k64_mediachange(); /* Enable CD interrupts to handle subsequent media changes */ kinetis_pinirqenable(GPIO_SD_CARDDETECT); return OK; }
void board_userled_initialize(void) { kinetis_pinconfig(GPIO_LED_R); kinetis_pinconfig(GPIO_LED_G); kinetis_pinconfig(GPIO_LED_B); }
int fmuk66_sdhc_initialize(void) { int ret; struct fmuk66_sdhc_state_s *sdhc = &g_sdhc; /* Configure GPIO pins */ VDD_3V3_SD_CARD_EN(true); kinetis_pinconfig(GPIO_SD_CARDDETECT); /* Attached the card detect interrupt (but don't enable it yet) */ kinetis_pinirqattach(GPIO_SD_CARDDETECT, fmuk66_cdinterrupt, sdhc); /* Configure the write protect GPIO -- None */ /* Mount the SDHC-based MMC/SD block driver */ /* First, get an instance of the SDHC interface */ mcinfo("Initializing SDHC slot %d\n", CONFIG_NSH_MMCSDSLOTNO); sdhc->sdhc = sdhc_initialize(CONFIG_NSH_MMCSDSLOTNO); if (!sdhc->sdhc) { mcerr("ERROR: Failed to initialize SDHC slot %d\n", CONFIG_NSH_MMCSDSLOTNO); return -ENODEV; } // Testing done on SanDISK HC all failed sd_bench with Drive/Slew other than default and _PIN_OUTPUT_FAST|_PIN_OUTPUT_HIGHDRIVE // _PIN_OUTPUT_FAST|_PIN_OUTPUT_HIGHDRIVE Square noisy, pass SanDISK HC // _PIN_OUTPUT_FAST|_PIN_OUTPUT_LOWDRIVE Square noisy, pass SanDISK HC // _PIN_OUTPUT_HIGHDRIVE|_PIN_OUTPUT_SLOW sinusoidal fail SanDISK HC pass SanDISK HC1 // _PIN_OUTPUT_LOWDRIVE|_PIN_OUTPUT_SLOW sinusoidal fail SanDISK HC pass SanDISK HC1 // _PIN_OUTPUT_SLOW sinusoidal fail SanDISK HC pass SanDISK HC1 // This up dating of the driver setting is for EMI issue with GPS and FCC // With this setting the clock is sinusoidal N.B. sd_bench fails on SanDISK HC, but // Passes SanDISK **HC1** - use HC1 or Kingston cards! kinetis_pinconfig(PIN_SDHC0_DCLK | _PIN_OUTPUT_HIGHDRIVE | _PIN_OUTPUT_SLOW); /* Now bind the SDHC interface to the MMC/SD driver */ mcinfo("Bind SDHC to the MMC/SD driver, minor=%d\n", CONFIG_NSH_MMCSDMINOR); ret = mmcsd_slotinitialize(CONFIG_NSH_MMCSDMINOR, sdhc->sdhc); if (ret != OK) { syslog(LOG_ERR, "ERROR: Failed to bind SDHC to the MMC/SD driver: %d\n", ret); return ret; } syslog(LOG_ERR, "Successfully bound SDHC to the MMC/SD driver\n"); /* Handle the initial card state */ fmuk66_mediachange(sdhc); /* Enable CD interrupts to handle subsequent media changes */ kinetis_pinirqenable(GPIO_SD_CARDDETECT); return OK; }
void kinetis_lowsetup(void) { #ifdef HAVE_UART_DEVICE uint32_t regval; /* Enable peripheral clocking for all enabled UARTs. Clocking for UARTs * 0-3 is enabled in the SCGC4 register. */ #if defined(CONFIG_KINETIS_UART0) || defined(CONFIG_KINETIS_UART1) || \ defined(CONFIG_KINETIS_UART2) || defined(CONFIG_KINETIS_UART3) regval = getreg32(KINETIS_SIM_SCGC4); # ifdef CONFIG_KINETIS_UART0 regval |= SIM_SCGC4_UART0; # endif # ifdef CONFIG_KINETIS_UART1 regval |= SIM_SCGC4_UART1; # endif # ifdef CONFIG_KINETIS_UART2 regval |= SIM_SCGC4_UART2; # endif # ifdef CONFIG_KINETIS_UART3 regval |= SIM_SCGC4_UART3; # endif putreg32(regval, KINETIS_SIM_SCGC4); #endif /* Clocking for UARTs 4-5 is enabled in the SCGC1 register. */ #if defined(CONFIG_KINETIS_UART4) || defined(CONFIG_KINETIS_UART5) regval = getreg32(KINETIS_SIM_SCGC1); # ifdef CONFIG_KINETIS_UART4 regval |= SIM_SCGC1_UART4; # endif # ifdef CONFIG_KINETIS_UART5 regval |= SIM_SCGC1_UART5; # endif putreg32(regval, KINETIS_SIM_SCGC1); #endif /* Configure UART pins for the all enabled UARTs */ #ifdef CONFIG_KINETIS_UART0 kinetis_pinconfig(PIN_UART0_TX); kinetis_pinconfig(PIN_UART0_RX); #endif #ifdef CONFIG_KINETIS_UART1 kinetis_pinconfig(PIN_UART1_TX); kinetis_pinconfig(PIN_UART1_RX); #endif #ifdef CONFIG_KINETIS_UART2 kinetis_pinconfig(PIN_UART2_TX); kinetis_pinconfig(PIN_UART2_RX); #endif #ifdef CONFIG_KINETIS_UART3 kinetis_pinconfig(PIN_UART3_TX); kinetis_pinconfig(PIN_UART3_RX); #endif #ifdef CONFIG_KINETIS_UART4 kinetis_pinconfig(PIN_UART4_TX); kinetis_pinconfig(PIN_UART4_RX); #endif #ifdef CONFIG_KINETIS_UART5 kinetis_pinconfig(PIN_UART5_TX); kinetis_pinconfig(PIN_UART5_RX); #endif /* Configure the console (only) now. Other UARTs will be configured * when the serial driver is opened. */ #if defined(HAVE_SERIAL_CONSOLE) && !defined(CONFIG_SUPPRESS_UART_CONFIG) kinetis_uartconfigure(CONSOLE_BASE, CONSOLE_BAUD, CONSOLE_FREQ, CONSOLE_PARITY, CONSOLE_BITS); #endif #endif /* HAVE_UART_DEVICE */ }