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:
Lwazi Dube 2023-03-19 19:33:23 -04:00 committed by Petro Karashchenko
parent cc2b0e2594
commit f5575b1b85
4 changed files with 73 additions and 0 deletions

View File

@ -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)

View File

@ -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;

View File

@ -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

View 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 */