1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-01 08:42:12 +02:00

dm: doc: update of-plat with new phandle support

Update documentation to reflect the new phandle support when OF_PLATDATA
is used. Now phandles are implemented as pointers to U_BOOT_DEVICE,
which makes it possible to get a pointer to the actual device.

Signed-off-by: Walter Lozano <walter.lozano@collabora.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Walter Lozano
2020-06-25 01:10:14 -03:00
committed by Simon Glass
parent 51f1263d89
commit cbd484f0eb

View File

@@ -69,9 +69,8 @@ strictly necessary. Notable problems include:
- Correct relations between nodes are not implemented. This means that - Correct relations between nodes are not implemented. This means that
parent/child relations (like bus device iteration) do not work yet. parent/child relations (like bus device iteration) do not work yet.
Some phandles (those that are recognised as such) are converted into Some phandles (those that are recognised as such) are converted into
a pointer to platform data. This pointer can potentially be used to a pointer to struct driver_info. This pointer can be used to access
access the referenced device (by searching for the pointer value). the referenced device.
This feature is not yet implemented, however.
How it works How it works
@@ -146,10 +145,10 @@ and the following device declaration:
.clock_freq_min_max = {0x61a80, 0x8f0d180}, .clock_freq_min_max = {0x61a80, 0x8f0d180},
.vmmc_supply = 0xb, .vmmc_supply = 0xb,
.num_slots = 0x1, .num_slots = 0x1,
.clocks = {{&dtv_clock_controller_at_ff760000, 456}, .clocks = {{NULL, 456},
{&dtv_clock_controller_at_ff760000, 68}, {NULL, 68},
{&dtv_clock_controller_at_ff760000, 114}, {NULL, 114},
{&dtv_clock_controller_at_ff760000, 118}}, {NULL, 118}},
.cap_mmc_highspeed = true, .cap_mmc_highspeed = true,
.disable_wp = true, .disable_wp = true,
.bus_width = 0x4, .bus_width = 0x4,
@@ -164,6 +163,13 @@ and the following device declaration:
.platdata_size = sizeof(dtv_dwmmc_at_ff0c0000), .platdata_size = sizeof(dtv_dwmmc_at_ff0c0000),
}; };
void dm_populate_phandle_data(void) {
dtv_dwmmc_at_ff0c0000.clocks[0].node = DM_GET_DEVICE(clock_controller_at_ff760000);
dtv_dwmmc_at_ff0c0000.clocks[1].node = DM_GET_DEVICE(clock_controller_at_ff760000);
dtv_dwmmc_at_ff0c0000.clocks[2].node = DM_GET_DEVICE(clock_controller_at_ff760000);
dtv_dwmmc_at_ff0c0000.clocks[3].node = DM_GET_DEVICE(clock_controller_at_ff760000);
}
The device is then instantiated at run-time and the platform data can be The device is then instantiated at run-time and the platform data can be
accessed using: accessed using:
@@ -329,7 +335,9 @@ prevents them being used inadvertently. All usage must be bracketed with
#if CONFIG_IS_ENABLED(OF_PLATDATA). #if CONFIG_IS_ENABLED(OF_PLATDATA).
The dt-platdata.c file contains the device declarations and is is built in The dt-platdata.c file contains the device declarations and is is built in
spl/dt-platdata.c. spl/dt-platdata.c. It additionally contains the definition of
dm_populate_phandle_data() which is responsible of filling the phandle
information by adding references to U_BOOT_DEVICE by using DM_GET_DEVICE
The beginnings of a libfdt Python module are provided. So far this only The beginnings of a libfdt Python module are provided. So far this only
implements a subset of the features. implements a subset of the features.