mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
dm: core: Move flags to device-runtime info
When of-platdata-inst is active, use the flags in the new udevice_rt table, dropping them from the main struct udevice. This ensures that the latter is not updated at runtime. Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
ab933d8026
commit
6f644efdd8
2 changed files with 41 additions and 0 deletions
|
@ -1136,3 +1136,36 @@ int dev_enable_by_path(const char *path)
|
|||
return lists_bind_fdt(parent, node, NULL, false);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if CONFIG_IS_ENABLED(OF_PLATDATA_RT)
|
||||
static struct udevice_rt *dev_get_rt(const struct udevice *dev)
|
||||
{
|
||||
struct udevice *base = ll_entry_start(struct udevice, udevice);
|
||||
int idx = dev - base;
|
||||
|
||||
struct udevice_rt *urt = gd_dm_udevice_rt() + idx;
|
||||
|
||||
return urt;
|
||||
}
|
||||
|
||||
u32 dev_get_flags(const struct udevice *dev)
|
||||
{
|
||||
const struct udevice_rt *urt = dev_get_rt(dev);
|
||||
|
||||
return urt->flags_;
|
||||
}
|
||||
|
||||
void dev_or_flags(const struct udevice *dev, u32 or)
|
||||
{
|
||||
struct udevice_rt *urt = dev_get_rt(dev);
|
||||
|
||||
urt->flags_ |= or;
|
||||
}
|
||||
|
||||
void dev_bic_flags(const struct udevice *dev, u32 bic)
|
||||
{
|
||||
struct udevice_rt *urt = dev_get_rt(dev);
|
||||
|
||||
urt->flags_ &= ~bic;
|
||||
}
|
||||
#endif /* OF_PLATDATA_RT */
|
||||
|
|
|
@ -177,7 +177,9 @@ struct udevice {
|
|||
struct list_head uclass_node;
|
||||
struct list_head child_head;
|
||||
struct list_head sibling_node;
|
||||
#if !CONFIG_IS_ENABLED(OF_PLATDATA_RT)
|
||||
u32 flags_;
|
||||
#endif
|
||||
int seq_;
|
||||
#if !CONFIG_IS_ENABLED(OF_PLATDATA)
|
||||
ofnode node_;
|
||||
|
@ -211,6 +213,11 @@ struct udevice_rt {
|
|||
/* Returns the operations for a device */
|
||||
#define device_get_ops(dev) (dev->driver->ops)
|
||||
|
||||
#if CONFIG_IS_ENABLED(OF_PLATDATA_RT)
|
||||
u32 dev_get_flags(const struct udevice *dev);
|
||||
void dev_or_flags(const struct udevice *dev, u32 or);
|
||||
void dev_bic_flags(const struct udevice *dev, u32 bic);
|
||||
#else
|
||||
static inline u32 dev_get_flags(const struct udevice *dev)
|
||||
{
|
||||
return dev->flags_;
|
||||
|
@ -225,6 +232,7 @@ static inline void dev_bic_flags(struct udevice *dev, u32 bic)
|
|||
{
|
||||
dev->flags_ &= ~bic;
|
||||
}
|
||||
#endif /* OF_PLATDATA_RT */
|
||||
|
||||
/**
|
||||
* dev_ofnode() - get the DT node reference associated with a udevice
|
||||
|
|
Loading…
Reference in a new issue