From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 A071A502D5C; Mon, 28 Sep 2026 22:25:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790634324; cv=none; b=AX8Mb3z5EYXvgbLuVbANSAJHjJfdogDjnsPfMmOVhXDQYWSBtB9izwkulrB814wWcu0SB95hRX+N9+uFBqlgV6psaQYSuvaeytxTwZVgLIualqcKhZ5xMfcTC9vOHwprSAePkWIQswQYrlrpyVwI58UMuGJiy7/DcTYNuoHmm9E= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790634324; c=relaxed/simple; bh=H2zxDgEjF+coNEQ7GExnYBbjhEVdCPu19AJKTxP2Rz4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qsevVHNC3X6nl36ExItc4gL/RopawoaBjxfwU8bvjbMcMcusiug9wBfePUWJRkkjzjYFPRcdvqQ/P9du5TSgZCaMBAbX299jKWnn+iodw5erZMVAsoD+HPO/tbZnmqyhgJXsJy1z7OsoeWKu/ykGCyujNsU2T6PdLYBCyEU224w= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jrQ90JnY; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jrQ90JnY" Received: by smtp.kernel.org (Postfix) with ESMTPS id 67F80C4AF13; Mon, 28 Sep 2026 22:25:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1790634324; bh=H2zxDgEjF+coNEQ7GExnYBbjhEVdCPu19AJKTxP2Rz4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=jrQ90JnYdWxuHL/L7ZM2RJSD17xZKS71Y14LaF+9iLJnrpvHQZYfC4nglaBQBbq4N A8pibtD43428tBe1X1PG0KQI+wvZTpSO2xDeQ41BbCHPJ9qib+dZmV9wP8bfEj9Y/N 81h7ZJuWDZb9SArpYeN+GXAOoBIEUCcSVez9c+pmVW/ew6OxhmzJyH+b1tKF8Sz+YC aMeTawWLhpfvULUDTV97Uwh3wU60lmVOXjxbEWkXMT/qlrs2nl26sRs2RJJEInb3Tf H9Nd7TxW9SeIFp8FjW7Tf+wXS5hKarsml3oZ8XRqUARCWAx8qmfIVStQ092Y0XV9AW 8N/BxZU6jRdyw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 524CECA5FAF; Mon, 28 Sep 2026 22:25:24 +0000 (UTC) From: Selvamani Rajagopal via B4 Relay Date: Mon, 28 Sep 2026 15:25:11 -0700 Subject: [PATCH net-next v8 04/11] net: ethernet: oa_tc6: Move constant definitions to header file Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Message-Id: <20260928-s2500-mac-phy-support-v8-4-7e011aacc309@onsemi.com> References: <20260928-s2500-mac-phy-support-v8-0-7e011aacc309@onsemi.com> In-Reply-To: <20260928-s2500-mac-phy-support-v8-0-7e011aacc309@onsemi.com> To: Selva Rajagopal , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Piergiorgio Beruto , Parthiban Veerasooran , Simon Horman , Jonathan Corbet , Shuah Khan , Randy Dunlap , Richard Cochran , Andrew Lunn , Heiner Kallweit , Russell King Cc: Selva Rajagopal , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, Jerry Ray X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1790634319; l=9122; i=Selvamani.Rajagopal@onsemi.com; s=20260531; h=from:subject:message-id; bh=qeI+8KBI4qtzm8l3GwDfBDjUmGvvFuLrnh1WlKx7wT4=; b=gksISXm0ey5ojx926SqgpZu/NQaSeYRblpy+xi4XxkwlrtZuUu3cfTd0amCn99Zjq5O9KWE8C JbJqY2SAMmlCDgg03TSY4YlknbACeO8SwsFsTS+zGUcw8Yuf8DBrq9j X-Developer-Key: i=Selvamani.Rajagopal@onsemi.com; a=ed25519; pk=5QRdM0HS/LGWWcUZZ9hVfZ+qbPQGZCumcTXOiN7Fyug= X-Endpoint-Received: by B4 Relay for Selvamani.Rajagopal@onsemi.com/20260531 with auth_id=803 X-Original-From: Selvamani Rajagopal Reply-To: Selvamani.Rajagopal@onsemi.com From: Selvamani Rajagopal To help other source files within the module share the constant definitions, some of the definitions from oa_tc6.c are moved to a header file. This header file is still private to OA TC6 framework. oa_tc6 structure is also moved to this header file as it is needed for other source files that are part of OA TC6 framework. Signed-off-by: Selvamani Rajagopal --- changes in v8: - Merged with latest base version's changes changes in v7 - No change changes in v6 - No change changes in v5 - No change changes in v4 - Added MMS values 1 and 12, which are used now changes in v3 - Moved constant definitions from the source to newly created header file for other sources in the directory to share. - Standard specific defines are moved to Linux common header file - First patch --- drivers/net/ethernet/oa_tc6/oa_tc6.c | 104 +--------------------- drivers/net/ethernet/oa_tc6/oa_tc6_std_def.h | 125 +++++++++++++++++++++++++++ 2 files changed, 126 insertions(+), 103 deletions(-) diff --git a/drivers/net/ethernet/oa_tc6/oa_tc6.c b/drivers/net/ethernet/oa_tc6/oa_tc6.c index 364027c39fa4..f8e9309a72f1 100644 --- a/drivers/net/ethernet/oa_tc6/oa_tc6.c +++ b/drivers/net/ethernet/oa_tc6/oa_tc6.c @@ -14,109 +14,7 @@ #include #include -/* Control command header */ -#define OA_TC6_CTRL_HEADER_DATA_NOT_CTRL BIT(31) -#define OA_TC6_CTRL_HEADER_WRITE_NOT_READ BIT(29) -#define OA_TC6_CTRL_HEADER_MEM_MAP_SELECTOR GENMASK(27, 24) -#define OA_TC6_CTRL_HEADER_ADDR GENMASK(23, 8) -#define OA_TC6_CTRL_HEADER_LENGTH GENMASK(7, 1) -#define OA_TC6_CTRL_HEADER_PARITY BIT(0) - -/* Data header */ -#define OA_TC6_DATA_HEADER_DATA_NOT_CTRL BIT(31) -#define OA_TC6_DATA_HEADER_DATA_VALID BIT(21) -#define OA_TC6_DATA_HEADER_START_VALID BIT(20) -#define OA_TC6_DATA_HEADER_START_WORD_OFFSET GENMASK(19, 16) -#define OA_TC6_DATA_HEADER_END_VALID BIT(14) -#define OA_TC6_DATA_HEADER_END_BYTE_OFFSET GENMASK(13, 8) -#define OA_TC6_DATA_HEADER_PARITY BIT(0) - -/* Data footer */ -#define OA_TC6_DATA_FOOTER_EXTENDED_STS BIT(31) -#define OA_TC6_DATA_FOOTER_RXD_HEADER_BAD BIT(30) -#define OA_TC6_DATA_FOOTER_CONFIG_SYNC BIT(29) -#define OA_TC6_DATA_FOOTER_RX_CHUNKS GENMASK(28, 24) -#define OA_TC6_DATA_FOOTER_DATA_VALID BIT(21) -#define OA_TC6_DATA_FOOTER_START_VALID BIT(20) -#define OA_TC6_DATA_FOOTER_START_WORD_OFFSET GENMASK(19, 16) -#define OA_TC6_DATA_FOOTER_END_VALID BIT(14) -#define OA_TC6_DATA_FOOTER_END_BYTE_OFFSET GENMASK(13, 8) -#define OA_TC6_DATA_FOOTER_TX_CREDITS GENMASK(5, 1) - -#define OA_TC6_CTRL_PROT_REPLY_SIZE 4 -#define OA_TC6_CTRL_HEADER_SIZE 4 -#define OA_TC6_CTRL_REG_VALUE_SIZE 4 -#define OA_TC6_CTRL_IGNORED_SIZE 4 -#define OA_TC6_CTRL_MAX_REGISTERS 128 -#define OA_TC6_CTRL_SPI_BUF_SIZE (OA_TC6_CTRL_HEADER_SIZE +\ - (OA_TC6_CTRL_MAX_REGISTERS *\ - (OA_TC6_CTRL_REG_VALUE_SIZE +\ - OA_TC6_CTRL_PROT_REPLY_SIZE)) +\ - OA_TC6_CTRL_IGNORED_SIZE) - -#define OA_TC6_CHUNK_PAYLOAD_SIZE 64 -#define OA_TC6_DATA_HEADER_SIZE 4 -#define OA_TC6_CHUNK_SIZE (OA_TC6_DATA_HEADER_SIZE +\ - OA_TC6_CHUNK_PAYLOAD_SIZE) -#define OA_TC6_MAX_TX_CHUNKS 48 -#define OA_TC6_SPI_DATA_BUF_SIZE (OA_TC6_MAX_TX_CHUNKS *\ - OA_TC6_CHUNK_SIZE) -#define STATUS0_RESETC_POLL_DELAY 1000 -#define STATUS0_RESETC_POLL_TIMEOUT 1000000 - -#define OA_TC6_REG_MMS_MASK GENMASK(19, 16) - -/* Internal structure for MAC-PHY drivers */ -struct oa_tc6 { - struct net_device *netdev; - struct phy_device *phydev; - struct mii_bus *mdiobus; - struct spi_device *spi; - struct mutex spi_ctrl_lock; /* Protects spi control transfer */ - spinlock_t tx_skb_lock; /* Protects tx skb handling */ - void *spi_ctrl_tx_buf; - void *spi_ctrl_rx_buf; - void *spi_data_tx_buf; - void *spi_data_rx_buf; - struct sk_buff *ongoing_tx_skb; - struct sk_buff *waiting_tx_skb; - struct sk_buff *rx_skb; - u16 tx_skb_offset; - u16 spi_data_tx_buf_offset; - u16 tx_credits; - u8 rx_chunks_available; - bool wait_until_start_valid; - bool int_flag; - bool disable_traffic; - bool prot_ctrl; - enum oa_tc6_quirk_flag quirk_flags; - struct gpio_desc *reset_gpio; -}; - -enum oa_tc6_header_type { - OA_TC6_CTRL_HEADER, - OA_TC6_DATA_HEADER, -}; - -enum oa_tc6_register_op { - OA_TC6_CTRL_REG_READ = 0, - OA_TC6_CTRL_REG_WRITE = 1, -}; - -enum oa_tc6_data_valid_info { - OA_TC6_DATA_INVALID, - OA_TC6_DATA_VALID, -}; - -enum oa_tc6_data_start_valid_info { - OA_TC6_DATA_START_INVALID, - OA_TC6_DATA_START_VALID, -}; - -enum oa_tc6_data_end_valid_info { - OA_TC6_DATA_END_INVALID, - OA_TC6_DATA_END_VALID, -}; +#include "oa_tc6_std_def.h" static int oa_tc6_spi_transfer(struct oa_tc6 *tc6, enum oa_tc6_header_type header_type, u16 length) diff --git a/drivers/net/ethernet/oa_tc6/oa_tc6_std_def.h b/drivers/net/ethernet/oa_tc6/oa_tc6_std_def.h new file mode 100644 index 000000000000..403a9c22b5f1 --- /dev/null +++ b/drivers/net/ethernet/oa_tc6/oa_tc6_std_def.h @@ -0,0 +1,125 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Register and driver related definitions to support + * OPEN Alliance 10BASE‑T1x MAC‑PHY Serial Interface framework. + * + * Author: Selva Rajagopal + */ + +#ifndef OA_TC6_STD_DEF_H +#define OA_TC6_STD_DEF_H + +#include +#include +#include +#include +#include +#include +#include +#include + +/* Control command header */ +#define OA_TC6_CTRL_HEADER_DATA_NOT_CTRL BIT(31) +#define OA_TC6_CTRL_HEADER_WRITE_NOT_READ BIT(29) +#define OA_TC6_CTRL_HEADER_MEM_MAP_SELECTOR GENMASK(27, 24) +#define OA_TC6_CTRL_HEADER_ADDR GENMASK(23, 8) +#define OA_TC6_CTRL_HEADER_LENGTH GENMASK(7, 1) +#define OA_TC6_CTRL_HEADER_PARITY BIT(0) + +/* Data header */ +#define OA_TC6_DATA_HEADER_DATA_NOT_CTRL BIT(31) +#define OA_TC6_DATA_HEADER_DATA_VALID BIT(21) +#define OA_TC6_DATA_HEADER_START_VALID BIT(20) +#define OA_TC6_DATA_HEADER_START_WORD_OFFSET GENMASK(19, 16) +#define OA_TC6_DATA_HEADER_END_VALID BIT(14) +#define OA_TC6_DATA_HEADER_END_BYTE_OFFSET GENMASK(13, 8) +#define OA_TC6_DATA_HEADER_PARITY BIT(0) + +/* Data footer */ +#define OA_TC6_DATA_FOOTER_EXTENDED_STS BIT(31) +#define OA_TC6_DATA_FOOTER_RXD_HEADER_BAD BIT(30) +#define OA_TC6_DATA_FOOTER_CONFIG_SYNC BIT(29) +#define OA_TC6_DATA_FOOTER_RX_CHUNKS GENMASK(28, 24) +#define OA_TC6_DATA_FOOTER_DATA_VALID BIT(21) +#define OA_TC6_DATA_FOOTER_START_VALID BIT(20) +#define OA_TC6_DATA_FOOTER_START_WORD_OFFSET GENMASK(19, 16) +#define OA_TC6_DATA_FOOTER_END_VALID BIT(14) +#define OA_TC6_DATA_FOOTER_END_BYTE_OFFSET GENMASK(13, 8) +#define OA_TC6_DATA_FOOTER_TX_CREDITS GENMASK(5, 1) + +#define OA_TC6_CTRL_PROT_REPLY_SIZE 4 +#define OA_TC6_CTRL_HEADER_SIZE 4 +#define OA_TC6_CTRL_REG_VALUE_SIZE 4 +#define OA_TC6_CTRL_IGNORED_SIZE 4 +#define OA_TC6_CTRL_MAX_REGISTERS 128 +#define OA_TC6_CTRL_SPI_BUF_SIZE (OA_TC6_CTRL_HEADER_SIZE +\ + (OA_TC6_CTRL_MAX_REGISTERS *\ + (OA_TC6_CTRL_REG_VALUE_SIZE +\ + OA_TC6_CTRL_PROT_REPLY_SIZE)) +\ + OA_TC6_CTRL_IGNORED_SIZE) + +#define OA_TC6_CHUNK_PAYLOAD_SIZE 64 +#define OA_TC6_DATA_HEADER_SIZE 4 +#define OA_TC6_CHUNK_SIZE (OA_TC6_DATA_HEADER_SIZE +\ + OA_TC6_CHUNK_PAYLOAD_SIZE) +#define OA_TC6_MAX_TX_CHUNKS 48 +#define OA_TC6_SPI_DATA_BUF_SIZE (OA_TC6_MAX_TX_CHUNKS *\ + OA_TC6_CHUNK_SIZE) +#define STATUS0_RESETC_POLL_DELAY 1000 +#define STATUS0_RESETC_POLL_TIMEOUT 1000000 + +#define OA_TC6_REG_MMS_MASK GENMASK(19, 16) + +/* Internal structure for MAC-PHY drivers */ +struct oa_tc6 { + struct net_device *netdev; + struct phy_device *phydev; + struct mii_bus *mdiobus; + struct spi_device *spi; + struct mutex spi_ctrl_lock; /* Protects spi control transfer */ + spinlock_t tx_skb_lock; /* Protects tx skb handling */ + void *spi_ctrl_tx_buf; + void *spi_ctrl_rx_buf; + void *spi_data_tx_buf; + void *spi_data_rx_buf; + struct sk_buff *ongoing_tx_skb; + struct sk_buff *waiting_tx_skb; + struct sk_buff *rx_skb; + u16 tx_skb_offset; + u16 spi_data_tx_buf_offset; + u16 tx_credits; + u8 rx_chunks_available; + bool wait_until_start_valid; + bool int_flag; + bool disable_traffic; + bool prot_ctrl; + enum oa_tc6_quirk_flag quirk_flags; + struct gpio_desc *reset_gpio; +}; + +enum oa_tc6_header_type { + OA_TC6_CTRL_HEADER, + OA_TC6_DATA_HEADER, +}; + +enum oa_tc6_register_op { + OA_TC6_CTRL_REG_READ = 0, + OA_TC6_CTRL_REG_WRITE = 1, +}; + +enum oa_tc6_data_valid_info { + OA_TC6_DATA_INVALID, + OA_TC6_DATA_VALID, +}; + +enum oa_tc6_data_start_valid_info { + OA_TC6_DATA_START_INVALID, + OA_TC6_DATA_START_VALID, +}; + +enum oa_tc6_data_end_valid_info { + OA_TC6_DATA_END_INVALID, + OA_TC6_DATA_END_VALID, +}; +#endif /* OA_TC6_STD_DEF_H */ + -- 2.43.0