mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
dm: Switch over to use new sequence number for dev_seq()
Update this function to use the new sequence number and fix up the test that deals with this. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
3bc90aa743
commit
981426e350
4 changed files with 38 additions and 33 deletions
|
@ -33,7 +33,7 @@
|
|||
testfdt6 = "/e-test";
|
||||
testbus3 = "/some-bus";
|
||||
testfdt0 = "/some-bus/c-test@0";
|
||||
testfdt1 = "/some-bus/c-test@1";
|
||||
testfdt12 = "/some-bus/c-test@1";
|
||||
testfdt3 = "/b-test";
|
||||
testfdt5 = "/some-bus/c-test@5";
|
||||
testfdt8 = "/a-test";
|
||||
|
|
|
@ -306,8 +306,7 @@ int uclass_find_device_by_seq(enum uclass_id id, int seq_or_req_seq,
|
|||
uclass_foreach_dev(dev, uc) {
|
||||
log_debug(" - %d %d '%s'\n",
|
||||
dev->req_seq, dev_seq(dev), dev->name);
|
||||
if ((find_req_seq ? dev->req_seq : dev_seq(dev)) ==
|
||||
seq_or_req_seq) {
|
||||
if (dev_seq(dev) == seq_or_req_seq) {
|
||||
*devp = dev;
|
||||
log_debug(" - found\n");
|
||||
return 0;
|
||||
|
@ -692,8 +691,7 @@ int uclass_resolve_seq(struct udevice *dev)
|
|||
assert(dev_seq(dev) == -1);
|
||||
ret = uclass_find_device_by_seq(uc_drv->id, dev->req_seq, false, &dup);
|
||||
if (!ret) {
|
||||
dm_warn("Device '%s': seq %d is in use by '%s'\n",
|
||||
dev->name, dev->req_seq, dup->name);
|
||||
/* Do nothing here for now */
|
||||
} else if (ret == -ENODEV) {
|
||||
/* Our requested sequence number is available */
|
||||
if (dev->req_seq != -1)
|
||||
|
|
|
@ -192,7 +192,7 @@ static inline bool dev_has_of_node(struct udevice *dev)
|
|||
|
||||
static inline int dev_seq(const struct udevice *dev)
|
||||
{
|
||||
return dev->seq;
|
||||
return dev->sqq;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -333,20 +333,28 @@ static int dm_test_fdt_uclass_seq(struct unit_test_state *uts)
|
|||
/* A few basic santiy tests */
|
||||
ut_assertok(uclass_find_device_by_seq(UCLASS_TEST_FDT, 3, true, &dev));
|
||||
ut_asserteq_str("b-test", dev->name);
|
||||
ut_asserteq(3, dev_seq(dev));
|
||||
|
||||
ut_assertok(uclass_find_device_by_seq(UCLASS_TEST_FDT, 8, true, &dev));
|
||||
ut_asserteq_str("a-test", dev->name);
|
||||
ut_asserteq(8, dev_seq(dev));
|
||||
|
||||
ut_asserteq(-ENODEV, uclass_find_device_by_seq(UCLASS_TEST_FDT, 5,
|
||||
true, &dev));
|
||||
/*
|
||||
* This device has no alias so gets the next value after all available
|
||||
* aliases. The last alias is testfdt12
|
||||
*/
|
||||
ut_assertok(uclass_find_device_by_seq(UCLASS_TEST_FDT, 13, true, &dev));
|
||||
ut_asserteq_str("d-test", dev->name);
|
||||
ut_asserteq(13, dev_seq(dev));
|
||||
|
||||
ut_asserteq(-ENODEV, uclass_find_device_by_seq(UCLASS_TEST_FDT, 9, true,
|
||||
&dev));
|
||||
ut_asserteq_ptr(NULL, dev);
|
||||
|
||||
/* Test aliases */
|
||||
ut_assertok(uclass_get_device_by_seq(UCLASS_TEST_FDT, 6, &dev));
|
||||
ut_asserteq_str("e-test", dev->name);
|
||||
|
||||
ut_asserteq(-ENODEV, uclass_find_device_by_seq(UCLASS_TEST_FDT, 7,
|
||||
true, &dev));
|
||||
ut_asserteq(6, dev_seq(dev));
|
||||
|
||||
/*
|
||||
* Note that c-test nodes are not probed since it is not a top-level
|
||||
|
@ -354,6 +362,7 @@ static int dm_test_fdt_uclass_seq(struct unit_test_state *uts)
|
|||
*/
|
||||
ut_assertok(uclass_get_device_by_seq(UCLASS_TEST_FDT, 3, &dev));
|
||||
ut_asserteq_str("b-test", dev->name);
|
||||
ut_asserteq(3, dev_seq(dev));
|
||||
|
||||
/*
|
||||
* d-test wants sequence number 3 also, but it can't have it because
|
||||
|
@ -361,31 +370,29 @@ static int dm_test_fdt_uclass_seq(struct unit_test_state *uts)
|
|||
*/
|
||||
ut_assertok(uclass_get_device(UCLASS_TEST_FDT, 2, &dev));
|
||||
ut_asserteq_str("d-test", dev->name);
|
||||
ut_asserteq(13, dev_seq(dev));
|
||||
|
||||
/*
|
||||
* d-test actually gets 9, because thats the next free one after the
|
||||
* aliases.
|
||||
*/
|
||||
ut_assertok(uclass_get_device_by_seq(UCLASS_TEST_FDT, 9, &dev));
|
||||
ut_asserteq_str("d-test", dev->name);
|
||||
/* g-test gets the next value after f-test */
|
||||
ut_assertok(uclass_get_device_by_seq(UCLASS_TEST_FDT, 15, &dev));
|
||||
ut_asserteq_str("g-test", dev->name);
|
||||
ut_asserteq(15, dev_seq(dev));
|
||||
|
||||
/* initially no one wants seq 10 */
|
||||
ut_asserteq(-ENODEV, uclass_get_device_by_seq(UCLASS_TEST_FDT, 10,
|
||||
&dev));
|
||||
ut_assertok(uclass_get_device(UCLASS_TEST_FDT, 0, &dev));
|
||||
ut_assertok(uclass_get_device(UCLASS_TEST_FDT, 4, &dev));
|
||||
|
||||
/* But now that it is probed, we can find it */
|
||||
ut_assertok(uclass_get_device_by_seq(UCLASS_TEST_FDT, 10, &dev));
|
||||
ut_asserteq_str("f-test", dev->name);
|
||||
|
||||
/*
|
||||
* And we should still have holes in our sequence numbers, that is 2
|
||||
* and 4 should not be used.
|
||||
*/
|
||||
ut_asserteq(-ENODEV, uclass_find_device_by_seq(UCLASS_TEST_FDT, 2,
|
||||
/* And we should still have holes in our sequence numbers */
|
||||
ut_asserteq(-ENODEV, uclass_find_device_by_seq(UCLASS_TEST_FDT, 0, true,
|
||||
&dev));
|
||||
ut_asserteq(-ENODEV, uclass_find_device_by_seq(UCLASS_TEST_FDT, 1, true,
|
||||
&dev));
|
||||
ut_asserteq(-ENODEV, uclass_find_device_by_seq(UCLASS_TEST_FDT, 2, true,
|
||||
&dev));
|
||||
ut_asserteq(-ENODEV, uclass_find_device_by_seq(UCLASS_TEST_FDT, 4, true,
|
||||
&dev));
|
||||
ut_asserteq(-ENODEV, uclass_find_device_by_seq(UCLASS_TEST_FDT, 7, true,
|
||||
&dev));
|
||||
ut_asserteq(-ENODEV, uclass_find_device_by_seq(UCLASS_TEST_FDT, 9, true,
|
||||
&dev));
|
||||
ut_asserteq(-ENODEV, uclass_find_device_by_seq(UCLASS_TEST_FDT, 10,
|
||||
true, &dev));
|
||||
ut_asserteq(-ENODEV, uclass_find_device_by_seq(UCLASS_TEST_FDT, 4,
|
||||
ut_asserteq(-ENODEV, uclass_find_device_by_seq(UCLASS_TEST_FDT, 11,
|
||||
true, &dev));
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue