From mboxrd@z Thu Jan 1 00:00:00 1970 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 7DB3B4C755C for ; Tue, 15 Sep 2026 18:47:34 +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=1789498056; cv=none; b=tA99SitcNUj0swjwq1GYp9ZqpxnF59XNeF13XikfwVn7/oUsOKAGiW5BCIXIi75Sk9OpAHBwvvbvj43198xESp9ExjjBf2ejpQdzy7ZAZBFsf0rHzXMISQ0wpwAiny0d9IcU9cjR50s0nzao7YTZENTb6CkOfzr3ySan9ANhmSE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789498056; c=relaxed/simple; bh=CINGxuY2Q1M5z7yuwFwj483gbEVlJ8tm6vuNnhaFALk=; h=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc; b=ttrzDIsnxn795nxALPCpoRFQzOub3Z2qFmAOo5ulXoaPl+woQJ/LjI4+Her28Hl6ZtsMysDe9KbrI1h6i37I+ZnaewYtuRqOEaoq/T9piO/FA8DRJTbBHduyJRZQEadoIxW9EsFpidvQ07xdHbOLYx6PleXOpvV8g82gyf+f52Y= 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=fII5dUEk; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=kwdI7FEN; 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="fII5dUEk"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="kwdI7FEN" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68FHoqrr129480 for ; Tue, 15 Sep 2026 18:47:33 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=Et960ItVy2x+L/hWiGZo2D XjoOCK9CzSkxzwSpTftUQ=; b=fII5dUEkHHohaDiNu2OknoOGPT/0jIv0pBikDj 41OGHoK9jIFsACg+DtV7ry01EGC3Oo+VfZ5ryh6jmO17z/uZTzYhR9YeyRcco/e0 dz7dFGKkW3H71WOG+73//XRJJG8fnkV5qEiQMhk4wpDbpSROIDyJd5yWl8UZM7YY khGFpdZWHpXJso7FjRgYc4WuU8HcIy4xQNquXimSM9pYUtkdC2p1OHbR+IRU5yAn b5fHl6m7Qk8doU4zJ5Ji+i/pQ12aAqsLiwNUmGX46/oXCwNkaSBXWyz50PDvzdzy VAbrSRGzoWUlDV1ABjtLjneyQNgXC0oAt0l9Br2sPgGFdcIw== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gq2y2jsam-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 15 Sep 2026 18:47:33 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-cc44d708055so7987983a12.0 for ; Tue, 15 Sep 2026 11:47:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1789498052; x=1790102852; darn=vger.kernel.org; h=cc:to:content-transfer-encoding:content-type:mime-version :message-id:date:subject:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=Et960ItVy2x+L/hWiGZo2DXjoOCK9CzSkxzwSpTftUQ=; b=kwdI7FENkGIhpcundjpjuJHyFGqbfqji2hiZggPA3EX7Buyy+S5oLonwh3KrRMwtRC 9AWggbmfJSDPGanjQKi8y/QVd6DSawG5sXGfRyxzxoLpme5q+/7AOZT9vXmx/JpGaSgR RtazD8GxVqlTW+Pl/coB23FFi+P3I3CJzg2MJ9VJOzoqSaFRsL146pGjAyBcrnR8+6mw acyvukt29FQCooiRfh3gQjurGmLHSZJc1u6UdZ1/ZE62BFic5HhcJII7s639ab8p2fpP 2Lh54WGxc/5ylin0LzW3VDfeD0pTY9ORuDXaW5Kc9jHCFZ4smpNf6PaA/xynBUIB47a9 YYTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789498052; x=1790102852; h=cc:to:content-transfer-encoding:content-type:mime-version :message-id:date:subject:from:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=Et960ItVy2x+L/hWiGZo2DXjoOCK9CzSkxzwSpTftUQ=; b=aQIY2W2t9ZnQUiD8LU77vRphkWcCL1mxC4T5gl8iWBC9aqxp+4PCkfwwRyMHky+W8h nrWDPjcGZpWdvDTc4r9fbXiQuDjQzxz7FZsx9YndLQH15OFsFhzka+J8i4RakB6id+kQ Em2HwIDcxNPqMno06jjVwWyE/432XnIqg8gsqllX2vwMxtPML9DiDbz+fu9wV3NCUGBx kjX7clFwf1SGF8etAfB8xLRGTEBB4VOSOHrPEzgJOX3sAbMvYzllOFg0ZOrNktQb1UMd SIN/0jCUsNeHo5g0bIBCnkCyDQKplELAhjCSO1pxutN+sUAHJH8VYq6z/+FBJRz1JBzB xClw== X-Forwarded-Encrypted: i=1; AKwUvByymdNSmX3tXl0DgeEvVxOGjbkN34COn6XKR/iJeh5j2C8UuUQbCejmd/w7zlEaGQ4UZdnk5ib6K60D@vger.kernel.org X-Gm-Message-State: AFuF++mgPyvGgQGZ6awjr8HqQMtR1pIxt0bIogihQ4TX3ZOrZczPeKTH zYmKf90pjybDbaT/NMmjI0dCQkH/W2oXYUVJWDw5PGuqTm/0ENoOhFcQJpV1Ur5JhdNWybyeCUB Tegrsbk/YXPHiEaephV2HrFCkrUQ3Xl7rLWyHJnEfRuYwsIBMbtaKD5PJl8vgCt+X X-Gm-Gg: AYBFou0Dl18xnj+DB+0kXOnUNfwRfy6wTwqeeuFQzSMp2plw6DkVWaRClZKBe1b9gXf QLzJRXvH0xRdemyXXCszuxZdeEy1Y6duBwvUQubQ1Ptrrc1CmxWdjNsLxaHifapitrZbb7TV5Qr IGpuw65LoDiuzLw1UBr/5cCE2uoLybQWdO9JDJJlKgzHktfEXsj5mJcxvsVrp7Nh5bSSPyIRbWG usG1zeH6mbB03VB4Cr3/qGAzQ6nx5BLgLNsJFGZXXq+7AqLFEP6rjWgWhMVJaVEX142e21q5Doe YL2rO009I7j0b9G9nJlrAx8R52vI450kCrQEEE/OD0jSj7xdrIrqrprN0jHIKk4vyUhvSoqaygo 2l6K+USteHU2fV0CmYUtSoWeUtQ== X-Received: by 2002:a05:6a21:920e:b0:3da:f21a:23ca with SMTP id adf61e73a8af0-3dd52a2a52bmr5154543637.22.1789498051956; Tue, 15 Sep 2026 11:47:31 -0700 (PDT) X-Received: by 2002:a05:6a21:920e:b0:3da:f21a:23ca with SMTP id adf61e73a8af0-3dd52a2a52bmr5154467637.22.1789498051503; Tue, 15 Sep 2026 11:47:31 -0700 (PDT) Received: from hu-mdsor-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14395caccf1sm612368c88.2.2026.09.15.11.47.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Sep 2026 11:47:30 -0700 (PDT) From: mohit.dsor@oss.qualcomm.com Subject: [PATCH v16 0/2] Subject: Add Lontium LT9611C(EX/UXD) MIPI DSI to HDMI driver Date: Wed, 16 Sep 2026 00:17:15 +0530 Message-Id: <20260916-lt9611c-v7-v16-0-c65042fcd245@oss.qualcomm.com> Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit X-B4-Tracking: v=1; b=H4sIALOSqWoC/3XQ20oDMRAG4FcpuXZLJpOjV76HeJGjXWm7umkXp fTdzVahiRgIAxMmX37mQnKcx5jJ4+ZC5riMeZyOpQH5sCF+Z4+vcRhDuSCMMkkV1cP+ZCSAHxY 1pKSkYwFcEomUB+9zTOPnTXt++enz2b1Ff1qFdWI35tM0f92+W9Q69wuDrOFy6KCEQAtcoUj+a cp5+3G2ez8dDttSyOovuhJYE23RRXDBMpAu2YSqI5i7oClvBFME5AytklrIgB0BaE20IYAWI0Z DLaAMmtmeAZXB2hgAq+G4VcY7YVRvF8DuhqHYGqwYhgMPzKELMvQMrA3TGlgMGz1DzjUqJnoGr wz4k4MXQyB3HC1VUrKeIWpDtIYohtbJRINaRev+Ma7X6zct2B8H2gIAAA== X-Change-ID: 20260708-lt9611c-v7-ff76b2d1bf5f To: Sunyun Yang , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Luca Ceresoli , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Vinod Koul Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Mohit Dsor , Krzysztof Kozlowski X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1789498044; l=12415; i=mohit.dsor@oss.qualcomm.com; s=20260808; h=from:subject:message-id; bh=CINGxuY2Q1M5z7yuwFwj483gbEVlJ8tm6vuNnhaFALk=; b=VoMNkI6NAxQR9DcmURxo5aHi1faT56x8uHNlgz7Gioatah9MzGSsy1Z6gaPT1W/o+hA4dQtpg ye0KzJJQaq2DSNH+8t8KvHQM5LCCu6IIw7yE6ENsuRCJilsDIVUmACC X-Developer-Key: i=mohit.dsor@oss.qualcomm.com; a=ed25519; pk=outHVBN53JhozDw1xkj3G1qrqqE5scMBP7M4WL3aHQQ= X-Proofpoint-ORIG-GUID: peOzUxkUhCY55rZ2Hl9j30ckx6JNs88l X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTE1MDI3MyBTYWx0ZWRfXzS/YrassWTIJ 5/BJ3QHT1Y4M0DB+oNQunRhC0PkM5562lEwIP3apR8LRzro/JHh4LkP13Luo39qwR6BhYpt/NUR EVdVWRnf0TSfcmbpQbUB54RzkPpGKQKH8CE4WFr9HD64exAx7Np5UJwfU5CW68G1lC1rcKHRBQL IxmCaFhBcbvk0sQPoSofm+IvKDjMFftB+Xq8davFL9vJ9WM+4UhTHFgiqSdEGETnBe9WJ59914L sBjwMdinW+O5Rg4wy4++eAUVs4/dqFqStokdQ7kg4YipHo1mNES+xXH+D0qZFrxsLSCrjC5mmX3 gmeWERXdmmpIU1I+Fr7PZzPu/9EtQCyXWVV6opq/zwHKeXtAvXPFqcbKBzuOCNxSqc+1q0KQGVj BRLBxFcXfnX79++jBMZgMDlLMwKbpk0KhhF2Cwyf0wx8OzfhFvUre34prelVsNzVl6dUia1159O U2xU0QJv6PICOD7RefA== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTE1MDI3MyBTYWx0ZWRfX6Z+YJSGQOkoP 5BEF2tkInbJMiWpV9/k1cHF2/mC5eDl1F2MI7XBd2Ld1JpQq8/FA5d/n/e+xYXRe6LY94yN1b5C PZ0yRXaVt8dP3zkUz/J+z5nR14LVT/o= X-Proofpoint-GUID: peOzUxkUhCY55rZ2Hl9j30ckx6JNs88l X-Authority-Analysis: v=2.4 cv=IcISymqa c=1 sm=1 tr=0 ts=6aa992c5 cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=Kz8-B0t5AAAA:8 a=QyXUC8HyAAAA:8 a=KKAkSRfTAAAA:8 a=P1BnusSwAAAA:8 a=pGLkceISAAAA:8 a=P-IC7800AAAA:8 a=e5mUnYsNAAAA:8 a=IOFIWVTARERmE0tqbhIA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 a=RuZk68QooNbwfxovefhk:22 a=cvBusfyB2V15izCimMoJ:22 a=D0XLA9XvdZm18NrgonBM:22 a=d3PnA9EDa4IxuAV0gXij:22 a=Vxmtnl_E_bksehYqCbjh:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-15_05,2026-09-15_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 priorityscore=1501 adultscore=0 bulkscore=0 clxscore=1015 malwarescore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2609040000 definitions=main-2609150273 This series introduces: - A device tree binding YAML file describing the hardware - A new DRM bridge driver implementing the basic functionality LT9611C(EX/UXD) is an I2C-controlled chip that Receiver signal/dual port mipi dsi and output hdmi, differences in hardware features: - LT9611C: supports 1-port mipi dsi to hdmi 1.4 - LT9611EX: supports 2-port mipi dsi to hdmi 1.4 - LT9611UXD: supports 2-port mipi dsi to hdmi 1.4/2.0 Changes in v16: - Fix interrupt clear sequence: write BIT(0) to assert clear then 0x00 to deassert, instead of writing irq_status & ~BIT(0) which could inadvertently toggle other pending interrupt bits - Fix suspend error recovery path: add msleep(400) before re-enabling IRQ after reset GPIO deassert, matching the delay in lt9611c_reset() to allow MCU to initialize before interrupts are enabled - Link to v15: https://lore.kernel.org/all/20260915-lt9611c-v7-v15-0-88f9e9387eab@oss.qualcomm.com/ Changes in v15: - Fix firmware flash corruption: poll for flash WIP (write-in-progress) bit to clear after each lt9611c_sram_to_flash() call in both lt9611c_write_data() and lt9611c_write_crc(), preventing SRAM from being overwritten while the SPI flash controller is still programming - Fix missing infoframe flush during modeset: call drm_atomic_helper_connector_hdmi_update_infoframes() at the end of lt9611c_bridge_atomic_enable() to ensure AVI and other infoframes are transmitted after video setup - Fix data race on fw_version: annotate concurrent read in firmware_show() with READ_ONCE and write in firmware_store() with WRITE_ONCE - Link to v14: https://lore.kernel.org/dri-devel/20260913-lt9611c-v7-v14-0-534b43a07662@oss.qualcomm.com/ Changes in v14: - Fix device node leak: redirect GPIO and regulator init failure paths to err_put_nodes label instead of returning directly, ensuring dsi0_node and dsi1_node are always released via of_node_put() - Link to v13: https://lore.kernel.org/dri-devel/20260909-lt9611c-v7-v13-0-aec234483725@oss.qualcomm.com/ Changes in v13: - Fix double-free of dsi0_node/dsi1_node: remove __free(device_node) which is prohibited when mixed with goto; use explicit of_node_put in all exit paths - Fix const and named initializers for i2c_device_id table - Link to v12: https://lore.kernel.org/lkml/20260903-lt9611c-v7-v12-0-9414d2b3bd6d@oss.qualcomm.com/ Changes in v12: - Fix audio deadlock in lt9611c_hdmi_audio_prepare: release mcu_lock before calling drm_atomic_helper_connector_hdmi_update_audio_infoframe which re-enters the driver via lt9611c_hdmi_write_audio_infoframe - Move lock acquisition from lt9611c_write_infoframe/lt9611c_clear_infoframe helpers to individual bridge callbacks; add lockdep_assert_held in helpers - Remove unused includes: platform_device.h, drm_drv.h, drm_print.h, drm_of.h, unaligned.h - Remove DRM_PANEL_BRIDGE from Kconfig (unused) - Fix copyright: (c) -> (C) for Qualcomm line - Remove dsi0_node, dsi1_node, dsi0, dsi1 from struct lt9611c; make them local to probe using __free(device_node) and local dsi pointer - Replace chip_type/max_tmds_rate fields with single cdata pointer in struct - Fix sysfs NULL dereference race: move i2c_set_clientdata to top of probe - Fix concurrent crc8_populate_msb: move to module_init - Fix i2c_device_id: remove vendor prefix (was a workaround for NULL driver_data) - Replace timing_data byte array with named struct using __be16 fields - Rename page to npages in lt9611c_write_data - Move loop-local variables inside loop in lt9611c_write_data - Add DRM_BRIDGE_ATTACH_NO_CONNECTOR check in bridge_attach - Use sizeof(timing_data) instead of ARRAY_SIZE - Move regulator_bulk_enable inside lt9611c_regulator_init - Various nits: comment spacing, blank lines, variable initialization - Link to v11: https://lore.kernel.org/dri-devel/20260824-lt9611c-v7-v11-0-eb4a79cb597c@oss.qualcomm.com/ Changes in v11: - Fix firmware path: use "Lontium/lt9611c_fw.bin" to match linux-firmware layout - Link to v10: https://lore.kernel.org/dri-devel/20260808-lt9611c-v7-v10-0-ee90a136d82a@oss.qualcomm.com/ Changes in v10: - Fix lt9611c_block_erase: check return value of read_poll_timeout to avoid writing to un-erased flash - Fix NULL dereference: check i2c_get_match_data() return value before dereferencing - Fix irq handler: return IRQ_NONE when BIT(0) is not set - Fix devm_drm_bridge_add: check and propagate error return - Fix use-after-free in remove: call disable_irq() before cancel_work_sync() - Fix bridge/regulator ordering in remove: use drm_bridge_add/drm_bridge_remove explicitly so bridge is unregistered before regulators are disabled - Promote firmware upgrade success log from dev_dbg to dev_info - Link to v9: https://lore.kernel.org/lkml/20260804-lt9611c-v7-v9-0-3423a76856d3@oss.qualcomm.com/ Changes in v9: - Use regmap_bulk_write for 4-byte header write in read_write_flow - Replace while(1) loop with read_poll_timeout in lt9611c_block_erase; read_flash_reg_status now returns unsigned int - Fix unchecked regmap_read in lt9611c_upgrade_result; return -EIO on CRC mismatch - Add struct lt9611c_chip_data with chip_type and max_tmds_rate; fix i2c_device_id table driver_data to use chip data pointers - Use put_unaligned_be16() to replace manual high/low byte splits in lt9611c_video_setup - Extract lt9611c_write_infoframe() and lt9611c_clear_infoframe() helpers; consolidate 6 infoframe functions into 2 helpers - Remove lt9611c_hdmi_audio_startup and its bridge_funcs entry - Remove hpd_enable callback from bridge_funcs - Fix scoped_guard(mutex) deadlock in audio_prepare: release lock before calling drm_atomic_helper_connector_hdmi_update_audio_infoframe() - Fix probe order: lt9611c_reset() before enable_irq() - Fix remove(): remove disable_irq() (IRQ is devm_request_threaded_irq-managed) - Fix bridge_suspend() unwind: on regulator_bulk_disable failure, de-assert reset and re-enable IRQ - Move devm_drm_bridge_add to after both DSI attaches; remove cancel_work_sync from err_remove_bridge label - Move request_firmware outside mcu_lock in lt9611c_firmware_upgrade; lock only wraps hardware access - Re-read lt9611c->fw_version after successful firmware_store upgrade - Rename ocm_lock to mcu_lock throughout - Use goto err_put_dsi1 to eliminate duplicate DSI cleanup in probe error path - Fix mcu_lock comment to correctly describe what it protects - dt-binding: add if:then: block to disallow port@1 when compatible is lontium,lt9611c - Rename sysfs ABI doc to sysfs-driver-lontium; rename sysfs attribute from lt9611c_firmware to firmware - Kconfig: add I2C to depends on to satisfy REGMAP_I2C dependency - Link to v8: https://lore.kernel.org/lkml/20260728-lt9611c-v7-v8-0-bda216bfaf37@oss.qualcomm.com/ Changes in v8: - Refactor lt9611c_read_write_flow() to take a struct lt9611c_cmd parameter with an embedded struct lt9611c_cmd_hdr (func, type, seq, sep) and optional data payload, eliminating raw byte arrays at call sites - Add LT9611C_CMD_HDR_SIZE, LT9611C_EDID_BUF_SIZE constants to replace magic numbers - Use container_of_const() in bridge_to_lt9611c_const() - Remove obvious /*read only*/ comment - Use unsigned long cast instead of uintptr_t for chip type initialization - Replace memset + memcpy with memcpy + memset for CRC buffer preparation - Add ABI documentation for lt9611c_firmware sysfs attribute - Fix Kconfig help text to proper prose within line limits - Add disable_irq() before cancel_work_sync() in lt9611c_remove() - Add cancel_work_sync() in lt9611c_bridge_suspend() - Inline lt9611c_gpio_init() into probe - Use of_drm_get_bridge_by_endpoint() instead of drm_of_find_panel_or_bridge() + drm_bridge_get() - Return error if LT9611C (single DSI only) is configured with dual DSI in device tree - Move HPD status read_write_flow call from IRQ handler to lt9611c_hpd_work workqueue - Removed second lt9611_reset call from probe as not needed - Add struct lt9611c_rsp symmetric to struct lt9611c_cmd — both embed struct lt9611c_cmd_hdr - Link to v7: https://lore.kernel.org/lkml/20260716-lt9611c-v7-v7-0-7553a14735fc@oss.qualcomm.com/ Changes in v7: - Use i2c_get_match_data() for chip type initialization - Implement hdmi_write_hdmi_infoframe/hdmi_clear_hdmi_infoframe - Use drm_atomic_commit in bridge callbacks - Removing redundant lt9611c_reset() call and cleanup in probe error path - Populate bridge.vendor and bridge.product - implement hpd_enable callback - fix DT parsing and bridge refcount - Removed pre_enable and post_disable callbacks, it was affecting hpd as regulator was disabled - Changed reset gpio enablement and lt9611c_reset api. - Link to v6: https://lore.kernel.org/all/20260508134009.4582-1-syyang@lontium.com/ Changes in v6: - dt-binding: 1. sorted the compatible list alphabetically. [Dmitry] - Link to v5: https://lore.kernel.org/lkml/20260507024214.97708-1-syyang@lontium.com/ Changes in v5: - drm/bridge: 1. use #define FW_FILE "Lontium/lt9611c_fw.bin" to match linux-firmware [Dmitry] 2. add atomic state management - Link to v4: https://lore.kernel.org/lkml/20260506095100.78998-1-syyang@lontium.com/ Changes in v4: - dt-binding: 1. fix commit message [Krzysztof] - drm/bridge: 1. use lt9611c_fw.bin [Dmitry] 3. use enum lt9611_chip_type 4. remove *fw from the lt9611c struct 5. use read_poll_timeout and -ETIMEDOUT 6. replace mutex_lock with guard(mutex) in some places 7. switch to ARRAY_SIZE instead of specifying lengths directly 8. use dev_err_probe 9. add clear functions for AVI and audio infoframes 10. add DRM_BRIDGE_OP_HDMI and remove .hpd_notify 11. replace "GPL v2" with "GPL" - Link to v3: https://lore.kernel.org/lkml/20260420061644.1251070-1-syyang@lontium.com/ Changes in v3: - dt-binding: 1. lt9611c(ex/uxd) content merged into lontium,lt9611.yaml - drm/bridge: 1. Drop the licence text, only use SPDX header 2. Sort the headers 3. Use library functions for crc8 4. Use paged writes as implemented for LT9611C(EX/UXD) 5. Use HDMI audio helpers 6. Replace devm_kzalloc with devm_drm_bridge_alloc 7. Remove extra kthread - Link to v1: https://lore.kernel.org/lkml/20250903123825.1721443-1-syyang@lontium.com/ Changes in v2: 1. Forget modify code, operation error, Please disregard this submit. Changes in v1: - dt-binding: 1. Submit the first version of the code. - drm/bridge: 1. Submit the first version of the code. Signed-off-by: Mohit Dsor --- To: Andrzej Hajda To: Neil Armstrong To: Robert Foss To: Laurent Pinchart To: Jonas Karlman To: Jernej Skrabec To: Luca Ceresoli To: Maarten Lankhorst To: Maxime Ripard To: Thomas Zimmermann To: David Airlie To: Simona Vetter To: Rob Herring To: Krzysztof Kozlowski To: Conor Dooley To: Vinod Koul Cc: dri-devel@lists.freedesktop.org Cc: devicetree@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- Sunyun Yang (2): dt-bindings: bridge: Add Lontium LT9611C(EX/UXD) MIPI DSI to HDMI driver drm/bridge: Add Lontium LT9611C(EX/UXD) MIPI DSI to HDMI driver Documentation/ABI/testing/sysfs-lontium-firmware | 10 + .../bindings/display/bridge/lontium,lt9611.yaml | 18 +- drivers/gpu/drm/bridge/Kconfig | 17 + drivers/gpu/drm/bridge/Makefile | 1 + drivers/gpu/drm/bridge/lontium-lt9611c.c | 1320 ++++++++++++++++++++ 5 files changed, 1364 insertions(+), 2 deletions(-) --- base-commit: 79c96000962a163ad4c3c15537bf49159132843c change-id: 20260708-lt9611c-v7-ff76b2d1bf5f Best regards, -- Mohit Dsor