boards/sama5d3-xplained: Add reboot support.
The peripheral reset flag was added to speed up the reboot. Rebooting takes too long (15 seconds) if this flag is not set.
This commit is contained in:
parent
cc2b0e2594
commit
f5575b1b85
@ -51,6 +51,9 @@
|
||||
/* Reset Controller Control Register */
|
||||
|
||||
#define RSTC_CR_PROCRST (1 << 0) /* Bit 0: Processor Reset */
|
||||
#if defined(CONFIG_ARCH_CHIP_SAMA5D3)
|
||||
# define RSTC_CR_PERRST (1 << 2) /* Bit 2: Peripheral Reset */
|
||||
#endif
|
||||
#define RSTC_CR_EXTRST (1 << 3) /* Bit 3: External Reset */
|
||||
#define RSTC_CR_KEY_SHIFT (24) /* Bits 24-31: Password */
|
||||
#define RSTC_CR_KEY_MASK (0xff << RSTC_CR_KEY_SHIFT)
|
||||
|
@ -57,6 +57,10 @@ void up_systemreset(void)
|
||||
|
||||
rstcr = (RSTC_CR_PROCRST | RSTC_CR_KEY);
|
||||
|
||||
#if defined(CONFIG_ARCH_CHIP_SAMA5D3)
|
||||
rstcr |= RSTC_CR_PERRST;
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SAMA5_EXTRESET_ERST) && CONFIG_SAMA5_EXTRESET_ERST != 0
|
||||
rstcr |= RSTC_CR_EXTRST;
|
||||
|
||||
|
@ -112,4 +112,8 @@ ifeq ($(CONFIG_ARCH_BUTTONS),y)
|
||||
CSRCS += sam_buttons.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_BOARDCTL_RESET),y)
|
||||
CSRCS += sam_reset.c
|
||||
endif
|
||||
|
||||
include $(TOPDIR)/boards/Board.mk
|
||||
|
62
boards/arm/sama5/sama5d3-xplained/src/sam_reset.c
Normal file
62
boards/arm/sama5/sama5d3-xplained/src/sam_reset.c
Normal file
@ -0,0 +1,62 @@
|
||||
/****************************************************************************
|
||||
* boards/arm/sama5/sama5d3-xplained/src/sam_reset.c
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership. The
|
||||
* ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#include <nuttx/arch.h>
|
||||
#include <nuttx/board.h>
|
||||
|
||||
#ifdef CONFIG_BOARDCTL_RESET
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_reset
|
||||
*
|
||||
* Description:
|
||||
* Reset board. Support for this function is required by board-level
|
||||
* logic if CONFIG_BOARDCTL_RESET is selected.
|
||||
*
|
||||
* Input Parameters:
|
||||
* status - Status information provided with the reset event. This
|
||||
* meaning of this status information is board-specific. If not
|
||||
* used by a board, the value zero may be provided in calls to
|
||||
* board_reset().
|
||||
*
|
||||
* Returned Value:
|
||||
* If this function returns, then it was not possible to power-off the
|
||||
* board due to some constraints. The return value int this case is a
|
||||
* board-specific reason for the failure to shutdown.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int board_reset(int status)
|
||||
{
|
||||
up_systemreset();
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_BOARDCTL_RESET */
|
Loading…
Reference in New Issue
Block a user