Print this page
update to acpica-unix2-20140114
acpica-unix2-20130823
PANKOVs restructure

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/intel/io/acpica/hardware/hwacpi.c
          +++ new/usr/src/common/acpica/components/hardware/hwacpi.c
   1      -
   2    1  /******************************************************************************
   3    2   *
   4    3   * Module Name: hwacpi - ACPI Hardware Initialization/Mode Interface
   5    4   *
   6    5   *****************************************************************************/
   7    6  
   8    7  /*
   9      - * Copyright (C) 2000 - 2011, Intel Corp.
        8 + * Copyright (C) 2000 - 2014, Intel Corp.
  10    9   * All rights reserved.
  11   10   *
  12   11   * Redistribution and use in source and binary forms, with or without
  13   12   * modification, are permitted provided that the following conditions
  14   13   * are met:
  15   14   * 1. Redistributions of source code must retain the above copyright
  16   15   *    notice, this list of conditions, and the following disclaimer,
  17   16   *    without modification.
  18   17   * 2. Redistributions in binary form must reproduce at minimum a disclaimer
  19   18   *    substantially similar to the "NO WARRANTY" disclaimer below
↓ open down ↓ 25 lines elided ↑ open up ↑
  45   44  #define __HWACPI_C__
  46   45  
  47   46  #include "acpi.h"
  48   47  #include "accommon.h"
  49   48  
  50   49  
  51   50  #define _COMPONENT          ACPI_HARDWARE
  52   51          ACPI_MODULE_NAME    ("hwacpi")
  53   52  
  54   53  
       54 +#if (!ACPI_REDUCED_HARDWARE) /* Entire module */
  55   55  /******************************************************************************
  56   56   *
  57   57   * FUNCTION:    AcpiHwSetMode
  58   58   *
  59   59   * PARAMETERS:  Mode            - SYS_MODE_ACPI or SYS_MODE_LEGACY
  60   60   *
  61   61   * RETURN:      Status
  62   62   *
  63   63   * DESCRIPTION: Transitions the system into the requested mode.
  64   64   *
↓ open down ↓ 3 lines elided ↑ open up ↑
  68   68  AcpiHwSetMode (
  69   69      UINT32                  Mode)
  70   70  {
  71   71  
  72   72      ACPI_STATUS             Status;
  73   73      UINT32                  Retry;
  74   74  
  75   75  
  76   76      ACPI_FUNCTION_TRACE (HwSetMode);
  77   77  
       78 +
       79 +    /* If the Hardware Reduced flag is set, machine is always in acpi mode */
       80 +
       81 +    if (AcpiGbl_ReducedHardware)
       82 +    {
       83 +        return_ACPI_STATUS (AE_OK);
       84 +    }
       85 +
  78   86      /*
  79   87       * ACPI 2.0 clarified that if SMI_CMD in FADT is zero,
  80   88       * system does not support mode transition.
  81   89       */
  82   90      if (!AcpiGbl_FADT.SmiCommand)
  83   91      {
  84   92          ACPI_ERROR ((AE_INFO, "No SMI_CMD in FADT, mode transition failed"));
  85   93          return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE);
  86   94      }
  87   95  
↓ open down ↓ 17 lines elided ↑ open up ↑
 105  113      case ACPI_SYS_MODE_ACPI:
 106  114  
 107  115          /* BIOS should have disabled ALL fixed and GP events */
 108  116  
 109  117          Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand,
 110  118                          (UINT32) AcpiGbl_FADT.AcpiEnable, 8);
 111  119          ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Attempting to enable ACPI mode\n"));
 112  120          break;
 113  121  
 114  122      case ACPI_SYS_MODE_LEGACY:
 115      -
 116  123          /*
 117  124           * BIOS should clear all fixed status bits and restore fixed event
 118  125           * enable bits to default
 119  126           */
 120  127          Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand,
 121  128                      (UINT32) AcpiGbl_FADT.AcpiDisable, 8);
 122  129          ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
 123  130                      "Attempting to enable Legacy (non-ACPI) mode\n"));
 124  131          break;
 125  132  
 126  133      default:
      134 +
 127  135          return_ACPI_STATUS (AE_BAD_PARAMETER);
 128  136      }
 129  137  
 130  138      if (ACPI_FAILURE (Status))
 131  139      {
 132  140          ACPI_EXCEPTION ((AE_INFO, Status,
 133  141              "Could not write ACPI mode change"));
 134  142          return_ACPI_STATUS (Status);
 135  143      }
 136  144  
 137  145      /*
 138  146       * Some hardware takes a LONG time to switch modes. Give them 3 sec to
 139  147       * do so, but allow faster systems to proceed more quickly.
 140  148       */
 141  149      Retry = 3000;
 142  150      while (Retry)
 143  151      {
 144      -        if (AcpiHwGetMode() == Mode)
      152 +        if (AcpiHwGetMode () == Mode)
 145  153          {
 146  154              ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Mode %X successfully enabled\n",
 147  155                  Mode));
 148  156              return_ACPI_STATUS (AE_OK);
 149  157          }
 150      -        AcpiOsStall(1000);
      158 +        AcpiOsStall (ACPI_USEC_PER_MSEC);
 151  159          Retry--;
 152  160      }
 153  161  
 154  162      ACPI_ERROR ((AE_INFO, "Hardware did not change modes"));
 155  163      return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE);
 156  164  }
 157  165  
 158  166  
 159  167  /*******************************************************************************
 160  168   *
 161  169   * FUNCTION:    AcpiHwGetMode
 162  170   *
 163  171   * PARAMETERS:  none
 164  172   *
 165  173   * RETURN:      SYS_MODE_ACPI or SYS_MODE_LEGACY
 166  174   *
 167      - * DESCRIPTION: Return current operating state of system.  Determined by
      175 + * DESCRIPTION: Return current operating state of system. Determined by
 168  176   *              querying the SCI_EN bit.
 169  177   *
 170  178   ******************************************************************************/
 171  179  
 172  180  UINT32
 173  181  AcpiHwGetMode (
 174  182      void)
 175  183  {
 176  184      ACPI_STATUS             Status;
 177  185      UINT32                  Value;
 178  186  
 179  187  
 180  188      ACPI_FUNCTION_TRACE (HwGetMode);
 181  189  
 182  190  
      191 +    /* If the Hardware Reduced flag is set, machine is always in acpi mode */
      192 +
      193 +    if (AcpiGbl_ReducedHardware)
      194 +    {
      195 +        return_UINT32 (ACPI_SYS_MODE_ACPI);
      196 +    }
      197 +
 183  198      /*
 184  199       * ACPI 2.0 clarified that if SMI_CMD in FADT is zero,
 185  200       * system does not support mode transition.
 186  201       */
 187  202      if (!AcpiGbl_FADT.SmiCommand)
 188  203      {
 189  204          return_UINT32 (ACPI_SYS_MODE_ACPI);
 190  205      }
 191  206  
 192  207      Status = AcpiReadBitRegister (ACPI_BITREG_SCI_ENABLE, &Value);
↓ open down ↓ 4 lines elided ↑ open up ↑
 197  212  
 198  213      if (Value)
 199  214      {
 200  215          return_UINT32 (ACPI_SYS_MODE_ACPI);
 201  216      }
 202  217      else
 203  218      {
 204  219          return_UINT32 (ACPI_SYS_MODE_LEGACY);
 205  220      }
 206  221  }
      222 +
      223 +#endif /* !ACPI_REDUCED_HARDWARE */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX