From mboxrd@z Thu Jan 1 00:00:00 1970 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 8A365C433EF for ; Sat, 27 Nov 2021 22:35:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=N8ANvMKc6qRhDcNYjIeOZQdrRZ+9pfniGNhNKK0e5kA=; b=Kw2iwshDharNDn QHSYA8Xd07/86p3HY55cwQ4QNsK+Lhy3v83sBP83XDgy8SLuZmqRF388zTyjgVF6mh41kyJr++CX2 ImzcHILuCTfWBamuhlc+dVGgCcMTXnu2eEmaYDzUCP7sTrRkEC7oBlaa6/oM9mwWu4Ft6Now6HcxD Ul0ITykSEDop3NfC+jhRAE4778BtpZvFsJBkLwJwCbUnwVyOu1mQwEU/N0zLyPIXl99/SxozfKjNX O8Lr6RZfBRl5zkbr7hkR0VVgB+IttKDqIE/cboaUXe9asN5qH51TaRRZycgMX1CBjAhvzSI99/bZ1 QrqVSaDceTf6kAPFyWCQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mr6Fk-00EUn4-Cu; Sat, 27 Nov 2021 22:33:04 +0000 Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mr6Fg-00EUlf-Lh for linux-arm-kernel@lists.infradead.org; Sat, 27 Nov 2021 22:33:02 +0000 Received: by mail-wr1-x432.google.com with SMTP id o13so27192444wrs.12 for ; Sat, 27 Nov 2021 14:32:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=z2taSSZqsXJEO0VA8diRrTsYi9SJ790CZvpQPDqqNZE=; b=LOur6N1y5xzdgX12hTaFwltrnm5zvCLhWldD+Rl9jlEvfMRldDw40M/x6oPSkO19i4 23Fzx9L9CebdnPb0FvEVBqSK5jKmxlKjINOJDQwEeVtkcwoAN0Q791DBiWB0m7yjJsGw 90nFt5fwo9dY7PkYiy/O6Crz9dRXXVu7yWD2zwr4u+/M3p/svEWz653H9RXoF2sj8Gb5 zh8sXclIRRcGbdG8czsj5cPoXuGjLLsJukLPI5ul96EsU6IGcWk3aQy8T1KPIvG4lw/7 ucdhjOVs2FXQayU0+yPz3UEYB/Z/YLJPvVh9PME8xAOdymyd/VBl7m1UHXucZb9bZSZM 8Xbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=z2taSSZqsXJEO0VA8diRrTsYi9SJ790CZvpQPDqqNZE=; b=iy+wwjB831crXwTWSCdc2DyBtsX3oQcSi9G+gQ7QeoHfRhgMTb9HfklkbtDIrKlIKO ltV9SKFI3IfIkSk6laSLhliRdsm+zwpRDepFbvslkDPBa7aM815sX2pozq3rJZuiGBLZ td4JbQvNpV4YukuYRRdlQBvoEWIeTXSyVB2R0B6YwWJyZRxMCJLV/BRFgEbiVGtyQA3c PwMJKDTF+zGOzehdzXMn6seFeBeJPiPfGK9t2ONEZxqgT8mHs8+F+PFWdYqcRzXRkmra cOnWJhyGn/DHmXrY/INv6q9DRKo2znj27gSOBo27TmQFBtWhvKs21gwMTGzZkaT/oVgy dpAw== X-Gm-Message-State: AOAM533DnF7p4Kj9wMs7LL14aYpVFTk5Cll2o4s0GrZr6SBukduDcNTZ X1mgpWgMvD8mBnc4yXLMBPb9pg== X-Google-Smtp-Source: ABdhPJyCcnxpWR4dFaC85jKD7bENEJ80SAoHMyrFnbQIWpGsXj8wt6LmpB61URonCWXxDcNOVVklIQ== X-Received: by 2002:adf:d1e2:: with SMTP id g2mr23919419wrd.346.1638052374975; Sat, 27 Nov 2021 14:32:54 -0800 (PST) Received: from localhost ([31.134.121.151]) by smtp.gmail.com with ESMTPSA id p12sm11761288wrr.10.2021.11.27.14.32.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Nov 2021 14:32:54 -0800 (PST) From: Sam Protsenko To: Krzysztof Kozlowski , Rob Herring , Mark Brown , Greg Kroah-Hartman Cc: Jaewon Kim , Chanho Park , David Virag , Youngmin Nam , devicetree@vger.kernel.org, linux-spi@vger.kernel.org, linux-serial@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-i2c@vger.kernel.org Subject: [PATCH 0/8] soc: samsung: Add USIv2 driver Date: Sun, 28 Nov 2021 00:32:45 +0200 Message-Id: <20211127223253.19098-1-semen.protsenko@linaro.org> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211127_143300_788045_D3A05ADF X-CRM114-Status: GOOD ( 18.61 ) 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: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org USIv2 IP-core provides selectable serial protocol (UART, SPI or High-Speed I2C); only one can be chosen at a time. This series implements USIv2 driver, which allows one to select particular USI function in device tree, and also performs USI block initialization. With that driver implemented, it's not needed to do USI initialization in protocol drivers anymore, so that code is removed from the serial driver. Because USI driver is tristate (can be built as a module), serial driver was reworked so it's possible to use its console part as a module too. This way we can load serial driver module from user space and still have serial console functional. Make it impossible to build UART/SPI/I2C driver as a built-in when USIv2 driver built as a module: USIv2 configuration must be always done before tinkering with particular protocol it implements. Design features: - "reg" property contains USI registers start address (0xc0 offset); it's used in the driver to access USI_CON and USI_OPTION registers. This way all USI initialization (reset, HWACG, etc) can be done in USIv2 driver separately, rather than duplicating that code over UART/SPI/I2C drivers - System Register (system controller node) and its SW_CONF register offset are provided in "samsung,sysreg" property; it's used to select USI function (protocol to be used) - USI function is specified in "samsung,mode" property; integer value is used to simplify parsing - there is "samsung,clkreq-on" bool property, which makes driver disable HWACG control (needed for UART to work properly) - PCLK and IPCLK clocks are both provided to USI node; apparently both need to be enabled to access USI registers - protocol nodes are embedded (as a child nodes) in USI node; it allows correct init order, and reflects HW properly - USIv2 driver is a tristate: can be also useful from Android GKI requirements point of view - driver functions are implemented with further development in mind: we might want to add some SysFS interface later for example, or provide some functions to serial drivers with EXPORT_SYMBOL(), etc Sam Protsenko (8): dt-bindings: soc: samsung: Add Exynos USIv2 bindings dt-bindings: soc: samsung: Add Exynos USIv2 bindings doc soc: samsung: Add USIv2 driver tty: serial: samsung: Remove USI initialization tty: serial: samsung: Enable console as module tty: serial: Make SERIAL_SAMSUNG=y impossible when EXYNOS_USI_V2=m i2c: Make I2C_EXYNOS5=y impossible when EXYNOS_USI_V2=m spi: Make SPI_S3C64XX=y impossible when EXYNOS_USI_V2=m .../bindings/soc/samsung/exynos-usi-v2.yaml | 124 +++++++++ drivers/i2c/busses/Kconfig | 1 + drivers/soc/samsung/Kconfig | 14 + drivers/soc/samsung/Makefile | 2 + drivers/soc/samsung/exynos-usi-v2.c | 242 ++++++++++++++++++ drivers/spi/Kconfig | 1 + drivers/tty/serial/Kconfig | 3 +- drivers/tty/serial/samsung_tty.c | 57 ++--- .../dt-bindings/soc/samsung,exynos-usi-v2.h | 16 ++ include/linux/serial_s3c.h | 9 - 10 files changed, 425 insertions(+), 44 deletions(-) create mode 100644 Documentation/devicetree/bindings/soc/samsung/exynos-usi-v2.yaml create mode 100644 drivers/soc/samsung/exynos-usi-v2.c create mode 100644 include/dt-bindings/soc/samsung,exynos-usi-v2.h -- 2.30.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel