mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-12 06:12:58 +00:00
caa4daa2ae
We use 'priv' for private data but often use 'platdata' for platform data. We can't really use 'pdata' since that is ambiguous (it could mean private or platform data). Rename some of the latter variables to end with 'plat' for consistency. Signed-off-by: Simon Glass <sjg@chromium.org>
64 lines
1.3 KiB
C
64 lines
1.3 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* Copyright (c) 2014 Google, Inc
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <dm.h>
|
|
|
|
struct simple_bus_plat {
|
|
u32 base;
|
|
u32 size;
|
|
u32 target;
|
|
};
|
|
|
|
fdt_addr_t simple_bus_translate(struct udevice *dev, fdt_addr_t addr)
|
|
{
|
|
struct simple_bus_plat *plat = dev_get_uclass_plat(dev);
|
|
|
|
if (addr >= plat->base && addr < plat->base + plat->size)
|
|
addr = (addr - plat->base) + plat->target;
|
|
|
|
return addr;
|
|
}
|
|
|
|
static int simple_bus_post_bind(struct udevice *dev)
|
|
{
|
|
#if CONFIG_IS_ENABLED(OF_PLATDATA)
|
|
return 0;
|
|
#else
|
|
u32 cell[3];
|
|
int ret;
|
|
|
|
ret = dev_read_u32_array(dev, "ranges", cell, ARRAY_SIZE(cell));
|
|
if (!ret) {
|
|
struct simple_bus_plat *plat = dev_get_uclass_plat(dev);
|
|
|
|
plat->base = cell[0];
|
|
plat->target = cell[1];
|
|
plat->size = cell[2];
|
|
}
|
|
|
|
return dm_scan_fdt_dev(dev);
|
|
#endif
|
|
}
|
|
|
|
UCLASS_DRIVER(simple_bus) = {
|
|
.id = UCLASS_SIMPLE_BUS,
|
|
.name = "simple_bus",
|
|
.post_bind = simple_bus_post_bind,
|
|
.per_device_plat_auto = sizeof(struct simple_bus_plat),
|
|
};
|
|
|
|
static const struct udevice_id generic_simple_bus_ids[] = {
|
|
{ .compatible = "simple-bus" },
|
|
{ .compatible = "simple-mfd" },
|
|
{ }
|
|
};
|
|
|
|
U_BOOT_DRIVER(simple_bus) = {
|
|
.name = "simple_bus",
|
|
.id = UCLASS_SIMPLE_BUS,
|
|
.of_match = generic_simple_bus_ids,
|
|
.flags = DM_FLAG_PRE_RELOC,
|
|
};
|