[component][driver]init dm serial naming framework in a separate phase (#8971)

init dm serial naming framework in a phase
This commit is contained in:
zms123456 2024-05-21 22:36:20 +08:00 committed by GitHub
parent 6b12bce22f
commit adf2b35ec6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 22 additions and 16 deletions

View File

@ -11,11 +11,12 @@
#include <rtatomic.h>
#include <drivers/serial_dm.h>
static int uid_min = -1;
static volatile rt_atomic_t uid = 0;
int serial_dev_set_name(struct rt_serial_device *sdev)
{
int id = -1;
static int uid_min = -1;
static volatile rt_atomic_t uid = 0;
RT_ASSERT(sdev != RT_NULL);
@ -28,20 +29,6 @@ int serial_dev_set_name(struct rt_serial_device *sdev)
{
id = rt_ofw_get_alias_id(sdev->parent.ofw_node, "uart");
}
if (uid_min < 0)
{
uid_min = rt_ofw_get_alias_last_id("serial");
if (uid_min < 0)
{
uid_min = rt_ofw_get_alias_last_id("uart");
}
uid_min = uid_min < 0 ? 0 : (uid_min + 1);
rt_hw_atomic_store(&uid, uid_min);
}
}
#endif
@ -53,6 +40,25 @@ int serial_dev_set_name(struct rt_serial_device *sdev)
return rt_dm_dev_set_name(&sdev->parent, "uart%u", id);
}
static int serial_dm_naming_framework_init(void)
{
#ifdef RT_USING_OFW
uid_min = rt_ofw_get_alias_last_id("serial");
if (uid_min < 0)
{
uid_min = rt_ofw_get_alias_last_id("uart");
}
uid_min = uid_min < 0 ? 0 : (uid_min + 1);
rt_hw_atomic_store(&uid, uid_min);
#endif
return 0;
}
INIT_PLATFORM_EXPORT(serial_dm_naming_framework_init);
void *serial_base_from_args(char *str)
{
rt_ubase_t base = 0;