* @param gp   GPIO number
  * @return -1 on error, 0 if GPIO is low, >0 if high
  */
-int sandbox_gpio_get_value(struct device *dev, unsigned int offset);
+int sandbox_gpio_get_value(struct udevice *dev, unsigned int offset);
 
 /**
  * Set the simulated value of a GPIO (used only in sandbox test code)
  * @param value        value to set (0 for low, non-zero for high)
  * @return -1 on error, 0 if ok
  */
-int sandbox_gpio_set_value(struct device *dev, unsigned int offset, int value);
+int sandbox_gpio_set_value(struct udevice *dev, unsigned int offset, int value);
 
 /**
  * Return the simulated direction of a GPIO (used only in sandbox test code)
  * @param gp   GPIO number
  * @return -1 on error, 0 if GPIO is input, >0 if output
  */
-int sandbox_gpio_get_direction(struct device *dev, unsigned int offset);
+int sandbox_gpio_get_direction(struct udevice *dev, unsigned int offset);
 
 /**
  * Set the simulated direction of a GPIO (used only in sandbox test code)
  * @param output 0 to set as input, 1 to set as output
  * @return -1 on error, 0 if ok
  */
-int sandbox_gpio_set_direction(struct device *dev, unsigned int offset,
+int sandbox_gpio_set_direction(struct udevice *dev, unsigned int offset,
                               int output);
 
 #endif
 
 #include <dm-demo.h>
 #include <asm/io.h>
 
-struct device *demo_dev;
+struct udevice *demo_dev;
 
 static int do_demo_hello(cmd_tbl_t *cmdtp, int flag, int argc,
                         char * const argv[])
 
 int do_demo_list(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
-       struct device *dev;
+       struct udevice *dev;
        int i, ret;
 
        puts("Demo uclass entries:\n");
 
        "unknown",
 };
 
-static void show_gpio(struct device *dev, const char *bank_name, int offset)
+static void show_gpio(struct udevice *dev, const char *bank_name, int offset)
 {
        struct dm_gpio_ops *ops = gpio_get_ops(dev);
        char buf[80];
 
 static int do_gpio_status(const char *gpio_name)
 {
-       struct device *dev;
+       struct udevice *dev;
        int newline = 0;
        int ret;
 
 
 Let's start at the top. The demo command is in common/cmd_demo.c. It does
 the usual command procesing and then:
 
-       struct device *demo_dev;
+       struct udevice *demo_dev;
 
        ret = uclass_get_device(UCLASS_DEMO, devnum, &demo_dev);
 
 
 The code for demo_hello() is in drivers/demo/demo-uclass.c:
 
-int demo_hello(struct device *dev, int ch)
+int demo_hello(struct udevice *dev, int ch)
 {
        const struct demo_ops *ops = device_get_ops(dev);
 
 As you can see it just calls the relevant driver method. One of these is
 in drivers/demo/demo-simple.c:
 
-static int simple_hello(struct device *dev, int ch)
+static int simple_hello(struct udevice *dev, int ch)
 {
        const struct dm_demo_pdata *pdata = dev_get_platdata(dev);
 
 this concept relates to a class of drivers (or a subsystem). We shouldn't
 use 'class' since it is a C++ reserved word, so U-Boot class (uclass) seems
 better than 'core'.
-- Remove 'struct driver_instance' and just use a single 'struct device'.
+- Remove 'struct driver_instance' and just use a single 'struct udevice'.
 This removes a level of indirection that doesn't seem necessary.
 - Built in device tree support, to avoid the need for platdata
 - Removed the concept of driver relocation, and just make it possible for
 
  * @dev:       The device that is to be stripped of its children
  * @return 0 on success, -ve on error
  */
-static int device_chld_unbind(struct device *dev)
+static int device_chld_unbind(struct udevice *dev)
 {
-       struct device *pos, *n;
+       struct udevice *pos, *n;
        int ret, saved_ret = 0;
 
        assert(dev);
  * @dev:       The device whose children are to be removed
  * @return 0 on success, -ve on error
  */
-static int device_chld_remove(struct device *dev)
+static int device_chld_remove(struct udevice *dev)
 {
-       struct device *pos, *n;
+       struct udevice *pos, *n;
        int ret;
 
        assert(dev);
        return 0;
 }
 
-int device_bind(struct device *parent, struct driver *drv, const char *name,
-               void *platdata, int of_offset, struct device **devp)
+int device_bind(struct udevice *parent, struct driver *drv, const char *name,
+               void *platdata, int of_offset, struct udevice **devp)
 {
-       struct device *dev;
+       struct udevice *dev;
        struct uclass *uc;
        int ret = 0;
 
        if (ret)
                return ret;
 
-       dev = calloc(1, sizeof(struct device));
+       dev = calloc(1, sizeof(struct udevice));
        if (!dev)
                return -ENOMEM;
 
        return ret;
 }
 
-int device_bind_by_name(struct device *parent, const struct driver_info *info,
-                       struct device **devp)
+int device_bind_by_name(struct udevice *parent, const struct driver_info *info,
+                       struct udevice **devp)
 {
        struct driver *drv;
 
                           -1, devp);
 }
 
-int device_unbind(struct device *dev)
+int device_unbind(struct udevice *dev)
 {
        struct driver *drv;
        int ret;
  * device_free() - Free memory buffers allocated by a device
  * @dev:       Device that is to be started
  */
-static void device_free(struct device *dev)
+static void device_free(struct udevice *dev)
 {
        int size;
 
        }
 }
 
-int device_probe(struct device *dev)
+int device_probe(struct udevice *dev)
 {
        struct driver *drv;
        int size = 0;
        return ret;
 }
 
-int device_remove(struct device *dev)
+int device_remove(struct udevice *dev)
 {
        struct driver *drv;
        int ret;
        return ret;
 }
 
-void *dev_get_platdata(struct device *dev)
+void *dev_get_platdata(struct udevice *dev)
 {
        if (!dev) {
                dm_warn("%s: null device", __func__);
        return dev->platdata;
 }
 
-void *dev_get_priv(struct device *dev)
+void *dev_get_priv(struct udevice *dev)
 {
        if (!dev) {
                dm_warn("%s: null device", __func__);
 
        return NULL;
 }
 
-int lists_bind_drivers(struct device *parent)
+int lists_bind_drivers(struct udevice *parent)
 {
        struct driver_info *info =
                ll_entry_start(struct driver_info, driver_info);
        const int n_ents = ll_entry_count(struct driver_info, driver_info);
        struct driver_info *entry;
-       struct device *dev;
+       struct udevice *dev;
        int result = 0;
        int ret;
 
        return -ENOENT;
 }
 
-int lists_bind_fdt(struct device *parent, const void *blob, int offset)
+int lists_bind_fdt(struct udevice *parent, const void *blob, int offset)
 {
        struct driver *driver = ll_entry_start(struct driver, driver);
        const int n_ents = ll_entry_count(struct driver, driver);
        struct driver *entry;
-       struct device *dev;
+       struct udevice *dev;
        const char *name;
        int result = 0;
        int ret;
 
        .name           = "root_driver",
 };
 
-struct device *dm_root(void)
+struct udevice *dm_root(void)
 {
        if (!gd->dm_root) {
                dm_warn("Virtual root driver does not exist!\n");
 
 int uclass_destroy(struct uclass *uc)
 {
        struct uclass_driver *uc_drv;
-       struct device *dev, *tmp;
+       struct udevice *dev, *tmp;
        int ret;
 
        list_for_each_entry_safe(dev, tmp, &uc->dev_head, uclass_node) {
        return 0;
 }
 
-int uclass_find_device(enum uclass_id id, int index, struct device **devp)
+int uclass_find_device(enum uclass_id id, int index, struct udevice **devp)
 {
        struct uclass *uc;
-       struct device *dev;
+       struct udevice *dev;
        int ret;
 
        *devp = NULL;
        return -ENODEV;
 }
 
-int uclass_get_device(enum uclass_id id, int index, struct device **devp)
+int uclass_get_device(enum uclass_id id, int index, struct udevice **devp)
 {
-       struct device *dev;
+       struct udevice *dev;
        int ret;
 
        *devp = NULL;
        return 0;
 }
 
-int uclass_first_device(enum uclass_id id, struct device **devp)
+int uclass_first_device(enum uclass_id id, struct udevice **devp)
 {
        struct uclass *uc;
-       struct device *dev;
+       struct udevice *dev;
        int ret;
 
        *devp = NULL;
        if (list_empty(&uc->dev_head))
                return 0;
 
-       dev = list_first_entry(&uc->dev_head, struct device, uclass_node);
+       dev = list_first_entry(&uc->dev_head, struct udevice, uclass_node);
        ret = device_probe(dev);
        if (ret)
                return ret;
        return 0;
 }
 
-int uclass_next_device(struct device **devp)
+int uclass_next_device(struct udevice **devp)
 {
-       struct device *dev = *devp;
+       struct udevice *dev = *devp;
        int ret;
 
        *devp = NULL;
        if (list_is_last(&dev->uclass_node, &dev->uclass->dev_head))
                return 0;
 
-       dev = list_entry(dev->uclass_node.next, struct device, uclass_node);
+       dev = list_entry(dev->uclass_node.next, struct udevice,
+                        uclass_node);
        ret = device_probe(dev);
        if (ret)
                return ret;
        return 0;
 }
 
-int uclass_bind_device(struct device *dev)
+int uclass_bind_device(struct udevice *dev)
 {
        struct uclass *uc;
        int ret;
        return 0;
 }
 
-int uclass_unbind_device(struct device *dev)
+int uclass_unbind_device(struct udevice *dev)
 {
        struct uclass *uc;
        int ret;
        return 0;
 }
 
-int uclass_post_probe_device(struct device *dev)
+int uclass_post_probe_device(struct udevice *dev)
 {
        struct uclass_driver *uc_drv = dev->uclass->uc_drv;
 
        return 0;
 }
 
-int uclass_pre_remove_device(struct device *dev)
+int uclass_pre_remove_device(struct udevice *dev)
 {
        struct uclass_driver *uc_drv;
        struct uclass *uc;
 
 };
 
 /* Crazy little function to draw shapes on the console */
-static int shape_hello(struct device *dev, int ch)
+static int shape_hello(struct udevice *dev, int ch)
 {
        const struct dm_demo_pdata *pdata = dev_get_platdata(dev);
        struct shape_data *data = dev_get_priv(dev);
        return 0;
 }
 
-static int shape_status(struct device *dev, int *status)
+static int shape_status(struct udevice *dev, int *status)
 {
        struct shape_data *data = dev_get_priv(dev);
 
        .status = shape_status,
 };
 
-static int shape_ofdata_to_platdata(struct device *dev)
+static int shape_ofdata_to_platdata(struct udevice *dev)
 {
        struct dm_demo_pdata *pdata = dev_get_platdata(dev);
        int ret;
 
 #include <dm-demo.h>
 #include <asm/io.h>
 
-static int simple_hello(struct device *dev, int ch)
+static int simple_hello(struct udevice *dev, int ch)
 {
        const struct dm_demo_pdata *pdata = dev_get_platdata(dev);
 
        .hello = simple_hello,
 };
 
-static int demo_shape_ofdata_to_platdata(struct device *dev)
+static int demo_shape_ofdata_to_platdata(struct udevice *dev)
 {
        /* Parse the data that is common with all demo devices */
        return demo_parse_dt(dev);
 
        .id             = UCLASS_DEMO,
 };
 
-int demo_hello(struct device *dev, int ch)
+int demo_hello(struct udevice *dev, int ch)
 {
        const struct demo_ops *ops = device_get_ops(dev);
 
        return ops->hello(dev, ch);
 }
 
-int demo_status(struct device *dev, int *status)
+int demo_status(struct udevice *dev, int *status)
 {
        const struct demo_ops *ops = device_get_ops(dev);
 
        return ops->status(dev, status);
 }
 
-int demo_parse_dt(struct device *dev)
+int demo_parse_dt(struct udevice *dev)
 {
        struct dm_demo_pdata *pdata = dev_get_platdata(dev);
        int dn = dev->of_offset;
 
  * or GPIO blocks registered with the GPIO controller. Returns
  * entry on success, NULL on error.
  */
-static int gpio_to_device(unsigned int gpio, struct device **devp,
+static int gpio_to_device(unsigned int gpio, struct udevice **devp,
                          unsigned int *offset)
 {
        struct gpio_dev_priv *uc_priv;
-       struct device *dev;
+       struct udevice *dev;
        int ret;
 
        for (ret = uclass_first_device(UCLASS_GPIO, &dev);
        return ret ? ret : -EINVAL;
 }
 
-int gpio_lookup_name(const char *name, struct device **devp,
+int gpio_lookup_name(const char *name, struct udevice **devp,
                     unsigned int *offsetp, unsigned int *gpiop)
 {
        struct gpio_dev_priv *uc_priv;
-       struct device *dev;
+       struct udevice *dev;
        int ret;
 
        if (devp)
 int gpio_request(unsigned gpio, const char *label)
 {
        unsigned int offset;
-       struct device *dev;
+       struct udevice *dev;
        int ret;
 
        ret = gpio_to_device(gpio, &dev, &offset);
 int gpio_free(unsigned gpio)
 {
        unsigned int offset;
-       struct device *dev;
+       struct udevice *dev;
        int ret;
 
        ret = gpio_to_device(gpio, &dev, &offset);
 int gpio_direction_input(unsigned gpio)
 {
        unsigned int offset;
-       struct device *dev;
+       struct udevice *dev;
        int ret;
 
        ret = gpio_to_device(gpio, &dev, &offset);
 int gpio_direction_output(unsigned gpio, int value)
 {
        unsigned int offset;
-       struct device *dev;
+       struct udevice *dev;
        int ret;
 
        ret = gpio_to_device(gpio, &dev, &offset);
 int gpio_get_value(unsigned gpio)
 {
        unsigned int offset;
-       struct device *dev;
+       struct udevice *dev;
        int ret;
 
        ret = gpio_to_device(gpio, &dev, &offset);
 int gpio_set_value(unsigned gpio, int value)
 {
        unsigned int offset;
-       struct device *dev;
+       struct udevice *dev;
        int ret;
 
        ret = gpio_to_device(gpio, &dev, &offset);
        return gpio_get_ops(dev)->set_value(dev, offset, value);
 }
 
-const char *gpio_get_bank_info(struct device *dev, int *bit_count)
+const char *gpio_get_bank_info(struct udevice *dev, int *bit_count)
 {
        struct gpio_dev_priv *priv;
 
 static int gpio_renumber(void)
 {
        struct gpio_dev_priv *uc_priv;
-       struct device *dev;
+       struct udevice *dev;
        struct uclass *uc;
        unsigned base;
        int ret;
        return 0;
 }
 
-static int gpio_post_probe(struct device *dev)
+static int gpio_post_probe(struct udevice *dev)
 {
        return gpio_renumber();
 }
 
-static int gpio_pre_remove(struct device *dev)
+static int gpio_pre_remove(struct udevice *dev)
 {
        return gpio_renumber();
 }
 
 };
 
 /* Access routines for GPIO state */
-static u8 *get_gpio_flags(struct device *dev, unsigned offset)
+static u8 *get_gpio_flags(struct udevice *dev, unsigned offset)
 {
        struct gpio_dev_priv *uc_priv = dev->uclass_priv;
        struct gpio_state *state = dev_get_priv(dev);
        return &state[offset].flags;
 }
 
-static int get_gpio_flag(struct device *dev, unsigned offset, int flag)
+static int get_gpio_flag(struct udevice *dev, unsigned offset, int flag)
 {
        return (*get_gpio_flags(dev, offset) & flag) != 0;
 }
 
-static int set_gpio_flag(struct device *dev, unsigned offset, int flag,
+static int set_gpio_flag(struct udevice *dev, unsigned offset, int flag,
                         int value)
 {
        u8 *gpio = get_gpio_flags(dev, offset);
        return 0;
 }
 
-static int check_reserved(struct device *dev, unsigned offset,
+static int check_reserved(struct udevice *dev, unsigned offset,
                          const char *func)
 {
        if (!get_gpio_flag(dev, offset, GPIOF_RESERVED)) {
  * Back-channel sandbox-internal-only access to GPIO state
  */
 
-int sandbox_gpio_get_value(struct device *dev, unsigned offset)
+int sandbox_gpio_get_value(struct udevice *dev, unsigned offset)
 {
        if (get_gpio_flag(dev, offset, GPIOF_OUTPUT))
                debug("sandbox_gpio: get_value on output gpio %u\n", offset);
        return get_gpio_flag(dev, offset, GPIOF_HIGH);
 }
 
-int sandbox_gpio_set_value(struct device *dev, unsigned offset, int value)
+int sandbox_gpio_set_value(struct udevice *dev, unsigned offset, int value)
 {
        return set_gpio_flag(dev, offset, GPIOF_HIGH, value);
 }
 
-int sandbox_gpio_get_direction(struct device *dev, unsigned offset)
+int sandbox_gpio_get_direction(struct udevice *dev, unsigned offset)
 {
        return get_gpio_flag(dev, offset, GPIOF_OUTPUT);
 }
 
-int sandbox_gpio_set_direction(struct device *dev, unsigned offset, int output)
+int sandbox_gpio_set_direction(struct udevice *dev, unsigned offset, int output)
 {
        return set_gpio_flag(dev, offset, GPIOF_OUTPUT, output);
 }
  */
 
 /* set GPIO port 'offset' as an input */
-static int sb_gpio_direction_input(struct device *dev, unsigned offset)
+static int sb_gpio_direction_input(struct udevice *dev, unsigned offset)
 {
        debug("%s: offset:%u\n", __func__, offset);
 
 }
 
 /* set GPIO port 'offset' as an output, with polarity 'value' */
-static int sb_gpio_direction_output(struct device *dev, unsigned offset,
+static int sb_gpio_direction_output(struct udevice *dev, unsigned offset,
                                    int value)
 {
        debug("%s: offset:%u, value = %d\n", __func__, offset, value);
 }
 
 /* read GPIO IN value of port 'offset' */
-static int sb_gpio_get_value(struct device *dev, unsigned offset)
+static int sb_gpio_get_value(struct udevice *dev, unsigned offset)
 {
        debug("%s: offset:%u\n", __func__, offset);
 
 }
 
 /* write GPIO OUT value to port 'offset' */
-static int sb_gpio_set_value(struct device *dev, unsigned offset, int value)
+static int sb_gpio_set_value(struct udevice *dev, unsigned offset, int value)
 {
        debug("%s: offset:%u, value = %d\n", __func__, offset, value);
 
        return sandbox_gpio_set_value(dev, offset, value);
 }
 
-static int sb_gpio_request(struct device *dev, unsigned offset,
+static int sb_gpio_request(struct udevice *dev, unsigned offset,
                           const char *label)
 {
        struct gpio_dev_priv *uc_priv = dev->uclass_priv;
        return set_gpio_flag(dev, offset, GPIOF_RESERVED, 1);
 }
 
-static int sb_gpio_free(struct device *dev, unsigned offset)
+static int sb_gpio_free(struct udevice *dev, unsigned offset)
 {
        struct gpio_state *state = dev_get_priv(dev);
 
        return set_gpio_flag(dev, offset, GPIOF_RESERVED, 0);
 }
 
-static int sb_gpio_get_state(struct device *dev, unsigned int offset,
+static int sb_gpio_get_state(struct udevice *dev, unsigned int offset,
                             char *buf, int bufsize)
 {
        struct gpio_dev_priv *uc_priv = dev->uclass_priv;
        .get_state              = sb_gpio_get_state,
 };
 
-static int sandbox_gpio_ofdata_to_platdata(struct device *dev)
+static int sandbox_gpio_ofdata_to_platdata(struct udevice *dev)
 {
        struct gpio_dev_priv *uc_priv = dev->uclass_priv;
 
        return 0;
 }
 
-static int gpio_sandbox_probe(struct device *dev)
+static int gpio_sandbox_probe(struct udevice *dev)
 {
        struct gpio_dev_priv *uc_priv = dev->uclass_priv;
 
 
        struct global_data *new_gd;     /* relocated global data */
 
 #ifdef CONFIG_DM
-       struct device   *dm_root;       /* Root instance for Driver Model */
+       struct udevice  *dm_root;/* Root instance for Driver Model */
        struct list_head uclass_root;   /* Head of core tree */
 #endif
 
 
        GPIOF_UNKNOWN,
 };
 
-struct device;
+struct udevice;
 
 /**
  * struct struct dm_gpio_ops - Driver model GPIO operations
  * all devices. Be careful not to confuse offset with gpio in the parameters.
  */
 struct dm_gpio_ops {
-       int (*request)(struct device *dev, unsigned offset, const char *label);
-       int (*free)(struct device *dev, unsigned offset);
-       int (*direction_input)(struct device *dev, unsigned offset);
-       int (*direction_output)(struct device *dev, unsigned offset,
+       int (*request)(struct udevice *dev, unsigned offset, const char *label);
+       int (*free)(struct udevice *dev, unsigned offset);
+       int (*direction_input)(struct udevice *dev, unsigned offset);
+       int (*direction_output)(struct udevice *dev, unsigned offset,
                                int value);
-       int (*get_value)(struct device *dev, unsigned offset);
-       int (*set_value)(struct device *dev, unsigned offset, int value);
-       int (*get_function)(struct device *dev, unsigned offset);
-       int (*get_state)(struct device *dev, unsigned offset, char *state,
+       int (*get_value)(struct udevice *dev, unsigned offset);
+       int (*set_value)(struct udevice *dev, unsigned offset, int value);
+       int (*get_function)(struct udevice *dev, unsigned offset);
+       int (*get_state)(struct udevice *dev, unsigned offset, char *state,
                         int maxlen);
 };
 
  * @offset_count: Returns number of GPIOs within this bank
  * @return bank name of this device
  */
-const char *gpio_get_bank_info(struct device *dev, int *offset_count);
+const char *gpio_get_bank_info(struct udevice *dev, int *offset_count);
 
 /**
  * gpio_lookup_name - Look up a GPIO name and return its details
  * @offsetp: Returns the offset number within this device
  * @gpiop: Returns the absolute GPIO number, numbered from 0
  */
-int gpio_lookup_name(const char *name, struct device **devp,
+int gpio_lookup_name(const char *name, struct udevice **devp,
                     unsigned int *offsetp, unsigned int *gpiop);
 
 #endif /* _ASM_GENERIC_GPIO_H_ */
 
 };
 
 struct demo_ops {
-       int (*hello)(struct device *dev, int ch);
-       int (*status)(struct device *dev, int *status);
+       int (*hello)(struct udevice *dev, int ch);
+       int (*status)(struct udevice *dev, int *status);
 };
 
-int demo_hello(struct device *dev, int ch);
-int demo_status(struct device *dev, int *status);
+int demo_hello(struct udevice *dev, int ch);
+int demo_status(struct udevice *dev, int *status);
 int demo_list(void);
 
-int demo_parse_dt(struct device *dev);
+int demo_parse_dt(struct udevice *dev);
 
 #endif
 
 #ifndef _DM_DEVICE_INTERNAL_H
 #define _DM_DEVICE_INTERNAL_H
 
-struct device;
+struct udevice;
 
 /**
  * device_bind() - Create a device and bind it to a driver
  * @devp: Returns a pointer to the bound device
  * @return 0 if OK, -ve on error
  */
-int device_bind(struct device *parent, struct driver *drv,
+int device_bind(struct udevice *parent, struct driver *drv,
                const char *name, void *platdata, int of_offset,
-               struct device **devp);
+               struct udevice **devp);
 
 /**
  * device_bind_by_name: Create a device and bind it to a driver
  * @devp: Returns a pointer to the bound device
  * @return 0 if OK, -ve on error
  */
-int device_bind_by_name(struct device *parent, const struct driver_info *info,
-                       struct device **devp);
+int device_bind_by_name(struct udevice *parent, const struct driver_info *info,
+                       struct udevice **devp);
 
 /**
  * device_probe() - Probe a device, activating it
  * @dev: Pointer to device to probe
  * @return 0 if OK, -ve on error
  */
-int device_probe(struct device *dev);
+int device_probe(struct udevice *dev);
 
 /**
  * device_remove() - Remove a device, de-activating it
  * @dev: Pointer to device to remove
  * @return 0 if OK, -ve on error (an error here is normally a very bad thing)
  */
-int device_remove(struct device *dev);
+int device_remove(struct udevice *dev);
 
 /**
  * device_unbind() - Unbind a device, destroying it
  * @dev: Pointer to device to unbind
  * @return 0 if OK, -ve on error
  */
-int device_unbind(struct device *dev);
+int device_unbind(struct udevice *dev);
 
 #endif
 
 #define DM_FLAG_ALLOC_PDATA    (2 << 0)
 
 /**
- * struct device - An instance of a driver
+ * struct udevice - An instance of a driver
  *
  * This holds information about a device, which is a driver bound to a
  * particular port or peripheral (essentially a driver instance).
  * @sibling_node: Next device in list of all devices
  * @flags: Flags for this device DM_FLAG_...
  */
-struct device {
+struct udevice {
        struct driver *driver;
        const char *name;
        void *platdata;
        int of_offset;
-       struct device *parent;
+       struct udevice *parent;
        void *priv;
        struct uclass *uclass;
        void *uclass_priv;
        char *name;
        enum uclass_id id;
        const struct device_id *of_match;
-       int (*bind)(struct device *dev);
-       int (*probe)(struct device *dev);
-       int (*remove)(struct device *dev);
-       int (*unbind)(struct device *dev);
-       int (*ofdata_to_platdata)(struct device *dev);
+       int (*bind)(struct udevice *dev);
+       int (*probe)(struct udevice *dev);
+       int (*remove)(struct udevice *dev);
+       int (*unbind)(struct udevice *dev);
+       int (*ofdata_to_platdata)(struct udevice *dev);
        int priv_auto_alloc_size;
        int platdata_auto_alloc_size;
        const void *ops;        /* driver-specific operations */
  * @dev                Device to check
  * @return platform data, or NULL if none
  */
-void *dev_get_platdata(struct device *dev);
+void *dev_get_platdata(struct udevice *dev);
 
 /**
  * dev_get_priv() - Get the private data for a device
  * @dev                Device to check
  * @return private data, or NULL if none
  */
-void *dev_get_priv(struct device *dev);
+void *dev_get_priv(struct udevice *dev);
 
 #endif
 
  */
 struct uclass_driver *lists_uclass_lookup(enum uclass_id id);
 
-int lists_bind_drivers(struct device *parent);
+int lists_bind_drivers(struct udevice *parent);
 
-int lists_bind_fdt(struct device *parent, const void *blob, int offset);
+int lists_bind_fdt(struct udevice *parent, const void *blob, int offset);
 
 #endif
 
 #ifndef _DM_ROOT_H_
 #define _DM_ROOT_H_
 
-struct device;
+struct udevice;
 
 /**
  * dm_root() - Return pointer to the top of the driver tree
  *
  * @return pointer to root device, or NULL if not inited yet
  */
-struct device *dm_root(void);
+struct udevice *dm_root(void);
 
 /**
  * dm_scan_platdata() - Scan all platform data and bind drivers
 
  *     @return 0 if OK, -ve on error
  */
 struct test_ops {
-       int (*ping)(struct device *dev, int pingval, int *pingret);
+       int (*ping)(struct udevice *dev, int pingval, int *pingret);
 };
 
 /* Operations that our test driver supports */
  * @skip_post_probe: Skip uclass post-probe processing
  */
 struct dm_test_state {
-       struct device *root;
-       struct device *testdev;
+       struct udevice *root;
+       struct udevice *testdev;
        int fail_count;
        int force_fail_alloc;
        int skip_post_probe;
        }
 
 /* Declare ping methods for the drivers */
-int test_ping(struct device *dev, int pingval, int *pingret);
-int testfdt_ping(struct device *dev, int pingval, int *pingret);
+int test_ping(struct udevice *dev, int pingval, int *pingret);
+int testfdt_ping(struct udevice *dev, int pingval, int *pingret);
 
 /**
  * dm_check_operations() - Check that we can perform ping operations
  * @priv: Pointer to private test information
  * @return 0 if OK, -ve on error
  */
-int dm_check_operations(struct dm_test_state *dms, struct device *dev,
+int dm_check_operations(struct dm_test_state *dms, struct udevice *dev,
                        uint32_t base, struct dm_test_priv *priv);
 
 /**
 
  * @return the uclass pointer of a child at the given index or
  * return NULL on error.
  */
-int uclass_find_device(enum uclass_id id, int index, struct device **devp);
+int uclass_find_device(enum uclass_id id, int index, struct udevice **devp);
 
 /**
  * uclass_bind_device() - Associate device with a uclass
  * @dev:       Pointer to the device
  * #return 0 on success, -ve on error
  */
-int uclass_bind_device(struct device *dev);
+int uclass_bind_device(struct udevice *dev);
 
 /**
  * uclass_unbind_device() - Deassociate device with a uclass
  * @dev:       Pointer to the device
  * #return 0 on success, -ve on error
  */
-int uclass_unbind_device(struct device *dev);
+int uclass_unbind_device(struct udevice *dev);
 
 /**
  * uclass_post_probe_device() - Deal with a device that has just been probed
  * @dev:       Pointer to the device
  * #return 0 on success, -ve on error
  */
-int uclass_post_probe_device(struct device *dev);
+int uclass_post_probe_device(struct udevice *dev);
 
 /**
  * uclass_pre_remove_device() - Handle a device which is about to be removed
  * @dev:       Pointer to the device
  * #return 0 on success, -ve on error
  */
-int uclass_pre_remove_device(struct device *dev);
+int uclass_pre_remove_device(struct udevice *dev);
 
 /**
  * uclass_find() - Find uclass by its id
 
        struct list_head sibling_node;
 };
 
-struct device;
+struct udevice;
 
 /**
  * struct uclass_driver - Driver for the uclass
 struct uclass_driver {
        const char *name;
        enum uclass_id id;
-       int (*post_bind)(struct device *dev);
-       int (*pre_unbind)(struct device *dev);
-       int (*post_probe)(struct device *dev);
-       int (*pre_remove)(struct device *dev);
+       int (*post_bind)(struct udevice *dev);
+       int (*pre_unbind)(struct udevice *dev);
+       int (*post_probe)(struct udevice *dev);
+       int (*pre_remove)(struct udevice *dev);
        int (*init)(struct uclass *class);
        int (*destroy)(struct uclass *class);
        int priv_auto_alloc_size;
  * @ucp: Returns pointer to uclass (there is only one per for each ID)
  * @return 0 if OK, -ve on error
  */
-int uclass_get_device(enum uclass_id id, int index, struct device **ucp);
+int uclass_get_device(enum uclass_id id, int index, struct udevice **ucp);
 
 /**
  * uclass_first_device() - Get the first device in a uclass
  * @devp: Returns pointer to the first device in that uclass, or NULL if none
  * @return 0 if OK (found or not found), -1 on error
  */
-int uclass_first_device(enum uclass_id id, struct device **devp);
+int uclass_first_device(enum uclass_id id, struct udevice **devp);
 
 /**
  * uclass_next_device() - Get the next device in a uclass
  * to the next device in the same uclass, or NULL if none
  * @return 0 if OK (found or not found), -1 on error
  */
-int uclass_next_device(struct device **devp);
+int uclass_next_device(struct udevice **devp);
 
 /**
  * uclass_foreach_dev() - Helper function to iteration through devices
  * This creates a for() loop which works through the available devices in
  * a uclass in order from start to end.
  *
- * @pos: struct device * to hold the current device. Set to NULL when there
+ * @pos: struct udevice * to hold the current device. Set to NULL when there
  * are no more devices.
  * uc: uclass to scan
  */
 
 #include <dm/test.h>
 #include <dm/uclass-internal.h>
 
-static int display_succ(struct device *in, char *buf)
+static int display_succ(struct udevice *in, char *buf)
 {
        int len;
        int ip = 0;
        char local[16];
-       struct device *pos, *n, *prev = NULL;
+       struct udevice *pos, *n, *prev = NULL;
 
        printf("%s- %s @ %08x", buf, in->name, map_to_sysmem(in));
        if (in->flags & DM_FLAG_ACTIVATED)
        return 0;
 }
 
-static int dm_dump(struct device *dev)
+static int dm_dump(struct udevice *dev)
 {
        if (!dev)
                return -EINVAL;
 static int do_dm_dump_all(cmd_tbl_t *cmdtp, int flag, int argc,
                          char * const argv[])
 {
-       struct device *root;
+       struct udevice *root;
 
        root = dm_root();
        printf("ROOT %08x\n", map_to_sysmem(root));
        int id;
 
        for (id = 0; id < UCLASS_COUNT; id++) {
-               struct device *dev;
+               struct udevice *dev;
 
                ret = uclass_get(id, &uc);
                if (ret)
 
 /* Test that binding with platdata occurs correctly */
 static int dm_test_autobind(struct dm_test_state *dms)
 {
-       struct device *dev;
+       struct udevice *dev;
 
        /*
         * We should have a single class (UCLASS_ROOT) and a single root
 static int dm_test_autoprobe(struct dm_test_state *dms)
 {
        int expected_base_add;
-       struct device *dev;
+       struct udevice *dev;
        struct uclass *uc;
        int i;
 
 static int dm_test_platdata(struct dm_test_state *dms)
 {
        const struct dm_test_pdata *pdata;
-       struct device *dev;
+       struct udevice *dev;
        int i;
 
        for (i = 0; i < 3; i++) {
 static int dm_test_lifecycle(struct dm_test_state *dms)
 {
        int op_count[DM_TEST_OP_COUNT];
-       struct device *dev, *test_dev;
+       struct udevice *dev, *test_dev;
        int pingret;
        int ret;
 
 /* Test that we can bind/unbind and the lists update correctly */
 static int dm_test_ordering(struct dm_test_state *dms)
 {
-       struct device *dev, *dev_penultimate, *dev_last, *test_dev;
+       struct udevice *dev, *dev_penultimate, *dev_last, *test_dev;
        int pingret;
 
        ut_assertok(device_bind_by_name(dms->root, &driver_info_manual,
 DM_TEST(dm_test_ordering, DM_TESTF_SCAN_PDATA);
 
 /* Check that we can perform operations on a device (do a ping) */
-int dm_check_operations(struct dm_test_state *dms, struct device *dev,
+int dm_check_operations(struct dm_test_state *dms, struct udevice *dev,
                        uint32_t base, struct dm_test_priv *priv)
 {
        int expected;
 /* Check that we can perform operations on devices */
 static int dm_test_operations(struct dm_test_state *dms)
 {
-       struct device *dev;
+       struct udevice *dev;
        int i;
 
        /*
 /* Remove all drivers and check that things work */
 static int dm_test_remove(struct dm_test_state *dms)
 {
-       struct device *dev;
+       struct udevice *dev;
        int i;
 
        for (i = 0; i < 3; i++) {
 
        for (i = 0; i < 2; i++) {
                struct mallinfo start, end;
-               struct device *dev;
+               struct udevice *dev;
                int ret;
                int id;
 
  *             this array.
  * @return 0 if OK, -ve on error
  */
-static int create_children(struct dm_test_state *dms, struct device *parent,
-                          int count, int key, struct device *child[])
+static int create_children(struct dm_test_state *dms, struct udevice *parent,
+                          int count, int key, struct udevice *child[])
 {
-       struct device *dev;
+       struct udevice *dev;
        int i;
 
        for (i = 0; i < count; i++) {
 
 static int dm_test_children(struct dm_test_state *dms)
 {
-       struct device *top[NODE_COUNT];
-       struct device *child[NODE_COUNT];
-       struct device *grandchild[NODE_COUNT];
-       struct device *dev;
+       struct udevice *top[NODE_COUNT];
+       struct udevice *child[NODE_COUNT];
+       struct udevice *grandchild[NODE_COUNT];
+       struct udevice *dev;
        int total;
        int ret;
        int i;
 
 {
        unsigned int offset, gpio;
        struct dm_gpio_ops *ops;
-       struct device *dev;
+       struct udevice *dev;
        const char *name;
        int offset_count;
        char buf[80];
 
 int dm_testdrv_op_count[DM_TEST_OP_COUNT];
 static struct dm_test_state *dms = &global_test_state;
 
-static int testdrv_ping(struct device *dev, int pingval, int *pingret)
+static int testdrv_ping(struct udevice *dev, int pingval, int *pingret)
 {
        const struct dm_test_pdata *pdata = dev_get_platdata(dev);
        struct dm_test_priv *priv = dev_get_priv(dev);
        .ping = testdrv_ping,
 };
 
-static int test_bind(struct device *dev)
+static int test_bind(struct udevice *dev)
 {
        /* Private data should not be allocated */
        ut_assert(!dev_get_priv(dev));
        return 0;
 }
 
-static int test_probe(struct device *dev)
+static int test_probe(struct udevice *dev)
 {
        struct dm_test_priv *priv = dev_get_priv(dev);
 
        return 0;
 }
 
-static int test_remove(struct device *dev)
+static int test_remove(struct udevice *dev)
 {
        /* Private data should still be allocated */
        ut_assert(dev_get_priv(dev));
        return 0;
 }
 
-static int test_unbind(struct device *dev)
+static int test_unbind(struct udevice *dev)
 {
        /* Private data should not be allocated */
        ut_assert(!dev->priv);
        .priv_auto_alloc_size = sizeof(struct dm_test_priv),
 };
 
-static int test_manual_drv_ping(struct device *dev, int pingval, int *pingret)
+static int test_manual_drv_ping(struct udevice *dev, int pingval, int *pingret)
 {
        *pingret = pingval + 2;
 
        .ping = test_manual_drv_ping,
 };
 
-static int test_manual_bind(struct device *dev)
+static int test_manual_bind(struct udevice *dev)
 {
        dm_testdrv_op_count[DM_TEST_OP_BIND]++;
 
        return 0;
 }
 
-static int test_manual_probe(struct device *dev)
+static int test_manual_probe(struct udevice *dev)
 {
        dm_testdrv_op_count[DM_TEST_OP_PROBE]++;
        if (!dms->force_fail_alloc)
        return 0;
 }
 
-static int test_manual_remove(struct device *dev)
+static int test_manual_remove(struct udevice *dev)
 {
        dm_testdrv_op_count[DM_TEST_OP_REMOVE]++;
        return 0;
 }
 
-static int test_manual_unbind(struct device *dev)
+static int test_manual_unbind(struct udevice *dev)
 {
        dm_testdrv_op_count[DM_TEST_OP_UNBIND]++;
        return 0;
 
 
 DECLARE_GLOBAL_DATA_PTR;
 
-static int testfdt_drv_ping(struct device *dev, int pingval, int *pingret)
+static int testfdt_drv_ping(struct udevice *dev, int pingval, int *pingret)
 {
        const struct dm_test_pdata *pdata = dev->platdata;
        struct dm_test_priv *priv = dev_get_priv(dev);
        .ping = testfdt_drv_ping,
 };
 
-static int testfdt_ofdata_to_platdata(struct device *dev)
+static int testfdt_ofdata_to_platdata(struct udevice *dev)
 {
        struct dm_test_pdata *pdata = dev_get_platdata(dev);
 
        return 0;
 }
 
-static int testfdt_drv_probe(struct device *dev)
+static int testfdt_drv_probe(struct udevice *dev)
 {
        struct dm_test_priv *priv = dev_get_priv(dev);
 
 };
 
 /* From here is the testfdt uclass code */
-int testfdt_ping(struct device *dev, int pingval, int *pingret)
+int testfdt_ping(struct udevice *dev, int pingval, int *pingret)
 {
        const struct test_ops *ops = device_get_ops(dev);
 
 static int dm_test_fdt(struct dm_test_state *dms)
 {
        const int num_drivers = 3;
-       struct device *dev;
+       struct udevice *dev;
        struct uclass *uc;
        int ret;
        int i;
 
 /* Ensure all the test devices are probed */
 static int do_autoprobe(struct dm_test_state *dms)
 {
-       struct device *dev;
+       struct udevice *dev;
        int ret;
 
        /* Scanning the uclass is enough to probe all the devices */
 
 
 static struct dm_test_state *dms = &global_test_state;
 
-int test_ping(struct device *dev, int pingval, int *pingret)
+int test_ping(struct udevice *dev, int pingval, int *pingret)
 {
        const struct test_ops *ops = device_get_ops(dev);
 
        return ops->ping(dev, pingval, pingret);
 }
 
-static int test_post_bind(struct device *dev)
+static int test_post_bind(struct udevice *dev)
 {
        dm_testdrv_op_count[DM_TEST_OP_POST_BIND]++;
 
        return 0;
 }
 
-static int test_pre_unbind(struct device *dev)
+static int test_pre_unbind(struct udevice *dev)
 {
        dm_testdrv_op_count[DM_TEST_OP_PRE_UNBIND]++;
 
        return 0;
 }
 
-static int test_post_probe(struct device *dev)
+static int test_post_probe(struct udevice *dev)
 {
-       struct device *prev = list_entry(dev->uclass_node.prev, struct device,
-                                        uclass_node);
+       struct udevice *prev = list_entry(dev->uclass_node.prev,
+                                           struct udevice, uclass_node);
+
        struct dm_test_uclass_perdev_priv *priv = dev->uclass_priv;
        struct uclass *uc = dev->uclass;
 
        return 0;
 }
 
-static int test_pre_remove(struct device *dev)
+static int test_pre_remove(struct udevice *dev)
 {
        dm_testdrv_op_count[DM_TEST_OP_PRE_REMOVE]++;