lpc176x: Move bootloader_request() from usbserial.c to main.c
Move bootloader_request() function so that it can be used when not using USB. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
f6a166cb67
commit
ba38897a35
|
@ -23,5 +23,6 @@ int is_enabled_pclock(uint32_t pclk);
|
||||||
void enable_pclock(uint32_t pclk);
|
void enable_pclock(uint32_t pclk);
|
||||||
uint32_t get_pclock_frequency(uint32_t pclk);
|
uint32_t get_pclock_frequency(uint32_t pclk);
|
||||||
void gpio_peripheral(uint32_t gpio, int func, int pullup);
|
void gpio_peripheral(uint32_t gpio, int func, int pullup);
|
||||||
|
void usb_disconnect(void);
|
||||||
|
|
||||||
#endif // internal.h
|
#endif // internal.h
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
|
|
||||||
#include "autoconf.h" // CONFIG_CLOCK_FREQ
|
#include "autoconf.h" // CONFIG_CLOCK_FREQ
|
||||||
#include "board/armcm_boot.h" // armcm_main
|
#include "board/armcm_boot.h" // armcm_main
|
||||||
|
#include "board/armcm_reset.h" // try_request_canboot
|
||||||
|
#include "board/irq.h" // irq_disable
|
||||||
|
#include "board/misc.h" // bootloader_request
|
||||||
#include "internal.h" // enable_pclock
|
#include "internal.h" // enable_pclock
|
||||||
#include "sched.h" // sched_main
|
#include "sched.h" // sched_main
|
||||||
|
|
||||||
|
@ -37,6 +40,23 @@ DECL_INIT(watchdog_init);
|
||||||
* misc functions
|
* misc functions
|
||||||
****************************************************************/
|
****************************************************************/
|
||||||
|
|
||||||
|
// Try to reboot into bootloader
|
||||||
|
void
|
||||||
|
bootloader_request(void)
|
||||||
|
{
|
||||||
|
if (!CONFIG_SMOOTHIEWARE_BOOTLOADER)
|
||||||
|
return;
|
||||||
|
try_request_canboot();
|
||||||
|
// Disable USB and pause for 5ms so host recognizes a disconnect
|
||||||
|
irq_disable();
|
||||||
|
if (CONFIG_USB)
|
||||||
|
usb_disconnect();
|
||||||
|
// The "LPC17xx-DFU-Bootloader" will enter the bootloader if the
|
||||||
|
// watchdog timeout flag is set.
|
||||||
|
LPC_WDT->WDMOD = 0x07;
|
||||||
|
NVIC_SystemReset();
|
||||||
|
}
|
||||||
|
|
||||||
// Check if a peripheral clock has been enabled
|
// Check if a peripheral clock has been enabled
|
||||||
int
|
int
|
||||||
is_enabled_pclock(uint32_t pclk)
|
is_enabled_pclock(uint32_t pclk)
|
||||||
|
|
|
@ -8,8 +8,6 @@
|
||||||
#include "autoconf.h" // CONFIG_SMOOTHIEWARE_BOOTLOADER
|
#include "autoconf.h" // CONFIG_SMOOTHIEWARE_BOOTLOADER
|
||||||
#include "board/armcm_boot.h" // armcm_enable_irq
|
#include "board/armcm_boot.h" // armcm_enable_irq
|
||||||
#include "board/armcm_timer.h" // udelay
|
#include "board/armcm_timer.h" // udelay
|
||||||
#include "board/armcm_reset.h" // try_request_canboot
|
|
||||||
#include "board/irq.h" // irq_disable
|
|
||||||
#include "board/misc.h" // timer_read_time
|
#include "board/misc.h" // timer_read_time
|
||||||
#include "byteorder.h" // cpu_to_le32
|
#include "byteorder.h" // cpu_to_le32
|
||||||
#include "command.h" // DECL_CONSTANT_STR
|
#include "command.h" // DECL_CONSTANT_STR
|
||||||
|
@ -246,20 +244,12 @@ usb_set_configure(void)
|
||||||
usb_irq_enable();
|
usb_irq_enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Force a USB disconnect (used during reboot into bootloader)
|
||||||
void
|
void
|
||||||
bootloader_request(void)
|
usb_disconnect(void)
|
||||||
{
|
{
|
||||||
if (!CONFIG_SMOOTHIEWARE_BOOTLOADER)
|
|
||||||
return;
|
|
||||||
try_request_canboot();
|
|
||||||
// Disable USB and pause for 5ms so host recognizes a disconnect
|
|
||||||
irq_disable();
|
|
||||||
sie_cmd_write(SIE_CMD_SET_DEVICE_STATUS, 0);
|
sie_cmd_write(SIE_CMD_SET_DEVICE_STATUS, 0);
|
||||||
udelay(5000);
|
udelay(5000);
|
||||||
// The "LPC17xx-DFU-Bootloader" will enter the bootloader if the
|
|
||||||
// watchdog timeout flag is set.
|
|
||||||
LPC_WDT->WDMOD = 0x07;
|
|
||||||
NVIC_SystemReset();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue