On Intel platforms we know that the ACPI connector device node order will follow the order the driver (i915) decides. The decision is made using the custom Intel ACPI OpRegion (intel_opregion.c), though the driver does not actually know that the values it sends to ACPI there are used for associating a device node for the connectors, and assigning address for them. In reality that custom Intel ACPI OpRegion actually violates ACPI specification (we supply dynamic information to objects that are defined static, for example _ADR), however, it makes assigning correct connector node for a connector entry straightforward (it's one-on-one mapping). Changes in v2 (Hans de goede): - Take a reference on the fwnode which we assign to the connector, for ACPI nodes this is a no-op but in the future we may see software-fwnodes assigned to connectors which are ref-counted. Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Tested-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Lyude Paul <lyude@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210817215201.795062-6-hdegoede@redhat.com
29 lines
955 B
C
29 lines
955 B
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2019 Intel Corporation
|
|
*/
|
|
|
|
#ifndef __INTEL_ACPI_H__
|
|
#define __INTEL_ACPI_H__
|
|
|
|
struct drm_i915_private;
|
|
|
|
#ifdef CONFIG_ACPI
|
|
void intel_register_dsm_handler(void);
|
|
void intel_unregister_dsm_handler(void);
|
|
void intel_dsm_get_bios_data_funcs_supported(struct drm_i915_private *i915);
|
|
void intel_acpi_device_id_update(struct drm_i915_private *i915);
|
|
void intel_acpi_assign_connector_fwnodes(struct drm_i915_private *i915);
|
|
#else
|
|
static inline void intel_register_dsm_handler(void) { return; }
|
|
static inline void intel_unregister_dsm_handler(void) { return; }
|
|
static inline
|
|
void intel_dsm_get_bios_data_funcs_supported(struct drm_i915_private *i915) { return; }
|
|
static inline
|
|
void intel_acpi_device_id_update(struct drm_i915_private *i915) { return; }
|
|
static inline
|
|
void intel_acpi_assign_connector_fwnodes(struct drm_i915_private *i915) { return; }
|
|
#endif /* CONFIG_ACPI */
|
|
|
|
#endif /* __INTEL_ACPI_H__ */
|