From nobody Fri Apr 3 00:00:17 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 64E611A3160 for ; Sat, 14 Feb 2026 21:28:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771104513; cv=none; b=pqPwp0lTTKpJhJvsfKwywBLlWsy9nXhKlWPo4TKf96U5Gz/veqvVz49mSJV7ZAzZZUHolgt6tbtwXdVTj9swaH4Xgn3j9FhVCljcRM+vg3EfrEVWJh3WOpOquwk+pF+JZ+cP/frNyE4KrR6b43mJ1xd2eajfqDhueIjEmtkptVo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771104513; c=relaxed/simple; bh=u1ZddsI/WQhI8eaEqdPF0fJQVKnOzdHVPnDYp7Y+e1s=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=o1ALIhYjalKCpO6vGuu0OFpKJ+nZmvWnukoxYvXeT6mmjruKU5JjlmQh3zHe9QKw5cIIO9KVRMftrWjDsYr97Hun85z/kIpJs0WygKT02n7tAaZUksds8/o3p33bOnTHeVTsx00VKXbAfofdTQTecZ9aIg5d/Eq+fvZ0zXanYUA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dP7zf9kK; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dP7zf9kK" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-483770e0b25so14012905e9.0 for ; Sat, 14 Feb 2026 13:28:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771104511; x=1771709311; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=cwGG+83RjUTUC/08TDbxavNHPg+CZ56Ung4dLehxmos=; b=dP7zf9kKUMe/Su/W1ZhPwU5Vs/G3Pb0w/wyJGdTc1zWFGfiwo2xhcnIGQo8eXWavzK d6+fU0ACh7elzqOjMi/y/SITYpU7gLVwAzQlkgOOXnLDbVBUJrT7X930mzkSMnfgWOcn KI/esFe670lnHeiezxzly4GwFMYxNrm/kOMdLUznH+EWlanN95y7gSy0QHYS+YtEKnKO ZPCL0YVkwXhRk7+xoOaq2Gv5+HSpCIjEO9oD3zsoGBhxIFd6GtPj0gYhpQeVlZm17QK7 RhhYPd+sgfmsxh8PR3Tt0ppFs0cmGhpsSquvhKOLne2h7FL/P36w2ZvNXgMcOhjjl/t+ aciA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771104511; x=1771709311; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=cwGG+83RjUTUC/08TDbxavNHPg+CZ56Ung4dLehxmos=; b=YaabWsijTcRgPx0B8peEKdHjnfvEzxtjz7k6TbKZydXIFBSRO8oNsMrv4FdAdXgkIr fT575OV69eB11uDtnr0aGE4dtnvvT+3ksAUoHuGJLeumzmjmHgM0vs3LDcQy5ae46BjJ liB1CJ3xs6c1ZLAv/3dG3H0I1k0SNtA1d/I8gnHD18lC1oZonIXnhKuOiyUyT9MdcNx+ Npdh8won4FF1Qc/4dXdEfnUWB8vZ1VghKkjrIzcz1DTDM1sPyX9+GAlxUtU94DV/Ptc1 6ku5184zfM+avRMPuh0HCGyuvrzwUmSiABU1eSHNLfkPA4fhPmKanp+P9hd2uszcDgKI mWDw== X-Forwarded-Encrypted: i=1; AJvYcCVBdBE5MS7SgH2HNWUsSb9KZOmirYFqbt7D6q99m+rsXcqUzlXRHfr6LRHa+rOebhapJZ3fH8+jKqtqQvs=@vger.kernel.org X-Gm-Message-State: AOJu0Ywpqz9dQa44RskacPMyKDT70IqFCvcvJr9oHOdKYNt/zafNqcGV 5KMarzX91txxKBS/HXiGEut+Rfjm9atoA5nTmY5t4TTFqYTTi47KIyLK X-Gm-Gg: AZuq6aJ6/JgHa2ARfvbd3/ZGeJMJJShEz/MuBre/psGFq0tymESmLtaKp5PfPhWrRW+ UPEdMWB5ntGwFn4cBg9NqyIM8RBxsT6dpfKRiSLLxoroms4ejFO9iEyz4JyaMK187Wfzv8aJUrb 35UM/UwqXWyWI7zSuGY5VZh2vMXU/MWZlpmhNhbb2rCf3YnAb/zyWYE/2Ii3fH4qrGG0rWE2zH5 T5kHLGfMnlx6DbsmkkqurRghHq+K/KX6Zae3HZcyfb24OOSFec80igAlk71uWIHdWS1Ad0PcdGs 3Dye58HOnQLVQVMF2fKJ7sNtye7iZcSevvHTjPkyzML6GBG84lcqJ6MREEseNHEblnHM8VS8I2q tcOkFftsLS2fJZxUEcm9Iu7HyJ4w3h7xMXTuVpbXevASGUgRr+oMbvDQPC2YNtZF4E4iZXuHiZ6 fKJc2V/6RdJz+AQxitfZGOSC3Levo= X-Received: by 2002:a05:600c:1da1:b0:480:25ae:9993 with SMTP id 5b1f17b1804b1-48371085c9dmr105939355e9.20.1771104510547; Sat, 14 Feb 2026 13:28:30 -0800 (PST) Received: from antoniarch ([78.212.149.151]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43796abc85csm15132661f8f.22.2026.02.14.13.28.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 14 Feb 2026 13:28:29 -0800 (PST) From: Antoni Pokusinski To: broonie@kernel.org Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Antoni Pokusinski Subject: [PATCH] spi: omap2-mcspi: add support for 3-wire transfers Date: Sat, 14 Feb 2026 22:28:00 +0100 Message-ID: <20260214212800.262461-1-apokusinski01@gmail.com> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Update omap_mcspi_setup_transfer() so that the driver supports communication over a single data line for 3-wire SPI devices. Signed-off-by: Antoni Pokusinski --- drivers/spi/spi-omap2-mcspi.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c index 70bb74b3bd9c..bf4c3770bc7f 100644 --- a/drivers/spi/spi-omap2-mcspi.c +++ b/drivers/spi/spi-omap2-mcspi.c @@ -943,10 +943,16 @@ static int omap2_mcspi_setup_transfer(struct spi_devi= ce *spi, =20 l =3D mcspi_cached_chconf0(spi); =20 - /* standard 4-wire host mode: SCK, MOSI/out, MISO/in, nCS - * REVISIT: this controller could support SPI_3WIRE mode. - */ - if (mcspi->pin_dir =3D=3D MCSPI_PINDIR_D0_IN_D1_OUT) { + if (spi->mode & SPI_3WIRE) { + if (t && !t->tx_buf) { + l &=3D ~OMAP2_MCSPI_CHCONF_IS; + l |=3D OMAP2_MCSPI_CHCONF_DPE0; + } else if (t && !t->rx_buf) { + l |=3D OMAP2_MCSPI_CHCONF_IS; + l &=3D ~OMAP2_MCSPI_CHCONF_DPE0; + } + l |=3D OMAP2_MCSPI_CHCONF_DPE1; + } else if (mcspi->pin_dir =3D=3D MCSPI_PINDIR_D0_IN_D1_OUT) { l &=3D ~OMAP2_MCSPI_CHCONF_IS; l &=3D ~OMAP2_MCSPI_CHCONF_DPE1; l |=3D OMAP2_MCSPI_CHCONF_DPE0; @@ -1179,6 +1185,7 @@ static int omap2_mcspi_transfer_one(struct spi_contro= ller *ctlr, omap2_mcspi_set_cs(spi, spi->mode & SPI_CS_HIGH); =20 if (par_override || + (spi->mode & SPI_3WIRE) || (t->speed_hz !=3D spi->max_speed_hz) || (t->bits_per_word !=3D spi->bits_per_word)) { par_override =3D 1; @@ -1486,7 +1493,7 @@ static int omap2_mcspi_probe(struct platform_device *= pdev) return -ENOMEM; =20 /* the spi->mode bits understood by this driver: */ - ctlr->mode_bits =3D SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; + ctlr->mode_bits =3D SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | SPI_3WIRE; ctlr->bits_per_word_mask =3D SPI_BPW_RANGE_MASK(4, 32); ctlr->setup =3D omap2_mcspi_setup; ctlr->auto_runtime_pm =3D true; --=20 2.53.0