drm/i915: Add Intel opregion mailbox 5 structure
Mailbox 5 is BIOS to Driver Notification mailbox is intended to support BIOS to Driver event notification or data storage for BIOS to Driver data synchronization purpose. Mailbox 5 is the extension of mailbox 3. v4 by Jani: - don't add asle_ext to dev_priv as it's unused - use u8 for bddc and rsvd fields in asle ext struct - add BUILD_BUG_ON the asle ext struct size - debug logging for asle ext present Cc: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Deepak M <m.deepak@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/c2d4009659fca32280d9859ec34a62f45b86d895.1450089383.git.jani.nikula@intel.com
Tento commit je obsažen v:
@@ -46,6 +46,7 @@
|
||||
#define OPREGION_SWSCI_OFFSET 0x200
|
||||
#define OPREGION_ASLE_OFFSET 0x300
|
||||
#define OPREGION_VBT_OFFSET 0x400
|
||||
#define OPREGION_ASLE_EXT_OFFSET 0x1C00
|
||||
|
||||
#define OPREGION_SIGNATURE "IntelGraphicsMem"
|
||||
#define MBOX_ACPI (1<<0)
|
||||
@@ -125,6 +126,13 @@ struct opregion_asle {
|
||||
u8 rsvd[58];
|
||||
} __packed;
|
||||
|
||||
/* OpRegion mailbox #5: ASLE ext */
|
||||
struct opregion_asle_ext {
|
||||
u32 phed; /* Panel Header */
|
||||
u8 bddc[256]; /* Panel EDID */
|
||||
u8 rsvd[764];
|
||||
} __packed;
|
||||
|
||||
/* Driver readiness indicator */
|
||||
#define ASLE_ARDY_READY (1 << 0)
|
||||
#define ASLE_ARDY_NOT_READY (0 << 0)
|
||||
@@ -909,6 +917,7 @@ int intel_opregion_setup(struct drm_device *dev)
|
||||
BUILD_BUG_ON(sizeof(struct opregion_acpi) != 0x100);
|
||||
BUILD_BUG_ON(sizeof(struct opregion_swsci) != 0x100);
|
||||
BUILD_BUG_ON(sizeof(struct opregion_asle) != 0x100);
|
||||
BUILD_BUG_ON(sizeof(struct opregion_asle_ext) != 0x400);
|
||||
|
||||
pci_read_config_dword(dev->pdev, PCI_ASLS, &asls);
|
||||
DRM_DEBUG_DRIVER("graphic opregion physical addr: 0x%x\n", asls);
|
||||
@@ -948,6 +957,7 @@ int intel_opregion_setup(struct drm_device *dev)
|
||||
opregion->swsci = base + OPREGION_SWSCI_OFFSET;
|
||||
swsci_setup(dev);
|
||||
}
|
||||
|
||||
if (mboxes & MBOX_ASLE) {
|
||||
DRM_DEBUG_DRIVER("ASLE supported\n");
|
||||
opregion->asle = base + OPREGION_ASLE_OFFSET;
|
||||
@@ -955,6 +965,9 @@ int intel_opregion_setup(struct drm_device *dev)
|
||||
opregion->asle->ardy = ASLE_ARDY_NOT_READY;
|
||||
}
|
||||
|
||||
if (mboxes & MBOX_ASLE_EXT)
|
||||
DRM_DEBUG_DRIVER("ASLE extension supported\n");
|
||||
|
||||
return 0;
|
||||
|
||||
err_out:
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele