From nobody Thu Apr 2 23:54:51 2026 Received: from mx0a-00128a01.pphosted.com (mx0a-00128a01.pphosted.com [148.163.135.77]) (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 8122D3382EC; Wed, 25 Mar 2026 22:32:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.135.77 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774477947; cv=none; b=Py/kZJ8yTvgP5cVFVhGK74N6IBjj9gxzlul8NqdsJ69DF6axkyhziWSiVvJL0DxHUZ3xPz6hKpqXzzBbyd6BNvdYK/OjO9y6L15O82xEa0DSiwpBwH+9OSXzkFb12eiz0FyLdqEp6EViitdXt0qgLKbM9KrxkV0wT7Qh092Y5TA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774477947; c=relaxed/simple; bh=AfAqT8JHwrYqUWmTu5Ys4CtZOYcQMHvpI3fqf+daNZs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=OpSHRgBopffA7BzbIlIQ1KVIopCDQu5rf6tbUKP8ZUTWMk++MGwUbiS8M+6G9/vzkd7q8NxTN2ZEk6GgN7MUmXt3+UDn2llWQX+CQXKE+aFD1IcR/88OlmujjTJ1BWyzdmYU+6yOiTt8zWGL62+DEDzG5bi7nz9fuDTjks8iWJ4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com; spf=pass smtp.mailfrom=analog.com; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b=IQPkNjML; arc=none smtp.client-ip=148.163.135.77 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=analog.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b="IQPkNjML" Received: from pps.filterd (m0516787.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62PJ8i2E3262248; Wed, 25 Mar 2026 18:32:18 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=DKIM; bh=quph0 Va7DGCB0/RYgJGz91Pd6uU0z4Tq38pafhYItNs=; b=IQPkNjMLbydRMnVZd9Fim 8RF52qAHqZRcMLe+yPj6ihRvqZE6LS1MgutqhdZePFL8yuOnaMUz+Fon2IXE4quO Dtn2Jtz6QmGGlpTTM5rzjOjw9C655BCw2qi3n0GoOIYULJpySfYnRNYF1pemJklg 5qHUSnXmVpGC8jF+FTna76V5sHdasG0BnNkLS+uBRKqjKwgGsVn5E1nO3lECkH2l Z65qD6bTyddy1U4Nh5WYe96NXdaIgOK/GtXtNDYCeHC5pwO12g8LnscFBgqX8O4i PruniZeipYQ7bGq3WpgOS4/XbQYzebhlCfZlsReB16Q4daMURlbtLAVEB834/c0V Q== Received: from nwd2mta4.analog.com ([137.71.173.58]) by mx0a-00128a01.pphosted.com (PPS) with ESMTPS id 4d4gygt3wd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Mar 2026 18:32:17 -0400 (EDT) Received: from ASHBMBX8.ad.analog.com (ASHBMBX8.ad.analog.com [10.64.17.5]) by nwd2mta4.analog.com (8.14.7/8.14.7) with ESMTP id 62PMWGC3054877 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 25 Mar 2026 18:32:16 -0400 Received: from ASHBMBX8.ad.analog.com (10.64.17.5) by ASHBMBX8.ad.analog.com (10.64.17.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Wed, 25 Mar 2026 18:32:16 -0400 Received: from zeus.spd.analog.com (10.66.68.11) by ashbmbx8.ad.analog.com (10.64.17.5) with Microsoft SMTP Server id 15.2.1748.37 via Frontend Transport; Wed, 25 Mar 2026 18:32:16 -0400 Received: from HYB-VFz9h4bIQxi.ad.analog.com (HYB-VFz9h4bIQxi.ad.analog.com [10.118.4.22]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id 62PMW4ai032703; Wed, 25 Mar 2026 18:32:12 -0400 From: Jan Carlo Roleda Date: Thu, 26 Mar 2026 06:30:10 +0800 Subject: [PATCH v2 1/3] Add Maintainers to LTC3208 LED Driver 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: <20260326-upstream-ltc3208-v2-1-3dbc992b6098@analog.com> References: <20260326-upstream-ltc3208-v2-0-3dbc992b6098@analog.com> In-Reply-To: <20260326-upstream-ltc3208-v2-0-3dbc992b6098@analog.com> To: Lee Jones , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley CC: , , , Jan Carlo Roleda X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1774477924; l=781; i=jancarlo.roleda@analog.com; s=20260317; h=from:subject:message-id; bh=AfAqT8JHwrYqUWmTu5Ys4CtZOYcQMHvpI3fqf+daNZs=; b=meBcbicmoS09Ngtv4gzZDnLkmfHPKsHiEuq9h0KVCo6//IppyMM0ONtFWCjkSFZOMknR3e340 Jad3pTOz5tABBYIgJzlkLjfLfq5WLSjGEA/GNZBnH5J5TTIVqTPsDmJ X-Developer-Key: i=jancarlo.roleda@analog.com; a=ed25519; pk=zPMh+eO6/Mj6tqaie75BLiTLQvE3f9pck0UejKLmLMc= X-ADIRuleOP-NewSCL: Rule Triggered X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI1MDE2NyBTYWx0ZWRfX99sVAMdQwqPg Rk7+yIBzuQue9gEJ3uJSIupFOXNlxGNAVr3laMhmgU9klxQISS6dudfB3yzx6cOfnbBu1EJ2DQr uwSkSwTEHzcs/1/kirrUW66YTBcLsQvpUwJtzX4Bc99R33HtPR+gIv8sNhvG7wpo3G/nPMxYt2K /cQlYgDx7f6VFhcLpg/DIkCzmGsB3pXQ4StTedu9ngRcOVt3hAg4TpuKLfNdNatoMcAm2Hk9QsW Edd9yJBlpUIxbb9K1Bu0k6Tx1TYLfIerd6uaTTwIaa++/y9WVz4l/1TKUcuqYho+Q666elS5imM VYSpHvYVc7UdrRJR00bJU93UdZqd+p+Qcm4nMEdyoldPFcpzFnTibP6ex+/Oops2uvL3Z9SKZKN Q7NDu9VSK3Vnf1xakgEIsYH1d3nj9z8xsWOklupWPFTZMa0kg1leNhpuPbDlz6X8y5gGae8WH1U 43SoP+kkIKSp+jXLFCA== X-Authority-Analysis: v=2.4 cv=ZsTg6t7G c=1 sm=1 tr=0 ts=69c46271 cx=c_pps a=3WNzaoukacrqR9RwcOSAdA==:117 a=3WNzaoukacrqR9RwcOSAdA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=0sLvza09kfJOxVLZPwjg:22 a=OmVn7CZJonkx5R5zMQLL:22 a=gAnH3GRIAAAA:8 a=VwQbUJbxAAAA:8 a=gDHzu7jOUVDSfYWjZv0A:9 a=QEXdDO2ut3YA:10 X-Proofpoint-ORIG-GUID: ZxF-88sE1-BVm8EYtR_W-5EccJz7okfY X-Proofpoint-GUID: ZxF-88sE1-BVm8EYtR_W-5EccJz7okfY X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-25_06,2026-03-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 priorityscore=1501 suspectscore=0 impostorscore=0 adultscore=0 clxscore=1015 malwarescore=0 lowpriorityscore=0 bulkscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603250167 Adds maintainer reference for the LTC3208 LED Driver. Signed-off-by: Jan Carlo Roleda --- MAINTAINERS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 55af015174a5..3f3331d7272a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -15126,6 +15126,12 @@ W: https://ez.analog.com/linux-software-drivers F: Documentation/devicetree/bindings/iio/temperature/adi,ltc2983.yaml F: drivers/iio/temperature/ltc2983.c =20 +LTC3208 LED DRIVER +M: Jan Carlo Roleda +L: linux-leds@vger.kernel.org +S: Maintained +W: https://ez.analog.com/linux-software-drivers + LTC4282 HARDWARE MONITOR DRIVER M: Nuno Sa L: linux-hwmon@vger.kernel.org --=20 2.43.0 From nobody Thu Apr 2 23:54:51 2026 Received: from mx0a-00128a01.pphosted.com (mx0a-00128a01.pphosted.com [148.163.135.77]) (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 0F90B309EE9; Wed, 25 Mar 2026 22:32:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.135.77 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774477951; cv=none; b=l/H7cc4RftVFFBYQ7uyp/mUcUSUvnDal4Tx+ZU9ECieX2XbZ/UHjQx+VCbDKxPhCGzPi5ajPs8wD0Epd/hsuzQ4VRt3urwJaaYzBITN1qfTbMy99qFYM54N3DILkQ707y/e72TbLN+56+4RABUZK8D3iZ40c2yKrRvBYhaEzGEs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774477951; c=relaxed/simple; bh=ursab/n2AiJf6C5AZD21xV3n11Oj8/12y2M7o6GYEA4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=Nydk9Z1D5bS8RzdXKn6v9jSBVzwOn6BVEUXPxX/tRDuv6G9ajBHv5IMQ3RlEyphYW9U3bMGpapxrXdCoT3gdc3yIiO6byhqn0HTETPSpY4ehHa99XCz/IQn+RfDVq5UTxM+72w3wbrq7fToQc8qvN9740JPiDMEr4vqxjslWr6k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com; spf=pass smtp.mailfrom=analog.com; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b=o2vswXYZ; arc=none smtp.client-ip=148.163.135.77 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=analog.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b="o2vswXYZ" Received: from pps.filterd (m0167088.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62PKMJwT039446; Wed, 25 Mar 2026 18:32:21 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=DKIM; bh=VPaEn dXXV6gdKYfFDumFMzxEiVrqbQDqq7Bywu9T+dw=; b=o2vswXYZaSmJa4HaUsSSj bd8HpNvpkhCCznAbSEd/ccy+2hvY/XOVxclAnlCiB2WNOReSLkP0lG5pxCuUVyrR bqRC6JGIgX9Jlu/LIWaxXR++cYoRVdoB5QlDCv+nOguuHvRqTRvVLHBO/cQzejq5 5sYP8EIuJCIGPl+iaFL9ct8ZdatSGU26MmcqEssRTlhKT0JQuFgwI2jwo48pWuej vhcRsWxs6uhWx6QW7VUD8EgYYeIvXR5Q6JP/rcQhJxM1//ld1i6gxXHAceu1GokH YErjKJCTWSfD533lxAj4XkWNpX4jn86JHwrnBqW7XrkaYVQAC6GVVqhXdZ19oi/n w== Received: from nwd2mta4.analog.com ([137.71.173.58]) by mx0a-00128a01.pphosted.com (PPS) with ESMTPS id 4d3un5gssh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Mar 2026 18:32:21 -0400 (EDT) Received: from ASHBMBX9.ad.analog.com (ASHBMBX9.ad.analog.com [10.64.17.10]) by nwd2mta4.analog.com (8.14.7/8.14.7) with ESMTP id 62PMWKpH054884 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 25 Mar 2026 18:32:20 -0400 Received: from ASHBCASHYB4.ad.analog.com (10.64.17.132) by ASHBMBX9.ad.analog.com (10.64.17.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Wed, 25 Mar 2026 18:32:19 -0400 Received: from ASHBMBX8.ad.analog.com (10.64.17.5) by ASHBCASHYB4.ad.analog.com (10.64.17.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Wed, 25 Mar 2026 18:32:19 -0400 Received: from zeus.spd.analog.com (10.66.68.11) by ashbmbx8.ad.analog.com (10.64.17.5) with Microsoft SMTP Server id 15.2.1748.37 via Frontend Transport; Wed, 25 Mar 2026 18:32:19 -0400 Received: from HYB-VFz9h4bIQxi.ad.analog.com (HYB-VFz9h4bIQxi.ad.analog.com [10.118.4.22]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id 62PMW4aj032703; Wed, 25 Mar 2026 18:32:15 -0400 From: Jan Carlo Roleda Date: Thu, 26 Mar 2026 06:30:11 +0800 Subject: [PATCH v2 2/3] leds: ltc3208: add driver 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: <20260326-upstream-ltc3208-v2-2-3dbc992b6098@analog.com> References: <20260326-upstream-ltc3208-v2-0-3dbc992b6098@analog.com> In-Reply-To: <20260326-upstream-ltc3208-v2-0-3dbc992b6098@analog.com> To: Lee Jones , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley CC: , , , Jan Carlo Roleda X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1774477924; l=11825; i=jancarlo.roleda@analog.com; s=20260317; h=from:subject:message-id; bh=ursab/n2AiJf6C5AZD21xV3n11Oj8/12y2M7o6GYEA4=; b=kUg/y6z4mlXmtYqVVl0t/O2/Cjt5ALQ0QXk8m7Z2E4ySs4k8jNSWMzb1FXCRsRemIOnVfLqQm pNN5ou0H+kGCZoHtsJtPVKmPCPvR8v7mF7B2b3aw0UW08RisG4mP/U/ X-Developer-Key: i=jancarlo.roleda@analog.com; a=ed25519; pk=zPMh+eO6/Mj6tqaie75BLiTLQvE3f9pck0UejKLmLMc= X-ADIRuleOP-NewSCL: Rule Triggered X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI1MDE2NyBTYWx0ZWRfX1Yccy6bI0TOg 0cyvk1SoDcpFj0oWmjmb+zzNPFOIfLu0T6u24UWTp9EkdPO+YQYqPBtOUwjw4/WY6Gn87Hfba3+ MfbFQR8MgJWMj68TBGkEHrh5ro3FVE5gB9Ep2nquPpEyLCYWTKlF0viYmf6jLWcUJ+oMY7iXHfw 03OJvkzTM1/3j6ecLMlpCQ0p5ujRkg7q7F05ApPPHsXu4So7BNO84MwbUPMpM2ZOH4dEZ1zP8Sb sAhRAx+/ZCEZWvsHivhaXwuBF8m/EO+ED9tAFcOmRy9X/EPc5NkWGPm4xS15KOy/MYA61oysWG4 5Qi/UalYhubIBJqgNI52uxmqL7WpK6eWhlTaSpbZb54mplUxrSSm5ycxM7ScH4rIBxZdAd40maU 3HL3+mgx1XaSLAtHisyQAVeDtgqom+8yhKb8WBJ98eZB/dlPCu3FHBpEOl9IJTNuIgQBd4BzKwa j2agMwgqi+k1BF9HQNw== X-Proofpoint-ORIG-GUID: WwFzaXWUfOrn-uQOLOXhJn_Wh2uYoeer X-Authority-Analysis: v=2.4 cv=GdQaXAXL c=1 sm=1 tr=0 ts=69c46275 cx=c_pps a=3WNzaoukacrqR9RwcOSAdA==:117 a=3WNzaoukacrqR9RwcOSAdA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=0sLvza09kfJOxVLZPwjg:22 a=uXIjobp8t2wMuQ0fPvqm:22 a=gAnH3GRIAAAA:8 a=VwQbUJbxAAAA:8 a=pd7qEwP8XzxV70z26qgA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-GUID: WwFzaXWUfOrn-uQOLOXhJn_Wh2uYoeer X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-25_06,2026-03-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 phishscore=0 spamscore=0 priorityscore=1501 bulkscore=0 malwarescore=0 impostorscore=0 clxscore=1015 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603250167 Kernel driver implementation for LTC3208 Multidisplay LED Driver Signed-off-by: Jan Carlo Roleda --- MAINTAINERS | 1 + drivers/leds/Kconfig | 11 ++ drivers/leds/Makefile | 1 + drivers/leds/leds-ltc3208.c | 298 ++++++++++++++++++++++++++++++++++++++++= ++++ 4 files changed, 311 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 3f3331d7272a..48bae02057d5 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -15131,6 +15131,7 @@ M: Jan Carlo Roleda L: linux-leds@vger.kernel.org S: Maintained W: https://ez.analog.com/linux-software-drivers +F: drivers/leds/leds-ltc3208.c =20 LTC4282 HARDWARE MONITOR DRIVER M: Nuno Sa diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig index 597d7a79c988..867b120ea8ba 100644 --- a/drivers/leds/Kconfig +++ b/drivers/leds/Kconfig @@ -1029,6 +1029,17 @@ config LEDS_ACER_A500 This option enables support for the Power Button LED of Acer Iconia Tab A500. =20 +config LEDS_LTC3208 + tristate "LED Driver for Analog Devices LTC3208" + depends on LEDS_CLASS && I2C + select REGMAP_I2C + help + Say Y to enable the LTC3208 LED driver. + This supports the LED device LTC3208. + + To compile this driver as a module, choose M here: the module will + be called ltc3208. + source "drivers/leds/blink/Kconfig" =20 comment "Flash and Torch LED drivers" diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile index 8fdb45d5b439..b08b539112b6 100644 --- a/drivers/leds/Makefile +++ b/drivers/leds/Makefile @@ -61,6 +61,7 @@ obj-$(CONFIG_LEDS_LP8788) +=3D leds-lp8788.o obj-$(CONFIG_LEDS_LP8860) +=3D leds-lp8860.o obj-$(CONFIG_LEDS_LP8864) +=3D leds-lp8864.o obj-$(CONFIG_LEDS_LT3593) +=3D leds-lt3593.o +obj-$(CONFIG_LEDS_LTC3208) +=3D leds-ltc3208.o obj-$(CONFIG_LEDS_MAX5970) +=3D leds-max5970.o obj-$(CONFIG_LEDS_MAX77650) +=3D leds-max77650.o obj-$(CONFIG_LEDS_MAX77705) +=3D leds-max77705.o diff --git a/drivers/leds/leds-ltc3208.c b/drivers/leds/leds-ltc3208.c new file mode 100644 index 000000000000..65e65cd73d73 --- /dev/null +++ b/drivers/leds/leds-ltc3208.c @@ -0,0 +1,298 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * LED driver for Analog Devices LTC3208 Multi-Display Driver + * + * Copyright 2026 Analog Devices Inc. + * + * Author: Jan Carlo Roleda + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define LTC3208_SET_HIGH_BYTE_DATA(x) FIELD_PREP(GENMASK(7, 4), (x)) + +/* Registers */ +#define LTC3208_REG_A_GRNRED 0x1 /* Green (High half-byte) and Red (Low ha= lf-byte) current DAC*/ +#define LTC3208_REG_B_AUXBLU 0x2 /* AUX (High half-byte) and Blue (Low hal= f-byte) current DAC*/ +#define LTC3208_REG_C_MAIN 0x3 /* Main current DAC */ +#define LTC3208_REG_D_SUB 0x4 /* Sub current DAC */ +#define LTC3208_REG_E_AUX 0x5 /* AUX DAC Select */ +#define LTC3208_REG_F_CAM 0x6 /* CAM (High half-byte and Low half-byte) cu= rrent DAC*/ +#define LTC3208_REG_G_OPT 0x7 /* Device Options */ + +/* Device Options register */ +#define LTC3208_OPT_CPO_MASK GENMASK(7, 6) +#define LTC3208_OPT_DIS_RGBDROP BIT(3) +#define LTC3208_OPT_DIS_CAMHILO BIT(2) +#define LTC3208_OPT_EN_RGBS BIT(1) + +/* Auxiliary DAC select masks */ +#define LTC3208_AUX1_MASK GENMASK(1, 0) +#define LTC3208_AUX2_MASK GENMASK(3, 2) +#define LTC3208_AUX3_MASK GENMASK(5, 4) +#define LTC3208_AUX4_MASK GENMASK(7, 6) + +#define LTC3208_MAX_BRIGHTNESS_4BIT 0xF +#define LTC3208_MAX_BRIGHTNESS_8BIT 0xFF + +#define LTC3208_NUM_LED_GRPS 8 +#define LTC3208_NUM_AUX_LEDS 4 + +#define LTC3208_NUM_AUX_OPT 4 +#define LTC3208_MAX_CPO_OPT 3 + +enum ltc3208_aux_channel { + LTC3208_AUX_CHAN_AUX =3D 0, + LTC3208_AUX_CHAN_MAIN, + LTC3208_AUX_CHAN_SUB, + LTC3208_AUX_CHAN_CAM +}; + +enum ltc3208_channel { + LTC3208_CHAN_MAIN =3D 0, + LTC3208_CHAN_SUB, + LTC3208_CHAN_AUX, + LTC3208_CHAN_CAML, + LTC3208_CHAN_CAMH, + LTC3208_CHAN_RED, + LTC3208_CHAN_BLUE, + LTC3208_CHAN_GREEN +}; + +static const char * const ltc3208_dt_aux_channels[] =3D { + "adi,aux1-channel", "adi,aux2-channel", + "adi,aux3-channel", "adi,aux4-channel" +}; + +static const char * const ltc3208_aux_opt[] =3D { + "aux", "main", "sub", "cam" +}; + + +struct ltc3208_led { + struct led_classdev cdev; + struct i2c_client *client; + enum ltc3208_channel channel; +}; + +struct ltc3208_dev { + struct i2c_client *client; + struct regmap *map; + struct ltc3208_led *leds; +}; + +static const struct regmap_config ltc3208_regmap_cfg =3D { + .reg_bits =3D 8, + .val_bits =3D 8, +}; + +static int ltc3208_led_set_brightness(struct led_classdev *led_cdev, + enum led_brightness brightness) +{ + struct ltc3208_led *led =3D container_of(led_cdev, + struct ltc3208_led, cdev); + struct i2c_client *client =3D led->client; + struct ltc3208_dev *dev =3D i2c_get_clientdata(client); + struct regmap *map =3D dev->map; + u8 current_level =3D brightness; + + /* + * For registers with 4-bit splits (CAM, AUX/BLUE, GREEN/RED), the other + * half of the byte will be retrieved from the stored DAC value before + * updating the register. + */ + switch (led->channel) { + case LTC3208_CHAN_MAIN: + return regmap_write(map, LTC3208_REG_C_MAIN, current_level); + case LTC3208_CHAN_SUB: + return regmap_write(map, LTC3208_REG_D_SUB, current_level); + case LTC3208_CHAN_AUX: + /* combine both low and high halves of byte */ + current_level =3D LTC3208_SET_HIGH_BYTE_DATA(current_level); + current_level |=3D dev->leds[LTC3208_CHAN_BLUE].cdev.brightness; + return regmap_write(map, LTC3208_REG_B_AUXBLU, current_level); + case LTC3208_CHAN_BLUE: + /* apply high bits stored in other led */ + current_level |=3D LTC3208_SET_HIGH_BYTE_DATA( + dev->leds[LTC3208_CHAN_AUX].cdev.brightness); + return regmap_write(map, LTC3208_REG_B_AUXBLU, current_level); + case LTC3208_CHAN_CAMH: + current_level =3D LTC3208_SET_HIGH_BYTE_DATA(current_level); + current_level |=3D dev->leds[LTC3208_CHAN_CAML].cdev.brightness; + return regmap_write(map, LTC3208_REG_F_CAM, current_level); + case LTC3208_CHAN_CAML: + current_level |=3D LTC3208_SET_HIGH_BYTE_DATA( + dev->leds[LTC3208_CHAN_CAMH].cdev.brightness); + return regmap_write(map, LTC3208_REG_F_CAM, current_level); + case LTC3208_CHAN_GREEN: + current_level =3D LTC3208_SET_HIGH_BYTE_DATA(current_level); + current_level |=3D dev->leds[LTC3208_CHAN_RED].cdev.brightness; + return regmap_write(map, LTC3208_REG_A_GRNRED, current_level); + case LTC3208_CHAN_RED: + current_level |=3D LTC3208_SET_HIGH_BYTE_DATA( + dev->leds[LTC3208_CHAN_GREEN].cdev.brightness); + return regmap_write(map, LTC3208_REG_A_GRNRED, current_level); + default: + dev_err(&client->dev, "Invalid LED Channel\n"); + return -EINVAL; + } +} + +static int ltc3208_update_options(struct ltc3208_dev *dev, + bool is_sub, bool is_cam_hi, bool is_rgb_drop) +{ + struct regmap *map =3D dev->map; + u8 val =3D FIELD_PREP(LTC3208_OPT_EN_RGBS, is_sub) | + FIELD_PREP(LTC3208_OPT_DIS_CAMHILO, is_cam_hi) | + FIELD_PREP(LTC3208_OPT_DIS_RGBDROP, is_rgb_drop); + + return regmap_write(map, LTC3208_REG_G_OPT, val); +} + +static int ltc3208_update_aux_dac(struct ltc3208_dev *dev, + enum ltc3208_aux_channel aux_1, enum ltc3208_aux_channel aux_2, + enum ltc3208_aux_channel aux_3, enum ltc3208_aux_channel aux_4) +{ + struct regmap *map =3D dev->map; + u8 val =3D FIELD_PREP(LTC3208_AUX1_MASK, aux_1) | + FIELD_PREP(LTC3208_AUX2_MASK, aux_2) | + FIELD_PREP(LTC3208_AUX3_MASK, aux_3) | + FIELD_PREP(LTC3208_AUX4_MASK, aux_4); + + return regmap_write(map, LTC3208_REG_E_AUX, val); +} + +static int ltc3208_probe(struct i2c_client *client) +{ + enum ltc3208_aux_channel aux_channels[LTC3208_NUM_AUX_LEDS]; + struct ltc3208_dev *data; + struct ltc3208_led *leds; + struct regmap *map; + int ret, i; + u32 val; + bool dropdis_rgb_aux4; + bool dis_camhl; + bool en_rgbs; + + map =3D devm_regmap_init_i2c(client, <c3208_regmap_cfg); + if (IS_ERR(map)) + return dev_err_probe(&client->dev, PTR_ERR(map), + "Failed to initialize regmap\n"); + + data =3D devm_kzalloc(&client->dev, sizeof(*data), GFP_KERNEL); + if (!data) + return -ENOMEM; + + leds =3D devm_kcalloc(&client->dev, LTC3208_NUM_LED_GRPS, + sizeof(struct ltc3208_led), GFP_KERNEL); + if (!leds) + return -ENOMEM; + + data->client =3D client; + data->map =3D map; + + /* initialize options from devicetree */ + dis_camhl =3D device_property_read_bool(&client->dev, + "adi,disable-camhl-pin"); + en_rgbs =3D device_property_read_bool(&client->dev, + "adi,cfg-enrgbs-pin"); + dropdis_rgb_aux4 =3D device_property_read_bool(&client->dev, + "adi,disable-rgb-aux4-dropout"); + + ret =3D ltc3208_update_options(data, en_rgbs, dis_camhl, + dropdis_rgb_aux4); + if (ret) + return dev_err_probe(&client->dev, ret, + "error writing to options register\n"); + + /* initialize aux channel configurations from devicetree */ + for (i =3D 0; i < LTC3208_NUM_AUX_LEDS; i++) { + ret =3D device_property_match_property_string(&client->dev, + ltc3208_dt_aux_channels[i], + ltc3208_aux_opt, + LTC3208_NUM_AUX_OPT); + /* use default value if absent in devicetree */ + if (ret =3D=3D -EINVAL) + aux_channels[i] =3D LTC3208_AUX_CHAN_AUX; + else if (ret >=3D 0) + aux_channels[i] =3D ret; + else + return dev_err_probe(&client->dev, ret, + "Failed getting aux-channel.\n"); + } + + ret =3D ltc3208_update_aux_dac(data, aux_channels[0], aux_channels[1], + aux_channels[2], aux_channels[3]); + if (ret) + return dev_err_probe(&client->dev, ret, + "error writing to aux %u channel register.\n", i); + + i2c_set_clientdata(client, data); + + device_for_each_child_node_scoped(&client->dev, child) { + struct ltc3208_led *led; + struct led_init_data init_data =3D {}; + + ret =3D fwnode_property_read_u32(child, "reg", &val); + if (ret || val >=3D LTC3208_NUM_LED_GRPS) + return dev_err_probe(&client->dev, -EINVAL, + "Invalid reg property for LED\n"); + + led =3D &leds[val]; + led->client =3D client; + led->channel =3D val; + led->cdev.brightness_set_blocking =3D ltc3208_led_set_brightness; + led->cdev.max_brightness =3D LTC3208_MAX_BRIGHTNESS_4BIT; + if (val =3D=3D LTC3208_CHAN_MAIN || val =3D=3D LTC3208_CHAN_SUB) + led->cdev.max_brightness =3D LTC3208_MAX_BRIGHTNESS_8BIT; + + init_data.fwnode =3D child; + + ret =3D devm_led_classdev_register_ext(&client->dev, &led->cdev, + &init_data); + if (ret) + return dev_err_probe(&client->dev, ret, + "Failed to register LED %u\n", val); + } + + data->leds =3D leds; + + return 0; +} + +static const struct of_device_id ltc3208_match_table[] =3D { + {.compatible =3D "adi,ltc3208"}, + { } +}; +MODULE_DEVICE_TABLE(of, ltc3208_match_table); + +static const struct i2c_device_id ltc3208_idtable[] =3D { + { "ltc3208" }, + { } +}; +MODULE_DEVICE_TABLE(i2c, ltc3208_idtable); + +static struct i2c_driver ltc3208_driver =3D { + .driver =3D { + .name =3D "ltc3208", + .of_match_table =3D ltc3208_match_table, + }, + .id_table =3D ltc3208_idtable, + .probe =3D ltc3208_probe, +}; +module_i2c_driver(ltc3208_driver); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Jan Carlo Roleda "); +MODULE_DESCRIPTION("LTC3208 LED Driver"); --=20 2.43.0 From nobody Thu Apr 2 23:54:51 2026 Received: from mx0a-00128a01.pphosted.com (mx0a-00128a01.pphosted.com [148.163.135.77]) (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 756AB35DA7B; Wed, 25 Mar 2026 22:32:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.135.77 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774477950; cv=none; b=szylcTh/IwWSi8O6lipwSE3mbkw+ZCB1oeZ1Do2EJEAKxF/oukXDHdMRymzQN1dcFixhwGMwLQdQYgRTCc/ktP6x9cj/szqSIE71g0/L54osGpSykKadtmcEdU9J4RjlxsmEJJAlSKQWwl5fDv3gmEUKvPaLSTfzEhwEEsSiKQY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774477950; c=relaxed/simple; bh=tJuvdhJxmWTI0Sx5YELI4sXXkyHVhV2DJahJAn+GNRw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=amWIEamwDV6uOtP53A+BbgH1mNzx7gM0h+dkeboFyIxe2Jje8HBNhIfAz7aBqhybvNYSqPY5FepWte318J5ummJES5hALV1yd6YLLL/6oJXoybRxAJzf/K9oh1sYAnTL1M6pY1y6nlcwiyp0BrcXhFfD6G15AZrx/5XC76jh/dM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com; spf=pass smtp.mailfrom=analog.com; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b=FhpMVubn; arc=none smtp.client-ip=148.163.135.77 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=analog.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b="FhpMVubn" Received: from pps.filterd (m0516787.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62PJ8i2G3262248; Wed, 25 Mar 2026 18:32:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=DKIM; bh=6Lddh Gto96KfcjWemUfO/EkQriBTYvBAYn8cKlTQpPk=; b=FhpMVubnCTzQx/vwC5Mn1 Ff4bTp4+/DGYZOjwcwvjiIWMil0tSTfwYyzHKt/W11Qku91o+qyMUf4G6kWKHoUP v/fBHYoYsV9iDp9u81dtnvRh3V2sFwrD+eMV8sfDT6wl1mh8HckHT+oCnl9DRdYu G98a9cELF+HJDPni40OvRjKvAr4g3zTirE63LVevsEkoAzb/EiJrrcUk97W0Tp4O Zh0QSV/ZLCYx9SHbvojpZ9Im/dcoOpjdZsnQ6BTjYQkzWL/MMPwf+5+SKNRESdyg 5+lk3FYRlFB+t1MlOAslD18Sjxrhw41ynP23bhPTKWRFyg2KhGRZTKTkDy7suftW w== Received: from nwd2mta4.analog.com ([137.71.173.58]) by mx0a-00128a01.pphosted.com (PPS) with ESMTPS id 4d4gygt3wt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Mar 2026 18:32:26 -0400 (EDT) Received: from ASHBMBX9.ad.analog.com (ASHBMBX9.ad.analog.com [10.64.17.10]) by nwd2mta4.analog.com (8.14.7/8.14.7) with ESMTP id 62PMWPtY054898 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 25 Mar 2026 18:32:25 -0400 Received: from ASHBCASHYB5.ad.analog.com (10.64.17.133) by ASHBMBX9.ad.analog.com (10.64.17.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Wed, 25 Mar 2026 18:32:25 -0400 Received: from ASHBMBX8.ad.analog.com (10.64.17.5) by ASHBCASHYB5.ad.analog.com (10.64.17.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Wed, 25 Mar 2026 18:32:25 -0400 Received: from zeus.spd.analog.com (10.66.68.11) by ashbmbx8.ad.analog.com (10.64.17.5) with Microsoft SMTP Server id 15.2.1748.37 via Frontend Transport; Wed, 25 Mar 2026 18:32:25 -0400 Received: from HYB-VFz9h4bIQxi.ad.analog.com (HYB-VFz9h4bIQxi.ad.analog.com [10.118.4.22]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id 62PMW4ak032703; Wed, 25 Mar 2026 18:32:17 -0400 From: Jan Carlo Roleda Date: Thu, 26 Mar 2026 06:30:12 +0800 Subject: [PATCH v2 3/3] dt-bindings: leds: Document LTC3208 Multidisplay LED Driver 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: <20260326-upstream-ltc3208-v2-3-3dbc992b6098@analog.com> References: <20260326-upstream-ltc3208-v2-0-3dbc992b6098@analog.com> In-Reply-To: <20260326-upstream-ltc3208-v2-0-3dbc992b6098@analog.com> To: Lee Jones , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley CC: , , , Jan Carlo Roleda X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1774477924; l=5265; i=jancarlo.roleda@analog.com; s=20260317; h=from:subject:message-id; bh=tJuvdhJxmWTI0Sx5YELI4sXXkyHVhV2DJahJAn+GNRw=; b=q1RHIPFP181TRu0IxAs8ERMvIjT1aRN1oini1clzLq+vEbpo9y89zfAndzEHXk0MSxlAxD8lB 5j+7j7XhCAUBF3Y/RoFwSUAP64roOGlbULsuzPoh7GqAYbJNFMElpjq X-Developer-Key: i=jancarlo.roleda@analog.com; a=ed25519; pk=zPMh+eO6/Mj6tqaie75BLiTLQvE3f9pck0UejKLmLMc= X-ADIRuleOP-NewSCL: Rule Triggered X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI1MDE2NyBTYWx0ZWRfX6kWAY34lH5sB CKSKPc3R8yp7FdnfPjKl5VyRgQbkLnZHnwoj7jux8/O+b+WGOarwLSKyn2qRhQqFZ+L8VIaaZxa tTjM3EsGVbhxiaDtB7Nr4f2fQCS4xdYF3lpPbA8pyGkfbE15Nu5xmSxKW9qClTWLhE9gnYQdkyK i6p62/CdeaOaFr7KNFoyZ4IMqZiLM/vqJYjijubCMQ/hfWrDZAo6UySWuyFoZcTdB+hj+tghioD uiaIEZwaAL3lMteb2qCYU5fWZbdazwwCUf/Jt+Qy4IIchQB+FJpGJAalgBJ0qaqRVeWGXMpIZGQ 1H3Khui2aU6FjYbB65Vt9QlSwr3QM8qX93Str6ZEm4zNehATdwWczX6pL+FEQwUdeubopbAK1VN Jzfdsos7uKR5ltYt0BQgcmC1wj5HpAUCP56t1fGeOWxrY9HvCAHTP6HUr+BnSvMeOd7TnWyFN3m xL3QAzSBU4y8fvb9+rw== X-Authority-Analysis: v=2.4 cv=ZsTg6t7G c=1 sm=1 tr=0 ts=69c4627a cx=c_pps a=3WNzaoukacrqR9RwcOSAdA==:117 a=3WNzaoukacrqR9RwcOSAdA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=0sLvza09kfJOxVLZPwjg:22 a=OmVn7CZJonkx5R5zMQLL:22 a=gEfo2CItAAAA:8 a=gAnH3GRIAAAA:8 a=VwQbUJbxAAAA:8 a=DfgavVszv1SWYE2HNeIA:9 a=QEXdDO2ut3YA:10 a=sptkURWiP4Gy88Gu7hUp:22 X-Proofpoint-ORIG-GUID: Zxvp9udrzTlp0cdxKRgVvgRBqRtgtiwO X-Proofpoint-GUID: Zxvp9udrzTlp0cdxKRgVvgRBqRtgtiwO X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-25_06,2026-03-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 priorityscore=1501 suspectscore=0 impostorscore=0 adultscore=0 clxscore=1015 malwarescore=0 lowpriorityscore=0 bulkscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603250167 Add Documentation for LTC3208 Multidisplay LED Driver. Signed-off-by: Jan Carlo Roleda --- .../devicetree/bindings/leds/adi,ltc3208.yaml | 158 +++++++++++++++++= ++++ MAINTAINERS | 1 + 2 files changed, 159 insertions(+) diff --git a/Documentation/devicetree/bindings/leds/adi,ltc3208.yaml b/Docu= mentation/devicetree/bindings/leds/adi,ltc3208.yaml new file mode 100644 index 000000000000..c139937936bc --- /dev/null +++ b/Documentation/devicetree/bindings/leds/adi,ltc3208.yaml @@ -0,0 +1,158 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright (c) 2026 Analog Devices, Inc. +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/leds/adi,ltc3208.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: LTC3208 Multidisplay LED Controller from Linear Technologies (Now A= nalog Devices). + +maintainers: + - Jan Carlo Roleda + +description: + The LTC3208 is a multidisplay LED controller that can support up to 1A t= o all + connected LEDs. + + The datasheet for this device can be found in + https://www.analog.com/en/products/ltc3208.html + +properties: + compatible: + const: adi,ltc3208 + + reg: + maxItems: 1 + + '#address-cells': + const: 1 + + '#size-cells': + const: 0 + + adi,disable-camhl-pin: + type: boolean + description: + Configures whether the external CAMHL pin is disabled. + if disabled then the output pins associated with CAM will always sel= ect + the CAM register's high half-byte brightness. + + adi,cfg-enrgbs-pin: + type: boolean + description: + Configures which channel the ENRGBS pin toggles when it receives a s= ignal. + ENRGBS pin controls the SUB channel's output pins if this is set, + or RGB channel's output pins if this is unset. + + adi,disable-rgb-aux4-dropout: + type: boolean + description: + Configures the RGB and AUX4 dropout signals to be disabled. + + adi,aux1-channel: + $ref: /schemas/types.yaml#/definitions/string + description: + LED Channel that the AUX1 output pin mirrors its brightness level fr= om. + enum: [aux, main, sub, cam] + default: aux + + adi,aux2-channel: + $ref: /schemas/types.yaml#/definitions/string + description: + LED Channel that the AUX2 output pin mirrors its brightness level fr= om. + enum: [aux, main, sub, cam] + default: aux + + adi,aux3-channel: + $ref: /schemas/types.yaml#/definitions/string + description: + LED Channel that the AUX3 output pin mirrors its brightness level fr= om. + enum: [aux, main, sub, cam] + default: aux + + adi,aux4-channel: + $ref: /schemas/types.yaml#/definitions/string + description: + LED Channel that the AUX4 output pin mirrors its brightness level fr= om. + enum: [aux, main, sub, cam] + default: aux + +patternProperties: + "^led@[0-7]$": + type: object + $ref: /schemas/leds/common.yaml# + unevaluatedProperties: false + properties: + reg: + description: + LED Channel Number. each channel maps to a specific channel grou= p used + to configure the brightness level of the output pins correspondi= ng to + the channel. + enum: + - 0 # Main Channel (8-bit brightness) + - 1 # Sub Channel (8-bit brightness) + - 2 # AUX Channel (4-bit brightness) + - 3 # Camera Channel, Low-side byte (4-bit brightness) + - 4 # Camera Channel, High-side byte (4-bit brightness) + - 5 # Red Channel (4-bit brightness) + - 6 # Blue Channel (4-bit brightness) + - 7 # Green Channel (4-bit brightness) + required: + - reg + +required: + - compatible + - reg + +additionalProperties: false + +examples: + - | + #include + #include + i2c { + #address-cells =3D <1>; + #size-cells =3D <0>; + + led-controller@1b { + compatible =3D "adi,ltc3208"; + reg =3D <0x1b>; + #address-cells =3D <1>; + #size-cells =3D <0>; + adi,disable-camhl-pin; + adi,cfg-enrgbs-pin; + adi,disable-rgb-aux4-dropout; + + led@0 { + reg =3D <0>; + }; + + led@1 { + reg =3D <1>; + }; + + led@2 { + reg =3D <2>; + }; + + led@3 { + reg =3D <3>; + }; + + led@4 { + reg =3D <4>; + }; + + led@5 { + reg =3D <5>; + }; + + led@6 { + reg =3D <6>; + }; + + led@7 { + reg =3D <7>; + }; + }; + }; diff --git a/MAINTAINERS b/MAINTAINERS index 48bae02057d5..97072e906928 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -15131,6 +15131,7 @@ M: Jan Carlo Roleda L: linux-leds@vger.kernel.org S: Maintained W: https://ez.analog.com/linux-software-drivers +F: Documentation/devicetree/bindings/leds/adi,ltc3208.yaml F: drivers/leds/leds-ltc3208.c =20 LTC4282 HARDWARE MONITOR DRIVER --=20 2.43.0