From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id DCAE745955; Tue, 10 Sep 2024 13:09:55 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 23D7442E5B; Tue, 10 Sep 2024 13:09:40 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.11]) by mails.dpdk.org (Postfix) with ESMTP id 64909400D6 for ; Tue, 10 Sep 2024 13:09:38 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1725966579; x=1757502579; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=a8U/mqEuMkDzFJK2++YeNVewWdqQ9EV1rN9PoFj3Gos=; b=FOkW/ci/u1mMqRc01QqCxBmqkZxDxCtC41pKL55T+GH8TJVzC0O+Ku90 3mlS62GuLaFEckfSZ3oj/MEXNAh1ucMTr2R8pk3NxfOiuLAps/ajQXq3W oDVomgPwaG2CtwsUMfjzZ0IeicrsJtKQKnO4eEdphj3Lo1xfbtcGPXT/z JaXnU6Uihd7pzxHKPBrT6hJgo/URCwCqwROf3k29iVBEGRSdjG2VYgOFY LTEJomHrWBaMCRqxviX55Y0ZZttcM28uz0B+hPSV40Fh5oE43e2HmJLK+ e6PXIFf3Qa5MwGpaJo0F3RlK5EILIG9P3eP7gtNLU3bzVOSkREP9EB4ut Q==; X-CSE-ConnectionGUID: d6FiG4waTlaav5C4VVkthA== X-CSE-MsgGUID: tuyzAIKBT9ygHQLtqrX4PA== X-IronPort-AV: E=McAfee;i="6700,10204,11190"; a="35276911" X-IronPort-AV: E=Sophos;i="6.10,217,1719903600"; d="scan'208";a="35276911" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Sep 2024 04:09:38 -0700 X-CSE-ConnectionGUID: LTRV1paHR9mjHIeotLTt+A== X-CSE-MsgGUID: jlMv54FZQRig+2oFlUkI8A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.10,217,1719903600"; d="scan'208";a="71969838" Received: from unknown (HELO npf-hyd-clx-03..) ([10.145.170.182]) by orviesa004.jf.intel.com with ESMTP; 10 Sep 2024 04:09:36 -0700 From: Soumyadeep Hore To: bruce.richardson@intel.com, aman.deep.singh@intel.com Cc: dev@dpdk.org, shaiq.wani@intel.com, Jun Zhang Subject: [PATCH v1 3/9] common/iavf: add GNSS support over VF Date: Tue, 10 Sep 2024 10:12:18 +0000 Message-ID: <20240910101224.497044-4-soumyadeep.hore@intel.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240910101224.497044-1-soumyadeep.hore@intel.com> References: <20240910101224.497044-1-soumyadeep.hore@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Jun Zhang This patch enables VF access to GNSS Console I2C. Most of the opcodes in this implementation map directly to the AQ commands for GNSS Console I2C Read and Write for GNSS status, configuration, and NMEA messages. Additionally there is VF and PF negotiation on GNSS Access Capability through Extended PTP Capability Exchange. VF can access GNSS Console I2C only if Extended PTP Capability exchange indicates so. Signed-off-by: Jun Zhang Signed-off-by: Soumyadeep Hore --- drivers/common/iavf/virtchnl.h | 66 ++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/drivers/common/iavf/virtchnl.h b/drivers/common/iavf/virtchnl.h index 5ce9166cb0..a4f3d7724f 100644 --- a/drivers/common/iavf/virtchnl.h +++ b/drivers/common/iavf/virtchnl.h @@ -187,6 +187,8 @@ enum virtchnl_ops { VIRTCHNL_OP_SYNCE_SET_CGU_DPLL_CONFIG = 126, VIRTCHNL_OP_SYNCE_GET_CGU_INFO = 127, VIRTCHNL_OP_SYNCE_GET_HW_INFO = 128, + VIRTCHNL_OP_GNSS_READ_I2C = 129, + VIRTCHNL_OP_GNSS_WRITE_I2C = 130, VIRTCHNL_OP_MAX, }; @@ -335,6 +337,10 @@ static inline const char *virtchnl_op_str(enum virtchnl_ops v_opcode) return "VIRTCHNL_OP_SYNCE_GET_CGU_INFO"; case VIRTCHNL_OP_SYNCE_GET_HW_INFO: return "VIRTCHNL_OP_SYNCE_GET_HW_INFO"; + case VIRTCHNL_OP_GNSS_READ_I2C: + return "VIRTCHNL_OP_GNSS_READ_I2C"; + case VIRTCHNL_OP_GNSS_WRITE_I2C: + return "VIRTCHNL_OP_GNSS_WRITE_I2C"; case VIRTCHNL_OP_FLOW_SUBSCRIBE: return "VIRTCHNL_OP_FLOW_SUBSCRIBE"; case VIRTCHNL_OP_FLOW_UNSUBSCRIBE: @@ -2182,6 +2188,7 @@ VIRTCHNL_CHECK_STRUCT_LEN(12, virtchnl_quanta_cfg); #define VIRTCHNL_1588_PTP_CAP_WRITE_PHC BIT(3) #define VIRTCHNL_1588_PTP_CAP_PHC_REGS BIT(4) #define VIRTCHNL_1588_PTP_CAP_SYNCE BIT(6) +#define VIRTCHNL_1588_PTP_CAP_GNSS BIT(7) struct virtchnl_phc_regs { u32 clock_hi; @@ -2448,6 +2455,59 @@ struct virtchnl_synce_get_hw_info { VIRTCHNL_CHECK_STRUCT_LEN(72, virtchnl_synce_get_hw_info); +struct virtchnl_link_topo_params { + u8 lport_num; + u8 lport_num_valid; + u8 node_type_ctx; +#define VIRTCHNL_LINK_TOPO_NODE_TYPE_GPS 11 +#define VIRTCHNL_LINK_TOPO_NODE_CTX_S 4 +#define VIRTCHNL_LINK_TOPO_NODE_CTX_M \ + (0xF << VIRTCHNL_LINK_TOPO_NODE_CTX_S) +#define VIRTCHNL_LINK_TOPO_NODE_CTX_GLOBAL 0 +#define VIRTCHNL_LINK_TOPO_NODE_CTX_BOARD 1 +#define VIRTCHNL_LINK_TOPO_NODE_CTX_PORT 2 +#define VIRTCHNL_LINK_TOPO_NODE_CTX_NODE 3 +#define VIRTCHNL_LINK_TOPO_NODE_CTX_PROVIDED 4 +#define VIRTCHNL_LINK_TOPO_NODE_CTX_OVERRIDE 5 + u8 index; +}; + +VIRTCHNL_CHECK_STRUCT_LEN(4, virtchnl_link_topo_params); + +struct virtchnl_link_topo_addr { + struct virtchnl_link_topo_params topo_params; + u16 handle; +}; + +VIRTCHNL_CHECK_STRUCT_LEN(6, virtchnl_link_topo_addr); + +struct virtchnl_gnss_i2c { + struct virtchnl_link_topo_addr topo_addr; + u16 i2c_addr; + u8 i2c_params; +#define VIRTCHNL_I2C_DATA_SIZE_S 0 +#define VIRTCHNL_I2C_DATA_SIZE_M (0xF << VIRTCHNL_I2C_DATA_SIZE_S) +#define VIRTCHNL_I2C_ADDR_TYPE_M BIT(4) +#define VIRTCHNL_I2C_ADDR_TYPE_7BIT 0 +#define VIRTCHNL_I2C_ADDR_TYPE_10BIT VIRTCHNL_I2C_ADDR_TYPE_M +#define VIRTCHNL_I2C_DATA_OFFSET_S 5 +#define VIRTCHNL_I2C_DATA_OFFSET_M (0x3 << VIRTCHNL_I2C_DATA_OFFSET_S) +#define VIRTCHNL_I2C_USE_REPEATED_START BIT(7) + u8 rsvd; + u16 i2c_bus_addr; +#define VIRTCHNL_I2C_ADDR_7BIT_MASK 0x7F +#define VIRTCHNL_I2C_ADDR_10BIT_MASK 0x3FF + u8 i2c_data[4]; /* Used only by write command, reserved in read. */ +}; + +VIRTCHNL_CHECK_STRUCT_LEN(16, virtchnl_gnss_i2c); + +struct virtchnl_gnss_read_i2c_resp { + u8 i2c_data[16]; +}; + +VIRTCHNL_CHECK_STRUCT_LEN(16, virtchnl_gnss_read_i2c_resp); + /* Since VF messages are limited by u16 size, precalculate the maximum possible * values of nested elements in virtchnl structures that virtual channel can * possibly handle in a single message. @@ -2825,6 +2885,12 @@ virtchnl_vc_validate_vf_msg(struct virtchnl_version_info *ver, u32 v_opcode, break; case VIRTCHNL_OP_SYNCE_GET_HW_INFO: break; + case VIRTCHNL_OP_GNSS_READ_I2C: + valid_len = sizeof(struct virtchnl_gnss_i2c); + break; + case VIRTCHNL_OP_GNSS_WRITE_I2C: + valid_len = sizeof(struct virtchnl_gnss_i2c); + break; case VIRTCHNL_OP_ENABLE_QUEUES_V2: case VIRTCHNL_OP_DISABLE_QUEUES_V2: valid_len = sizeof(struct virtchnl_del_ena_dis_queues); -- 2.34.1