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:

committed by
Rafael J. Wysocki

parent
2b72693066
commit
97028ce6fc
@@ -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;
|
||||
|
Reference in New Issue
Block a user