linux/drivers/mmc/host/sdhci-of-aspeed-test.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0-or-later
   2/* Copyright (C) 2020 IBM Corp. */
   3
   4#include <kunit/test.h>
   5
   6static void aspeed_sdhci_phase_ddr52(struct kunit *test)
   7{
   8        int rate = 52000000;
   9
  10        KUNIT_EXPECT_EQ(test, 0,
  11                        aspeed_sdhci_phase_to_tap(NULL, rate, 0));
  12        KUNIT_EXPECT_EQ(test, 0,
  13                        aspeed_sdhci_phase_to_tap(NULL, rate, 1));
  14        KUNIT_EXPECT_EQ(test, 1,
  15                        aspeed_sdhci_phase_to_tap(NULL, rate, 2));
  16        KUNIT_EXPECT_EQ(test, 1,
  17                        aspeed_sdhci_phase_to_tap(NULL, rate, 3));
  18        KUNIT_EXPECT_EQ(test, 2,
  19                        aspeed_sdhci_phase_to_tap(NULL, rate, 4));
  20        KUNIT_EXPECT_EQ(test, 3,
  21                        aspeed_sdhci_phase_to_tap(NULL, rate, 5));
  22        KUNIT_EXPECT_EQ(test, 14,
  23                        aspeed_sdhci_phase_to_tap(NULL, rate, 23));
  24        KUNIT_EXPECT_EQ(test, 15,
  25                        aspeed_sdhci_phase_to_tap(NULL, rate, 24));
  26        KUNIT_EXPECT_EQ(test, 15,
  27                        aspeed_sdhci_phase_to_tap(NULL, rate, 25));
  28
  29        KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 0,
  30                        aspeed_sdhci_phase_to_tap(NULL, rate, 180));
  31        KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 0,
  32                        aspeed_sdhci_phase_to_tap(NULL, rate, 181));
  33        KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 1,
  34                        aspeed_sdhci_phase_to_tap(NULL, rate, 182));
  35        KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 1,
  36                        aspeed_sdhci_phase_to_tap(NULL, rate, 183));
  37        KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 2,
  38                        aspeed_sdhci_phase_to_tap(NULL, rate, 184));
  39        KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 3,
  40                        aspeed_sdhci_phase_to_tap(NULL, rate, 185));
  41        KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 14,
  42                        aspeed_sdhci_phase_to_tap(NULL, rate, 203));
  43        KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 15,
  44                        aspeed_sdhci_phase_to_tap(NULL, rate, 204));
  45        KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 15,
  46                        aspeed_sdhci_phase_to_tap(NULL, rate, 205));
  47}
  48
  49static void aspeed_sdhci_phase_hs200(struct kunit *test)
  50{
  51        int rate = 200000000;
  52
  53        KUNIT_EXPECT_EQ(test, 0,
  54                        aspeed_sdhci_phase_to_tap(NULL, rate, 0));
  55        KUNIT_EXPECT_EQ(test, 0,
  56                        aspeed_sdhci_phase_to_tap(NULL, rate, 5));
  57        KUNIT_EXPECT_EQ(test, 1,
  58                        aspeed_sdhci_phase_to_tap(NULL, rate, 6));
  59        KUNIT_EXPECT_EQ(test, 1,
  60                        aspeed_sdhci_phase_to_tap(NULL, rate, 7));
  61        KUNIT_EXPECT_EQ(test, 14,
  62                        aspeed_sdhci_phase_to_tap(NULL, rate, 89));
  63        KUNIT_EXPECT_EQ(test, 15,
  64                        aspeed_sdhci_phase_to_tap(NULL, rate, 90));
  65        KUNIT_EXPECT_EQ(test, 15,
  66                        aspeed_sdhci_phase_to_tap(NULL, rate, 91));
  67        KUNIT_EXPECT_EQ(test, 15,
  68                        aspeed_sdhci_phase_to_tap(NULL, rate, 96));
  69
  70        KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK,
  71                        aspeed_sdhci_phase_to_tap(NULL, rate, 180));
  72        KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK,
  73                        aspeed_sdhci_phase_to_tap(NULL, rate, 185));
  74        KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 1,
  75                        aspeed_sdhci_phase_to_tap(NULL, rate, 186));
  76        KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 1,
  77                        aspeed_sdhci_phase_to_tap(NULL, rate, 187));
  78        KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 14,
  79                        aspeed_sdhci_phase_to_tap(NULL, rate, 269));
  80        KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 15,
  81                        aspeed_sdhci_phase_to_tap(NULL, rate, 270));
  82        KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 15,
  83                        aspeed_sdhci_phase_to_tap(NULL, rate, 271));
  84        KUNIT_EXPECT_EQ(test, ASPEED_SDHCI_TAP_PARAM_INVERT_CLK | 15,
  85                        aspeed_sdhci_phase_to_tap(NULL, rate, 276));
  86}
  87
  88static struct kunit_case aspeed_sdhci_test_cases[] = {
  89        KUNIT_CASE(aspeed_sdhci_phase_ddr52),
  90        KUNIT_CASE(aspeed_sdhci_phase_hs200),
  91        {}
  92};
  93
  94static struct kunit_suite aspeed_sdhci_test_suite = {
  95        .name = "sdhci-of-aspeed",
  96        .test_cases = aspeed_sdhci_test_cases,
  97};
  98
  99static struct kunit_suite *aspeed_sdc_test_suite_array[] = {
 100        &aspeed_sdhci_test_suite,
 101        NULL,
 102};
 103
 104static struct kunit_suite **aspeed_sdc_test_suites
 105        __used __section(".kunit_test_suites") = aspeed_sdc_test_suite_array;
 106