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