]> Git Repo - u-boot.git/blob - test/dm/serial.c
power: pmic: rk8xx: Support sysreset shutdown method
[u-boot.git] / test / dm / serial.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (c) 2018, STMicroelectronics
4  */
5
6 #include <common.h>
7 #include <log.h>
8 #include <serial.h>
9 #include <dm.h>
10 #include <asm/serial.h>
11 #include <dm/test.h>
12 #include <test/test.h>
13 #include <test/ut.h>
14
15 static const char test_message[] =
16         "This is a test message\n"
17         "consisting of multiple lines\n";
18
19 static int dm_test_serial(struct unit_test_state *uts)
20 {
21         int i;
22         struct serial_device_info info_serial = {0};
23         struct udevice *dev_serial;
24         size_t start, putc_written;
25
26         uint value_serial;
27
28         ut_assertok(uclass_get_device_by_name(UCLASS_SERIAL, "serial",
29                                               &dev_serial));
30
31         ut_assertok(serial_tstc());
32         /*
33          * test with default config which is the only one supported by
34          * sandbox_serial driver
35          */
36         ut_assertok(serial_setconfig(dev_serial, SERIAL_DEFAULT_CONFIG));
37         ut_assertok(serial_getconfig(dev_serial, &value_serial));
38         ut_assert(value_serial == SERIAL_DEFAULT_CONFIG);
39         ut_assertok(serial_getinfo(dev_serial, &info_serial));
40         ut_assert(info_serial.type == SERIAL_CHIP_UNKNOWN);
41         ut_assert(info_serial.addr == SERIAL_DEFAULT_ADDRESS);
42         ut_assert(info_serial.clock == SERIAL_DEFAULT_CLOCK);
43         /*
44          * test with a parameter which is NULL pointer
45          */
46         ut_asserteq(-EINVAL, serial_getconfig(dev_serial, NULL));
47         ut_asserteq(-EINVAL, serial_getinfo(dev_serial, NULL));
48         /*
49          * test with a serial config which is not supported by
50          * sandbox_serial driver: test with wrong parity
51          */
52         ut_asserteq(-ENOTSUPP,
53                     serial_setconfig(dev_serial,
54                                      SERIAL_CONFIG(SERIAL_PAR_ODD,
55                                                    SERIAL_8_BITS,
56                                                    SERIAL_ONE_STOP)));
57         /*
58          * test with a serial config which is not supported by
59          * sandbox_serial driver: test with wrong bits number
60          */
61         ut_asserteq(-ENOTSUPP,
62                     serial_setconfig(dev_serial,
63                                      SERIAL_CONFIG(SERIAL_PAR_NONE,
64                                                    SERIAL_6_BITS,
65                                                    SERIAL_ONE_STOP)));
66
67         /*
68          * test with a serial config which is not supported by
69          * sandbox_serial driver: test with wrong stop bits number
70          */
71         ut_asserteq(-ENOTSUPP,
72                     serial_setconfig(dev_serial,
73                                      SERIAL_CONFIG(SERIAL_PAR_NONE,
74                                                    SERIAL_8_BITS,
75                                                    SERIAL_TWO_STOP)));
76
77         /* Verify that putc and puts print the same number of characters */
78         sandbox_serial_endisable(false);
79         start = sandbox_serial_written();
80         for (i = 0; i < sizeof(test_message) - 1; i++)
81                 serial_putc(test_message[i]);
82         putc_written = sandbox_serial_written();
83         serial_puts(test_message);
84         sandbox_serial_endisable(true);
85         ut_asserteq(putc_written - start,
86                     sandbox_serial_written() - putc_written);
87
88         return 0;
89 }
90
91 DM_TEST(dm_test_serial, UT_TESTF_SCAN_FDT);
This page took 0.034133 seconds and 4 git commands to generate.