Home | History | Annotate | Download | only in CpuIo
      1 /** @file
      2   The default version of EFI_PEI_CPU_IO_PPI support published by PeiServices in
      3   PeiCore initialization phase.
      4 
      5   EFI_PEI_CPU_IO_PPI is installed by some platform or chipset-specific PEIM that
      6   abstracts the processor-visible I/O operations. When PeiCore is started, the
      7   default version of EFI_PEI_CPU_IO_PPI will be assigned to PeiServices table.
      8 
      9 Copyright (c) 2009, Intel Corporation. All rights reserved.<BR>
     10 This program and the accompanying materials
     11 are licensed and made available under the terms and conditions of the BSD License
     12 which accompanies this distribution.  The full text of the license may be found at
     13 http://opensource.org/licenses/bsd-license.php
     14 
     15 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     16 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     17 
     18 **/
     19 
     20 #include "PeiMain.h"
     21 
     22 ///
     23 /// This default instance of EFI_PEI_CPU_IO_PPI install assigned to EFI_PEI_SERVICE.CpuIo
     24 /// when PeiCore's initialization.
     25 ///
     26 EFI_PEI_CPU_IO_PPI gPeiDefaultCpuIoPpi = {
     27   {
     28     PeiDefaultMemRead,
     29     PeiDefaultMemWrite
     30   },
     31   {
     32     PeiDefaultIoRead,
     33     PeiDefaultIoWrite
     34   },
     35   PeiDefaultIoRead8,
     36   PeiDefaultIoRead16,
     37   PeiDefaultIoRead32,
     38   PeiDefaultIoRead64,
     39   PeiDefaultIoWrite8,
     40   PeiDefaultIoWrite16,
     41   PeiDefaultIoWrite32,
     42   PeiDefaultIoWrite64,
     43   PeiDefaultMemRead8,
     44   PeiDefaultMemRead16,
     45   PeiDefaultMemRead32,
     46   PeiDefaultMemRead64,
     47   PeiDefaultMemWrite8,
     48   PeiDefaultMemWrite16,
     49   PeiDefaultMemWrite32,
     50   PeiDefaultMemWrite64
     51 };
     52 
     53 /**
     54   Memory-based read services.
     55 
     56   This function is to perform the Memory Access Read service based on installed
     57   instance of the EFI_PEI_CPU_IO_PPI.
     58   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
     59   return EFI_NOT_YET_AVAILABLE.
     60 
     61   @param  PeiServices           An indirect pointer to the PEI Services Table
     62                                 published by the PEI Foundation.
     63   @param  This                  Pointer to local data for the interface.
     64   @param  Width                 The width of the access. Enumerated in bytes.
     65   @param  Address               The physical address of the access.
     66   @param  Count                 The number of accesses to perform.
     67   @param  Buffer                A pointer to the buffer of data.
     68 
     69   @retval EFI_SUCCESS           The function completed successfully.
     70   @retval EFI_NOT_YET_AVAILABLE The service has not been installed.
     71 **/
     72 EFI_STATUS
     73 EFIAPI
     74 PeiDefaultMemRead (
     75   IN  CONST EFI_PEI_SERVICES            **PeiServices,
     76   IN  CONST EFI_PEI_CPU_IO_PPI          *This,
     77   IN  EFI_PEI_CPU_IO_PPI_WIDTH          Width,
     78   IN  UINT64                            Address,
     79   IN  UINTN                             Count,
     80   IN  OUT VOID                          *Buffer
     81   )
     82 {
     83   return EFI_NOT_AVAILABLE_YET;
     84 }
     85 
     86 /**
     87   Memory-based write services.
     88 
     89   This function is to perform the Memory Access Write service based on installed
     90   instance of the EFI_PEI_CPU_IO_PPI.
     91   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
     92   return EFI_NOT_YET_AVAILABLE.
     93 
     94   @param  PeiServices           An indirect pointer to the PEI Services Table
     95                                 published by the PEI Foundation.
     96   @param  This                  Pointer to local data for the interface.
     97   @param  Width                 The width of the access. Enumerated in bytes.
     98   @param  Address               The physical address of the access.
     99   @param  Count                 The number of accesses to perform.
    100   @param  Buffer                A pointer to the buffer of data.
    101 
    102   @retval EFI_SUCCESS           The function completed successfully.
    103   @retval EFI_NOT_YET_AVAILABLE The service has not been installed.
    104 **/
    105 EFI_STATUS
    106 EFIAPI
    107 PeiDefaultMemWrite (
    108   IN  CONST EFI_PEI_SERVICES            **PeiServices,
    109   IN  CONST EFI_PEI_CPU_IO_PPI          *This,
    110   IN  EFI_PEI_CPU_IO_PPI_WIDTH          Width,
    111   IN  UINT64                            Address,
    112   IN  UINTN                             Count,
    113   IN  OUT VOID                          *Buffer
    114   )
    115 {
    116   return EFI_NOT_AVAILABLE_YET;
    117 }
    118 
    119 /**
    120   IO-based read services.
    121 
    122   This function is to perform the IO-base read service for the EFI_PEI_CPU_IO_PPI.
    123   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
    124   return EFI_NOT_YET_AVAILABLE.
    125 
    126   @param  PeiServices           An indirect pointer to the PEI Services Table
    127                                 published by the PEI Foundation.
    128   @param  This                  Pointer to local data for the interface.
    129   @param  Width                 The width of the access. Enumerated in bytes.
    130   @param  Address               The physical address of the access.
    131   @param  Count                 The number of accesses to perform.
    132   @param  Buffer                A pointer to the buffer of data.
    133 
    134   @retval EFI_SUCCESS           The function completed successfully.
    135   @retval EFI_NOT_YET_AVAILABLE The service has not been installed.
    136 **/
    137 EFI_STATUS
    138 EFIAPI
    139 PeiDefaultIoRead (
    140   IN      CONST EFI_PEI_SERVICES          **PeiServices,
    141   IN      CONST EFI_PEI_CPU_IO_PPI        *This,
    142   IN      EFI_PEI_CPU_IO_PPI_WIDTH        Width,
    143   IN      UINT64                          Address,
    144   IN      UINTN                           Count,
    145   IN OUT  VOID                            *Buffer
    146   )
    147 {
    148   return EFI_NOT_AVAILABLE_YET;
    149 }
    150 
    151 /**
    152   IO-based write services.
    153 
    154   This function is to perform the IO-base write service for the EFI_PEI_CPU_IO_PPI.
    155   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
    156   return EFI_NOT_YET_AVAILABLE.
    157 
    158   @param  PeiServices           An indirect pointer to the PEI Services Table
    159                                 published by the PEI Foundation.
    160   @param  This                  Pointer to local data for the interface.
    161   @param  Width                 The width of the access. Enumerated in bytes.
    162   @param  Address               The physical address of the access.
    163   @param  Count                 The number of accesses to perform.
    164   @param  Buffer                A pointer to the buffer of data.
    165 
    166   @retval EFI_SUCCESS           The function completed successfully.
    167   @retval EFI_NOT_YET_AVAILABLE The service has not been installed.
    168 **/
    169 EFI_STATUS
    170 EFIAPI
    171 PeiDefaultIoWrite (
    172   IN      CONST EFI_PEI_SERVICES          **PeiServices,
    173   IN      CONST EFI_PEI_CPU_IO_PPI        *This,
    174   IN      EFI_PEI_CPU_IO_PPI_WIDTH        Width,
    175   IN      UINT64                          Address,
    176   IN      UINTN                           Count,
    177   IN OUT  VOID                            *Buffer
    178   )
    179 {
    180   return EFI_NOT_AVAILABLE_YET;
    181 }
    182 
    183 /**
    184   8-bit I/O read operations.
    185 
    186   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
    187   return 0.
    188 
    189   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.
    190   @param  This           Pointer to local data for the interface.
    191   @param  Address        The physical address of the access.
    192 
    193   @return An 8-bit value returned from the I/O space.
    194 **/
    195 UINT8
    196 EFIAPI
    197 PeiDefaultIoRead8 (
    198   IN  CONST EFI_PEI_SERVICES      **PeiServices,
    199   IN  CONST EFI_PEI_CPU_IO_PPI    *This,
    200   IN  UINT64                      Address
    201   )
    202 {
    203   return 0;
    204 }
    205 
    206 /**
    207   Reads an 16-bit I/O port.
    208 
    209   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
    210   return 0.
    211 
    212   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.
    213   @param  This           Pointer to local data for the interface.
    214   @param  Address        The physical address of the access.
    215 
    216   @return A 16-bit value returned from the I/O space.
    217 **/
    218 UINT16
    219 EFIAPI
    220 PeiDefaultIoRead16 (
    221   IN  CONST EFI_PEI_SERVICES      **PeiServices,
    222   IN  CONST EFI_PEI_CPU_IO_PPI    *This,
    223   IN  UINT64                      Address
    224   )
    225 {
    226   return 0;
    227 }
    228 
    229 /**
    230   Reads an 32-bit I/O port.
    231 
    232   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
    233   return 0.
    234 
    235   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.
    236   @param  This           Pointer to local data for the interface.
    237   @param  Address        The physical address of the access.
    238 
    239   @return A 32-bit value returned from the I/O space.
    240 **/
    241 UINT32
    242 EFIAPI
    243 PeiDefaultIoRead32 (
    244   IN  CONST EFI_PEI_SERVICES      **PeiServices,
    245   IN  CONST EFI_PEI_CPU_IO_PPI    *This,
    246   IN  UINT64                      Address
    247   )
    248 {
    249   return 0;
    250 }
    251 
    252 /**
    253   Reads an 64-bit I/O port.
    254 
    255   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
    256   return 0.
    257 
    258   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.
    259   @param  This           Pointer to local data for the interface.
    260   @param  Address        The physical address of the access.
    261 
    262   @return A 64-bit value returned from the I/O space.
    263 **/
    264 UINT64
    265 EFIAPI
    266 PeiDefaultIoRead64 (
    267   IN  CONST EFI_PEI_SERVICES      **PeiServices,
    268   IN  CONST EFI_PEI_CPU_IO_PPI    *This,
    269   IN  UINT64                      Address
    270   )
    271 {
    272   return 0;
    273 }
    274 
    275 /**
    276   8-bit I/O write operations.
    277   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do
    278   nothing.
    279 
    280   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.
    281   @param  This           Pointer to local data for the interface.
    282   @param  Address        The physical address of the access.
    283   @param  Data           The data to write.
    284 **/
    285 VOID
    286 EFIAPI
    287 PeiDefaultIoWrite8 (
    288   IN  CONST EFI_PEI_SERVICES      **PeiServices,
    289   IN  CONST EFI_PEI_CPU_IO_PPI    *This,
    290   IN  UINT64                      Address,
    291   IN  UINT8                       Data
    292   )
    293 {
    294 }
    295 
    296 /**
    297   16-bit I/O write operations.
    298   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do
    299   nothing.
    300 
    301   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.
    302   @param  This           Pointer to local data for the interface.
    303   @param  Address        The physical address of the access.
    304   @param  Data           The data to write.
    305 **/
    306 VOID
    307 EFIAPI
    308 PeiDefaultIoWrite16 (
    309   IN  CONST EFI_PEI_SERVICES      **PeiServices,
    310   IN  CONST EFI_PEI_CPU_IO_PPI    *This,
    311   IN  UINT64                      Address,
    312   IN  UINT16                      Data
    313   )
    314 {
    315 }
    316 
    317 /**
    318   32-bit I/O write operations.
    319   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do
    320   nothing.
    321 
    322   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.
    323   @param  This           Pointer to local data for the interface.
    324   @param  Address        The physical address of the access.
    325   @param  Data           The data to write.
    326 **/
    327 VOID
    328 EFIAPI
    329 PeiDefaultIoWrite32 (
    330   IN  CONST EFI_PEI_SERVICES      **PeiServices,
    331   IN  CONST EFI_PEI_CPU_IO_PPI    *This,
    332   IN  UINT64                      Address,
    333   IN  UINT32                      Data
    334   )
    335 {
    336 }
    337 
    338 /**
    339   64-bit I/O write operations.
    340   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do
    341   nothing.
    342 
    343   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.
    344   @param  This           Pointer to local data for the interface.
    345   @param  Address        The physical address of the access.
    346   @param  Data           The data to write.
    347 **/
    348 VOID
    349 EFIAPI
    350 PeiDefaultIoWrite64 (
    351   IN  CONST EFI_PEI_SERVICES      **PeiServices,
    352   IN  CONST EFI_PEI_CPU_IO_PPI    *This,
    353   IN  UINT64                      Address,
    354   IN  UINT64                      Data
    355   )
    356 {
    357 }
    358 
    359 /**
    360   8-bit memory read operations.
    361 
    362   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
    363   return 0.
    364 
    365   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.
    366   @param  This           Pointer to local data for the interface.
    367   @param  Address        The physical address of the access.
    368 
    369   @return An 8-bit value returned from the memory space.
    370 
    371 **/
    372 UINT8
    373 EFIAPI
    374 PeiDefaultMemRead8 (
    375   IN  CONST EFI_PEI_SERVICES      **PeiServices,
    376   IN  CONST EFI_PEI_CPU_IO_PPI    *This,
    377   IN  UINT64                      Address
    378   )
    379 {
    380   return 0;
    381 }
    382 
    383 /**
    384   16-bit memory read operations.
    385 
    386   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
    387   return 0.
    388 
    389   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.
    390   @param  This           Pointer to local data for the interface.
    391   @param  Address        The physical address of the access.
    392 
    393   @return An 16-bit value returned from the memory space.
    394 
    395 **/
    396 UINT16
    397 EFIAPI
    398 PeiDefaultMemRead16 (
    399   IN  CONST EFI_PEI_SERVICES      **PeiServices,
    400   IN  CONST EFI_PEI_CPU_IO_PPI    *This,
    401   IN  UINT64                      Address
    402   )
    403 {
    404   return 0;
    405 }
    406 
    407 /**
    408   32-bit memory read operations.
    409 
    410   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
    411   return 0.
    412 
    413   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.
    414   @param  This           Pointer to local data for the interface.
    415   @param  Address        The physical address of the access.
    416 
    417   @return An 32-bit value returned from the memory space.
    418 
    419 **/
    420 UINT32
    421 EFIAPI
    422 PeiDefaultMemRead32 (
    423   IN  CONST EFI_PEI_SERVICES      **PeiServices,
    424   IN  CONST EFI_PEI_CPU_IO_PPI    *This,
    425   IN  UINT64                      Address
    426   )
    427 {
    428   return 0;
    429 }
    430 
    431 /**
    432   64-bit memory read operations.
    433 
    434   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then
    435   return 0.
    436 
    437   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.
    438   @param  This           Pointer to local data for the interface.
    439   @param  Address        The physical address of the access.
    440 
    441   @return An 64-bit value returned from the memory space.
    442 
    443 **/
    444 UINT64
    445 EFIAPI
    446 PeiDefaultMemRead64 (
    447   IN  CONST EFI_PEI_SERVICES      **PeiServices,
    448   IN  CONST EFI_PEI_CPU_IO_PPI    *This,
    449   IN  UINT64                      Address
    450   )
    451 {
    452   return 0;
    453 }
    454 
    455 /**
    456   8-bit memory write operations.
    457   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do
    458   nothing.
    459 
    460   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.
    461   @param  This           Pointer to local data for the interface.
    462   @param  Address        The physical address of the access.
    463   @param  Data           The data to write.
    464 
    465 **/
    466 VOID
    467 EFIAPI
    468 PeiDefaultMemWrite8 (
    469   IN  CONST EFI_PEI_SERVICES        **PeiServices,
    470   IN  CONST EFI_PEI_CPU_IO_PPI      *This,
    471   IN  UINT64                        Address,
    472   IN  UINT8                         Data
    473   )
    474 {
    475 }
    476 
    477 /**
    478   16-bit memory write operations.
    479   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do
    480   nothing.
    481 
    482   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.
    483   @param  This           Pointer to local data for the interface.
    484   @param  Address        The physical address of the access.
    485   @param  Data           The data to write.
    486 
    487 **/
    488 VOID
    489 EFIAPI
    490 PeiDefaultMemWrite16 (
    491   IN  CONST EFI_PEI_SERVICES        **PeiServices,
    492   IN  CONST EFI_PEI_CPU_IO_PPI      *This,
    493   IN  UINT64                        Address,
    494   IN  UINT16                        Data
    495   )
    496 {
    497 }
    498 
    499 /**
    500   32-bit memory write operations.
    501   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do
    502   nothing.
    503 
    504   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.
    505   @param  This           Pointer to local data for the interface.
    506   @param  Address        The physical address of the access.
    507   @param  Data           The data to write.
    508 
    509 **/
    510 VOID
    511 EFIAPI
    512 PeiDefaultMemWrite32 (
    513   IN  CONST EFI_PEI_SERVICES        **PeiServices,
    514   IN  CONST EFI_PEI_CPU_IO_PPI      *This,
    515   IN  UINT64                        Address,
    516   IN  UINT32                        Data
    517   )
    518 {
    519 }
    520 
    521 /**
    522   64-bit memory write operations.
    523   If the EFI_PEI_CPU_IO_PPI is not installed by platform/chipset PEIM, then do
    524   nothing.
    525 
    526   @param  PeiServices    An indirect pointer to the PEI Services Table published by the PEI Foundation.
    527   @param  This           Pointer to local data for the interface.
    528   @param  Address        The physical address of the access.
    529   @param  Data           The data to write.
    530 
    531 **/
    532 VOID
    533 EFIAPI
    534 PeiDefaultMemWrite64 (
    535   IN  CONST EFI_PEI_SERVICES        **PeiServices,
    536   IN  CONST EFI_PEI_CPU_IO_PPI      *This,
    537   IN  UINT64                        Address,
    538   IN  UINT64                        Data
    539   )
    540 {
    541 }
    542