[PATCH v2] drm/ast: DisplayPort edid supports 256 bytes

From: Jammy Huang

Date: Tue Mar 17 2026 - 08:22:35 EST


DisplayPort supports EDID up to 256 bytes (blocks 0 and 1). Update the
block check to allow these two blocks while returning 0 for any
additional extension blocks.

Furthermore, remove the manual EDID byte manipulation logic. The DRM
core (drm_edid) already handles error correction and checksum
validation.

Signed-off-by: Jammy Huang <jammy_huang@xxxxxxxxxxxxxx>
---
ASPEED DisplayPort's EDID size can be 256 bytes at most. Thus, EDID
blocks fetched can be 0 and 1.
---
Changes in v2:
Becasue drm-edid will handle invalid EDID if happen, we have 2 changes
below.
- Return 0 for the number of block more than 1.
- Remove modification of EDID
- Link to v1: https://lore.kernel.org/r/20260313-upstream_ast_dp_edid-v1-1-2a75b7c091b2@xxxxxxxxxxxxxx
---
drivers/gpu/drm/ast/ast_dp.c | 18 ++----------------
1 file changed, 2 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/ast/ast_dp.c b/drivers/gpu/drm/ast/ast_dp.c
index 9d07dad358c..282c694218c 100644
--- a/drivers/gpu/drm/ast/ast_dp.c
+++ b/drivers/gpu/drm/ast/ast_dp.c
@@ -88,8 +88,8 @@ static int ast_astdp_read_edid_block(void *data, u8 *buf, unsigned int block, si
int ret = 0;
unsigned int i;

- if (block > 0)
- return -EIO; /* extension headers not supported */
+ if (block > 1)
+ return 0;

/*
* Protect access to I/O registers from concurrent modesetting
@@ -154,20 +154,6 @@ static int ast_astdp_read_edid_block(void *data, u8 *buf, unsigned int block, si
ediddata[2] = ast_get_index_reg(ast, AST_IO_VGACRI, 0xda);
ediddata[3] = ast_get_index_reg(ast, AST_IO_VGACRI, 0xdb);

- if (i == 31) {
- /*
- * For 128-bytes EDID_1.3,
- * 1. Add the value of Bytes-126 to Bytes-127.
- * The Bytes-127 is Checksum. Sum of all 128bytes should
- * equal 0 (mod 256).
- * 2. Modify Bytes-126 to be 0.
- * The Bytes-126 indicates the Number of extensions to
- * follow. 0 represents noextensions.
- */
- ediddata[3] = ediddata[3] + ediddata[2];
- ediddata[2] = 0;
- }
-
memcpy(buf, ediddata, min((len - i), 4));
buf += 4;
}

---
base-commit: 5ee8dbf54602dc340d6235b1d6aa17c0f283f48c
change-id: 20260313-upstream_ast_dp_edid-5fe6adf7ad36

Best regards,
--
Jammy Huang <jammy_huang@xxxxxxxxxxxxxx>