xref: /rk3399_rockchip-uboot/test/dm/eth.c (revision 6536b9bb769fe764f4793a1b37a2619391bb2482)
1 /*
2  * Copyright (c) 2015 National Instruments
3  *
4  * (C) Copyright 2015
5  * Joe Hershberger <joe.hershberger@ni.com>
6  *
7  * SPDX-License-Identifier:	GPL-2.0
8  */
9 
10 #include <common.h>
11 #include <dm.h>
12 #include <dm/test.h>
13 #include <dm/ut.h>
14 #include <fdtdec.h>
15 #include <malloc.h>
16 #include <net.h>
17 
18 DECLARE_GLOBAL_DATA_PTR;
19 
20 static int dm_test_eth(struct dm_test_state *dms)
21 {
22 	NetPingIP = string_to_ip("1.1.2.2");
23 
24 	setenv("ethact", "eth@10002000");
25 	ut_assertok(NetLoop(PING));
26 	ut_asserteq_str("eth@10002000", getenv("ethact"));
27 
28 	setenv("ethact", "eth@10003000");
29 	ut_assertok(NetLoop(PING));
30 	ut_asserteq_str("eth@10003000", getenv("ethact"));
31 
32 	setenv("ethact", "eth@10004000");
33 	ut_assertok(NetLoop(PING));
34 	ut_asserteq_str("eth@10004000", getenv("ethact"));
35 
36 	return 0;
37 }
38 DM_TEST(dm_test_eth, DM_TESTF_SCAN_FDT);
39 
40 static int dm_test_eth_alias(struct dm_test_state *dms)
41 {
42 	NetPingIP = string_to_ip("1.1.2.2");
43 	setenv("ethact", "eth0");
44 	ut_assertok(NetLoop(PING));
45 	ut_asserteq_str("eth@10002000", getenv("ethact"));
46 
47 	setenv("ethact", "eth1");
48 	ut_assertok(NetLoop(PING));
49 	ut_asserteq_str("eth@10004000", getenv("ethact"));
50 
51 	/* Expected to fail since eth2 is not defined in the device tree */
52 	setenv("ethact", "eth2");
53 	ut_assertok(NetLoop(PING));
54 	ut_asserteq_str("eth@10002000", getenv("ethact"));
55 
56 	setenv("ethact", "eth5");
57 	ut_assertok(NetLoop(PING));
58 	ut_asserteq_str("eth@10003000", getenv("ethact"));
59 
60 	return 0;
61 }
62 DM_TEST(dm_test_eth_alias, DM_TESTF_SCAN_FDT);
63 
64 static int dm_test_eth_prime(struct dm_test_state *dms)
65 {
66 	NetPingIP = string_to_ip("1.1.2.2");
67 
68 	/* Expected to be "eth@10003000" because of ethprime variable */
69 	setenv("ethact", NULL);
70 	setenv("ethprime", "eth5");
71 	ut_assertok(NetLoop(PING));
72 	ut_asserteq_str("eth@10003000", getenv("ethact"));
73 
74 	/* Expected to be "eth@10002000" because it is first */
75 	setenv("ethact", NULL);
76 	setenv("ethprime", NULL);
77 	ut_assertok(NetLoop(PING));
78 	ut_asserteq_str("eth@10002000", getenv("ethact"));
79 
80 	return 0;
81 }
82 DM_TEST(dm_test_eth_prime, DM_TESTF_SCAN_FDT);
83