Skip to content
Merged
Show file tree
Hide file tree
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
44 changes: 39 additions & 5 deletions components/drivers/core/dm.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@

#include <rtthread.h>

#define DBG_TAG "rtdm"
#define DBG_LVL DBG_INFO
#include <rtdbg.h>

#ifdef RT_USING_OFW
#include <drivers/ofw_io.h>
#include <drivers/ofw_irq.h>
Expand Down Expand Up @@ -302,6 +306,23 @@ const char *rt_dm_dev_get_name(rt_device_t dev)
#define ofw_api_call_ptr(name, ...) RT_NULL
#endif

rt_bool_t rt_dm_dev_is_big_endian(rt_device_t dev)
{
if (rt_dm_dev_prop_read_bool(dev, "big-endian"))
{
return RT_TRUE;
}

#ifdef ARCH_CPU_BIG_ENDIAN
if (rt_dm_dev_prop_read_bool(dev, "native-endian"))
{
return RT_TRUE;
}
#endif /* ARCH_CPU_BIG_ENDIAN */

return RT_FALSE;
}

int rt_dm_dev_get_address_count(rt_device_t dev)
{
RT_ASSERT(dev != RT_NULL);
Expand Down Expand Up @@ -445,7 +466,7 @@ void rt_dm_dev_bind_fwdata(rt_device_t dev, void *fw_np, void *data)

if (dev->ofw_node == RT_NULL)
{
rt_kprintf("[%s:%s] line=%d ofw_node is NULL\r\n", __FILE__, __func__, __LINE__);
LOG_D("[%s:%s] line=%d ofw_node is NULL", __FILE__, __func__, __LINE__);
return;
}

Expand All @@ -468,24 +489,38 @@ void rt_dm_dev_unbind_fwdata(rt_device_t dev, void *fw_np)

if (dev_fw_np == RT_NULL)
{
rt_kprintf("[%s:%s] line=%d dev_fw_np is NULL\r\n", __FILE__, __func__, __LINE__);
LOG_D("[%s:%s] line=%d dev_fw_np is NULL", __FILE__, __func__, __LINE__);
return;
}

rt_ofw_data(dev_fw_np) = RT_NULL;
#endif
}

const char *rt_dm_dev_get_prop_fuzzy_name(rt_device_t dev, const char *name)
{
RT_ASSERT(dev != RT_NULL);

#ifdef RT_USING_OFW
if (dev->ofw_node)
{
return ofw_api_call_ptr(get_prop_fuzzy_name, dev->ofw_node, name);
}
#endif

return RT_NULL;
}

int rt_dm_dev_prop_read_u8_array_index(rt_device_t dev, const char *propname,
int index, int nr, rt_uint8_t *out_values)
{
RT_ASSERT(dev != RT_NULL);

#ifdef RT_UISNG_OFW
#ifdef RT_USING_OFW
if (dev->ofw_node)
{
return ofw_api_call(prop_read_u8_array_index, dev->ofw_node, propname,
index, nr, out_value);
index, nr, out_values);
}
#endif

Expand Down Expand Up @@ -597,4 +632,3 @@ rt_bool_t rt_dm_dev_prop_read_bool(rt_device_t dev, const char *propname)

return RT_FALSE;
}

12 changes: 12 additions & 0 deletions components/drivers/include/drivers/core/dm.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,14 @@ extern int rt_hw_cpu_id(void);
#define RT_MAX_IPI 0
#endif

#ifndef DM_THREAD_STACK_SIZE
#ifdef SYSTEM_THREAD_STACK_SIZE
#define DM_THREAD_STACK_SIZE SYSTEM_THREAD_STACK_SIZE
#else
#define DM_THREAD_STACK_SIZE IDLE_THREAD_STACK_SIZE
#endif
#endif

void rt_dm_secondary_cpu_init(void);

/* ID Allocation */
Expand Down Expand Up @@ -62,6 +70,8 @@ int rt_dm_dev_get_name_id(rt_device_t dev);
int rt_dm_dev_set_name(rt_device_t dev, const char *format, ...);
const char *rt_dm_dev_get_name(rt_device_t dev);

rt_bool_t rt_dm_dev_is_big_endian(rt_device_t dev);

int rt_dm_dev_get_address_count(rt_device_t dev);
rt_err_t rt_dm_dev_get_address(rt_device_t dev, int index,
rt_uint64_t *out_address, rt_uint64_t *out_size);
Expand All @@ -79,6 +89,8 @@ int rt_dm_dev_get_irq_by_name(rt_device_t dev, const char *name);
void rt_dm_dev_bind_fwdata(rt_device_t dev, void *fw_np, void *data);
void rt_dm_dev_unbind_fwdata(rt_device_t dev, void *fw_np);

const char *rt_dm_dev_get_prop_fuzzy_name(rt_device_t dev, const char *name);

int rt_dm_dev_prop_read_u8_array_index(rt_device_t dev, const char *propname,
int index, int nr, rt_uint8_t *out_values);
int rt_dm_dev_prop_read_u16_array_index(rt_device_t dev, const char *propname,
Expand Down
2 changes: 1 addition & 1 deletion components/drivers/include/drivers/core/master_id.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
/* TTY */
#define MASTER_ID_TTY 141
#define MASTER_ID_TTY_SLAVES 142
#define MASTER_ID_TTY_ALTERNATE 143
#define MASTER_ID_TTY_ALTERNATE 143
#define MASTER_ID_PTMX 144

/* USB */
Expand Down