From patchwork Fri Jan 19 10:45:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tudor Ambarus X-Patchwork-Id: 13523584 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 39626C4725D for ; Fri, 19 Jan 2024 10:46:28 +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=eIcQXrmX9ihldvYUCD75AXpjIFpRKm5rZdGTJItpFi0=; b=BiqalMINQFQt76 um3GDIdt+IzRww9xJMUC+8TbdHPR69QLymL6P9IMOAnlyANBzpzPsrFTQ9FjbAbYApkAKw/I+8Ucu 0wmhvQGKQOxXL+7u6hKcT0niAZHhBum4GATSCSoM/ZpYUl8I8zYIArHkBgzPsKGJXDmgoH2RJc1yg qfuh9pUC7mwpTeyXst2B5p8KkxTsUrqB3aIUE/yUDk3LGNxCV3G9LaD9XEELqdezxUF+aKL3x2Mx8 l3oD9AL5lcArHptdF3nCTIc+d9D90g0ZM2vlAj4Zxkf6veWh+vRUWjpEZpkwfj08WHz8kaZMVeYFE rRdD88H9UEj1g1n7IB7g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rQmNe-0057OZ-0d; Fri, 19 Jan 2024 10:45:46 +0000 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rQmNS-0057Hk-0X for linux-arm-kernel@lists.infradead.org; Fri, 19 Jan 2024 10:45:36 +0000 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-40e76626170so6696865e9.2 for ; Fri, 19 Jan 2024 02:45:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1705661129; x=1706265929; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=TRxs0NWwWxBVnyJFL82XUAw/ceJBDe/nczpSFhzocgU=; b=jUdqAmNJFqiDdegH9qzugOM2MtBhsGt19vN+RdePuTN/to6pMQfyPoU2MKa6QOJXDu sVdb5yytH3ylHQ8GFpP09qlKlKL/RdlUwfS0XUImv5u/LX10V35hMZMab+b4nuUfq56g XEoYapvaqOiD+gR9N2vtrHZiQ9GnfV0q53HsmOGcMJz//0yhmFCdMDoB56SZu4vLw8IV qt0fIaXx2pqqRNCQJyfWVwUhJq3FgyJuX4TwVa46898I1px3VUPcYTBrYwg7RKSC6ARk MfzHUsXRR55rFpjUXtcuON08zaNbN4r46H9SHslu6VNnjTrA9Dcpw6hZOwNQ39hbEAhQ 2dGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705661129; x=1706265929; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=TRxs0NWwWxBVnyJFL82XUAw/ceJBDe/nczpSFhzocgU=; b=Yby5ZOR2hwRxdZ9S6Kn9ff9ckvTnbKp5VESJF1C6ymNCR2ZNQtDI6udB9n+jNjOH11 jfrVylFQ8ixoecV3/fwCW5gRLPnCkRzopnfPRraoYeT/4xXmjusH6+1C3WbKN5VAn1Co CTgJxrLXVmCHo1Dz0aNpb6WAcUAPrGh4NBq1t3rhXYbyCHAd8xp/aKQlvGnE+S7eolSQ dSHlEklu1R+qCTHEP1XtMSqLLsX/bLnj9mLNQnHwSRelKYNqwhJ5qXPrlVJZWL5bRisR 130GQfossyT+kuoTUQkVpw2BcFD13Q4C7NPtV+tTeEqdpqXYu6xaJMFEHeTP5V3mbrbd W8ug== X-Gm-Message-State: AOJu0Yxd5b6K4rmnkuLPSE61rNYD8vnNdksbDTvemTRnwVa22nUzYOzg MDvyF50HjB4w9Nx7hWrgs5nYpLIZT7HCH5ZnVl0f4pIyCfsD5jzv28mKgMqi2/yvGRGcpC0Vi9o g X-Google-Smtp-Source: AGHT+IFjSCHISAyQZXPRew6O4KYFv6iza6RGr4KnVm5escIqDFiLDADJBjJJc7J7sedhZIcv7t1OAg== X-Received: by 2002:a7b:c8ce:0:b0:40e:956b:7447 with SMTP id f14-20020a7bc8ce000000b0040e956b7447mr1014191wml.131.1705661129567; Fri, 19 Jan 2024 02:45:29 -0800 (PST) Received: from ta2.c.googlers.com.com (88.140.78.34.bc.googleusercontent.com. [34.78.140.88]) by smtp.gmail.com with ESMTPSA id fm16-20020a05600c0c1000b0040ea10178f3sm77470wmb.21.2024.01.19.02.45.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 19 Jan 2024 02:45:29 -0800 (PST) From: Tudor Ambarus To: gregkh@linuxfoundation.org, jirislaby@kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org Cc: alim.akhtar@samsung.com, linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, andre.draszik@linaro.org, kernel-team@android.com, peter.griffin@linaro.org, semen.protsenko@linaro.org, willmcvicker@google.com, Tudor Ambarus Subject: [PATCH v2 00/19] serial: samsung: gs101 updates and winter cleanup Date: Fri, 19 Jan 2024 10:45:07 +0000 Message-ID: <20240119104526.1221243-1-tudor.ambarus@linaro.org> X-Mailer: git-send-email 2.43.0.429.g432eaa2c6b-goog MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240119_024534_210458_FEF42802 X-CRM114-Status: GOOD ( 18.81 ) 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 Changes in v2: - put as first patch in the series the patch that fixes tx_empty() to return TIOCSER_TEMT. Did that so that it can be easily backported to the stable kernels without other dependencies. Add fixes tag for the same patch. - follow with a dt-bindings patch that was missed in the initial submission. Krzysztof asked to be queued through the tty tree. - split a 81 length line in 2 lines in patch ``tty: serial: samsung: don't compare with zero an if (bitwise expression)`` Update the commit message. - drop extra ``!!`` on methods already returning bool - update commit message and be more verbose in the patch that shrinks the clock selection to 8 clocks. - use bool for has_divslot instead of bitfield. We don't expect more flags soon that would bypass the first cacheline of ``struct s3c24xx_uart_info``. Bitfields operations incur performance penalty when set or read as compared to direct types, bool shall be fine for now. Hi, The patch set is intended for v6.9 and is expected to be queued through Greg's tty tree. The patch set includes updates for GS101 so that we infer the IO type from the compatible. This is because the GS101 Peripheral Blocks, which include the serial, only allow 32-bit register accesses. So instead of specifying the reg-io-width = 4 property everywhere, deduce the iotype from the compatible. The GS101 patches were previously proposed at: Link: https://lore.kernel.org/linux-arm-kernel/20240109125814.3691033-1-tudor.ambarus@linaro.org/ The patch set includes some cleanup changes that started as a consequence of trying to reduce the memory footprint of the ``struct s3c24xx_uart_info``. For arm32 the struct was not as bad defined as for arm64, because all its members could fit in the same cacheline. But for arm64 we started from: struct s3c24xx_uart_info { const char * name; /* 0 8 */ enum s3c24xx_port_type type; /* 8 4 */ unsigned int port_type; /* 12 4 */ unsigned int fifosize; /* 16 4 */ /* XXX 4 bytes hole, try to pack */ long unsigned int rx_fifomask; /* 24 8 */ long unsigned int rx_fifoshift; /* 32 8 */ long unsigned int rx_fifofull; /* 40 8 */ long unsigned int tx_fifomask; /* 48 8 */ long unsigned int tx_fifoshift; /* 56 8 */ /* --- cacheline 1 boundary (64 bytes) --- */ long unsigned int tx_fifofull; /* 64 8 */ unsigned int def_clk_sel; /* 72 4 */ /* XXX 4 bytes hole, try to pack */ long unsigned int num_clks; /* 80 8 */ long unsigned int clksel_mask; /* 88 8 */ long unsigned int clksel_shift; /* 96 8 */ long unsigned int ucon_mask; /* 104 8 */ unsigned int has_divslot:1; /* 112: 0 4 */ /* size: 120, cachelines: 2, members: 16 */ /* sum members: 104, holes: 2, sum holes: 8 */ /* sum bitfield members: 1 bits (0 bytes) */ /* padding: 4 */ /* bit_padding: 31 bits */ /* last cacheline: 56 bytes */ }; and after the cleaning we get to: struct s3c24xx_uart_info { const char * name; /* 0 8 */ enum s3c24xx_port_type type; /* 8 4 */ unsigned int port_type; /* 12 4 */ unsigned int fifosize; /* 16 4 */ u32 rx_fifomask; /* 20 4 */ u32 rx_fifoshift; /* 24 4 */ u32 rx_fifofull; /* 28 4 */ u32 tx_fifomask; /* 32 4 */ u32 tx_fifoshift; /* 36 4 */ u32 tx_fifofull; /* 40 4 */ u32 clksel_mask; /* 44 4 */ u32 clksel_shift; /* 48 4 */ u32 ucon_mask; /* 52 4 */ u8 def_clk_sel; /* 56 1 */ u8 num_clks; /* 57 1 */ u8 iotype; /* 58 1 */ bool has_divslot; /* 59 1 */ /* size: 64, cachelines: 1, members: 17 */ /* padding: 4 */ }; Also note that sorting the include files in alphabetic order in the driver revealed some problems that were fixed with the following patches: Link: https://lore.kernel.org/linux-arm-kernel/20240110074007.4020016-1-tudor.ambarus@linaro.org/ Link: https://lore.kernel.org/linux-kernel/20240109141045.3704627-1-tudor.ambarus@linaro.org/ Cheers, ta Tudor Ambarus (19): tty: serial: samsung: fix tx_empty() to return TIOCSER_TEMT dt-bindings: serial: samsung: do not allow reg-io-width for gs101 tty: serial: samsung: prepare for different IO types tty: serial: samsung: set UPIO_MEM32 iotype for gs101 tty: serial: samsung: add gs101 earlycon support tty: serial: samsung: sort headers alphabetically tty: serial: samsung: explicitly include tty: serial: samsung: use u32 for register interactions tty: serial: samsung: remove braces on single statement block tty: serial: samsung: move open brace '{' on the next line tty: serial: samsung: drop superfluous comment tty: serial: samsung: make max_count unsigned int tty: serial: samsung: don't compare with zero an if (bitwise expression) tty: serial: samsung: return bool for s3c24xx_serial_txempty_nofifo() tty: serial: samsung: return bool for s3c24xx_serial_console_txrdy() tty: serial: samsung: change return type for s3c24xx_serial_rx_fifocnt() tty: serial: samsung: shrink the clock selection to 8 clocks tty: serial: samsung: change has_divslot type to bool tty: serial: samsung: shrink memory footprint of ``struct s3c24xx_uart_info`` .../bindings/serial/samsung_uart.yaml | 2 + drivers/tty/serial/samsung_tty.c | 245 ++++++++++-------- 2 files changed, 141 insertions(+), 106 deletions(-)