1255570Strasz// SPDX-License-Identifier: GPL-2.0-or-later
2255570Strasz/* Copyright (C) 2020 IBM Corp. */
3255570Strasz
4255570Strasz#include <kunit/test.h>
5255570Strasz
6255570Straszstatic void aspeed_sdhci_phase_ddr52(struct kunit *test)
7255570Strasz{
8255570Strasz	int rate = 52000000;
9255570Strasz
10255570Strasz	KUNIT_EXPECT_EQ(test, 0,
11255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 0));
12255570Strasz	KUNIT_EXPECT_EQ(test, 0,
13255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 1));
14255570Strasz	KUNIT_EXPECT_EQ(test, 1,
15255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 2));
16255570Strasz	KUNIT_EXPECT_EQ(test, 1,
17255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 3));
18255570Strasz	KUNIT_EXPECT_EQ(test, 2,
19255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 4));
20255570Strasz	KUNIT_EXPECT_EQ(test, 3,
21255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 5));
22255570Strasz	KUNIT_EXPECT_EQ(test, 14,
23255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 23));
24255570Strasz	KUNIT_EXPECT_EQ(test, 15,
25255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 24));
26255570Strasz	KUNIT_EXPECT_EQ(test, 15,
27255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 25));
28255570Strasz
29255570Strasz	KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 0,
30255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 180));
31255570Strasz	KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 0,
32255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 181));
33255570Strasz	KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 1,
34255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 182));
35255570Strasz	KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 1,
36255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 183));
37255570Strasz	KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 2,
38255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 184));
39255570Strasz	KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 3,
40255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 185));
41255570Strasz	KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 14,
42255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 203));
43255570Strasz	KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 15,
44255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 204));
45255570Strasz	KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 15,
46255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 205));
47255570Strasz}
48278397Strasz
49255570Straszstatic void aspeed_sdhci_phase_hs200(struct kunit *test)
50255570Strasz{
51255570Strasz	int rate = 200000000;
52255570Strasz
53255570Strasz	KUNIT_EXPECT_EQ(test, 0,
54255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 0));
55255570Strasz	KUNIT_EXPECT_EQ(test, 0,
56255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 5));
57255570Strasz	KUNIT_EXPECT_EQ(test, 1,
58255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 6));
59255570Strasz	KUNIT_EXPECT_EQ(test, 1,
60255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 7));
61255570Strasz	KUNIT_EXPECT_EQ(test, 14,
62255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 89));
63255570Strasz	KUNIT_EXPECT_EQ(test, 15,
64255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 90));
65255570Strasz	KUNIT_EXPECT_EQ(test, 15,
66255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 91));
67255570Strasz	KUNIT_EXPECT_EQ(test, 15,
68268326Smav			aspeed_sdhci_phase_to_tap(NULL, rate, 96));
69255570Strasz
70255570Strasz	KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK,
71255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 180));
72255570Strasz	KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK,
73255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 185));
74264109Strasz	KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 1,
75255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 186));
76255570Strasz	KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 1,
77255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 187));
78255570Strasz	KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 14,
79255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 269));
80255570Strasz	KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 15,
81255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 270));
82255570Strasz	KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 15,
83255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 271));
84255570Strasz	KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 15,
85255570Strasz			aspeed_sdhci_phase_to_tap(NULL, rate, 276));
86255570Strasz}
87255570Strasz
88255570Straszstatic struct kunit_case aspeed_sdhci_test_cases[] = {
89255570Strasz	KUNIT_CASE(aspeed_sdhci_phase_ddr52),
90255570Strasz	KUNIT_CASE(aspeed_sdhci_phase_hs200),
91255570Strasz	{}
92255570Strasz};
93255570Strasz
94255570Straszstatic struct kunit_suite aspeed_sdhci_test_suite = {
95255570Strasz	.name = "sdhci-of-aspeed",
96255570Strasz	.test_cases = aspeed_sdhci_test_cases,
97255570Strasz};
98255570Strasz
99255570Straszkunit_test_suite(aspeed_sdhci_test_suite);
100255570Strasz