Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions bsp/cvitek/cv18xx_aarch64/board/board.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,46 @@ void rt_hw_board_init(void)
{
rt_hw_common_setup();
}

/*
* FIXME: This is a temporary workaround.
* When aarch bsp enables the device tree, the current u-boot will
* pass in bootargs, which contains "root=/dev/mmcblk0p2 rootwait rw",
* which means that the kernel is required to wait until the rootfs
* in /dev/mmcblk0p2 loaded successfully. However, the current aarch64 bsp
* default does not implement sdmmc device mounting, causing the kernel file
* system mounting module (rootfs_mnt_init() of components/drivers/core/mnt.c)
* to enter an infinite loop waiting.
* Solution: At present, we do not plan to modify the startup parameters
* of u-boot. The temporary solution adopted is to create a pseudo
* /dev/mmcblk0p2 device during the board initialization process, and
* then cancel the pseudo device after mnt is completed. This allows the
* kernel boot to be completed successfully.
*/
static struct rt_device *pseudo_mmcblk;

static int pseudo_mmcblk_setup(void)
{
pseudo_mmcblk = rt_calloc(1, sizeof(*pseudo_mmcblk));

RT_ASSERT(pseudo_mmcblk != RT_NULL);

pseudo_mmcblk->type = RT_Device_Class_Graphic;

return (int)rt_device_register(pseudo_mmcblk, "/dev/mmcblk0p2", RT_DEVICE_FLAG_DEACTIVATE);
}
INIT_BOARD_EXPORT(pseudo_mmcblk_setup);

static int pseudo_mmcblk_remove(void)
{
if (pseudo_mmcblk)
{
return (int)rt_device_unregister(pseudo_mmcblk);
}

return 0;
}
INIT_FS_EXPORT(pseudo_mmcblk_remove);
#endif /* RT_USING_OFW */
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个修改对 !RT_USING_OFW 应该不需要的吧,我这里只是和你确认一下。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

是的


static rt_ubase_t pinmux_base = RT_NULL;
Expand Down