From patchwork Thu Jul 25 19:45:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Heiko_St=C3=BCbner?= X-Patchwork-Id: 13742142 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id AE33CC3DA49 for ; Thu, 25 Jul 2024 19:47:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-Type: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=Do2P1zFlXtFeqoWsE1WTSWai5PnMqIbw2QI8jTlzTrk=; b=vaaz9KB0iXUVmIfpaa08R4QY8c v3axMZwY9j/1oMgGhQZ2W6GP7bK+LUCsXvxYgTxFXPzFx/U5vQr3TqrKLjCUqD5xBAEOEh/Lz9CPp DS9WWa+Jxbj+ipi9XZgQjAA+RgDjIQ9Bo/AMqF+T+dWfIDeArS5ZK4ZFclrufOBo/wwrXMEonRxE+ qHUhlWGE/gkZz/D6FN4VGKuKA4g8zvYGgmOhvymQFsu5DvZCaCIGV9ojgFJoq385DVbNABiVBG6s8 3sPoLdw/rx+xJOHg379zmHxR/Q9loswNGE4Jr+lYen3iGGiz/jbNaNeN5e27Nh9095HU/H6GDX5bj bFgeqbwg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sX4RG-00000001wok-26Wb; Thu, 25 Jul 2024 19:47:46 +0000 Received: from gloria.sntech.de ([185.11.138.130]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sX4Pd-00000001w92-043P; Thu, 25 Jul 2024 19:46:10 +0000 Received: from i5e860cdd.versanet.de ([94.134.12.221] helo=phil.lan) by gloria.sntech.de with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sX4PN-0001rD-GO; Thu, 25 Jul 2024 21:45:49 +0200 From: Heiko Stuebner To: lee@kernel.org, jdelvare@suse.com, linux@roeck-us.net, dmitry.torokhov@gmail.com, pavel@ucw.cz Cc: robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, heiko@sntech.de, ukleinek@debian.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-hwmon@vger.kernel.org, linux-input@vger.kernel.org, linux-leds@vger.kernel.org Subject: [PATCH 0/7] Drivers to support the MCU on QNAP NAS devices Date: Thu, 25 Jul 2024 21:45:32 +0200 Message-Id: <20240725194539.1780790-1-heiko@sntech.de> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240725_124605_118527_8906DA73 X-CRM114-Status: GOOD ( 18.58 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org This implements a set of drivers for the MCU used on QNAP NAS devices. Of course no documentation for the serial protocol is available, so thankfully QNAP has a tool on their rescue-inird to talk to the MCU and I found interceptty [0] to listen to what goes over the serial connection. In general it looks like there are two different generations in general, an "EC" device and now this "MCU" - referenced in the strings of the userspace handlers for those devices. For the MCU "SPEC3" and "SPEC4" are listed which is configured in the model.conf of the device. When setting the value from SPEC4 to SPEC3 on my TS433, the supported commands change, but the command interface stays the same and especially the version command is the same. The binding also does not expose any interals of the device that might change, so hopefully there shouldn't be big roadblocks to support different devices, apart from possibly adapting the commands. [0] https://github.com/geoffmeyers/interceptty Heiko Stuebner (7): dt-bindings: mfd: add binding for qnap,mcu devices mfd: add base driver for qnap-mcu devices leds: add driver for LEDs from qnap-mcu devices Input: add driver for the input part of qnap-mcu devices hwmon: add driver for the hwmon parts of qnap-mcu devices arm64: dts: rockchip: hook up the MCU on the QNAP TS433 arm64: dts: rockchip: set hdd led labels on qnap-ts433 .../devicetree/bindings/mfd/qnap,mcu.yaml | 43 +++ .../boot/dts/rockchip/rk3568-qnap-ts433.dts | 58 +++ drivers/hwmon/Kconfig | 12 + drivers/hwmon/Makefile | 1 + drivers/hwmon/qnap-mcu-hwmon.c | 352 +++++++++++++++++ drivers/input/misc/Kconfig | 12 + drivers/input/misc/Makefile | 1 + drivers/input/misc/qnap-mcu-input.c | 156 ++++++++ drivers/leds/Kconfig | 11 + drivers/leds/Makefile | 1 + drivers/leds/leds-qnap-mcu.c | 247 ++++++++++++ drivers/mfd/Kconfig | 10 + drivers/mfd/Makefile | 2 + drivers/mfd/qnap-mcu.c | 356 ++++++++++++++++++ include/linux/mfd/qnap-mcu.h | 28 ++ 15 files changed, 1290 insertions(+) create mode 100644 Documentation/devicetree/bindings/mfd/qnap,mcu.yaml create mode 100644 drivers/hwmon/qnap-mcu-hwmon.c create mode 100644 drivers/input/misc/qnap-mcu-input.c create mode 100644 drivers/leds/leds-qnap-mcu.c create mode 100644 drivers/mfd/qnap-mcu.c create mode 100644 include/linux/mfd/qnap-mcu.h