Skip to content

Commit 870bea2

Browse files
superm1alexdeucher
authored andcommitted
drm/amd/display: Fix ACPI edid parsing on some Lenovo systems
[Why] The ACPI EDID in the BIOS of a Lenovo laptop includes 3 blocks, but dm_helpers_probe_acpi_edid() has a start that is 'char'. The 3rd block index starts after 255, so it can't be indexed properly. This leads to problems with the display when the EDID is parsed. [How] Change the variable type to 'short' so that larger values can be indexed. Cc: Renjith Pananchikkal <[email protected]> Reported-by: Mark Pearson <[email protected]> Suggested-by: David Ober <[email protected]> Fixes: c6a8370 ("drm/amd/display: Fetch the EDID from _DDC if available for eDP") Reviewed-by: Alex Hung <[email protected]> Signed-off-by: Mario Limonciello <[email protected]> Signed-off-by: Zaeem Mohamed <[email protected]> Tested-by: Mark Broadworth <[email protected]> Signed-off-by: Alex Deucher <[email protected]> (cherry picked from commit a918bb4) Cc: [email protected]
1 parent a92741e commit 870bea2

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -918,7 +918,7 @@ dm_helpers_probe_acpi_edid(void *data, u8 *buf, unsigned int block, size_t len)
918918
{
919919
struct drm_connector *connector = data;
920920
struct acpi_device *acpidev = ACPI_COMPANION(connector->dev->dev);
921-
unsigned char start = block * EDID_LENGTH;
921+
unsigned short start = block * EDID_LENGTH;
922922
struct edid *edid;
923923
int r;
924924

0 commit comments

Comments
 (0)