summaryrefslogtreecommitdiffstats
path: root/src/usr/pnor/test/pnorddtest.H
blob: a60d53efe9c1e8b5f461bd49c61eab2b9b40ca12 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#ifndef __PNORDDTEST_H
#define __PNORDDTEST_H

/**
 *  @file pnorddtest.H
 *
 *  @brief Test case for PNOR Resource Provider
*/

#include <cxxtest/TestSuite.H>
#include <errl/errlmanager.H>
#include <errl/errlentry.H>
#include <errl/errltypes.H>
#include <pnor/pnorif.H>
#include <devicefw/userif.H>
//#include "../pnordd.H"

extern trace_desc_t* g_trac_pnor;
using namespace TARGETING;


class PnorDdTest : public CxxTest::TestSuite
{
  public:

    /**
     * @brief PNOR DD test #1
     *        Write some data to PNOR and read it back again
     */
    void testPnorDD1(void)
    {
      //@TODO: make this table driven so it can test more values
      //@TODO: compare results with expected data.
      //@TODO: Add some more interesting tests

      TARGETING::Target* l_testTarget = MASTER_PROCESSOR_CHIP_TARGET_SENTINEL;
      size_t l_size = sizeof(uint64_t); 
      errlHndl_t l_err = NULL;

      do{
        TS_TRACE("testPnorDD1: starting");

        // Perform PnorDD Write 1
        uint64_t l_address = 0x100;
        uint64_t l_writeData = 0x12345678FEEDB0B0;
        l_err = deviceWrite(l_testTarget,
                            &l_writeData,
                            l_size,
                            DEVICE_PNOR_ADDRESS(0, l_address));
        if (l_err)
            {
          TS_FAIL("testPnorDD1: PNORDD write 1: deviceWrite() failed! Error committed.");
          break;
            }
        else
            {
          TS_TRACE("testPnorDD1: PNORDD write 1, Address 0x%llx, Data %llx",
                   l_address,
                   (long long unsigned)l_writeData);
            }


        // Perform PnorDD Write 2
        l_address = 0x108;
        l_writeData = 0xFEEDBEEF000ABCDE;
        l_err = deviceWrite(l_testTarget,
                            &l_writeData,
                            l_size,
                            DEVICE_PNOR_ADDRESS(0, l_address));
        if (l_err)
            {
          TS_FAIL("testPnorDD1: PNORDD write 2: deviceWrite() failed! Error committed.");
          break;
            }
        else
            {
          TS_TRACE("testPnorDD1: PNORDD write 2, Address 0x%llx, Data %llx",
                   l_address,
                   (long long unsigned)l_writeData);
            }

        // Perform PnorDD read 1
        l_address = 0x100;
        uint64_t l_readData = 0;
        l_err = deviceRead(l_testTarget,
                           &l_readData,
                           l_size,
                           DEVICE_PNOR_ADDRESS(0, l_address));
        if (l_err)
            {
          TS_FAIL("testPnorDD1: PNORDD read 1: deviceRead() failed! Error committed.");
          break;
            }
        else
            {
          TS_TRACE("testPnorDD1: PNORDD read 1, Address 0x%llx, Data %llx",
                   l_address,
                   (long long unsigned)l_readData);
            }

        // Perform PnorDD read 2
        l_address = 0x108;
        l_err = deviceRead(l_testTarget,
                           &l_readData,
                           l_size,
                           DEVICE_PNOR_ADDRESS(0, l_address));
        if (l_err)
            {
          TS_FAIL("testPnorDD1: PNORDD read 2: deviceRead() failed! Error committed.");
          break;
            }
        else
            {
          TS_TRACE("testPnorDD1: PNORDD read 2, Address 0x%llx, Data %llx",
                   l_address,
                   (long long unsigned)l_readData);
            }

          }while(0);


          //@TODO: Add total fail/pass count trace to know how many passed.

    };


};     


#endif
OpenPOWER on IntegriCloud