From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 6EBE63D8918 for ; Wed, 10 Jun 2026 21:15:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781126135; cv=none; b=ulWdzS5F1e6RSU6zkEdmc+EkgOReUw+WkOhR2+69eSVWxx/RuTh9fpH2yVsfCVFRgbXm1Yp3r0JU+I2jiPvn96bsdx7D6Ib23Ji4quMsmZSzM3/J9aTbjhepGxNbVzuQYJvecQCdIz8ip+PKFMVaJ5HrxS1UfFA4WMvABQ9u7/0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781126135; c=relaxed/simple; bh=TZkwQKKqCZk3U8kl+d9mczM+m16/GBJEcUQmtDmKhLw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=m5RgsoOatYVCWEjcif0PVPa2RcXzYWWfPeCOUO4mk4xAPacDn1mol6jKIvUxJnUIMmlKoBn6PX/8ggvSZRxsc6Zght73MWbKP5Ml6BGq8T46ptyT09AZruMQMevxXJ3O7eqeJzz2eKvuNieumLRvvERyGoe9uY40K/+pCyvo+G0= 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=DFjI0D3Y; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Pz3EzTym; arc=none smtp.client-ip=205.220.168.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="DFjI0D3Y"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Pz3EzTym" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65AJaOZb1005627 for ; Wed, 10 Jun 2026 21:15:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= CK4Klk07/k4jSgiSHXB7ww53KV5gcUSDtrYkPkbQJw8=; b=DFjI0D3YeJCzsyuV YDJ/oScxBxVsKNCeSqlVvYtmQ+rt+tdPDz8RpeU6TSfQBG+mVbttxjgOF4y2MBo8 9YSzZmhR4tP/g+Pwhsd+Uq2AVQsfK+k8yB15R9mGz3NVdBybXHSCTi50BVoe4/uK DbvGAHXWIPO6EFeQ+aEqBN5MAm0w7RSYmaW3UkwpoNHvOBMrUXQvd7fa0htfzpLB iU6cmAT/TLaRl3k6oOO56DwA68fjJjWU98pDcC/40Pr72cuk27ZvqM3G8TjWkdm9 0yhu1Cfvidcu7AtMbZJLPwiKPDHdl3sKKOUESmfn/EWJ0gBdpLBNnYg2e9ZPQXO8 fmUb1w== Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4eqe79gbfm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 10 Jun 2026 21:15:33 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-36b9106b0fbso154297a91.0 for ; Wed, 10 Jun 2026 14:15:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1781126133; x=1781730933; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=CK4Klk07/k4jSgiSHXB7ww53KV5gcUSDtrYkPkbQJw8=; b=Pz3EzTymz3/Ry2vZhbRn5/yw+ioEpU0iNhQop7vZLgozZzImVv8ROAiSRIFtJJcMRF x6JHmpqwimUm1WP1adUA4uDnTRJfn0CYJBB7nKnLLmakDCFxEoCoYdxdDtsDMkBbkRJ5 YqEIsPQNb5bO2OrlglBcPyf5bffBhktgoQqK5myqIUdXDWktP5qD1zvlDKPVr6MJjIvh +9Ml6CoUB1AMCih9rpGN1pXBaDl0suAyb4yui48DuDEGet6EgRxg7zdw1rJxyPNIutFv S5+W9LOL696rJ9q37O9ZDzjgJqmMsLeCupiaMOnRc7C4zTip3MXseDcuHFhTB0nqucAg YyBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781126133; x=1781730933; h=cc:to:in-reply-to:references: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=CK4Klk07/k4jSgiSHXB7ww53KV5gcUSDtrYkPkbQJw8=; b=ffMQeSlw6N/qH65uQi39FTDvLc8KIXCD/4iijHKziTerpFE6mu87Wtz0pUHBR7RTbP Wl9XA3O17jpCiC614tO8jFd0/qfYeIkDXiyWrhoRjtB/fiIRU5e4RsdI3MgVwxAueRYq v8+rSlW00FzDI7GWIOihx+b9oYrGkaUuiNoUBgGn/S6NiUNY62o9hVUmtBBuejX88Lm7 pbyqxbpj1Q56TznugntSkq7c//KsceKnrR81/vs0guxKYhMJkd69yC59/hp7Nqgaa4o1 Yr0N97pZBu8RGvXVAjryYprh4T02Ealt+/UuUK21Z068yQS5NbVPzs3FtHk+kPhSrk17 S8dw== X-Forwarded-Encrypted: i=1; AFNElJ850/nQbSsmZA/dqof7nunklV+6nZ+Vj93NYNaww5gIffHhQzfSNPiAwpH6LF0bvu0rVbJ+zXTQv0saKNA=@vger.kernel.org X-Gm-Message-State: AOJu0YxWSGqi0E1CQIU5171kuqO2gIDywQDVR/qA7n/gr4tYGt87O9Ym aEuSUKeFxCDwRt11JYawjG+UjJ4Vpxnzv0Cbh7Qo8x0tYAdEKzoDhtx3F6TR0/b1cD+IaT03LOr YArPo94E3ew2R4u9pE4rnXXJSTVc2zWz/yKc7DS8swhKnpzIVu0BlTrcxIOMIAnhrMb0= X-Gm-Gg: Acq92OFFfN0BoXlyMgTK6Il4QS7xoKHiivdHw18coXbGI3mAfDe7WL8Kk0JVasoCfK8 rFTwBZZLY1T1E2/Nmlx3eEvsEjSWwdZLwfuZRkPuRPeONQpsSbAD/dWWNJwNUT5E4i8fO/JLhOq uVAKkBPNRKy8B+6tEj8NdPfL2JoL/XWi+uXxyGnWFOtHqtemZ8/6Q2oKKIR3F8fhqRcR7EhM4v7 TfyiIIxqqHJ/dtH7+ME3Njj4GM6nouW424QXx2o/3WxOyEnYjr1iU6P04KlRmoBgnmTIxSEd3d5 DAhs+rpXBJfIZR5eRCmMIJghrItofePbSvsxdUNEG8Fha+U/524G0Aa/u3DXuJUqo4gbgKRkP4w YnD8GHT/pXHFYYuIMJY0tbr70p6L9PFcAWhReawU2Evx7mb/DpbsQYglLLA== X-Received: by 2002:a17:90b:3804:b0:373:302d:3ce6 with SMTP id 98e67ed59e1d1-3776a6cc810mr315531a91.8.1781126133079; Wed, 10 Jun 2026 14:15:33 -0700 (PDT) X-Received: by 2002:a17:90b:3804:b0:373:302d:3ce6 with SMTP id 98e67ed59e1d1-3776a6cc810mr315503a91.8.1781126132511; Wed, 10 Jun 2026 14:15:32 -0700 (PDT) Received: from hu-mdsor-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-37753d01cc6sm309490a91.11.2026.06.10.14.15.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 14:15:32 -0700 (PDT) From: Mohit Dsor Date: Thu, 11 Jun 2026 02:44:59 +0530 Subject: [PATCH 4/4] drm/bridge: lontium-lt9611c: Add DSI port selection via DT property 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: 7bit Message-Id: <20260611-lt9611-b4-send-v1-4-42abbcd3bb1e@oss.qualcomm.com> References: <20260611-lt9611-b4-send-v1-0-42abbcd3bb1e@oss.qualcomm.com> In-Reply-To: <20260611-lt9611-b4-send-v1-0-42abbcd3bb1e@oss.qualcomm.com> To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Luca Ceresoli , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , 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 , boss@oss.qualcomm.com, qc-display-maintainer@oss.qualcomm.com X-Mailer: b4 0.15.2 X-Proofpoint-ORIG-GUID: eKEtqaNNGOOUxlgq0EyBcAknXh1udQcX X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjEwMDIwNCBTYWx0ZWRfX1Zw+4gm/x/LC je2yyUn3TEvrhDmYWoCEWeGNsE+3mwkcD9PUMzlDm24eA/gRlEy3AZze9LOSYfctcQgk0tHHaX+ e9Xzykj40ersUMqwgVq8CogJkI/51X5UfqGams5TqqKw7/7P1EjgBYKhju/Q6CyQzk84jTMv/jL 9JV8dLNb6jxAD0uMDoTBHvS0yUZN/cEmyrhwUcWozkAh6EUJN/8/F1+EIJKHnTvzK4CcFm6tpQF RxJNzvFy4mVyWwuUt7goN1zoSkLl6aS8ZQrDoFoBOkyHqg2LPp6U29zljqoFpaQP7VZe8uwJPX/ Qa7yTHiQ+aiz+T6tKb9uJwt0qzN20ikOcWVdwSb8yHNas0UhbsExS3FOIpmbrbpcTcLFQ0Vo2Nf CNw9IvVDUaD3eEJvVJgiVKbnl60g5BQhpfL6vAycBlBYC/tksAAnM4QN+i1H6Ih6cEs3hqYKwkh bUIqJbCe+3EGrNR9ldw== X-Proofpoint-GUID: eKEtqaNNGOOUxlgq0EyBcAknXh1udQcX X-Authority-Analysis: v=2.4 cv=fbydDUQF c=1 sm=1 tr=0 ts=6a29d3f5 cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=Xheu9sz8Ka-PZ7GlfuwA:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNjEwMDIwNCBTYWx0ZWRfXywJ/wqFekMl4 Alp/URLOzAZtS+FU3IgjurzJYmWuytFz9pWHvryvUwMr68HB4GasUtkgYApoyzBSvtRRB8g2hUI AnXS/1gkyEK3FRLBafDR4SvBLIidVeM= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-10_04,2026-06-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0 suspectscore=0 spamscore=0 adultscore=0 priorityscore=1501 lowpriorityscore=0 clxscore=1015 malwarescore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606040000 definitions=main-2606100204 Some board designs connect only DSI port B, or both DSI ports A and B, to the LT9611C. Add support for a 'lontium,port-select' DT property that allows the board DTS to specify which DSI port(s) the chip should use: 0 = PORT_SELECT_A (default, single DSI port A) 1 = PORT_SELECT_B (single DSI port B) 2 = PORT_SELECT_AB (dual DSI ports A+B) When the property is absent the driver defaults to PORT_SELECT_A (0), preserving backward compatibility with existing DTS files. The selected port is programmed into the chip via lt9611c_select_port() during probe, after the chip ID has been verified. Signed-off-by: Mohit Dsor --- drivers/gpu/drm/bridge/lontium-lt9611c.c | 44 ++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/drivers/gpu/drm/bridge/lontium-lt9611c.c b/drivers/gpu/drm/bridge/lontium-lt9611c.c index fe51f4978546..5d67bb7391fb 100644 --- a/drivers/gpu/drm/bridge/lontium-lt9611c.c +++ b/drivers/gpu/drm/bridge/lontium-lt9611c.c @@ -41,6 +41,12 @@ enum lt9611_chip_type { CHIP_LT9611UXD, }; +enum lt9611c_PORT_SELECT { + PORT_SELECT_A = 0, + PORT_SELECT_B = 1, + PORT_SELECT_AB = 2, +}; + struct lt9611c { struct device *dev; struct i2c_client *client; @@ -60,6 +66,8 @@ struct lt9611c { enum lt9611_chip_type chip_type; /* HDMI cable connection status */ bool hdmi_connected; + /* Selected DSI port configuration */ + int selected_port; }; DECLARE_CRC8_TABLE(lt9611c_crc8_table); @@ -115,6 +123,34 @@ static int lt9611c_read_write_flow(struct lt9611c *lt9611c, u8 *params, return_count); } +static int lt9611c_select_port(struct lt9611c *lt9611c, int port_select) +{ + int ret; + u8 set_port_select_cmd[6] = {0x57, 0x4d, 0x31, 0x3a, 0x01, 0xc0}; + u8 set_port_select_ret[5]; + + if (port_select == PORT_SELECT_B) { + set_port_select_cmd[5] = 0x40; + } else if (port_select == PORT_SELECT_AB) { + set_port_select_cmd[4] = 0x02; + set_port_select_cmd[5] = 0xd0; + } else if (port_select != PORT_SELECT_A) { + return -EINVAL; + } + + /* MCU must be running (0xe0ee=0x00) for lt9611c_read_write_flow */ + guard(mutex)(<9611c->ocm_lock); + + ret = lt9611c_read_write_flow(lt9611c, set_port_select_cmd, + ARRAY_SIZE(set_port_select_cmd), + set_port_select_ret, + ARRAY_SIZE(set_port_select_ret)); + if (ret < 0 || set_port_select_ret[4] == 0) + return ret < 0 ? ret : -EIO; + + return 0; +} + static void lt9611c_config_parameters(struct lt9611c *lt9611c) { const struct reg_sequence seq_write_paras[] = { @@ -924,6 +960,10 @@ static int lt9611c_parse_dt(struct device *dev, lt9611c->dsi1_node = of_graph_get_remote_node(dev->of_node, 1, -1); + if (of_property_read_u32(dev->of_node, "lontium,port-select", + <9611c->selected_port)) + lt9611c->selected_port = 0; + return drm_of_find_panel_or_bridge(dev->of_node, 2, -1, NULL, <9611c->bridge.next_bridge); } @@ -1070,6 +1110,10 @@ static int lt9611c_probe(struct i2c_client *client) lt9611c_reset(lt9611c); + ret = lt9611c_select_port(lt9611c, lt9611c->selected_port); + if (ret < 0) + dev_err(lt9611c->dev, "failed to select port %d\n", lt9611c->selected_port); + lt9611c_lock(lt9611c); ret = lt9611c_read_chipid(lt9611c); -- 2.34.1