From nobody Sun Feb 8 13:45:07 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E508B72627 for ; Mon, 2 Feb 2026 06:24:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770013458; cv=none; b=Cy2StdiMXmkpGL7GVkDyNqGBf7UxKGpY6mwHuJC0QvsApEKfjHq0Zy2lOJN7mtYhYkZAm5H/iJZa6Lk/p+dZyHj7fiR0CQoJAr2FFfqFIjWDd2GMotKCvSIO9Gl6mU5Vrmf3VU4EkgWnQ+m5dHplvjsbErNqirOXCqKwBFyGF+U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770013458; c=relaxed/simple; bh=bH2e8IpwV4CuoDfzV45gPAjHKVDPu8WXL+Imt6pHixo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=g+H4r/Zaqx5VAIoE/TFeJa2DmShivRnffs6+jNH7NJUq/jMQum4Xs9miUXvWOATiPzyt7/4/aHmk+ahKRjq64P935Mja8XdEoY+mlzjUsv9tzh1RoQHyGrCVNtLbvXE+dD8aA4FW6CnaNtkmUDaBdsaPKc+EmEXhVKlORiLY1UI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=cX84cSfa; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=YE+yjXy9; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="cX84cSfa"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="YE+yjXy9" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 611MneY41865799 for ; Mon, 2 Feb 2026 06:24:16 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=qcppdkim1; bh=RhPwoU6j4NpDQ98Qu5+RlO myVHbomubDAnF+W2Sa4q4=; b=cX84cSfapw5hT7IygfiWLi6PxAuZnBkmDs86ky lD8uAZAmJfThprWfeLS1TcAfW7fJ8V0Ui298/NGAhKuwXcpdQmAl48NnuuOAFKJp 2oSpFwU6UuiEOhdF3kCIdav8FpfBSnFRqLqZVCTghU+omZuoaEiKFjXHIPNb1B7c N0mLNytosF20mBWYTWRm+EugfXYIkncWNWgpaY2LanxmJ9XXsnAUB/UA/p6QjkJv nlXZDTWrR3GicPsv0eL7qMLKmiC6oIRSXFs8l7X9QMejkg3PXi5pCd9Ust2yfToN GFhnJ6kzKDSkLn0z25Ru/RL6Y+XM4dViVi+2z6hpRyWFcoLQ== Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c1avnm6sq-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 02 Feb 2026 06:24:15 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-352e195f662so3465243a91.2 for ; Sun, 01 Feb 2026 22:24:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770013455; x=1770618255; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=RhPwoU6j4NpDQ98Qu5+RlOmyVHbomubDAnF+W2Sa4q4=; b=YE+yjXy92pltV7oTS5GIBqHeFCaFs0R1htw6d8XpaUDL2ubH4XzM+SkbUGX+9zo0Wr w6Qj/ij03ijyvo2AiemYzeJts+AsfwhreeAoNQqy39p5iS7m31lpRy2nEck8IvDYu540 my02o8jazjVDcJkbNusmp4rm2OX3h+11rPX3eBBffwBR8A07zPz5XeJsFBCA6cmdB6qn XSKXMHIweZLizdgtQnXRW8AsJeAKYvKM4R1lkEyka4oLf2VyZ9t8n1lE4G/i5/H1mCfy 7NXeJEdgc7Pjpk/TW4FqnCuJTNiViEVw/PBUB+cdmbnfys//BqBxAZ3OBAYu9fJhd50u OpWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770013455; x=1770618255; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=RhPwoU6j4NpDQ98Qu5+RlOmyVHbomubDAnF+W2Sa4q4=; b=jTFflBynMs8/XmgDA8cnuT3DYDHPp7KxEPavYNGu4rj/2b8LfE+axGxHtUNrxrj6/n SzJVDihlwiKFd1xH3DBKzz7iuKyhyrT0LPHY7S48/LQlbThrP6p2caZNqqqbPlhX/U5e MCfk3/wy06UdNaIslf2GgogmEZ5I7FplZHa0Vn+U45xmD1jE1yrWwVgpDfvx/xQQ9C+a kBy5SG/InvW61rBfAf7vRS6dRzsxXrsTGqFdNlFKl7E4cvwLfz5U3CC/RychNLAZH9mr 9zG1zKyi85AApjKq9UfOq5ET24vYJMX16Od/F8X8B4v8vtWVpFj+hG+t5J/jT1Pn1qUI 5VIA== X-Forwarded-Encrypted: i=1; AJvYcCWkCQWPilOmy8Umqiu3s9ouJThub1Hl7cQTO6FjF2dOSGJImyw8j5N4VopWdbYqYcJ8l6M06Fr/ESFtjno=@vger.kernel.org X-Gm-Message-State: AOJu0YwUGBZ1vBLMcGXhdviSJh+6WJU4FWnGIFgDBlbAjM3PVleUxP1F HcYKeOQmgjWJ0HcSUY/lZkBXuqf0o044CcdipBQjq5xvr5HgXNlkgdkQXlxAFVSCsniNf2zK9pf 0qKlrM3B455F0VwK0KjXSK8mQBLjnwoBwRYlMQEMbOl7G31+pPERC1rYeMTc93DIBHA== X-Gm-Gg: AZuq6aLhstisMNKLx63N7Zs9nbL8Qns+Q+1MIprGlY790MBfeay7rsW/Z9Zq0yurW6T tIVy9N2ncgthgDt6fJ6ctXLIvgz5j143Pig8lD2wq3is3Eadlqhm+9NN0BRJr9Pod46IcjwjMDl WO/JqzargYH5S796t9p4s9sCyFIMICFNqBfCQC+orlMOAOVNe8ssSZKfdcXV0l8hsXNhY2WACsA MLpkA5ekReVWF8JA0EF0kbOwwvn3JOeYgkKKFHxMd1kydymxqZ6Sn5HZ5PbDpY+tvN6tN0hVlHC TQM9wCZFpPDBqRVr5G2hNvxE8DEP9+TI5//m7xYHjCcimq8GgaLhcO+Anz2g1CPdDHXlpcDq4xP MEg+hvplmRNNgdhCaFwsDoayDKLyWPF1t2Os= X-Received: by 2002:a17:90b:28c5:b0:343:684c:f8a0 with SMTP id 98e67ed59e1d1-3543b3ae12dmr10523058a91.23.1770013454610; Sun, 01 Feb 2026 22:24:14 -0800 (PST) X-Received: by 2002:a17:90b:28c5:b0:343:684c:f8a0 with SMTP id 98e67ed59e1d1-3543b3ae12dmr10523022a91.23.1770013454109; Sun, 01 Feb 2026 22:24:14 -0800 (PST) Received: from hu-nlaad-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3540f3f0872sm14308248a91.16.2026.02.01.22.24.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Feb 2026 22:24:13 -0800 (PST) From: Nilesh Laad Date: Mon, 02 Feb 2026 11:54:05 +0530 Subject: [PATCH] drm/bridge: lt9611uxc: Increase EDID_NUM_BLOCKS from 2 to 4 for extended EDID support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260202-extend-edid-support-v1-1-1355a21479b7@oss.qualcomm.com> X-B4-Tracking: v=1; b=H4sIAARDgGkC/z2NzWrDMBCEX8Xo3A1a2VYqn/oeJQdZu2oF8U+0c jCEvHuVGHoZ+Abmm4cSzolFDc1DZb4nSctcAT8aFX79/MOQqLIy2lhdA3gvPBMwJQLZ1nXJBcb ed/FsCT9bo+pyzRzT/rZ+Xw7OfNuqvBylmljEv+VD86++FmcRtz1AZuFyfNwNIIzISGfDFJz+W kROt81fwzJNpxqvx9ELw6tIZWha9ta5sbfUYjC+x06Tiz602sXYs45Gd9ghqsvz+QcXp360AQE AAA== X-Change-ID: 20260202-extend-edid-support-b5a4f76d1832 To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, venkata.valluru@oss.qualcomm.com, Jessica Zhang , Ravi Agola , Nilesh Laad X-Mailer: b4 0.15-dev-a9b2a X-Developer-Signature: v=1; a=ed25519-sha256; t=1770013449; l=5505; i=nilesh.laad@oss.qualcomm.com; s=20250718; h=from:subject:message-id; bh=XDXVbAf8EfBUzSG0QM7cpChzXFDrxct+fuKagwOh2W4=; b=oSlh1JYVKzgVxj/5p+0cOMVul+GbfLHkfPOM2xs+rrhUzTRkUYBHS5SE1HYtQHTPOQOAg8BL6 lvFfmsrEiEcCQQnMaHwQLZRPiAlnDAnC/jna/Vogy7YQQPBAtSZNN3e X-Developer-Key: i=nilesh.laad@oss.qualcomm.com; a=ed25519; pk=MjLHvGipC16awutyYh0FnLpT1nPxL/Cs1dCevHMrrD4= X-Proofpoint-ORIG-GUID: qrbJONGNGSeIePzlharZyM3UaUFmFi1t X-Authority-Analysis: v=2.4 cv=bPMb4f+Z c=1 sm=1 tr=0 ts=6980430f cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=-aYIMrUCS7XEg8IQLSAA:9 a=QEXdDO2ut3YA:10 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-GUID: qrbJONGNGSeIePzlharZyM3UaUFmFi1t X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjAyMDA1MyBTYWx0ZWRfXx7HV4oAwsIw0 T0uYSzq1IFFH+xjxuha/dVYtqfNx7SiiL3MWOLgG4ehLqR/oDeSom2knxcKbNmHZ6+Nv+pZFDFY WFyixyMRr969lnRO/CMBsSzAqDRDucF/9elOLnh7JBATVk0jghwetTnS/iws+9cyIeQTfPNcnP7 iLj9nxDOcPvCulsdX0biPb6J+3HTK2ppxth56jvOxVXyhoJrNnh/3XFYd1F5H0wWH1uDswNvSu2 poyZX/++rQYmoC3aghUlDSzIVLf+8tpnYMdM93Im1ONhktGQBHZj6Jb6v9BrQZLxHDCHbhgHH/v VrJAHc2vv6qBZU699XGXrNs3CnwBsAa0maaC3ai2x7lCfD+LQdmRPlsWUrd6ygCvxeGF7ODf1hQ PcwfR5ETDp6FOax+6xA7GLLThf89RGxufVOzFfrT2mtgx0HPygnwVAHU9XLri5y99Fv6be89bnw qGWmiUHFw7n4Hthf4Ng== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-02_02,2026-01-30_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 malwarescore=0 suspectscore=0 bulkscore=0 phishscore=0 priorityscore=1501 spamscore=0 lowpriorityscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602020053 From: Ravi Agola The lt9611uxc driver previously limited EDID reading to 2 blocks, which restricted support for displays that provide more than two EDID blocks. This change enables the driver to read and pass up to 4 EDID blocks from the LT9611UXC to drm_edid calls. As a result, the driver now supports displays with up to 4 EDID block. Signed-off-by: Ravi Agola Signed-off-by: Nilesh Laad --- drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 93 ++++++++++++++++++++++++++= ---- 1 file changed, 82 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c b/drivers/gpu/drm/b= ridge/lontium-lt9611uxc.c index 4d989381904c..7fe481c7acf8 100644 --- a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c +++ b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c @@ -28,7 +28,7 @@ #include =20 #define EDID_BLOCK_SIZE 128 -#define EDID_NUM_BLOCKS 2 +#define EDID_NUM_BLOCKS 4 =20 #define FW_FILE "lt9611uxc_fw.bin" =20 @@ -61,6 +61,11 @@ struct lt9611uxc { /* can be accessed from different threads, so protect this with ocm_lock = */ bool hdmi_connected; uint8_t fw_version; + + bool edid_available; + unsigned int num_edid_blocks; + uint8_t edid_raw[EDID_BLOCK_SIZE * EDID_NUM_BLOCKS]; + }; =20 #define LT9611_PAGE_CONTROL 0xff @@ -170,8 +175,12 @@ static void lt9611uxc_hpd_work(struct work_struct *wor= k) connected =3D lt9611uxc->hdmi_connected; mutex_unlock(<9611uxc->ocm_lock); =20 - if (!connected) + if (!connected) { lt9611uxc->edid_read =3D false; + lt9611uxc->edid_available =3D false; + lt9611uxc->num_edid_blocks =3D 0; + memset(lt9611uxc->edid_raw, 0, EDID_BLOCK_SIZE * EDID_NUM_BLOCKS); + } =20 drm_bridge_hpd_notify(<9611uxc->bridge, connected ? @@ -387,10 +396,32 @@ static int lt9611uxc_wait_for_edid(struct lt9611uxc *= lt9611uxc) msecs_to_jiffies(500)); } =20 +static int lt9611uxc_read_edid_block(struct lt9611uxc *lt9611uxc, unsigned= int block) +{ + int ret; + + lt9611uxc_lock(lt9611uxc); + + regmap_write(lt9611uxc->regmap, 0xb00a, (block%2) * EDID_BLOCK_SIZE); + + ret =3D regmap_noinc_read(lt9611uxc->regmap, 0xb0b0, + <9611uxc->edid_raw[block*EDID_BLOCK_SIZE], EDID_BLOCK_SIZE); + if (ret) { + dev_err(lt9611uxc->dev, "edid block %d read failed: %d\n", block, ret); + lt9611uxc_unlock(lt9611uxc); + return -EINVAL; + } + lt9611uxc_unlock(lt9611uxc); + + return ret; +} + static int lt9611uxc_get_edid_block(void *data, u8 *buf, unsigned int bloc= k, size_t len) { struct lt9611uxc *lt9611uxc =3D data; - int ret; + int ret =3D 0; + int retry_cnt =3D 10; + int edid_ext_block; =20 if (len > EDID_BLOCK_SIZE) return -EINVAL; @@ -398,19 +429,59 @@ static int lt9611uxc_get_edid_block(void *data, u8 *b= uf, unsigned int block, siz if (block >=3D EDID_NUM_BLOCKS) return -EINVAL; =20 - lt9611uxc_lock(lt9611uxc); + /* + * if edid is read once, provide same edid data till next hpd event + */ + if (lt9611uxc->edid_available && (block < lt9611uxc->num_edid_blocks)) + memcpy(buf, <9611uxc->edid_raw[EDID_BLOCK_SIZE*block], EDID_BLOCK_SIZE= ); + else { + /* + * read number of block available in edid data + */ + if (block =3D=3D 0) { + lt9611uxc_lock(lt9611uxc); + ret =3D regmap_read(lt9611uxc->regmap, 0xb02a, &edid_ext_block); + if (ret) + dev_err(lt9611uxc->dev, "edid block read failed: %d\n", ret); + else + lt9611uxc->num_edid_blocks =3D edid_ext_block & 0x7; + lt9611uxc_unlock(lt9611uxc); + } =20 - regmap_write(lt9611uxc->regmap, 0xb00b, 0x10); + /* read edid block */ + ret =3D lt9611uxc_read_edid_block(lt9611uxc, block); + + /* compare first 4 bytes of 0th and 2nd block to confirm + * that 2nd edid block data is read successfully by lt9611uxc + */ + while ((block =3D=3D 2) && 0 =3D=3D memcmp(<9611uxc->edid_raw[block*ED= ID_BLOCK_SIZE], + <9611uxc->edid_raw[(block%2)*EDID_BLOCK_SIZE], 4) + && retry_cnt-- > 0) { + msleep(100); + ret =3D lt9611uxc_read_edid_block(lt9611uxc, block); + } =20 - regmap_write(lt9611uxc->regmap, 0xb00a, block * EDID_BLOCK_SIZE); + /* if more than 2 edid block are available, reset edid ready + * flag once 0th and 1st edid block read is completed + * so lt9611uxc read 2nd and 3rd block + */ + if (block =3D=3D 1 && lt9611uxc->num_edid_blocks > 2) { + lt9611uxc_lock(lt9611uxc); + regmap_write(lt9611uxc->regmap, 0xb02a, (edid_ext_block & (~BIT(3)))); + lt9611uxc_unlock(lt9611uxc); + msleep(100); + } =20 - ret =3D regmap_noinc_read(lt9611uxc->regmap, 0xb0b0, buf, len); - if (ret) - dev_err(lt9611uxc->dev, "edid read failed: %d\n", ret); + /* set edid available to true once all edid blocks read successfully */ + if (block =3D=3D (lt9611uxc->num_edid_blocks-1) && ret =3D=3D 0) + lt9611uxc->edid_available =3D true; =20 - lt9611uxc_unlock(lt9611uxc); + /* copy edid block data into buffer */ + if (ret =3D=3D 0) + memcpy(buf, <9611uxc->edid_raw[EDID_BLOCK_SIZE*block], EDID_BLOCK_SIZ= E); + } =20 - return 0; + return ret; }; =20 static const struct drm_edid *lt9611uxc_bridge_edid_read(struct drm_bridge= *bridge, --- base-commit: 3ea699b56d31c2a5140d9fac309ff5e0f2041411 change-id: 20260202-extend-edid-support-b5a4f76d1832 prerequisite-message-id: 20260202-lt9611uxc-reset-edid-v2-1-b1e1d72edc90@os= s.qualcomm.com prerequisite-patch-id: bbe63ef7dc85903a286cefd9aa09f1e2e96351b1 Best regards, -- =20 Nilesh Laad