Home | History | Annotate | Download | only in QNC
      1 /** @file
      2 File to contain all the hardware specific stuff for the Smm QNCn dispatch protocol.
      3 
      4 Copyright (c) 2013-2015 Intel Corporation.
      5 
      6 This program and the accompanying materials
      7 are licensed and made available under the terms and conditions of the BSD License
      8 which accompanies this distribution.  The full text of the license may be found at
      9 http://opensource.org/licenses/bsd-license.php
     10 
     11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     13 
     14 
     15 **/
     16 
     17 //
     18 // Include common header file for this module.
     19 //
     20 #include "CommonHeader.h"
     21 
     22 #include "QNCSmmHelpers.h"
     23 
     24 QNC_SMM_SOURCE_DESC QNCN_SOURCE_DESCS[NUM_ICHN_TYPES] = {
     25 
     26   // QNCnMch (0)
     27   NULL_SOURCE_DESC_INITIALIZER,
     28 
     29   // QNCnPme (1)
     30   NULL_SOURCE_DESC_INITIALIZER,
     31 
     32   // QNCnRtcAlarm (2)
     33   {
     34     QNC_SMM_NO_FLAGS,
     35     {
     36       {{ACPI_ADDR_TYPE, {R_QNC_PM1BLK_PM1E}}, S_QNC_PM1BLK_PM1E, N_QNC_PM1BLK_PM1E_RTC},
     37       NULL_BIT_DESC_INITIALIZER
     38     },
     39     {
     40       {{ACPI_ADDR_TYPE, {R_QNC_PM1BLK_PM1S}}, S_QNC_PM1BLK_PM1S, N_QNC_PM1BLK_PM1S_RTC}
     41     }
     42   },
     43 
     44   // QNCnRingIndicate (3)
     45   NULL_SOURCE_DESC_INITIALIZER,
     46 
     47   // QNCnAc97Wake (4)
     48   NULL_SOURCE_DESC_INITIALIZER,
     49 
     50   // QNCnSerialIrq (5)
     51   NULL_SOURCE_DESC_INITIALIZER,
     52 
     53   // QNCnY2KRollover (6)
     54   NULL_SOURCE_DESC_INITIALIZER,
     55 
     56   // QNCnTcoTimeout (7)
     57   NULL_SOURCE_DESC_INITIALIZER,
     58 
     59   // QNCnOsTco (8)
     60   NULL_SOURCE_DESC_INITIALIZER,
     61 
     62   // QNCnNmi (9)
     63   NULL_SOURCE_DESC_INITIALIZER,
     64 
     65   // QNCnIntruderDetect (10)
     66   NULL_SOURCE_DESC_INITIALIZER,
     67 
     68   // QNCnBiosWp (11)
     69   {
     70     QNC_SMM_CLEAR_WITH_ZERO,
     71     {
     72       {
     73         {
     74           PCI_ADDR_TYPE,
     75           {
     76             (
     77               (PCI_BUS_NUMBER_QNC << 24) |
     78               (PCI_DEVICE_NUMBER_QNC_LPC << 16) |
     79               (PCI_FUNCTION_NUMBER_QNC_LPC << 8) |
     80               R_QNC_LPC_BIOS_CNTL
     81             )
     82           }
     83         },
     84         S_QNC_LPC_BIOS_CNTL,
     85         N_QNC_LPC_BIOS_CNTL_BLE
     86       },
     87       NULL_BIT_DESC_INITIALIZER
     88     },
     89     {
     90       {
     91         {
     92           PCI_ADDR_TYPE,
     93           {
     94             (
     95               (PCI_BUS_NUMBER_QNC << 24) |
     96               (PCI_DEVICE_NUMBER_QNC_LPC << 16) |
     97               (PCI_FUNCTION_NUMBER_QNC_LPC << 8) |
     98               R_QNC_LPC_BIOS_CNTL
     99             )
    100           }
    101         },
    102         S_QNC_LPC_BIOS_CNTL,
    103         N_QNC_LPC_BIOS_CNTL_BIOSWE
    104       }
    105     }
    106   },
    107 
    108   // QNCnMcSmi (12)
    109   NULL_SOURCE_DESC_INITIALIZER,
    110 
    111   // QNCnPmeB0 (13)
    112   NULL_SOURCE_DESC_INITIALIZER,
    113 
    114   // QNCnThrmSts (14)
    115   {
    116     QNC_SMM_SCI_EN_DEPENDENT,
    117     {
    118       {{GPE_ADDR_TYPE, {R_QNC_GPE0BLK_GPE0E}}, S_QNC_GPE0BLK_GPE0E, N_QNC_GPE0BLK_GPE0E_THRM},
    119       NULL_BIT_DESC_INITIALIZER
    120     },
    121     {
    122       {{GPE_ADDR_TYPE, {R_QNC_GPE0BLK_GPE0S}}, S_QNC_GPE0BLK_GPE0S, N_QNC_GPE0BLK_GPE0S_THRM}
    123     }
    124   },
    125 
    126   // QNCnSmBus (15)
    127   NULL_SOURCE_DESC_INITIALIZER,
    128 
    129   // QNCnIntelUsb2 (16)
    130   NULL_SOURCE_DESC_INITIALIZER,
    131 
    132   // QNCnMonSmi7 (17)
    133   NULL_SOURCE_DESC_INITIALIZER,
    134 
    135   // QNCnMonSmi6 (18)
    136   NULL_SOURCE_DESC_INITIALIZER,
    137 
    138   // QNCnMonSmi5 (19)
    139   NULL_SOURCE_DESC_INITIALIZER,
    140 
    141   // QNCnMonSmi4 (20)
    142   NULL_SOURCE_DESC_INITIALIZER,
    143 
    144   // QNCnDevTrap13 (21)
    145   NULL_SOURCE_DESC_INITIALIZER,
    146 
    147   // QNCnDevTrap12 (22)
    148   NULL_SOURCE_DESC_INITIALIZER,
    149 
    150   // QNCnDevTrap11 (23)
    151   NULL_SOURCE_DESC_INITIALIZER,
    152 
    153   // QNCnDevTrap10 (24)
    154   NULL_SOURCE_DESC_INITIALIZER,
    155 
    156   // QNCnDevTrap9 (25)
    157   NULL_SOURCE_DESC_INITIALIZER,
    158 
    159   // QNCnDevTrap8 (26)
    160   NULL_SOURCE_DESC_INITIALIZER,
    161 
    162   // QNCnDevTrap7 (27)
    163   NULL_SOURCE_DESC_INITIALIZER,
    164 
    165   // QNCnDevTrap6 (28)
    166   NULL_SOURCE_DESC_INITIALIZER,
    167 
    168   // QNCnDevTrap5 (29)
    169   NULL_SOURCE_DESC_INITIALIZER,
    170 
    171   // QNCnDevTrap3 (30)
    172   NULL_SOURCE_DESC_INITIALIZER,
    173 
    174   // QNCnDevTrap2 (31)
    175   NULL_SOURCE_DESC_INITIALIZER,
    176 
    177   // QNCnDevTrap1 (32)
    178   NULL_SOURCE_DESC_INITIALIZER,
    179 
    180   // QNCnDevTrap0 (33)
    181   NULL_SOURCE_DESC_INITIALIZER,
    182 
    183   // QNCnIoTrap3 (34)
    184   NULL_SOURCE_DESC_INITIALIZER,
    185 
    186   // QNCnIoTrap2 (35)
    187   NULL_SOURCE_DESC_INITIALIZER,
    188 
    189   // QNCnIoTrap1 (36)
    190   NULL_SOURCE_DESC_INITIALIZER,
    191 
    192   // QNCnIoTrap0 (37)
    193   NULL_SOURCE_DESC_INITIALIZER,
    194 
    195   // QNCnPciExpress (38)
    196   NULL_SOURCE_DESC_INITIALIZER,
    197 
    198   // QNCnMonitor (39)
    199   NULL_SOURCE_DESC_INITIALIZER,
    200 
    201   // QNCnSpi (40)
    202   NULL_SOURCE_DESC_INITIALIZER,
    203 
    204   // QNCnQRT (41)
    205   NULL_SOURCE_DESC_INITIALIZER,
    206 
    207   // QNCnGpioUnlock (42)
    208   NULL_SOURCE_DESC_INITIALIZER
    209 };
    210 
    211 VOID
    212 QNCSmmQNCnClearSource(
    213   QNC_SMM_SOURCE_DESC   *SrcDesc
    214   )
    215 {
    216     QNCSmmClearSource (SrcDesc);
    217 }
    218