0001
0002
0003
0004 #include <kunit/test.h>
0005
0006 static void aspeed_sdhci_phase_ddr52(struct kunit *test)
0007 {
0008 int rate = 52000000;
0009
0010 KUNIT_EXPECT_EQ(test, 0,
0011 aspeed_sdhci_phase_to_tap(NULL, rate, 0));
0012 KUNIT_EXPECT_EQ(test, 0,
0013 aspeed_sdhci_phase_to_tap(NULL, rate, 1));
0014 KUNIT_EXPECT_EQ(test, 1,
0015 aspeed_sdhci_phase_to_tap(NULL, rate, 2));
0016 KUNIT_EXPECT_EQ(test, 1,
0017 aspeed_sdhci_phase_to_tap(NULL, rate, 3));
0018 KUNIT_EXPECT_EQ(test, 2,
0019 aspeed_sdhci_phase_to_tap(NULL, rate, 4));
0020 KUNIT_EXPECT_EQ(test, 3,
0021 aspeed_sdhci_phase_to_tap(NULL, rate, 5));
0022 KUNIT_EXPECT_EQ(test, 14,
0023 aspeed_sdhci_phase_to_tap(NULL, rate, 23));
0024 KUNIT_EXPECT_EQ(test, 15,
0025 aspeed_sdhci_phase_to_tap(NULL, rate, 24));
0026 KUNIT_EXPECT_EQ(test, 15,
0027 aspeed_sdhci_phase_to_tap(NULL, rate, 25));
0028
0029 KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 0,
0030 aspeed_sdhci_phase_to_tap(NULL, rate, 180));
0031 KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 0,
0032 aspeed_sdhci_phase_to_tap(NULL, rate, 181));
0033 KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 1,
0034 aspeed_sdhci_phase_to_tap(NULL, rate, 182));
0035 KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 1,
0036 aspeed_sdhci_phase_to_tap(NULL, rate, 183));
0037 KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 2,
0038 aspeed_sdhci_phase_to_tap(NULL, rate, 184));
0039 KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 3,
0040 aspeed_sdhci_phase_to_tap(NULL, rate, 185));
0041 KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 14,
0042 aspeed_sdhci_phase_to_tap(NULL, rate, 203));
0043 KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 15,
0044 aspeed_sdhci_phase_to_tap(NULL, rate, 204));
0045 KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 15,
0046 aspeed_sdhci_phase_to_tap(NULL, rate, 205));
0047 }
0048
0049 static void aspeed_sdhci_phase_hs200(struct kunit *test)
0050 {
0051 int rate = 200000000;
0052
0053 KUNIT_EXPECT_EQ(test, 0,
0054 aspeed_sdhci_phase_to_tap(NULL, rate, 0));
0055 KUNIT_EXPECT_EQ(test, 0,
0056 aspeed_sdhci_phase_to_tap(NULL, rate, 5));
0057 KUNIT_EXPECT_EQ(test, 1,
0058 aspeed_sdhci_phase_to_tap(NULL, rate, 6));
0059 KUNIT_EXPECT_EQ(test, 1,
0060 aspeed_sdhci_phase_to_tap(NULL, rate, 7));
0061 KUNIT_EXPECT_EQ(test, 14,
0062 aspeed_sdhci_phase_to_tap(NULL, rate, 89));
0063 KUNIT_EXPECT_EQ(test, 15,
0064 aspeed_sdhci_phase_to_tap(NULL, rate, 90));
0065 KUNIT_EXPECT_EQ(test, 15,
0066 aspeed_sdhci_phase_to_tap(NULL, rate, 91));
0067 KUNIT_EXPECT_EQ(test, 15,
0068 aspeed_sdhci_phase_to_tap(NULL, rate, 96));
0069
0070 KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK,
0071 aspeed_sdhci_phase_to_tap(NULL, rate, 180));
0072 KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK,
0073 aspeed_sdhci_phase_to_tap(NULL, rate, 185));
0074 KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 1,
0075 aspeed_sdhci_phase_to_tap(NULL, rate, 186));
0076 KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 1,
0077 aspeed_sdhci_phase_to_tap(NULL, rate, 187));
0078 KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 14,
0079 aspeed_sdhci_phase_to_tap(NULL, rate, 269));
0080 KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 15,
0081 aspeed_sdhci_phase_to_tap(NULL, rate, 270));
0082 KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 15,
0083 aspeed_sdhci_phase_to_tap(NULL, rate, 271));
0084 KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 15,
0085 aspeed_sdhci_phase_to_tap(NULL, rate, 276));
0086 }
0087
0088 static struct kunit_case aspeed_sdhci_test_cases[] = {
0089 KUNIT_CASE(aspeed_sdhci_phase_ddr52),
0090 KUNIT_CASE(aspeed_sdhci_phase_hs200),
0091 {}
0092 };
0093
0094 static struct kunit_suite aspeed_sdhci_test_suite = {
0095 .name = "sdhci-of-aspeed",
0096 .test_cases = aspeed_sdhci_test_cases,
0097 };
0098
0099 kunit_test_suite(aspeed_sdhci_test_suite);