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 D33E1207A20 for ; Sat, 18 Jul 2026 11:12:57 +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=1784373179; cv=none; b=VictX28s1yakzFi6CdB3gxhRgUQ+HTifs2eLgQuH3fMiGkaLuYXXXZ8XAAASqm/a2Qmofrrw56AC0/R8C+mYmoWxXRlS9dSSYDO6a5y2Ya8Zrdly3nZwPwmgbCRjqDLOtUkXClRi3geYH6xXzHPb1hsCAlWWNlEvN4taHA8FQ8A= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784373179; c=relaxed/simple; bh=XWp0Dli+gtbGmyZiPru5vOKlLLjKV6a9ux+V42FeGCw=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=Jf0gLDIJHL/BSh59SV+wzD3MKA02XZBT7PVZ8xs576ik3UpoRTEMALCu/+Jsvd4x/1+AXszwyWm7SIodaV8N6agF4HeVv23AgEDO3mz7E8m5UIwTD32EHhrMjx9z/ib6uefPkPFjGMHUp7rHQ3MzvnV5126OUhKkluCEGnIMGmU= 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=p5rg2hS2; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=eYYqj4ot; 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="p5rg2hS2"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="eYYqj4ot" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66IAHO16205656 for ; Sat, 18 Jul 2026 11:12:57 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=qcppdkim1; bh=FD0Wo5+4J/Xmv4o5hazcqi5D qDevELu6VcRHIJMG2h8=; b=p5rg2hS2eYLrpc23QEJYPR3wjY4XuQPgFDReEwxK RWSn+b7LemauwLCzBylaCHuEBkw4oqIx+Lgv2jBUGdh0FzNkR4c+i2cXd0XbVkGk pjcQIIK/VlubVlEVlIvQKmP+nhqfarXifc1Yi1MtFoBXQYqIU9Yn6cyWwgMm3eyv 6VyzNcoD/ZX0p96trbiFsAEYsTfEFpfnHD9C5vtmaF2ypvq4bc2sg7xaEVdngc1B ykpNOj5YewuhQhOJMSRh8MdZDk20AxvzQ31V2aVPiocv2uWesAXMM0bDkT1X4Oz0 S2qZHMm/FToJ3KFwANCQ/lxZWGPeLOL8doaThIauXGIIOg== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fg2bvrkun-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 18 Jul 2026 11:12:56 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-cab3e9cd922so4220269a12.0 for ; Sat, 18 Jul 2026 04:12:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784373176; x=1784977976; darn=vger.kernel.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=FD0Wo5+4J/Xmv4o5hazcqi5DqDevELu6VcRHIJMG2h8=; b=eYYqj4otaR3d65xnyVTYet18E6tN5mfGPaEEWiCOuy0NfOEzoBROZ5W/wEAmq+RF7n MUYB/VHXSJQUs7AZynPh7hc57O9d7ws5gd3B37+w9U3mzvm9jkPWzgFPuYTrhCo0ZUJ7 uV08aKnf3A9iO+s3hIjjgrw6+eHKKlE9mhOD3oPX7VUszVAlQXbePZMmLcb4bv+bwSPS R8su/orU0huFFetprklNotQ1+n7uPz2u2/ELM5L9HmcN8xEh1z+C4TlLZit0cwtcmOOX /KORrf1D9vIELTnU4DYVokYQcD3dcguOTSzOM5aSKoP+DYJ8B7HpN4FrYVz/iJmARF3D 5GKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784373176; x=1784977976; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=FD0Wo5+4J/Xmv4o5hazcqi5DqDevELu6VcRHIJMG2h8=; b=bAzeA8S0aOu9+vG5XUwfi5hyBKZcG8bo57o8TyTIymj5jKSkM9+ZSpvdgFU6DEnT+W cddiCryaNdSq/0lQyqIdeZShsKyECTXAhyD3GlTpyz/KfnEXZNlCRpgk1Eq0bEOdOmZW 2yySpkJObbJzCHD0Ftc2jwcXm+i58+LocTqp0BMsSF7CZsDqpe4d1la5lgZStvYVDzrv OQbes9+7BW2/JGQ2ls3qqbw52J+6i+OkGJKYS+Z6hx/uzzoqk2ToY2660khAo/gsXHs0 ytW+NxYk9o0ixbokdFHW49m4t58Vf3nol9Nony5mlGRWFnsZoBFUnDnvQQaZzVuyw2Vz UTgQ== X-Forwarded-Encrypted: i=1; AHgh+RqWSLvnvH2eFypFfyMOYb9/IvpVFfmDdLkK3C9Ns8gwdvapBMnWK4GQtFPBDsOzgCzdwtifFVZWmOn4QD8=@vger.kernel.org X-Gm-Message-State: AOJu0YzSkyoXpvWolW7EyD3XbDVQsgJFzUf8jNsqqOsKMHi5O+yAtaxS 8mefMNDOg5zrXtSvCDDAoU6iw5qMUG+uPXScpCcMPW1OKKxcYRDf3SMmbCVBO//kL+mlXlyBqsa LPDrRROJf9F8iHFutXttBvMglLtiTwiPqST9sULi8dOi/SPdVa0pttjM3dgV3fxI0CVI= X-Gm-Gg: AfdE7cnjF7fkdhx4Nr61KYbkUM3Fg4FTLZRtiH7d+Op83rDY7YWHbZcLCLJIf0DVdBu 3Hgb3IAXS+WClfnL/Ldkg84qIdxQcGc3qGM3wsBTRMrEPBe887dtPCNBvMk276ZgU8Neis40SnF FPiX5BVu0Z8PXwCZTjS0rjY9FsuZb5bKlVISK2IzyvrjH62OTRB/NFgnez2JUJtsLYlz/K66Oe3 40GZx6TunPpjIZ9+Oy+LXPZCDjI1aNGA+e6EjccswBeQSLLuGglMhuv8AR0bHx2jkHUaYkn3b/c qNgJOzkNkkdrEXQHnt6KdlbpJC+4Nd+yQj/GNXR3UQ0Bkam98Icjx3LvKRdvtH1TcLQjKR+uc2r NDyN9Na+NnijkcEvIwKXFa7a89g== X-Received: by 2002:a05:6a21:7008:b0:3bf:a0e5:999f with SMTP id adf61e73a8af0-3c3ad7a439fmr7408657637.22.1784373176037; Sat, 18 Jul 2026 04:12:56 -0700 (PDT) X-Received: by 2002:a05:6a21:7008:b0:3bf:a0e5:999f with SMTP id adf61e73a8af0-3c3ad7a439fmr7408612637.22.1784373175539; Sat, 18 Jul 2026 04:12:55 -0700 (PDT) Received: from hu-mdsor-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-31429cf22b3sm17173016eec.0.2026.07.18.04.12.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Jul 2026 04:12:54 -0700 (PDT) Date: Sat, 18 Jul 2026 16:42:44 +0530 From: Mohit Dsor To: Krzysztof Kozlowski Cc: 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 , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, venkata.valluru@oss.qualcomm.com, Jessica Zhang , y@hu-mdsor-hyd.qualcomm.com Subject: Re: [PATCH v7 2/2] drm/bridge: Add Lontium LT9609C(EX/UXD) MIPI DSI to HDMI driver Message-ID: References: <20260716-lt9611c-v7-v7-0-7553a14735fc@oss.qualcomm.com> <20260716-lt9611c-v7-v7-2-7553a14735fc@oss.qualcomm.com> <85505d92-ebe3-4ffd-84e1-8fe26994e053@kernel.org> 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=us-ascii Content-Disposition: inline In-Reply-To: <85505d92-ebe3-4ffd-84e1-8fe26994e053@kernel.org> X-Proofpoint-GUID: Alzulpt7H45SRAfRAEap86UI8Q-Uow5d X-Authority-Analysis: v=2.4 cv=EcH4hvmC c=1 sm=1 tr=0 ts=6a5b5fb8 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=kj9zAlcOel0A:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=P-IC7800AAAA:8 a=EUspDBNiAAAA:8 a=Kz8-B0t5AAAA:8 a=VwQbUJbxAAAA:8 a=LoA8nqqQfEkaJn3k8OYA:9 a=CjuIK1q_8ugA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 a=d3PnA9EDa4IxuAV0gXij:22 a=RuZk68QooNbwfxovefhk:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE4MDExMyBTYWx0ZWRfXwiQeMiD+/jnd UTmgvH68yZcONqrn1Vov5xKtkg294oAhzgqVGvARyClKcC46skQ0J/inLOwi9juh2VDl3layV63 sAiG6ptVg8n43qHwSNA9GaBzY7+dMvH7R7mp1i42ui0ic/6IhGnW/eDQ44SL8oOAWQwKrcDc+eO pEwGhjsefa1N7SxWhCMo3BNPviMiNp/KMqMJagX7Y//n7LPqBs+e1+6enKuBP9fqJxmi4KPiAM4 kQsRsgPzM0YHjZFCoDwKd7ogsx+egUQWo7g0xUWzOXusx15W8Kmr+6iv1axcSdmbCNFSiLomp8B 7AO/sfzFFLOTl7heQo6hGnM4dYPll+jV3ZnJq9Lm7rCLEIUSYOuEtBG1k/+uNKUsmFM/BzMlHKm uhMS/LXHE9MO1naBoCFo3KIhnNOWB6/h6pXu38en05b8jm1WMx17bOqMwJNQgIUF9pfuEHww0lk zgSIEIJlZ+l17DKpYDg== X-Proofpoint-ORIG-GUID: Alzulpt7H45SRAfRAEap86UI8Q-Uow5d X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE4MDExMyBTYWx0ZWRfX4858nfvdcKeZ NtOHkNLZoZyAhF057TGg0i6HoPcv32xtSuuXXNIMiO5tKoQERWFErmWpzT0rcl6U7Cij7+wBLn/ LFETkv1NhQwWLgf7qxm5HDvf6YcPYIc= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-18_03,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 bulkscore=0 clxscore=1015 impostorscore=0 phishscore=0 adultscore=0 malwarescore=0 priorityscore=1501 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607180113 On Thu, Jul 16, 2026 at 02:56:02PM +0200, Krzysztof Kozlowski wrote: > On 16/07/2026 13:31, mohit.dsor@oss.qualcomm.com wrote: > > From: Sunyun Yang > > > > 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 > > > > Signed-off-by: Sunyun Yang > > Co-developed-by: Mohit Dsor > > Signed-off-by: Mohit Dsor > > --- > > MAINTAINERS | 7 + > > drivers/gpu/drm/bridge/Kconfig | 18 + > > drivers/gpu/drm/bridge/Makefile | 1 + > > drivers/gpu/drm/bridge/lontium-lt9611c.c | 1293 ++++++++++++++++++++++++++++++ > > 4 files changed, 1319 insertions(+) > > > > diff --git a/MAINTAINERS b/MAINTAINERS > > index 6dea93a41962..30be2eaf2bec 100644 > > --- a/MAINTAINERS > > +++ b/MAINTAINERS > > @@ -15184,6 +15184,13 @@ S: Maintained > > F: Documentation/devicetree/bindings/display/bridge/lontium,lt8912b.yaml > > F: drivers/gpu/drm/bridge/lontium-lt8912b.c > > > > +LONTIUM LT9611C MIPI DSI TO HDMI BRIDGE > > +M: Sunyun Yang > > +M: Mohit Dsor > > +S: Maintained > > +F: Documentation/devicetree/bindings/display/bridge/lontium,lt9611.yaml > > +F: drivers/gpu/drm/bridge/lontium-lt9611c.c > > + > > LOONGARCH > > M: Huacai Chen > > R: WANG Xuerui > > diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig > > index 4a57d49b4c6d..b8959b8e2ad0 100644 > > --- a/drivers/gpu/drm/bridge/Kconfig > > +++ b/drivers/gpu/drm/bridge/Kconfig > > @@ -177,6 +177,24 @@ config DRM_LONTIUM_LT9611 > > HDMI signals > > Please say Y if you have such hardware. > > > > +config DRM_LONTIUM_LT9611C > > + tristate "Lontium LT9611C DSI/HDMI bridge" > > + select SND_SOC_HDMI_CODEC if SND_SOC > > + depends on OF > > + select CRC8 > > + select FW_LOADER > > + select DRM_PANEL_BRIDGE > > + select DRM_KMS_HELPER > > + select DRM_MIPI_DSI > > + select DRM_DISPLAY_HELPER > > + select DRM_DISPLAY_HDMI_STATE_HELPER > > + select REGMAP_I2C > > + help > > + Driver for Lontium DSI to HDMI bridge > > + chip driver that converts dual DSI and I2S to > > + HDMI signals > > + Please say Y if you have such hardware. > > Please wrap the code to appropriate limits. I checked the others in Kconfigs they appear to be similar, still i will try to fix it. > > ... > > > + > > +static void lt9611c_reset(struct lt9611c *lt9611c) > > +{ > > + gpiod_set_value_cansleep(lt9611c->reset_gpio, 1); > > + usleep_range(10000, 12000); > > + > > + gpiod_set_value_cansleep(lt9611c->reset_gpio, 0); > > + msleep(400); > > + > > + dev_dbg(lt9611c->dev, "lt9611c reset"); > > Same comment as before. will remove all debug comments. > > > +} > > + > > > +static int lt9611c_upgrade_result(struct lt9611c *lt9611c, u8 fw_crc) > > +{ > > + struct device *dev = lt9611c->dev; > > + unsigned int crc_result; > > + > > + regmap_write(lt9611c->regmap, 0xe0ee, 0x01); > > + regmap_read(lt9611c->regmap, 0xe021, &crc_result); > > + > > + if (crc_result != fw_crc) { > > + dev_err(dev, "lt9611c fw upgrade failed, expected crc=0x%02x, read crc=0x%02x\n", > > + fw_crc, crc_result); > > + return -1; > > + } > > + > > + dev_dbg(dev, "lt9611c firmware upgrade success, crc=0x%02x\n", crc_result); > > + return 0; > > +} > > ... > > > + > > +static ssize_t lt9611c_firmware_show(struct device *dev, struct device_attribute *attr, char *buf) > > +{ > > + struct lt9611c *lt9611c = dev_get_drvdata(dev); > > + > > + return sysfs_emit(buf, "0x%04x\n", lt9611c->fw_version); > > +} > > + > > +static DEVICE_ATTR_RW(lt9611c_firmware); > > Where is this ABI documented? Will have its ABI documentation. > > > + > > +static struct attribute *lt9611c_attrs[] = { > > + &dev_attr_lt9611c_firmware.attr, > > + NULL, > > +}; > > + > > +static const struct attribute_group lt9611c_attr_group = { > > + .attrs = lt9611c_attrs, > > +}; > > + > > +static const struct attribute_group *lt9611c_attr_groups[] = { > > + <9611c_attr_group, > > + NULL, > > +}; > > + > > +static int lt9611c_probe(struct i2c_client *client) > > +{ > > + struct lt9611c *lt9611c; > > + struct device *dev = &client->dev; > > + bool fw_updated = false; > > + int ret; > > + > > + crc8_populate_msb(lt9611c_crc8_table, LT9611C_CRC_POLYNOMIAL); > > + > > + if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) > > + return dev_err_probe(dev, -ENODEV, "device doesn't support I2C\n"); > > + > > + lt9611c = devm_drm_bridge_alloc(dev, struct lt9611c, bridge, <9611c_bridge_funcs); > > + if (IS_ERR(lt9611c)) > > + return dev_err_probe(dev, PTR_ERR(lt9611c), "drm bridge alloc failed.\n"); > > + > > + lt9611c->dev = dev; > > + lt9611c->client = client; > > + lt9611c->chip_type = (uintptr_t)i2c_get_match_data(client); > > uintptr_t is not for kernel, use unsigned long. I will fix this. > > > > + > > + ret = devm_mutex_init(dev, <9611c->ocm_lock); > > + if (ret) > > + return dev_err_probe(dev, ret, "failed to init mutex\n"); > > + > > + lt9611c->regmap = devm_regmap_init_i2c(client, <9611c_regmap_config); > > + if (IS_ERR(lt9611c->regmap)) > > + return dev_err_probe(dev, PTR_ERR(lt9611c->regmap), "regmap i2c init failed\n"); > > + > > + ret = lt9611c_parse_dt(dev, lt9611c); > > + if (ret) > > + return dev_err_probe(dev, ret, "failed to parse device tree\n"); > > + > > + ret = lt9611c_gpio_init(lt9611c); > > + if (ret < 0) > > + goto err_of_put; > > + > > + ret = lt9611c_regulator_init(lt9611c); > > + if (ret < 0) > > + goto err_of_put; > > + > > + ret = regulator_bulk_enable(ARRAY_SIZE(lt9611c->supplies), lt9611c->supplies); > > + if (ret) > > + goto err_of_put; > > + > > + lt9611c_reset(lt9611c); > > + > > + lt9611c_lock(lt9611c); > > + > > + ret = lt9611c_read_chipid(lt9611c); > > + if (ret < 0) { > > + dev_err(dev, "failed to read chip id.\n"); > > + lt9611c_unlock(lt9611c); > > + goto err_disable_regulators; > > + } > > + > > +retry: > > + lt9611c->fw_version = lt9611c_read_version(lt9611c); > > + if (lt9611c->fw_version < 0) { > > + dev_err(dev, "failed to read fw version\n"); > > + ret = -EOPNOTSUPP; > > + lt9611c_unlock(lt9611c); > > + goto err_disable_regulators; > > + > > + } else if (lt9611c->fw_version == 0) { > > + if (!fw_updated) { > > + fw_updated = true; > > + ret = lt9611c_firmware_upgrade(lt9611c); > > + if (ret < 0) { > > + lt9611c_unlock(lt9611c); > > + goto err_disable_regulators; > > + } > > + > > + goto retry; > > + > > + } else { > > + dev_err(dev, "fw version 0x%04x, update failed\n", lt9611c->fw_version); > > + ret = -EOPNOTSUPP; > > + lt9611c_unlock(lt9611c); > > + goto err_disable_regulators; > > + } > > + } > > + > > + lt9611c_unlock(lt9611c); > > + dev_dbg(dev, "current version:0x%04x", lt9611c->fw_version); > > + > > + INIT_WORK(<9611c->work, lt9611c_hpd_work); > > + > > + ret = devm_request_threaded_irq(&client->dev, client->irq, NULL, > > + lt9611c_irq_thread_handler, > > + IRQF_TRIGGER_FALLING | > > + IRQF_ONESHOT | > > + IRQF_NO_AUTOEN, > > + "lt9611c", lt9611c); > > + if (ret) { > > + dev_err(dev, "failed to request irq\n"); > > + goto err_disable_regulators; > > + } > > + > > + lt9611c->bridge.of_node = client->dev.of_node; > > + lt9611c->bridge.ops = DRM_BRIDGE_OP_DETECT | > > + DRM_BRIDGE_OP_EDID | > > + DRM_BRIDGE_OP_HPD | > > + DRM_BRIDGE_OP_HDMI | > > + DRM_BRIDGE_OP_HDMI_AUDIO; > > + lt9611c->bridge.type = DRM_MODE_CONNECTOR_HDMIA; > > + > > + lt9611c->bridge.vendor = "Lontium"; > > + lt9611c->bridge.product = "LT9611C"; > > + > > + lt9611c->bridge.hdmi_audio_dev = dev; > > + lt9611c->bridge.hdmi_audio_max_i2s_playback_channels = 8; > > + lt9611c->bridge.hdmi_audio_dai_port = 2; > > + > > + devm_drm_bridge_add(dev, <9611c->bridge); > > + > > + /* Attach primary DSI */ > > + lt9611c->dsi0 = lt9611c_attach_dsi(lt9611c, lt9611c->dsi0_node); > > + if (IS_ERR(lt9611c->dsi0)) { > > + ret = PTR_ERR(lt9611c->dsi0); > > + goto err_remove_bridge; > > + } > > + > > + /* Attach secondary DSI, if specified */ > > + if (lt9611c->dsi1_node) { > > + lt9611c->dsi1 = lt9611c_attach_dsi(lt9611c, lt9611c->dsi1_node); > > + if (IS_ERR(lt9611c->dsi1)) { > > + ret = PTR_ERR(lt9611c->dsi1); > > + goto err_remove_bridge; > > + } > > + } > > + > > + lt9611c->hdmi_connected = false; > > + i2c_set_clientdata(client, lt9611c); > > + enable_irq(client->irq); > > + > > + lt9611c_reset(lt9611c); > > + return 0; > > + > > +err_remove_bridge: > > + cancel_work_sync(<9611c->work); > > + > > +err_disable_regulators: > > + regulator_bulk_disable(ARRAY_SIZE(lt9611c->supplies), lt9611c->supplies); > > + > > +err_of_put: > > + of_node_put(lt9611c->dsi1_node); > > + of_node_put(lt9611c->dsi0_node); > > + > > + return ret; > > +} > > + > > +static void lt9611c_remove(struct i2c_client *client) > > +{ > > + struct lt9611c *lt9611c = i2c_get_clientdata(client); > > + > > + cancel_work_sync(<9611c->work); > > + regulator_bulk_disable(ARRAY_SIZE(lt9611c->supplies), lt9611c->supplies); > > + of_node_put(lt9611c->dsi1_node); > > + of_node_put(lt9611c->dsi0_node); > > +} > > + > > +static int lt9611c_bridge_suspend(struct device *dev) > > +{ > > + struct lt9611c *lt9611c = dev_get_drvdata(dev); > > + int ret; > > + > > + dev_dbg(lt9611c->dev, "suspend\n"); > > Same comments. Will remove these debug prints. > > > This does not look like useful printk message. Drivers should be silent > on success: > https://elixir.bootlin.com/linux/v6.15-rc7/source/Documentation/process/coding-style.rst#L913 > https://elixir.bootlin.com/linux/v6.15-rc7/source/Documentation/process/debugging/driver_development_debugging_guide.rst#L79 > > Best regards, > Krzysztof