boards/sparc: Replace board_app_initialize

Replaced board_app_initialize logic with board_late_initialize.

Signed-off-by: Matteo Golin <matteo.golin@gmail.com>
This commit is contained in:
Matteo Golin 2026-02-18 23:25:09 -05:00 committed by Xiang Xiao
parent 73e243584e
commit 48307b3a48
9 changed files with 220 additions and 402 deletions

View file

@ -25,12 +25,9 @@
ASRCS =
CSRCS = bm3803_boot.c
ifeq ($(CONFIG_BOARDCTL),y)
CSRCS += bm3803_appinit.c
ifeq ($(CONFIG_BOARDCTL_RESET),y)
CSRCS += bm3803_reset.c
endif
endif
ifeq ($(CONFIG_MTD_AM29LV),y)
CSRCS += bm3803_am29lv.c

View file

@ -1,159 +0,0 @@
/****************************************************************************
* boards/sparc/bm3803/xx3803/src/bm3803_appinit.c
*
* SPDX-License-Identifier: Apache-2.0
*
* 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 <sys/mount.h>
#include <stdio.h>
#include <syslog.h>
#include <nuttx/board.h>
#include <nuttx/timers/oneshot.h>
#include "bm3803_wdg.h"
#include "bm3803.h"
#include "xx3803.h"
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/* Configuration ************************************************************/
/* Assume that we support everything until convinced otherwise */
#define HAVE_AM29LV 1
/* Can't support the AM29LV device if it AM29LV support is not enabled */
#if !defined(CONFIG_MTD_AM29LV)
# undef HAVE_AM29LV
#endif
/* Can't support AM29LV features if mountpoints are disabled */
#ifdef CONFIG_DISABLE_MOUNTPOINT
# undef HAVE_AM29LV
#endif
/* Default AM29LV minor number */
#if defined(HAVE_AM29LV) && !defined(CONFIG_NSH_AM29LVMINOR)
# define CONFIG_NSH_AM29LVMINOR 0
#endif
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: board_app_initialize
*
* Description:
* Perform application specific initialization. This function is never
* called directly from application code, but only indirectly via the
* (non-standard) boardctl() interface using the command BOARDIOC_INIT.
*
* Input Parameters:
* arg - The boardctl() argument is passed to the board_app_initialize()
* implementation without modification. The argument has no
* meaning to NuttX; the meaning of the argument is a contract
* between the board-specific initialization logic and the
* matching application logic. The value cold be such things as a
* mode enumeration value, a set of DIP switch switch settings, a
* pointer to configuration data read from a file or serial FLASH,
* or whatever you would like to do with it. Every implementation
* should accept zero/NULL as a default configuration.
*
* Returned Value:
* Zero (OK) is returned on success; a negated errno value is returned on
* any failure to indicate the nature of the failure.
*
****************************************************************************/
int board_app_initialize(uintptr_t arg)
{
#ifdef CONFIG_ONESHOT
struct oneshot_lowerhalf_s *os = NULL;
#endif
int ret;
/* Initialize and register the AM29LV FLASH file system. */
#ifdef HAVE_AM29LV
ret = bm3803_am29lv_initialize(CONFIG_NSH_AM29LVMINOR);
if (ret < 0)
{
syslog(LOG_ERR, "ERROR: Failed to initialize AM29LV minor %d: %d\n",
CONFIG_NSH_AM29LVMINOR, ret);
return ret;
}
#endif
#ifdef CONFIG_ONESHOT
os = oneshot_initialize(1, 10);
if (os)
{
ret = oneshot_register("/dev/oneshot", os);
}
#endif
#ifdef CONFIG_BM3803_WDG
/* Initialize the watchdog timer */
bm3803_wdginitialize("/dev/watchdog0");
#endif
#ifdef CONFIG_XX3803_WDG
/* Start WDG kicker thread */
ret = xx3803_watchdog_initialize();
if (ret != OK)
{
syslog(LOG_ERR, "Failed to start watchdog thread: %d\n", ret);
return ret;
}
#endif
#ifdef CONFIG_FS_PROCFS
/* Mount the procfs file system */
ret = mount(NULL, BM3803_PROCFS_MOUNTPOINT, "procfs", 0, NULL);
if (ret < 0)
{
syslog(LOG_ERR, "Failed to mount procfs at %s: %d\n",
BM3803_PROCFS_MOUNTPOINT, ret);
}
#endif
return ret;
}

View file

@ -28,16 +28,47 @@
#include <nuttx/debug.h>
#include <sys/mount.h>
#include <stdio.h>
#include <syslog.h>
#include <arch/board/board.h>
#include <nuttx/board.h>
#include <nuttx/timers/oneshot.h>
#include "sparc_internal.h"
#include "bm3803_wdg.h"
#include "bm3803.h"
#include "xx3803.h"
/****************************************************************************
* Definitions
* Pre-processor Definitions
****************************************************************************/
/* Configuration ************************************************************/
/* Assume that we support everything until convinced otherwise */
#define HAVE_AM29LV 1
/* Can't support the AM29LV device if it AM29LV support is not enabled */
#if !defined(CONFIG_MTD_AM29LV)
# undef HAVE_AM29LV
#endif
/* Can't support AM29LV features if mountpoints are disabled */
#ifdef CONFIG_DISABLE_MOUNTPOINT
# undef HAVE_AM29LV
#endif
/* Default AM29LV minor number */
#if defined(HAVE_AM29LV) && !defined(CONFIG_NSH_AM29LVMINOR)
# define CONFIG_NSH_AM29LVMINOR 0
#endif
/****************************************************************************
* Private Functions
****************************************************************************/
@ -73,3 +104,74 @@ void bm3803_boardinitialize(void)
BM3803_REG.timer_cnt1 = 0;
BM3803_REG.timer_load1 = 0;
}
/****************************************************************************
* Name: board_late_initialize
*
* Description:
* If CONFIG_BOARD_LATE_INITIALIZE is selected, then an additional
* initialization call will be performed in the boot-up sequence to a
* function called board_late_initialize(). board_late_initialize() will be
* called immediately after up_initialize() is called and just before the
* initial application is started. This additional initialization phase
* may be used, for example, to initialize board-specific device drivers.
*
****************************************************************************/
#ifdef CONFIG_BOARD_LATE_INITIALIZE
void board_late_initialize(void)
{
#ifdef CONFIG_ONESHOT
struct oneshot_lowerhalf_s *os = NULL;
#endif
int ret;
/* Initialize and register the AM29LV FLASH file system. */
#ifdef HAVE_AM29LV
ret = bm3803_am29lv_initialize(CONFIG_NSH_AM29LVMINOR);
if (ret < 0)
{
syslog(LOG_ERR, "ERROR: Failed to initialize AM29LV minor %d: %d\n",
CONFIG_NSH_AM29LVMINOR, ret);
return;
}
#endif
#ifdef CONFIG_ONESHOT
os = oneshot_initialize(1, 10);
if (os)
{
ret = oneshot_register("/dev/oneshot", os);
}
#endif
#ifdef CONFIG_BM3803_WDG
/* Initialize the watchdog timer */
bm3803_wdginitialize("/dev/watchdog0");
#endif
#ifdef CONFIG_XX3803_WDG
/* Start WDG kicker thread */
ret = xx3803_watchdog_initialize();
if (ret != OK)
{
syslog(LOG_ERR, "Failed to start watchdog thread: %d\n", ret);
return;
}
#endif
#ifdef CONFIG_FS_PROCFS
/* Mount the procfs file system */
ret = mount(NULL, BM3803_PROCFS_MOUNTPOINT, "procfs", 0, NULL);
if (ret < 0)
{
syslog(LOG_ERR, "Failed to mount procfs at %s: %d\n",
BM3803_PROCFS_MOUNTPOINT, ret);
}
#endif
}
#endif /* CONFIG_BOARD_LATE_INITIALIZE */

View file

@ -25,10 +25,6 @@
ASRCS =
CSRCS = bm3823_boot.c bm3823_leds.c
ifeq ($(CONFIG_LIB_BOARDCTL),y)
CSRCS += bm3823_appinit.c
endif
ifeq ($(CONFIG_MTD_AM29LV),y)
CSRCS += bm3823_am29lv.c
endif

View file

@ -1,119 +0,0 @@
/****************************************************************************
* boards/sparc/bm3823/xx3823/src/bm3823_appinit.c
*
* SPDX-License-Identifier: Apache-2.0
*
* 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 <stdio.h>
#include <syslog.h>
#include <nuttx/board.h>
#include "bm3823.h"
#include "xx3823.h"
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/* Configuration ************************************************************/
/* Assume that we support everything until convinced otherwise */
#define HAVE_AM29LV 1
/* Can't support the AM29LV device if it AM29LV support is not enabled */
#if !defined(CONFIG_MTD_AM29LV)
# undef HAVE_AM29LV
#endif
/* Can't support AM29LV features if mountpoints are disabled */
#ifdef CONFIG_DISABLE_MOUNTPOINT
# undef HAVE_AM29LV
#endif
/* Default AM29LV minor number */
#if defined(HAVE_AM29LV) && !defined(CONFIG_NSH_AM29LVMINOR)
# define CONFIG_NSH_AM29LVMINOR 0
#endif
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: board_app_initialize
*
* Description:
* Perform application specific initialization. This function is never
* called directly from application code, but only indirectly via the
* (non-standard) boardctl() interface using the command BOARDIOC_INIT.
*
* Input Parameters:
* arg - The boardctl() argument is passed to the board_app_initialize()
* implementation without modification. The argument has no
* meaning to NuttX; the meaning of the argument is a contract
* between the board-specific initialization logic and the
* matching application logic. The value cold be such things as a
* mode enumeration value, a set of DIP switch switch settings, a
* pointer to configuration data read from a file or serial FLASH,
* or whatever you would like to do with it. Every implementation
* should accept zero/NULL as a default configuration.
*
* Returned Value:
* Zero (OK) is returned on success; a negated errno value is returned on
* any failure to indicate the nature of the failure.
*
****************************************************************************/
int board_app_initialize(uintptr_t arg)
{
int ret;
/* Initialize and register the AM29LV FLASH file system. */
#ifdef HAVE_AM29LV
ret = bm3823_am29lv_initialize(CONFIG_NSH_AM29LVMINOR);
if (ret < 0)
{
syslog(LOG_ERR, "ERROR: Failed to initialize AM29LV minor %d: %d\n",
CONFIG_NSH_AM29LVMINOR, ret);
return ret;
}
#endif
return ret;
}

View file

@ -28,16 +28,45 @@
#include <nuttx/debug.h>
#include <debug.h>
#include <stdio.h>
#include <syslog.h>
#include <arch/board/board.h>
#include <nuttx/board.h>
#include "sparc_internal.h"
#include "bm3823.h"
#include "xx3823.h"
/****************************************************************************
* Definitions
* Pre-processor Definitions
****************************************************************************/
/* Configuration ************************************************************/
/* Assume that we support everything until convinced otherwise */
#define HAVE_AM29LV 1
/* Can't support the AM29LV device if it AM29LV support is not enabled */
#if !defined(CONFIG_MTD_AM29LV)
# undef HAVE_AM29LV
#endif
/* Can't support AM29LV features if mountpoints are disabled */
#ifdef CONFIG_DISABLE_MOUNTPOINT
# undef HAVE_AM29LV
#endif
/* Default AM29LV minor number */
#if defined(HAVE_AM29LV) && !defined(CONFIG_NSH_AM29LVMINOR)
# define CONFIG_NSH_AM29LVMINOR 0
#endif
/****************************************************************************
* Private Functions
****************************************************************************/
@ -69,3 +98,35 @@ void bm3823_boardinitialize(void)
bm3823_led_initialize();
#endif
}
/****************************************************************************
* Name: board_late_initialize
*
* Description:
* If CONFIG_BOARD_LATE_INITIALIZE is selected, then an additional
* initialization call will be performed in the boot-up sequence to a
* function called board_late_initialize(). board_late_initialize() will be
* called immediately after up_initialize() is called and just before the
* initial application is started. This additional initialization phase
* may be used, for example, to initialize board-specific device drivers.
*
****************************************************************************/
#ifdef CONFIG_BOARD_LATE_INITIALIZE
void board_late_initialize(void)
{
int ret;
/* Initialize and register the AM29LV FLASH file system. */
#ifdef HAVE_AM29LV
ret = bm3823_am29lv_initialize(CONFIG_NSH_AM29LVMINOR);
if (ret < 0)
{
syslog(LOG_ERR, "ERROR: Failed to initialize AM29LV minor %d: %d\n",
CONFIG_NSH_AM29LVMINOR, ret);
return;
}
#endif
}
#endif /* CONFIG_BOARD_LATE_INITIALIZE */

View file

@ -25,10 +25,6 @@
ASRCS =
CSRCS = s698pm_boot.c
ifeq ($(CONFIG_BOARDCTL),y)
CSRCS += s698pm_appinit.c
endif
ifeq ($(CONFIG_S698PM_WDG),y)
CSRCS += s698pm_wdt.c
endif

View file

@ -1,110 +0,0 @@
/****************************************************************************
* boards/sparc/s698pm/s698pm-dkit/src/s698pm_appinit.c
*
* SPDX-License-Identifier: Apache-2.0
*
* 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 <sys/mount.h>
#include <stdio.h>
#include <syslog.h>
#include <nuttx/board.h>
#include "s698pm.h"
#include "s698pm-dkit.h"
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: board_app_initialize
*
* Description:
* Perform application specific initialization. This function is never
* called directly from application code, but only indirectly via the
* (non-standard) boardctl() interface using the command BOARDIOC_INIT.
*
* Input Parameters:
* arg - The boardctl() argument is passed to the board_app_initialize()
* implementation without modification. The argument has no
* meaning to NuttX; the meaning of the argument is a contract
* between the board-specific initialization logic and the
* matching application logic. The value cold be such things as a
* mode enumeration value, a set of DIP switch switch settings, a
* pointer to configuration data read from a file or serial FLASH,
* or whatever you would like to do with it. Every implementation
* should accept zero/NULL as a default configuration.
*
* Returned Value:
* Zero (OK) is returned on success; a negated errno value is returned on
* any failure to indicate the nature of the failure.
*
****************************************************************************/
int board_app_initialize(uintptr_t arg)
{
int ret;
#ifdef CONFIG_S698PM_WDG
/* Initialize the watchdog timer */
s698pm_wdginitialize("/dev/watchdog0");
#endif
#ifdef CONFIG_S698PM_DKIT_WDG
/* Start WDG kicker thread */
ret = s698pm_dkit_watchdog_initialize();
if (ret != OK)
{
syslog(LOG_ERR, "Failed to start watchdog thread: %d\n", ret);
return ret;
}
#endif
#ifdef CONFIG_FS_PROCFS
/* Mount the procfs file system */
ret = mount(NULL, S698PM_PROCFS_MOUNTPOINT, "procfs", 0, NULL);
if (ret < 0)
{
syslog(LOG_ERR, "Failed to mount procfs at %s: %d\n",
S698PM_PROCFS_MOUNTPOINT, ret);
}
#endif
return ret;
}

View file

@ -28,14 +28,20 @@
#include <nuttx/debug.h>
#include <debug.h>
#include <sys/mount.h>
#include <stdio.h>
#include <syslog.h>
#include <arch/board/board.h>
#include <nuttx/board.h>
#include "sparc_internal.h"
#include "s698pm.h"
#include "s698pm-dkit.h"
/****************************************************************************
* Definitions
* Pre-processor Definitions
****************************************************************************/
/****************************************************************************
@ -65,3 +71,51 @@ void s698pm_boardinitialize(void)
board_autoled_initialize();
#endif
}
/****************************************************************************
* Name: board_late_initialize
*
* Description:
* If CONFIG_BOARD_LATE_INITIALIZE is selected, then an additional
* initialization call will be performed in the boot-up sequence to a
* function called board_late_initialize(). board_late_initialize() will be
* called immediately after up_initialize() is called and just before the
* initial application is started. This additional initialization phase
* may be used, for example, to initialize board-specific device drivers.
*
****************************************************************************/
#ifdef CONFIG_BOARD_LATE_INITIALIZE
void board_late_initialize(void)
{
int ret;
#ifdef CONFIG_S698PM_WDG
/* Initialize the watchdog timer */
s698pm_wdginitialize("/dev/watchdog0");
#endif
#ifdef CONFIG_S698PM_DKIT_WDG
/* Start WDG kicker thread */
ret = s698pm_dkit_watchdog_initialize();
if (ret != OK)
{
syslog(LOG_ERR, "Failed to start watchdog thread: %d\n", ret);
return;
}
#endif
#ifdef CONFIG_FS_PROCFS
/* Mount the procfs file system */
ret = mount(NULL, S698PM_PROCFS_MOUNTPOINT, "procfs", 0, NULL);
if (ret < 0)
{
syslog(LOG_ERR, "Failed to mount procfs at %s: %d\n",
S698PM_PROCFS_MOUNTPOINT, ret);
}
#endif
}
#endif /* CONFIG_BOARD_LATE_INITIALIZE */