diff options
Diffstat (limited to 'meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0684-drm-amdgpu-mv-amdgpu_acpi.h-to-amd-include-amd_acpi..patch')
-rw-r--r-- | meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0684-drm-amdgpu-mv-amdgpu_acpi.h-to-amd-include-amd_acpi..patch | 1049 |
1 files changed, 1049 insertions, 0 deletions
diff --git a/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0684-drm-amdgpu-mv-amdgpu_acpi.h-to-amd-include-amd_acpi..patch b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0684-drm-amdgpu-mv-amdgpu_acpi.h-to-amd-include-amd_acpi..patch new file mode 100644 index 00000000..ddd9b4a2 --- /dev/null +++ b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0684-drm-amdgpu-mv-amdgpu_acpi.h-to-amd-include-amd_acpi..patch @@ -0,0 +1,1049 @@ +From 6f42fb99e5f8dacb7c2625ed4f79873f26585e48 Mon Sep 17 00:00:00 2001 +From: Rex Zhu <Rex.Zhu@amd.com> +Date: Fri, 18 Sep 2015 16:35:17 +0800 +Subject: [PATCH 0684/1050] drm/amdgpu: mv amdgpu_acpi.h to + amd/include/amd_acpi.h + +This will be shared with the new powerplay module. + +Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> +Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 2 +- + drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.h | 494 ----------------------- + drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c | 2 +- + drivers/gpu/drm/amd/include/amd_acpi.h | 494 +++++++++++++++++++++++ + 4 files changed, 496 insertions(+), 496 deletions(-) + delete mode 100644 drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.h + create mode 100644 drivers/gpu/drm/amd/include/amd_acpi.h + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c +index 5df5b83..5cd7b73 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c +@@ -29,7 +29,7 @@ + #include <drm/drmP.h> + #include <drm/drm_crtc_helper.h> + #include "amdgpu.h" +-#include "amdgpu_acpi.h" ++#include "amd_acpi.h" + #include "atom.h" + + extern void amdgpu_pm_acpi_event_handler(struct amdgpu_device *adev); +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.h +deleted file mode 100644 +index 51ce3e3..0000000 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.h ++++ /dev/null +@@ -1,494 +0,0 @@ +-/* +- * Copyright 2012 Advanced Micro Devices, Inc. +- * +- * Permission is hereby granted, free of charge, to any person obtaining a +- * copy of this software and associated documentation files (the "Software"), +- * to deal in the Software without restriction, including without limitation +- * the rights to use, copy, modify, merge, publish, distribute, sublicense, +- * and/or sell copies of the Software, and to permit persons to whom the +- * Software is furnished to do so, subject to the following conditions: +- * +- * The above copyright notice and this permission notice shall be included in +- * all copies or substantial portions of the Software. +- * +- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR +- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +- * OTHER DEALINGS IN THE SOFTWARE. +- * +- */ +- +-#ifndef AMDGPU_ACPI_H +-#define AMDGPU_ACPI_H +- +-#define ACPI_AC_CLASS "ac_adapter" +- +-struct atif_verify_interface { +- u16 size; /* structure size in bytes (includes size field) */ +- u16 version; /* version */ +- u32 notification_mask; /* supported notifications mask */ +- u32 function_bits; /* supported functions bit vector */ +-} __packed; +- +-struct atif_system_params { +- u16 size; /* structure size in bytes (includes size field) */ +- u32 valid_mask; /* valid flags mask */ +- u32 flags; /* flags */ +- u8 command_code; /* notify command code */ +-} __packed; +- +-struct atif_sbios_requests { +- u16 size; /* structure size in bytes (includes size field) */ +- u32 pending; /* pending sbios requests */ +- u8 panel_exp_mode; /* panel expansion mode */ +- u8 thermal_gfx; /* thermal state: target gfx controller */ +- u8 thermal_state; /* thermal state: state id (0: exit state, non-0: state) */ +- u8 forced_power_gfx; /* forced power state: target gfx controller */ +- u8 forced_power_state; /* forced power state: state id */ +- u8 system_power_src; /* system power source */ +- u8 backlight_level; /* panel backlight level (0-255) */ +-} __packed; +- +-#define ATIF_NOTIFY_MASK 0x3 +-#define ATIF_NOTIFY_NONE 0 +-#define ATIF_NOTIFY_81 1 +-#define ATIF_NOTIFY_N 2 +- +-struct atcs_verify_interface { +- u16 size; /* structure size in bytes (includes size field) */ +- u16 version; /* version */ +- u32 function_bits; /* supported functions bit vector */ +-} __packed; +- +-#define ATCS_VALID_FLAGS_MASK 0x3 +- +-struct atcs_pref_req_input { +- u16 size; /* structure size in bytes (includes size field) */ +- u16 client_id; /* client id (bit 2-0: func num, 7-3: dev num, 15-8: bus num) */ +- u16 valid_flags_mask; /* valid flags mask */ +- u16 flags; /* flags */ +- u8 req_type; /* request type */ +- u8 perf_req; /* performance request */ +-} __packed; +- +-struct atcs_pref_req_output { +- u16 size; /* structure size in bytes (includes size field) */ +- u8 ret_val; /* return value */ +-} __packed; +- +-/* AMD hw uses four ACPI control methods: +- * 1. ATIF +- * ARG0: (ACPI_INTEGER) function code +- * ARG1: (ACPI_BUFFER) parameter buffer, 256 bytes +- * OUTPUT: (ACPI_BUFFER) output buffer, 256 bytes +- * ATIF provides an entry point for the gfx driver to interact with the sbios. +- * The AMD ACPI notification mechanism uses Notify (VGA, 0x81) or a custom +- * notification. Which notification is used as indicated by the ATIF Control +- * Method GET_SYSTEM_PARAMETERS. When the driver receives Notify (VGA, 0x81) or +- * a custom notification it invokes ATIF Control Method GET_SYSTEM_BIOS_REQUESTS +- * to identify pending System BIOS requests and associated parameters. For +- * example, if one of the pending requests is DISPLAY_SWITCH_REQUEST, the driver +- * will perform display device detection and invoke ATIF Control Method +- * SELECT_ACTIVE_DISPLAYS. +- * +- * 2. ATPX +- * ARG0: (ACPI_INTEGER) function code +- * ARG1: (ACPI_BUFFER) parameter buffer, 256 bytes +- * OUTPUT: (ACPI_BUFFER) output buffer, 256 bytes +- * ATPX methods are used on PowerXpress systems to handle mux switching and +- * discrete GPU power control. +- * +- * 3. ATRM +- * ARG0: (ACPI_INTEGER) offset of vbios rom data +- * ARG1: (ACPI_BUFFER) size of the buffer to fill (up to 4K). +- * OUTPUT: (ACPI_BUFFER) output buffer +- * ATRM provides an interfacess to access the discrete GPU vbios image on +- * PowerXpress systems with multiple GPUs. +- * +- * 4. ATCS +- * ARG0: (ACPI_INTEGER) function code +- * ARG1: (ACPI_BUFFER) parameter buffer, 256 bytes +- * OUTPUT: (ACPI_BUFFER) output buffer, 256 bytes +- * ATCS provides an interface to AMD chipset specific functionality. +- * +- */ +-/* ATIF */ +-#define ATIF_FUNCTION_VERIFY_INTERFACE 0x0 +-/* ARG0: ATIF_FUNCTION_VERIFY_INTERFACE +- * ARG1: none +- * OUTPUT: +- * WORD - structure size in bytes (includes size field) +- * WORD - version +- * DWORD - supported notifications mask +- * DWORD - supported functions bit vector +- */ +-/* Notifications mask */ +-# define ATIF_DISPLAY_SWITCH_REQUEST_SUPPORTED (1 << 0) +-# define ATIF_EXPANSION_MODE_CHANGE_REQUEST_SUPPORTED (1 << 1) +-# define ATIF_THERMAL_STATE_CHANGE_REQUEST_SUPPORTED (1 << 2) +-# define ATIF_FORCED_POWER_STATE_CHANGE_REQUEST_SUPPORTED (1 << 3) +-# define ATIF_SYSTEM_POWER_SOURCE_CHANGE_REQUEST_SUPPORTED (1 << 4) +-# define ATIF_DISPLAY_CONF_CHANGE_REQUEST_SUPPORTED (1 << 5) +-# define ATIF_PX_GFX_SWITCH_REQUEST_SUPPORTED (1 << 6) +-# define ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST_SUPPORTED (1 << 7) +-# define ATIF_DGPU_DISPLAY_EVENT_SUPPORTED (1 << 8) +-/* supported functions vector */ +-# define ATIF_GET_SYSTEM_PARAMETERS_SUPPORTED (1 << 0) +-# define ATIF_GET_SYSTEM_BIOS_REQUESTS_SUPPORTED (1 << 1) +-# define ATIF_SELECT_ACTIVE_DISPLAYS_SUPPORTED (1 << 2) +-# define ATIF_GET_LID_STATE_SUPPORTED (1 << 3) +-# define ATIF_GET_TV_STANDARD_FROM_CMOS_SUPPORTED (1 << 4) +-# define ATIF_SET_TV_STANDARD_IN_CMOS_SUPPORTED (1 << 5) +-# define ATIF_GET_PANEL_EXPANSION_MODE_FROM_CMOS_SUPPORTED (1 << 6) +-# define ATIF_SET_PANEL_EXPANSION_MODE_IN_CMOS_SUPPORTED (1 << 7) +-# define ATIF_TEMPERATURE_CHANGE_NOTIFICATION_SUPPORTED (1 << 12) +-# define ATIF_GET_GRAPHICS_DEVICE_TYPES_SUPPORTED (1 << 14) +-#define ATIF_FUNCTION_GET_SYSTEM_PARAMETERS 0x1 +-/* ARG0: ATIF_FUNCTION_GET_SYSTEM_PARAMETERS +- * ARG1: none +- * OUTPUT: +- * WORD - structure size in bytes (includes size field) +- * DWORD - valid flags mask +- * DWORD - flags +- * +- * OR +- * +- * WORD - structure size in bytes (includes size field) +- * DWORD - valid flags mask +- * DWORD - flags +- * BYTE - notify command code +- * +- * flags +- * bits 1:0: +- * 0 - Notify(VGA, 0x81) is not used for notification +- * 1 - Notify(VGA, 0x81) is used for notification +- * 2 - Notify(VGA, n) is used for notification where +- * n (0xd0-0xd9) is specified in notify command code. +- * bit 2: +- * 1 - lid changes not reported though int10 +- */ +-#define ATIF_FUNCTION_GET_SYSTEM_BIOS_REQUESTS 0x2 +-/* ARG0: ATIF_FUNCTION_GET_SYSTEM_BIOS_REQUESTS +- * ARG1: none +- * OUTPUT: +- * WORD - structure size in bytes (includes size field) +- * DWORD - pending sbios requests +- * BYTE - panel expansion mode +- * BYTE - thermal state: target gfx controller +- * BYTE - thermal state: state id (0: exit state, non-0: state) +- * BYTE - forced power state: target gfx controller +- * BYTE - forced power state: state id +- * BYTE - system power source +- * BYTE - panel backlight level (0-255) +- */ +-/* pending sbios requests */ +-# define ATIF_DISPLAY_SWITCH_REQUEST (1 << 0) +-# define ATIF_EXPANSION_MODE_CHANGE_REQUEST (1 << 1) +-# define ATIF_THERMAL_STATE_CHANGE_REQUEST (1 << 2) +-# define ATIF_FORCED_POWER_STATE_CHANGE_REQUEST (1 << 3) +-# define ATIF_SYSTEM_POWER_SOURCE_CHANGE_REQUEST (1 << 4) +-# define ATIF_DISPLAY_CONF_CHANGE_REQUEST (1 << 5) +-# define ATIF_PX_GFX_SWITCH_REQUEST (1 << 6) +-# define ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST (1 << 7) +-# define ATIF_DGPU_DISPLAY_EVENT (1 << 8) +-/* panel expansion mode */ +-# define ATIF_PANEL_EXPANSION_DISABLE 0 +-# define ATIF_PANEL_EXPANSION_FULL 1 +-# define ATIF_PANEL_EXPANSION_ASPECT 2 +-/* target gfx controller */ +-# define ATIF_TARGET_GFX_SINGLE 0 +-# define ATIF_TARGET_GFX_PX_IGPU 1 +-# define ATIF_TARGET_GFX_PX_DGPU 2 +-/* system power source */ +-# define ATIF_POWER_SOURCE_AC 1 +-# define ATIF_POWER_SOURCE_DC 2 +-# define ATIF_POWER_SOURCE_RESTRICTED_AC_1 3 +-# define ATIF_POWER_SOURCE_RESTRICTED_AC_2 4 +-#define ATIF_FUNCTION_SELECT_ACTIVE_DISPLAYS 0x3 +-/* ARG0: ATIF_FUNCTION_SELECT_ACTIVE_DISPLAYS +- * ARG1: +- * WORD - structure size in bytes (includes size field) +- * WORD - selected displays +- * WORD - connected displays +- * OUTPUT: +- * WORD - structure size in bytes (includes size field) +- * WORD - selected displays +- */ +-# define ATIF_LCD1 (1 << 0) +-# define ATIF_CRT1 (1 << 1) +-# define ATIF_TV (1 << 2) +-# define ATIF_DFP1 (1 << 3) +-# define ATIF_CRT2 (1 << 4) +-# define ATIF_LCD2 (1 << 5) +-# define ATIF_DFP2 (1 << 7) +-# define ATIF_CV (1 << 8) +-# define ATIF_DFP3 (1 << 9) +-# define ATIF_DFP4 (1 << 10) +-# define ATIF_DFP5 (1 << 11) +-# define ATIF_DFP6 (1 << 12) +-#define ATIF_FUNCTION_GET_LID_STATE 0x4 +-/* ARG0: ATIF_FUNCTION_GET_LID_STATE +- * ARG1: none +- * OUTPUT: +- * WORD - structure size in bytes (includes size field) +- * BYTE - lid state (0: open, 1: closed) +- * +- * GET_LID_STATE only works at boot and resume, for general lid +- * status, use the kernel provided status +- */ +-#define ATIF_FUNCTION_GET_TV_STANDARD_FROM_CMOS 0x5 +-/* ARG0: ATIF_FUNCTION_GET_TV_STANDARD_FROM_CMOS +- * ARG1: none +- * OUTPUT: +- * WORD - structure size in bytes (includes size field) +- * BYTE - 0 +- * BYTE - TV standard +- */ +-# define ATIF_TV_STD_NTSC 0 +-# define ATIF_TV_STD_PAL 1 +-# define ATIF_TV_STD_PALM 2 +-# define ATIF_TV_STD_PAL60 3 +-# define ATIF_TV_STD_NTSCJ 4 +-# define ATIF_TV_STD_PALCN 5 +-# define ATIF_TV_STD_PALN 6 +-# define ATIF_TV_STD_SCART_RGB 9 +-#define ATIF_FUNCTION_SET_TV_STANDARD_IN_CMOS 0x6 +-/* ARG0: ATIF_FUNCTION_SET_TV_STANDARD_IN_CMOS +- * ARG1: +- * WORD - structure size in bytes (includes size field) +- * BYTE - 0 +- * BYTE - TV standard +- * OUTPUT: none +- */ +-#define ATIF_FUNCTION_GET_PANEL_EXPANSION_MODE_FROM_CMOS 0x7 +-/* ARG0: ATIF_FUNCTION_GET_PANEL_EXPANSION_MODE_FROM_CMOS +- * ARG1: none +- * OUTPUT: +- * WORD - structure size in bytes (includes size field) +- * BYTE - panel expansion mode +- */ +-#define ATIF_FUNCTION_SET_PANEL_EXPANSION_MODE_IN_CMOS 0x8 +-/* ARG0: ATIF_FUNCTION_SET_PANEL_EXPANSION_MODE_IN_CMOS +- * ARG1: +- * WORD - structure size in bytes (includes size field) +- * BYTE - panel expansion mode +- * OUTPUT: none +- */ +-#define ATIF_FUNCTION_TEMPERATURE_CHANGE_NOTIFICATION 0xD +-/* ARG0: ATIF_FUNCTION_TEMPERATURE_CHANGE_NOTIFICATION +- * ARG1: +- * WORD - structure size in bytes (includes size field) +- * WORD - gfx controller id +- * BYTE - current temperature (degress Celsius) +- * OUTPUT: none +- */ +-#define ATIF_FUNCTION_GET_GRAPHICS_DEVICE_TYPES 0xF +-/* ARG0: ATIF_FUNCTION_GET_GRAPHICS_DEVICE_TYPES +- * ARG1: none +- * OUTPUT: +- * WORD - number of gfx devices +- * WORD - device structure size in bytes (excludes device size field) +- * DWORD - flags \ +- * WORD - bus number } repeated structure +- * WORD - device number / +- */ +-/* flags */ +-# define ATIF_PX_REMOVABLE_GRAPHICS_DEVICE (1 << 0) +-# define ATIF_XGP_PORT (1 << 1) +-# define ATIF_VGA_ENABLED_GRAPHICS_DEVICE (1 << 2) +-# define ATIF_XGP_PORT_IN_DOCK (1 << 3) +- +-/* ATPX */ +-#define ATPX_FUNCTION_VERIFY_INTERFACE 0x0 +-/* ARG0: ATPX_FUNCTION_VERIFY_INTERFACE +- * ARG1: none +- * OUTPUT: +- * WORD - structure size in bytes (includes size field) +- * WORD - version +- * DWORD - supported functions bit vector +- */ +-/* supported functions vector */ +-# define ATPX_GET_PX_PARAMETERS_SUPPORTED (1 << 0) +-# define ATPX_POWER_CONTROL_SUPPORTED (1 << 1) +-# define ATPX_DISPLAY_MUX_CONTROL_SUPPORTED (1 << 2) +-# define ATPX_I2C_MUX_CONTROL_SUPPORTED (1 << 3) +-# define ATPX_GRAPHICS_DEVICE_SWITCH_START_NOTIFICATION_SUPPORTED (1 << 4) +-# define ATPX_GRAPHICS_DEVICE_SWITCH_END_NOTIFICATION_SUPPORTED (1 << 5) +-# define ATPX_GET_DISPLAY_CONNECTORS_MAPPING_SUPPORTED (1 << 7) +-# define ATPX_GET_DISPLAY_DETECTION_PORTS_SUPPORTED (1 << 8) +-#define ATPX_FUNCTION_GET_PX_PARAMETERS 0x1 +-/* ARG0: ATPX_FUNCTION_GET_PX_PARAMETERS +- * ARG1: none +- * OUTPUT: +- * WORD - structure size in bytes (includes size field) +- * DWORD - valid flags mask +- * DWORD - flags +- */ +-/* flags */ +-# define ATPX_LVDS_I2C_AVAILABLE_TO_BOTH_GPUS (1 << 0) +-# define ATPX_CRT1_I2C_AVAILABLE_TO_BOTH_GPUS (1 << 1) +-# define ATPX_DVI1_I2C_AVAILABLE_TO_BOTH_GPUS (1 << 2) +-# define ATPX_CRT1_RGB_SIGNAL_MUXED (1 << 3) +-# define ATPX_TV_SIGNAL_MUXED (1 << 4) +-# define ATPX_DFP_SIGNAL_MUXED (1 << 5) +-# define ATPX_SEPARATE_MUX_FOR_I2C (1 << 6) +-# define ATPX_DYNAMIC_PX_SUPPORTED (1 << 7) +-# define ATPX_ACF_NOT_SUPPORTED (1 << 8) +-# define ATPX_FIXED_NOT_SUPPORTED (1 << 9) +-# define ATPX_DYNAMIC_DGPU_POWER_OFF_SUPPORTED (1 << 10) +-# define ATPX_DGPU_REQ_POWER_FOR_DISPLAYS (1 << 11) +-#define ATPX_FUNCTION_POWER_CONTROL 0x2 +-/* ARG0: ATPX_FUNCTION_POWER_CONTROL +- * ARG1: +- * WORD - structure size in bytes (includes size field) +- * BYTE - dGPU power state (0: power off, 1: power on) +- * OUTPUT: none +- */ +-#define ATPX_FUNCTION_DISPLAY_MUX_CONTROL 0x3 +-/* ARG0: ATPX_FUNCTION_DISPLAY_MUX_CONTROL +- * ARG1: +- * WORD - structure size in bytes (includes size field) +- * WORD - display mux control (0: iGPU, 1: dGPU) +- * OUTPUT: none +- */ +-# define ATPX_INTEGRATED_GPU 0 +-# define ATPX_DISCRETE_GPU 1 +-#define ATPX_FUNCTION_I2C_MUX_CONTROL 0x4 +-/* ARG0: ATPX_FUNCTION_I2C_MUX_CONTROL +- * ARG1: +- * WORD - structure size in bytes (includes size field) +- * WORD - i2c/aux/hpd mux control (0: iGPU, 1: dGPU) +- * OUTPUT: none +- */ +-#define ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_START_NOTIFICATION 0x5 +-/* ARG0: ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_START_NOTIFICATION +- * ARG1: +- * WORD - structure size in bytes (includes size field) +- * WORD - target gpu (0: iGPU, 1: dGPU) +- * OUTPUT: none +- */ +-#define ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_END_NOTIFICATION 0x6 +-/* ARG0: ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_END_NOTIFICATION +- * ARG1: +- * WORD - structure size in bytes (includes size field) +- * WORD - target gpu (0: iGPU, 1: dGPU) +- * OUTPUT: none +- */ +-#define ATPX_FUNCTION_GET_DISPLAY_CONNECTORS_MAPPING 0x8 +-/* ARG0: ATPX_FUNCTION_GET_DISPLAY_CONNECTORS_MAPPING +- * ARG1: none +- * OUTPUT: +- * WORD - number of display connectors +- * WORD - connector structure size in bytes (excludes connector size field) +- * BYTE - flags \ +- * BYTE - ATIF display vector bit position } repeated +- * BYTE - adapter id (0: iGPU, 1-n: dGPU ordered by pcie bus number) } structure +- * WORD - connector ACPI id / +- */ +-/* flags */ +-# define ATPX_DISPLAY_OUTPUT_SUPPORTED_BY_ADAPTER_ID_DEVICE (1 << 0) +-# define ATPX_DISPLAY_HPD_SUPPORTED_BY_ADAPTER_ID_DEVICE (1 << 1) +-# define ATPX_DISPLAY_I2C_SUPPORTED_BY_ADAPTER_ID_DEVICE (1 << 2) +-#define ATPX_FUNCTION_GET_DISPLAY_DETECTION_PORTS 0x9 +-/* ARG0: ATPX_FUNCTION_GET_DISPLAY_DETECTION_PORTS +- * ARG1: none +- * OUTPUT: +- * WORD - number of HPD/DDC ports +- * WORD - port structure size in bytes (excludes port size field) +- * BYTE - ATIF display vector bit position \ +- * BYTE - hpd id } reapeated structure +- * BYTE - ddc id / +- * +- * available on A+A systems only +- */ +-/* hpd id */ +-# define ATPX_HPD_NONE 0 +-# define ATPX_HPD1 1 +-# define ATPX_HPD2 2 +-# define ATPX_HPD3 3 +-# define ATPX_HPD4 4 +-# define ATPX_HPD5 5 +-# define ATPX_HPD6 6 +-/* ddc id */ +-# define ATPX_DDC_NONE 0 +-# define ATPX_DDC1 1 +-# define ATPX_DDC2 2 +-# define ATPX_DDC3 3 +-# define ATPX_DDC4 4 +-# define ATPX_DDC5 5 +-# define ATPX_DDC6 6 +-# define ATPX_DDC7 7 +-# define ATPX_DDC8 8 +- +-/* ATCS */ +-#define ATCS_FUNCTION_VERIFY_INTERFACE 0x0 +-/* ARG0: ATCS_FUNCTION_VERIFY_INTERFACE +- * ARG1: none +- * OUTPUT: +- * WORD - structure size in bytes (includes size field) +- * WORD - version +- * DWORD - supported functions bit vector +- */ +-/* supported functions vector */ +-# define ATCS_GET_EXTERNAL_STATE_SUPPORTED (1 << 0) +-# define ATCS_PCIE_PERFORMANCE_REQUEST_SUPPORTED (1 << 1) +-# define ATCS_PCIE_DEVICE_READY_NOTIFICATION_SUPPORTED (1 << 2) +-# define ATCS_SET_PCIE_BUS_WIDTH_SUPPORTED (1 << 3) +-#define ATCS_FUNCTION_GET_EXTERNAL_STATE 0x1 +-/* ARG0: ATCS_FUNCTION_GET_EXTERNAL_STATE +- * ARG1: none +- * OUTPUT: +- * WORD - structure size in bytes (includes size field) +- * DWORD - valid flags mask +- * DWORD - flags (0: undocked, 1: docked) +- */ +-/* flags */ +-# define ATCS_DOCKED (1 << 0) +-#define ATCS_FUNCTION_PCIE_PERFORMANCE_REQUEST 0x2 +-/* ARG0: ATCS_FUNCTION_PCIE_PERFORMANCE_REQUEST +- * ARG1: +- * WORD - structure size in bytes (includes size field) +- * WORD - client id (bit 2-0: func num, 7-3: dev num, 15-8: bus num) +- * WORD - valid flags mask +- * WORD - flags +- * BYTE - request type +- * BYTE - performance request +- * OUTPUT: +- * WORD - structure size in bytes (includes size field) +- * BYTE - return value +- */ +-/* flags */ +-# define ATCS_ADVERTISE_CAPS (1 << 0) +-# define ATCS_WAIT_FOR_COMPLETION (1 << 1) +-/* request type */ +-# define ATCS_PCIE_LINK_SPEED 1 +-/* performance request */ +-# define ATCS_REMOVE 0 +-# define ATCS_FORCE_LOW_POWER 1 +-# define ATCS_PERF_LEVEL_1 2 /* PCIE Gen 1 */ +-# define ATCS_PERF_LEVEL_2 3 /* PCIE Gen 2 */ +-# define ATCS_PERF_LEVEL_3 4 /* PCIE Gen 3 */ +-/* return value */ +-# define ATCS_REQUEST_REFUSED 1 +-# define ATCS_REQUEST_COMPLETE 2 +-# define ATCS_REQUEST_IN_PROGRESS 3 +-#define ATCS_FUNCTION_PCIE_DEVICE_READY_NOTIFICATION 0x3 +-/* ARG0: ATCS_FUNCTION_PCIE_DEVICE_READY_NOTIFICATION +- * ARG1: none +- * OUTPUT: none +- */ +-#define ATCS_FUNCTION_SET_PCIE_BUS_WIDTH 0x4 +-/* ARG0: ATCS_FUNCTION_SET_PCIE_BUS_WIDTH +- * ARG1: +- * WORD - structure size in bytes (includes size field) +- * WORD - client id (bit 2-0: func num, 7-3: dev num, 15-8: bus num) +- * BYTE - number of active lanes +- * OUTPUT: +- * WORD - structure size in bytes (includes size field) +- * BYTE - number of active lanes +- */ +- +-#endif +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c +index 1a6b239..1cc22bb 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c +@@ -11,7 +11,7 @@ + #include <linux/acpi.h> + #include <linux/pci.h> + +-#include "amdgpu_acpi.h" ++#include "amd_acpi.h" + + struct amdgpu_atpx_functions { + bool px_params; +diff --git a/drivers/gpu/drm/amd/include/amd_acpi.h b/drivers/gpu/drm/amd/include/amd_acpi.h +new file mode 100644 +index 0000000..496360e +--- /dev/null ++++ b/drivers/gpu/drm/amd/include/amd_acpi.h +@@ -0,0 +1,494 @@ ++/* ++ * Copyright 2012 Advanced Micro Devices, Inc. ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice shall be included in ++ * all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR ++ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ++ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ * ++ */ ++ ++#ifndef AMD_ACPI_H ++#define AMD_ACPI_H ++ ++#define ACPI_AC_CLASS "ac_adapter" ++ ++struct atif_verify_interface { ++ u16 size; /* structure size in bytes (includes size field) */ ++ u16 version; /* version */ ++ u32 notification_mask; /* supported notifications mask */ ++ u32 function_bits; /* supported functions bit vector */ ++} __packed; ++ ++struct atif_system_params { ++ u16 size; /* structure size in bytes (includes size field) */ ++ u32 valid_mask; /* valid flags mask */ ++ u32 flags; /* flags */ ++ u8 command_code; /* notify command code */ ++} __packed; ++ ++struct atif_sbios_requests { ++ u16 size; /* structure size in bytes (includes size field) */ ++ u32 pending; /* pending sbios requests */ ++ u8 panel_exp_mode; /* panel expansion mode */ ++ u8 thermal_gfx; /* thermal state: target gfx controller */ ++ u8 thermal_state; /* thermal state: state id (0: exit state, non-0: state) */ ++ u8 forced_power_gfx; /* forced power state: target gfx controller */ ++ u8 forced_power_state; /* forced power state: state id */ ++ u8 system_power_src; /* system power source */ ++ u8 backlight_level; /* panel backlight level (0-255) */ ++} __packed; ++ ++#define ATIF_NOTIFY_MASK 0x3 ++#define ATIF_NOTIFY_NONE 0 ++#define ATIF_NOTIFY_81 1 ++#define ATIF_NOTIFY_N 2 ++ ++struct atcs_verify_interface { ++ u16 size; /* structure size in bytes (includes size field) */ ++ u16 version; /* version */ ++ u32 function_bits; /* supported functions bit vector */ ++} __packed; ++ ++#define ATCS_VALID_FLAGS_MASK 0x3 ++ ++struct atcs_pref_req_input { ++ u16 size; /* structure size in bytes (includes size field) */ ++ u16 client_id; /* client id (bit 2-0: func num, 7-3: dev num, 15-8: bus num) */ ++ u16 valid_flags_mask; /* valid flags mask */ ++ u16 flags; /* flags */ ++ u8 req_type; /* request type */ ++ u8 perf_req; /* performance request */ ++} __packed; ++ ++struct atcs_pref_req_output { ++ u16 size; /* structure size in bytes (includes size field) */ ++ u8 ret_val; /* return value */ ++} __packed; ++ ++/* AMD hw uses four ACPI control methods: ++ * 1. ATIF ++ * ARG0: (ACPI_INTEGER) function code ++ * ARG1: (ACPI_BUFFER) parameter buffer, 256 bytes ++ * OUTPUT: (ACPI_BUFFER) output buffer, 256 bytes ++ * ATIF provides an entry point for the gfx driver to interact with the sbios. ++ * The AMD ACPI notification mechanism uses Notify (VGA, 0x81) or a custom ++ * notification. Which notification is used as indicated by the ATIF Control ++ * Method GET_SYSTEM_PARAMETERS. When the driver receives Notify (VGA, 0x81) or ++ * a custom notification it invokes ATIF Control Method GET_SYSTEM_BIOS_REQUESTS ++ * to identify pending System BIOS requests and associated parameters. For ++ * example, if one of the pending requests is DISPLAY_SWITCH_REQUEST, the driver ++ * will perform display device detection and invoke ATIF Control Method ++ * SELECT_ACTIVE_DISPLAYS. ++ * ++ * 2. ATPX ++ * ARG0: (ACPI_INTEGER) function code ++ * ARG1: (ACPI_BUFFER) parameter buffer, 256 bytes ++ * OUTPUT: (ACPI_BUFFER) output buffer, 256 bytes ++ * ATPX methods are used on PowerXpress systems to handle mux switching and ++ * discrete GPU power control. ++ * ++ * 3. ATRM ++ * ARG0: (ACPI_INTEGER) offset of vbios rom data ++ * ARG1: (ACPI_BUFFER) size of the buffer to fill (up to 4K). ++ * OUTPUT: (ACPI_BUFFER) output buffer ++ * ATRM provides an interfacess to access the discrete GPU vbios image on ++ * PowerXpress systems with multiple GPUs. ++ * ++ * 4. ATCS ++ * ARG0: (ACPI_INTEGER) function code ++ * ARG1: (ACPI_BUFFER) parameter buffer, 256 bytes ++ * OUTPUT: (ACPI_BUFFER) output buffer, 256 bytes ++ * ATCS provides an interface to AMD chipset specific functionality. ++ * ++ */ ++/* ATIF */ ++#define ATIF_FUNCTION_VERIFY_INTERFACE 0x0 ++/* ARG0: ATIF_FUNCTION_VERIFY_INTERFACE ++ * ARG1: none ++ * OUTPUT: ++ * WORD - structure size in bytes (includes size field) ++ * WORD - version ++ * DWORD - supported notifications mask ++ * DWORD - supported functions bit vector ++ */ ++/* Notifications mask */ ++# define ATIF_DISPLAY_SWITCH_REQUEST_SUPPORTED (1 << 0) ++# define ATIF_EXPANSION_MODE_CHANGE_REQUEST_SUPPORTED (1 << 1) ++# define ATIF_THERMAL_STATE_CHANGE_REQUEST_SUPPORTED (1 << 2) ++# define ATIF_FORCED_POWER_STATE_CHANGE_REQUEST_SUPPORTED (1 << 3) ++# define ATIF_SYSTEM_POWER_SOURCE_CHANGE_REQUEST_SUPPORTED (1 << 4) ++# define ATIF_DISPLAY_CONF_CHANGE_REQUEST_SUPPORTED (1 << 5) ++# define ATIF_PX_GFX_SWITCH_REQUEST_SUPPORTED (1 << 6) ++# define ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST_SUPPORTED (1 << 7) ++# define ATIF_DGPU_DISPLAY_EVENT_SUPPORTED (1 << 8) ++/* supported functions vector */ ++# define ATIF_GET_SYSTEM_PARAMETERS_SUPPORTED (1 << 0) ++# define ATIF_GET_SYSTEM_BIOS_REQUESTS_SUPPORTED (1 << 1) ++# define ATIF_SELECT_ACTIVE_DISPLAYS_SUPPORTED (1 << 2) ++# define ATIF_GET_LID_STATE_SUPPORTED (1 << 3) ++# define ATIF_GET_TV_STANDARD_FROM_CMOS_SUPPORTED (1 << 4) ++# define ATIF_SET_TV_STANDARD_IN_CMOS_SUPPORTED (1 << 5) ++# define ATIF_GET_PANEL_EXPANSION_MODE_FROM_CMOS_SUPPORTED (1 << 6) ++# define ATIF_SET_PANEL_EXPANSION_MODE_IN_CMOS_SUPPORTED (1 << 7) ++# define ATIF_TEMPERATURE_CHANGE_NOTIFICATION_SUPPORTED (1 << 12) ++# define ATIF_GET_GRAPHICS_DEVICE_TYPES_SUPPORTED (1 << 14) ++#define ATIF_FUNCTION_GET_SYSTEM_PARAMETERS 0x1 ++/* ARG0: ATIF_FUNCTION_GET_SYSTEM_PARAMETERS ++ * ARG1: none ++ * OUTPUT: ++ * WORD - structure size in bytes (includes size field) ++ * DWORD - valid flags mask ++ * DWORD - flags ++ * ++ * OR ++ * ++ * WORD - structure size in bytes (includes size field) ++ * DWORD - valid flags mask ++ * DWORD - flags ++ * BYTE - notify command code ++ * ++ * flags ++ * bits 1:0: ++ * 0 - Notify(VGA, 0x81) is not used for notification ++ * 1 - Notify(VGA, 0x81) is used for notification ++ * 2 - Notify(VGA, n) is used for notification where ++ * n (0xd0-0xd9) is specified in notify command code. ++ * bit 2: ++ * 1 - lid changes not reported though int10 ++ */ ++#define ATIF_FUNCTION_GET_SYSTEM_BIOS_REQUESTS 0x2 ++/* ARG0: ATIF_FUNCTION_GET_SYSTEM_BIOS_REQUESTS ++ * ARG1: none ++ * OUTPUT: ++ * WORD - structure size in bytes (includes size field) ++ * DWORD - pending sbios requests ++ * BYTE - panel expansion mode ++ * BYTE - thermal state: target gfx controller ++ * BYTE - thermal state: state id (0: exit state, non-0: state) ++ * BYTE - forced power state: target gfx controller ++ * BYTE - forced power state: state id ++ * BYTE - system power source ++ * BYTE - panel backlight level (0-255) ++ */ ++/* pending sbios requests */ ++# define ATIF_DISPLAY_SWITCH_REQUEST (1 << 0) ++# define ATIF_EXPANSION_MODE_CHANGE_REQUEST (1 << 1) ++# define ATIF_THERMAL_STATE_CHANGE_REQUEST (1 << 2) ++# define ATIF_FORCED_POWER_STATE_CHANGE_REQUEST (1 << 3) ++# define ATIF_SYSTEM_POWER_SOURCE_CHANGE_REQUEST (1 << 4) ++# define ATIF_DISPLAY_CONF_CHANGE_REQUEST (1 << 5) ++# define ATIF_PX_GFX_SWITCH_REQUEST (1 << 6) ++# define ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST (1 << 7) ++# define ATIF_DGPU_DISPLAY_EVENT (1 << 8) ++/* panel expansion mode */ ++# define ATIF_PANEL_EXPANSION_DISABLE 0 ++# define ATIF_PANEL_EXPANSION_FULL 1 ++# define ATIF_PANEL_EXPANSION_ASPECT 2 ++/* target gfx controller */ ++# define ATIF_TARGET_GFX_SINGLE 0 ++# define ATIF_TARGET_GFX_PX_IGPU 1 ++# define ATIF_TARGET_GFX_PX_DGPU 2 ++/* system power source */ ++# define ATIF_POWER_SOURCE_AC 1 ++# define ATIF_POWER_SOURCE_DC 2 ++# define ATIF_POWER_SOURCE_RESTRICTED_AC_1 3 ++# define ATIF_POWER_SOURCE_RESTRICTED_AC_2 4 ++#define ATIF_FUNCTION_SELECT_ACTIVE_DISPLAYS 0x3 ++/* ARG0: ATIF_FUNCTION_SELECT_ACTIVE_DISPLAYS ++ * ARG1: ++ * WORD - structure size in bytes (includes size field) ++ * WORD - selected displays ++ * WORD - connected displays ++ * OUTPUT: ++ * WORD - structure size in bytes (includes size field) ++ * WORD - selected displays ++ */ ++# define ATIF_LCD1 (1 << 0) ++# define ATIF_CRT1 (1 << 1) ++# define ATIF_TV (1 << 2) ++# define ATIF_DFP1 (1 << 3) ++# define ATIF_CRT2 (1 << 4) ++# define ATIF_LCD2 (1 << 5) ++# define ATIF_DFP2 (1 << 7) ++# define ATIF_CV (1 << 8) ++# define ATIF_DFP3 (1 << 9) ++# define ATIF_DFP4 (1 << 10) ++# define ATIF_DFP5 (1 << 11) ++# define ATIF_DFP6 (1 << 12) ++#define ATIF_FUNCTION_GET_LID_STATE 0x4 ++/* ARG0: ATIF_FUNCTION_GET_LID_STATE ++ * ARG1: none ++ * OUTPUT: ++ * WORD - structure size in bytes (includes size field) ++ * BYTE - lid state (0: open, 1: closed) ++ * ++ * GET_LID_STATE only works at boot and resume, for general lid ++ * status, use the kernel provided status ++ */ ++#define ATIF_FUNCTION_GET_TV_STANDARD_FROM_CMOS 0x5 ++/* ARG0: ATIF_FUNCTION_GET_TV_STANDARD_FROM_CMOS ++ * ARG1: none ++ * OUTPUT: ++ * WORD - structure size in bytes (includes size field) ++ * BYTE - 0 ++ * BYTE - TV standard ++ */ ++# define ATIF_TV_STD_NTSC 0 ++# define ATIF_TV_STD_PAL 1 ++# define ATIF_TV_STD_PALM 2 ++# define ATIF_TV_STD_PAL60 3 ++# define ATIF_TV_STD_NTSCJ 4 ++# define ATIF_TV_STD_PALCN 5 ++# define ATIF_TV_STD_PALN 6 ++# define ATIF_TV_STD_SCART_RGB 9 ++#define ATIF_FUNCTION_SET_TV_STANDARD_IN_CMOS 0x6 ++/* ARG0: ATIF_FUNCTION_SET_TV_STANDARD_IN_CMOS ++ * ARG1: ++ * WORD - structure size in bytes (includes size field) ++ * BYTE - 0 ++ * BYTE - TV standard ++ * OUTPUT: none ++ */ ++#define ATIF_FUNCTION_GET_PANEL_EXPANSION_MODE_FROM_CMOS 0x7 ++/* ARG0: ATIF_FUNCTION_GET_PANEL_EXPANSION_MODE_FROM_CMOS ++ * ARG1: none ++ * OUTPUT: ++ * WORD - structure size in bytes (includes size field) ++ * BYTE - panel expansion mode ++ */ ++#define ATIF_FUNCTION_SET_PANEL_EXPANSION_MODE_IN_CMOS 0x8 ++/* ARG0: ATIF_FUNCTION_SET_PANEL_EXPANSION_MODE_IN_CMOS ++ * ARG1: ++ * WORD - structure size in bytes (includes size field) ++ * BYTE - panel expansion mode ++ * OUTPUT: none ++ */ ++#define ATIF_FUNCTION_TEMPERATURE_CHANGE_NOTIFICATION 0xD ++/* ARG0: ATIF_FUNCTION_TEMPERATURE_CHANGE_NOTIFICATION ++ * ARG1: ++ * WORD - structure size in bytes (includes size field) ++ * WORD - gfx controller id ++ * BYTE - current temperature (degress Celsius) ++ * OUTPUT: none ++ */ ++#define ATIF_FUNCTION_GET_GRAPHICS_DEVICE_TYPES 0xF ++/* ARG0: ATIF_FUNCTION_GET_GRAPHICS_DEVICE_TYPES ++ * ARG1: none ++ * OUTPUT: ++ * WORD - number of gfx devices ++ * WORD - device structure size in bytes (excludes device size field) ++ * DWORD - flags \ ++ * WORD - bus number } repeated structure ++ * WORD - device number / ++ */ ++/* flags */ ++# define ATIF_PX_REMOVABLE_GRAPHICS_DEVICE (1 << 0) ++# define ATIF_XGP_PORT (1 << 1) ++# define ATIF_VGA_ENABLED_GRAPHICS_DEVICE (1 << 2) ++# define ATIF_XGP_PORT_IN_DOCK (1 << 3) ++ ++/* ATPX */ ++#define ATPX_FUNCTION_VERIFY_INTERFACE 0x0 ++/* ARG0: ATPX_FUNCTION_VERIFY_INTERFACE ++ * ARG1: none ++ * OUTPUT: ++ * WORD - structure size in bytes (includes size field) ++ * WORD - version ++ * DWORD - supported functions bit vector ++ */ ++/* supported functions vector */ ++# define ATPX_GET_PX_PARAMETERS_SUPPORTED (1 << 0) ++# define ATPX_POWER_CONTROL_SUPPORTED (1 << 1) ++# define ATPX_DISPLAY_MUX_CONTROL_SUPPORTED (1 << 2) ++# define ATPX_I2C_MUX_CONTROL_SUPPORTED (1 << 3) ++# define ATPX_GRAPHICS_DEVICE_SWITCH_START_NOTIFICATION_SUPPORTED (1 << 4) ++# define ATPX_GRAPHICS_DEVICE_SWITCH_END_NOTIFICATION_SUPPORTED (1 << 5) ++# define ATPX_GET_DISPLAY_CONNECTORS_MAPPING_SUPPORTED (1 << 7) ++# define ATPX_GET_DISPLAY_DETECTION_PORTS_SUPPORTED (1 << 8) ++#define ATPX_FUNCTION_GET_PX_PARAMETERS 0x1 ++/* ARG0: ATPX_FUNCTION_GET_PX_PARAMETERS ++ * ARG1: none ++ * OUTPUT: ++ * WORD - structure size in bytes (includes size field) ++ * DWORD - valid flags mask ++ * DWORD - flags ++ */ ++/* flags */ ++# define ATPX_LVDS_I2C_AVAILABLE_TO_BOTH_GPUS (1 << 0) ++# define ATPX_CRT1_I2C_AVAILABLE_TO_BOTH_GPUS (1 << 1) ++# define ATPX_DVI1_I2C_AVAILABLE_TO_BOTH_GPUS (1 << 2) ++# define ATPX_CRT1_RGB_SIGNAL_MUXED (1 << 3) ++# define ATPX_TV_SIGNAL_MUXED (1 << 4) ++# define ATPX_DFP_SIGNAL_MUXED (1 << 5) ++# define ATPX_SEPARATE_MUX_FOR_I2C (1 << 6) ++# define ATPX_DYNAMIC_PX_SUPPORTED (1 << 7) ++# define ATPX_ACF_NOT_SUPPORTED (1 << 8) ++# define ATPX_FIXED_NOT_SUPPORTED (1 << 9) ++# define ATPX_DYNAMIC_DGPU_POWER_OFF_SUPPORTED (1 << 10) ++# define ATPX_DGPU_REQ_POWER_FOR_DISPLAYS (1 << 11) ++#define ATPX_FUNCTION_POWER_CONTROL 0x2 ++/* ARG0: ATPX_FUNCTION_POWER_CONTROL ++ * ARG1: ++ * WORD - structure size in bytes (includes size field) ++ * BYTE - dGPU power state (0: power off, 1: power on) ++ * OUTPUT: none ++ */ ++#define ATPX_FUNCTION_DISPLAY_MUX_CONTROL 0x3 ++/* ARG0: ATPX_FUNCTION_DISPLAY_MUX_CONTROL ++ * ARG1: ++ * WORD - structure size in bytes (includes size field) ++ * WORD - display mux control (0: iGPU, 1: dGPU) ++ * OUTPUT: none ++ */ ++# define ATPX_INTEGRATED_GPU 0 ++# define ATPX_DISCRETE_GPU 1 ++#define ATPX_FUNCTION_I2C_MUX_CONTROL 0x4 ++/* ARG0: ATPX_FUNCTION_I2C_MUX_CONTROL ++ * ARG1: ++ * WORD - structure size in bytes (includes size field) ++ * WORD - i2c/aux/hpd mux control (0: iGPU, 1: dGPU) ++ * OUTPUT: none ++ */ ++#define ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_START_NOTIFICATION 0x5 ++/* ARG0: ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_START_NOTIFICATION ++ * ARG1: ++ * WORD - structure size in bytes (includes size field) ++ * WORD - target gpu (0: iGPU, 1: dGPU) ++ * OUTPUT: none ++ */ ++#define ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_END_NOTIFICATION 0x6 ++/* ARG0: ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_END_NOTIFICATION ++ * ARG1: ++ * WORD - structure size in bytes (includes size field) ++ * WORD - target gpu (0: iGPU, 1: dGPU) ++ * OUTPUT: none ++ */ ++#define ATPX_FUNCTION_GET_DISPLAY_CONNECTORS_MAPPING 0x8 ++/* ARG0: ATPX_FUNCTION_GET_DISPLAY_CONNECTORS_MAPPING ++ * ARG1: none ++ * OUTPUT: ++ * WORD - number of display connectors ++ * WORD - connector structure size in bytes (excludes connector size field) ++ * BYTE - flags \ ++ * BYTE - ATIF display vector bit position } repeated ++ * BYTE - adapter id (0: iGPU, 1-n: dGPU ordered by pcie bus number) } structure ++ * WORD - connector ACPI id / ++ */ ++/* flags */ ++# define ATPX_DISPLAY_OUTPUT_SUPPORTED_BY_ADAPTER_ID_DEVICE (1 << 0) ++# define ATPX_DISPLAY_HPD_SUPPORTED_BY_ADAPTER_ID_DEVICE (1 << 1) ++# define ATPX_DISPLAY_I2C_SUPPORTED_BY_ADAPTER_ID_DEVICE (1 << 2) ++#define ATPX_FUNCTION_GET_DISPLAY_DETECTION_PORTS 0x9 ++/* ARG0: ATPX_FUNCTION_GET_DISPLAY_DETECTION_PORTS ++ * ARG1: none ++ * OUTPUT: ++ * WORD - number of HPD/DDC ports ++ * WORD - port structure size in bytes (excludes port size field) ++ * BYTE - ATIF display vector bit position \ ++ * BYTE - hpd id } reapeated structure ++ * BYTE - ddc id / ++ * ++ * available on A+A systems only ++ */ ++/* hpd id */ ++# define ATPX_HPD_NONE 0 ++# define ATPX_HPD1 1 ++# define ATPX_HPD2 2 ++# define ATPX_HPD3 3 ++# define ATPX_HPD4 4 ++# define ATPX_HPD5 5 ++# define ATPX_HPD6 6 ++/* ddc id */ ++# define ATPX_DDC_NONE 0 ++# define ATPX_DDC1 1 ++# define ATPX_DDC2 2 ++# define ATPX_DDC3 3 ++# define ATPX_DDC4 4 ++# define ATPX_DDC5 5 ++# define ATPX_DDC6 6 ++# define ATPX_DDC7 7 ++# define ATPX_DDC8 8 ++ ++/* ATCS */ ++#define ATCS_FUNCTION_VERIFY_INTERFACE 0x0 ++/* ARG0: ATCS_FUNCTION_VERIFY_INTERFACE ++ * ARG1: none ++ * OUTPUT: ++ * WORD - structure size in bytes (includes size field) ++ * WORD - version ++ * DWORD - supported functions bit vector ++ */ ++/* supported functions vector */ ++# define ATCS_GET_EXTERNAL_STATE_SUPPORTED (1 << 0) ++# define ATCS_PCIE_PERFORMANCE_REQUEST_SUPPORTED (1 << 1) ++# define ATCS_PCIE_DEVICE_READY_NOTIFICATION_SUPPORTED (1 << 2) ++# define ATCS_SET_PCIE_BUS_WIDTH_SUPPORTED (1 << 3) ++#define ATCS_FUNCTION_GET_EXTERNAL_STATE 0x1 ++/* ARG0: ATCS_FUNCTION_GET_EXTERNAL_STATE ++ * ARG1: none ++ * OUTPUT: ++ * WORD - structure size in bytes (includes size field) ++ * DWORD - valid flags mask ++ * DWORD - flags (0: undocked, 1: docked) ++ */ ++/* flags */ ++# define ATCS_DOCKED (1 << 0) ++#define ATCS_FUNCTION_PCIE_PERFORMANCE_REQUEST 0x2 ++/* ARG0: ATCS_FUNCTION_PCIE_PERFORMANCE_REQUEST ++ * ARG1: ++ * WORD - structure size in bytes (includes size field) ++ * WORD - client id (bit 2-0: func num, 7-3: dev num, 15-8: bus num) ++ * WORD - valid flags mask ++ * WORD - flags ++ * BYTE - request type ++ * BYTE - performance request ++ * OUTPUT: ++ * WORD - structure size in bytes (includes size field) ++ * BYTE - return value ++ */ ++/* flags */ ++# define ATCS_ADVERTISE_CAPS (1 << 0) ++# define ATCS_WAIT_FOR_COMPLETION (1 << 1) ++/* request type */ ++# define ATCS_PCIE_LINK_SPEED 1 ++/* performance request */ ++# define ATCS_REMOVE 0 ++# define ATCS_FORCE_LOW_POWER 1 ++# define ATCS_PERF_LEVEL_1 2 /* PCIE Gen 1 */ ++# define ATCS_PERF_LEVEL_2 3 /* PCIE Gen 2 */ ++# define ATCS_PERF_LEVEL_3 4 /* PCIE Gen 3 */ ++/* return value */ ++# define ATCS_REQUEST_REFUSED 1 ++# define ATCS_REQUEST_COMPLETE 2 ++# define ATCS_REQUEST_IN_PROGRESS 3 ++#define ATCS_FUNCTION_PCIE_DEVICE_READY_NOTIFICATION 0x3 ++/* ARG0: ATCS_FUNCTION_PCIE_DEVICE_READY_NOTIFICATION ++ * ARG1: none ++ * OUTPUT: none ++ */ ++#define ATCS_FUNCTION_SET_PCIE_BUS_WIDTH 0x4 ++/* ARG0: ATCS_FUNCTION_SET_PCIE_BUS_WIDTH ++ * ARG1: ++ * WORD - structure size in bytes (includes size field) ++ * WORD - client id (bit 2-0: func num, 7-3: dev num, 15-8: bus num) ++ * BYTE - number of active lanes ++ * OUTPUT: ++ * WORD - structure size in bytes (includes size field) ++ * BYTE - number of active lanes ++ */ ++ ++#endif +-- +1.9.1 + |