Blame view
drivers/core/simple-bus.c
1.26 KB
da802b9e2 dm: core: Add sup... |
1 2 3 4 5 6 7 8 |
/* * Copyright (c) 2014 Google, Inc * * SPDX-License-Identifier: GPL-2.0+ */ #include <common.h> #include <dm.h> |
da802b9e2 dm: core: Add sup... |
9 |
|
f33017716 dm: Support addre... |
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
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_platdata(dev); if (addr >= plat->base && addr < plat->base + plat->size) addr = (addr - plat->base) + plat->target; return addr; } |
da802b9e2 dm: core: Add sup... |
25 26 |
static int simple_bus_post_bind(struct udevice *dev) { |
6943ee14e simple-bus: enabl... |
27 28 29 |
#if CONFIG_IS_ENABLED(OF_PLATDATA) return 0; #else |
f33017716 dm: Support addre... |
30 31 |
u32 cell[3]; int ret; |
7a993bbcf dm: simple-bus: A... |
32 |
ret = dev_read_u32_array(dev, "ranges", cell, ARRAY_SIZE(cell)); |
f33017716 dm: Support addre... |
33 34 35 36 37 38 39 |
if (!ret) { struct simple_bus_plat *plat = dev_get_uclass_platdata(dev); plat->base = cell[0]; plat->target = cell[1]; plat->size = cell[2]; } |
2e3f1ff63 dm: Convert users... |
40 |
return dm_scan_fdt_dev(dev); |
6943ee14e simple-bus: enabl... |
41 |
#endif |
da802b9e2 dm: core: Add sup... |
42 43 44 45 46 47 |
} UCLASS_DRIVER(simple_bus) = { .id = UCLASS_SIMPLE_BUS, .name = "simple_bus", .post_bind = simple_bus_post_bind, |
f33017716 dm: Support addre... |
48 |
.per_device_platdata_auto_alloc_size = sizeof(struct simple_bus_plat), |
da802b9e2 dm: core: Add sup... |
49 50 51 52 |
}; static const struct udevice_id generic_simple_bus_ids[] = { { .compatible = "simple-bus" }, |
9f56917ab dm: core: make si... |
53 |
{ .compatible = "simple-mfd" }, |
da802b9e2 dm: core: Add sup... |
54 55 56 57 58 59 60 61 |
{ } }; U_BOOT_DRIVER(simple_bus_drv) = { .name = "generic_simple_bus", .id = UCLASS_SIMPLE_BUS, .of_match = generic_simple_bus_ids, }; |