ACPICA: ACPI 6.2: Add support for PinConfig() resource

ACPICA commit a06fdba686cefccd5dd5b93b52fa0f1e3f984906

ACPI 6.2 introduced a new resource that is used to specify fine-grained
configuration of a pin or set of pins used by a device. The ASL syntax of
this new resource looks like:

  PinConfig (Shared/Exclusive, PinConfigType, PinConfigValue,
             ResourceSource, ResourceSourceIndex, ResourceUsage,
             DescriptorName, Vendordata) {Pin List}

PinConfigType is an integer with following accepted values:

  0x00 (Default) - No configuration is applied to the pin
  0x01 (Bias Pull-up) - Pin is pulled up using certain size resistor
  0x02 (Bias Pull-down) - Pin is pulled down using certain size resistor
  0x03 (Bias Default) - Set to default biasing
  0x04 (Bias Disable) - All bias settings will be disabled
  0x05 (Bias High Impedance) - Configure the pin as hi_z
  0x06 (Bias Bus Hold) - Configure the pin in a weak latch state where
                         it drives the last value on a tristate bus
  0x07 (Drive Open Drain) - Configure the pin into open drain state
  0x08 (Drive Open Source) - Configure the pin into open source state
  0x09 (Drive Push Pull) - Configure the pin into push-pull state
  0x0a (Drive Strength) - How much the pin can supply current
  0x0b (Slew Rate) - Configure slew rate of the pin
  0x0c (Input Debounce) - Enable input debouncer for the pin
  0x0d (Input Schmitt Trigger) - Enable schmitt trigger for the pin
  0x0e - 0x7f - Reserved
  0x80 - 0xff - Vendor defined types

The PinConfigValue depends on the type and is expressed as units
suitable for that type (for example bias uses Ohms).

Link: https://github.com/acpica/acpica/commit/a06fdba6
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
Mika Westerberg
2017-06-05 16:39:19 +08:00
committed by Rafael J. Wysocki
parent 2b72693066
commit 97028ce6fc
10 changed files with 223 additions and 4 deletions

View File

@@ -375,6 +375,20 @@ acpi_rs_get_aml_length(struct acpi_resource *resource,
break;
case ACPI_RESOURCE_TYPE_PIN_CONFIG:
total_size = (acpi_rs_length)(total_size +
(resource->data.
pin_config.
pin_table_length * 2) +
resource->data.pin_config.
resource_source.
string_length +
resource->data.pin_config.
vendor_length);
break;
default:
break;
@@ -581,6 +595,23 @@ acpi_rs_get_list_length(u8 *aml_buffer,
minimum_aml_resource_length;
break;
case ACPI_RESOURCE_NAME_PIN_CONFIG:
/* Vendor data is optional */
if (aml_resource->pin_config.vendor_length) {
extra_struct_bytes +=
aml_resource->pin_config.vendor_offset -
aml_resource->pin_config.pin_table_offset +
aml_resource->pin_config.vendor_length;
} else {
extra_struct_bytes +=
aml_resource->large_header.resource_length +
sizeof(struct aml_resource_large_header) -
aml_resource->pin_config.pin_table_offset;
}
break;
default:
break;