summaryrefslogtreecommitdiffstats
path: root/import/chips/p9/procedures/hwp/perv/p9_sbe_repr_initf.C
blob: 178151dbbd36e1156e2239e8af33257c96708502 (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
131
132
133
134
135
136
/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* $Source: chips/p9/procedures/hwp/perv/p9_sbe_repr_initf.C $            */
/*                                                                        */
/* IBM CONFIDENTIAL                                                       */
/*                                                                        */
/* EKB Project                                                            */
/*                                                                        */
/* COPYRIGHT 2016                                                         */
/* [+] International Business Machines Corp.                              */
/*                                                                        */
/*                                                                        */
/* The source code for this program is not published or otherwise         */
/* divested of its trade secrets, irrespective of what has been           */
/* deposited with the U.S. Copyright Office.                              */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */
//------------------------------------------------------------------------------
/// @file  p9_sbe_repr_initf.C
///
/// @brief Load Repair rings for all enabled chiplets
//------------------------------------------------------------------------------
// *HWP HW Owner        : Abhishek Agarwal <abagarw8@in.ibm.com>
// *HWP HW Backup Owner : Srinivas V Naga <srinivan@in.ibm.com>
// *HWP FW Owner        : Sunil Kumar <skumar8j@in.ibm.com>
// *HWP Team            : Perv
// *HWP Level           : 2
// *HWP Consumed by     : SBE
//------------------------------------------------------------------------------

#include "p9_sbe_repr_initf.H"

#include "p9_perv_scom_addresses.H"

fapi2::ReturnCode p9_sbe_repr_initf(const
                                    fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target_chip)
{
    uint8_t l_attr_chip_unit_pos = 0; //actual value is read in FAPI_ATTR_GET belo

    FAPI_INF("Entering ...");

    for (auto l_chplt_trgt : i_target_chip.getChildren<fapi2::TARGET_TYPE_MCBIST>
         (fapi2::TARGET_STATE_FUNCTIONAL))
    {
        FAPI_DBG("Scan repr rings for mc chiplets ");
        FAPI_TRY(fapi2::putRing(l_chplt_trgt, mc_repr));
        FAPI_TRY(fapi2::putRing(l_chplt_trgt, mc_iom01_repr));
        FAPI_TRY(fapi2::putRing(l_chplt_trgt, mc_iom23_repr));
    }

    for( auto l_chplt_trgt : i_target_chip.getChildren<fapi2::TARGET_TYPE_PERV>
         ( fapi2::TARGET_STATE_FUNCTIONAL))
    {
        FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_UNIT_POS, l_chplt_trgt, l_attr_chip_unit_pos));

        if ((l_attr_chip_unit_pos == 0x09))/* OBUS0 Chiplet */
        {
            FAPI_DBG("Scan repr rings for obus chiplets ");
            FAPI_TRY(fapi2::putRing(i_target_chip, ob0_repr));
        }

        //Rings need to be scanned for OBUS 2 and 3 incase of Cumulus
        if ((l_attr_chip_unit_pos == 0xC))/* OBUS3 Chiplet */
        {
            FAPI_DBG("Scan repr rings for obus chiplets ");
            FAPI_TRY(fapi2::putRing(i_target_chip, ob3_repr));
        }

        if ((l_attr_chip_unit_pos == 0x06))/* XBUS Chiplet */
        {
            FAPI_DBG("Scan repr rings for xbus chiplets ");
            FAPI_TRY(fapi2::putRing(i_target_chip, xb_repr));
            FAPI_TRY(fapi2::putRing(i_target_chip, xb_io0_repr));
            FAPI_TRY(fapi2::putRing(i_target_chip, xb_io1_repr));
            FAPI_TRY(fapi2::putRing(i_target_chip, xb_io2_repr));
        }

        if ((l_attr_chip_unit_pos == 0xD))/* PCI0 Chiplet */
        {
            FAPI_DBG("Scan repr rings for pci0 chiplets ");
            FAPI_TRY(fapi2::putRing(i_target_chip, pci0_repr));
        }

        if ((l_attr_chip_unit_pos == 0xE))/* PCI1 Chiplet */
        {
            FAPI_DBG("Scan repr rings for pci1 chiplets ");
            FAPI_TRY(fapi2::putRing(i_target_chip, pci1_repr));
        }

        if ((l_attr_chip_unit_pos == 0xF))/* PCI2 Chiplet */
        {
            FAPI_DBG("Scan repr rings for pci2 chiplets ");
            FAPI_TRY(fapi2::putRing(i_target_chip, pci2_repr));
        }

        if ((l_attr_chip_unit_pos == 0x02))/* N0 Chiplet */
        {
            FAPI_DBG("Scan repr rings for n0 chiplets ");
            FAPI_TRY(fapi2::putRing(i_target_chip, n0_repr));
            FAPI_TRY(fapi2::putRing(i_target_chip, n0_nx_repr));
            FAPI_TRY(fapi2::putRing(i_target_chip, n0_cxa0_repr));
        }

        if ((l_attr_chip_unit_pos == 0x03))/* N1 Chiplet */
        {
            FAPI_DBG("Scan repr rings for n1 chiplets ");
            FAPI_TRY(fapi2::putRing(i_target_chip, n1_repr));
            FAPI_TRY(fapi2::putRing(i_target_chip, n1_ioo0_repr));
            FAPI_TRY(fapi2::putRing(i_target_chip, n1_ioo1_repr));
            FAPI_TRY(fapi2::putRing(i_target_chip, n1_mcs23_repr));
        }

        if ((l_attr_chip_unit_pos == 0x04))/* N2 Chiplet */
        {
            FAPI_DBG("Scan repr rings for n2 chiplets ");
            FAPI_TRY(fapi2::putRing(i_target_chip, n2_repr));
            FAPI_TRY(fapi2::putRing(i_target_chip, n2_cxa1_repr));
        }

        if ((l_attr_chip_unit_pos == 0x05))/* N3 Chiplet */
        {
            FAPI_DBG("Scan repr rings for n3 chiplets ");
            FAPI_TRY(fapi2::putRing(i_target_chip, n3_repr));
            FAPI_TRY(fapi2::putRing(i_target_chip, n3_mcs01_repr));
            FAPI_TRY(fapi2::putRing(i_target_chip, n3_np_repr));
        }
    }

    FAPI_INF("Exiting ...");

fapi_try_exit:
    return fapi2::current_err;

}

OpenPOWER on IntegriCloud