From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <Pavan.Bhagavatula@cavium.com>
Received: from NAM02-BL2-obe.outbound.protection.outlook.com
 (mail-bl2nam02on0086.outbound.protection.outlook.com [104.47.38.86])
 by dpdk.org (Postfix) with ESMTP id 3B6CEA49B
 for <dev@dpdk.org>; Wed, 14 Mar 2018 14:53:21 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version;
 bh=qPBgJQfLROGyi4KTQ/ZuraUkNUNjO2gHZCactxlPU9U=;
 b=h1jRTANEPItTECr1GD2bEjx+KEPrmZENtcAYh1FYmwzXTRpuO2hCWfBb8tvdy7ULhINkVF3SyqY3L+g84Ey8cveZSIB3mL7Zy87yu/eXcULk3+YkD4tQ8PN4FujkALW9Nsvr+CY9awY87mZ0BEE0SXi4y214M3EjaG3KHNddO4s=
Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=Pavan.Bhagavatula@cavium.com; 
Received: from ltp-pvn.caveonetworks.com (111.93.218.67) by
 MWHPR07MB3470.namprd07.prod.outlook.com (2603:10b6:301:63::21) with Microsoft
 SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.567.14; Wed, 14
 Mar 2018 13:53:17 +0000
From: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
To: jerin.jacob@caviumnetworks.com, santosh.shukla@caviumnetworks.com,
 erik.g.carrillo@intel.com
Cc: dev@dpdk.org,
	Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Date: Wed, 14 Mar 2018 19:22:26 +0530
Message-Id: <20180314135233.31282-5-pbhagavatula@caviumnetworks.com>
X-Mailer: git-send-email 2.16.2
In-Reply-To: <20180314135233.31282-1-pbhagavatula@caviumnetworks.com>
References: <20180216213700.3415-1-pbhagavatula@caviumnetworks.com>
 <20180314135233.31282-1-pbhagavatula@caviumnetworks.com>
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [111.93.218.67]
X-ClientProxiedBy: DM5PR20CA0005.namprd20.prod.outlook.com
 (2603:10b6:3:93::15) To MWHPR07MB3470.namprd07.prod.outlook.com
 (2603:10b6:301:63::21)
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 40cf026b-f9b5-4bd7-c83a-08d589b2f185
X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0;
 RULEID:(7020095)(4652020)(5600026)(4604075)(2017052603328)(7153060)(7193020);
 SRVR:MWHPR07MB3470; 
X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3470;
 3:/DEQHlwJ/AHJSem8fx1oBV4QclrcMHSB2LNHN4sGKm/ABBuYZdUy987hups2JxTV5Cj4c6YH79TKO/jz/fBFkMX686KStwvpLdGvbzMDjjjhEduv7l34EAvaeNwLm7w6bk6uuxgxVa6UI0fZBIHKEHHQJpka4PfyquJyRBRp0oLCg03+M2xYzUK6xk49+yUqrprZIWyQOM18gNTcNTFu+vEUbhTLDUuLYTSx5ZG2cAn0SaISIU1IMgh3lFp0uk9A;
 25:67R1jFgWdrqf9kOg/Du8kOs2VGdNumqZ8qPtCygDPjiFbq/qv//K2xSnwWXuBKA6FHa/dxmF/GbHyvFVQdmaRjdcR54wGIjqzWslMCL+jUUSvna0tb7LcVQ++sN0wbCsjhtGqRsycVImVtjWbldH3C6Y5PZNOoW7KSqdgREM2yyTyME8a9o+LpR1e0NrxsAqKzkb7YErLFA2hNlWUdFwU0SdcSz/+6VzgeVHndWKlUXHXfBBuwy5qVpXOfQ6Jv5CzEcfMdnWe23/WtajAteNUl8xFbkngp17W39YONIBEHgkg9HY+FyzrIa2ZXbveVAf/3Vi23AfzDFX3l+QqQv3vQ==;
 31:84bDp45KJx0fkVxRgC+2z2hgilA0iZCuLGHajbmaxVTVg5efD2/SIeBfEUZeq1WeB+7/kJVnvP+UD1zk6Ltbh/Wmpmbae+91x6ZPADg+WxADUYmSDiy6vGzQQIqBPVmlXiO/lfQteLb93sXUgsanoI2OWGQd1MSZ9OvRFRySo5EuPmPreNKffsFFi9E1OVQJwBDB58+NG5TUvydEUjhvGaQaRHV/E1tU4itVESad6OY=
X-MS-TrafficTypeDiagnostic: MWHPR07MB3470:
X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3470;
 20:P2TxB9/VV8ZzoJlo3/xL5EZVlWag2uu2fQeOk3uUnNtwUD1/REdfXiOczIYl5FDvDj2C/dBEs3tPCN/amIvw4/Z80ftuuyPp0Pp/vUkQbZNfJGfY+LQhJ7ZWa1jRe43p1YYs03VKbVZMvMsEpKcltxH7sGzJbNoyQLleBE6QQvbvI1kVhiKVVUWrLzlRgFm04wTqoWPmgAwH2IgCU51Ut+0yS3FRqWyV2b1rp5ThCBZHlvj2bRJDb6TRffyxs0s21B+ypX6oQFP4z27YDq0PWesj8vFAZIbbCSG6A7PuZ8fIJx1TSOAPcNiJmnIlVXSNpM+Hzdo3oXGnlAAWvCSIPazgbR0NInOiGAsmBonFiJBDJnVkbFA6Euu9PQAFS3D3gFoplnkHhYVe4AuKGeBWHj2RzoVabzyZvOoGGuDYh+vyokQg8xwHvgDsn35/KkDWevEBxO6wTI37rMeZbOp2i4pcxM4m+SjyuYIlxnE2mYHk7fmfN03xg/2NeZ3SloqMnzBF6KYW9aiR3P4uqOzdNVGktqGdnT9SZ5VGj7YKGA69K6L1WWhYl8TXUL1cMUk3qlUjOOz2rKjrlKEtjaIteeN7CN3f7oUEIhsx/db1Lvc=;
 4:Ciq+l9tjqHmjPUm5hPOGYUip0PP9l+lJnoTCaRbn76GXWrS0OEbl2zbPLSj/qKIASJNX6YXE4oMTff+szeGp59cQ7aYVlUJJaKSEtT4QZo7Q/p8B5paao9DMkhzidfAISFLM3X6KhnChyrKU64IBOXqhgZQsAkf4zR+lNQj8T3B/jjA3xkB0g/qt10PRZW8dezAEYFFo2r5tMmVZwm9TgVov2sDpii3H71AW/U9D4KrK38CKFUnY1b/4oM00h/rhY0wTr2auwk82MHPcDK8CPA==
X-Microsoft-Antispam-PRVS: <MWHPR07MB3470494870934717D3AC656980D10@MWHPR07MB3470.namprd07.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:;
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0;
 RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231221)(944501244)(52105095)(3002001)(93006095)(10201501046)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123562045)(20161123560045)(20161123558120)(6072148)(201708071742011);
 SRVR:MWHPR07MB3470; BCL:0; PCL:0; RULEID:; SRVR:MWHPR07MB3470; 
X-Forefront-PRVS: 0611A21987
X-Forefront-Antispam-Report: SFV:NSPM;
 SFS:(10009020)(376002)(39860400002)(39380400002)(366004)(346002)(396003)(189003)(199004)(53936002)(6512007)(3846002)(4326008)(6666003)(6506007)(48376002)(26005)(105586002)(68736007)(97736004)(47776003)(2950100002)(386003)(1076002)(6486002)(106356001)(52116002)(305945005)(107886003)(7736002)(69596002)(76176011)(66066001)(5660300001)(59450400001)(51416003)(25786009)(36756003)(50466002)(316002)(16586007)(72206003)(53416004)(1857600001)(6116002)(478600001)(8676002)(81156014)(81166006)(42882007)(2906002)(5009440100003)(50226002)(16526019)(8936002)(42262002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR07MB3470; H:ltp-pvn.caveonetworks.com;
 FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; 
Received-SPF: None (protection.outlook.com: cavium.com does not designate
 permitted sender hosts)
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR07MB3470;
 23:lkTkgEAkJeKyJuMypZzBCiB/2ezUFm/HM60qmD4Tz?=
 =?us-ascii?Q?jHe7BQq+NbpxRgBgKKwj8MMmn2QCKpw7wxAhY5T9m5OXzmMKR0hdfccu/ddB?=
 =?us-ascii?Q?ibbTBQgLZItcYzyWEX3RYceFtCZCKalkymW2lR9XNxCkcDb5usaCbSf4ZE45?=
 =?us-ascii?Q?iBB0oc0zz9JXuA9gsdheBN91XJLMtaZENmm/32rPyvFeOI1Kf7gT0p0DZDJf?=
 =?us-ascii?Q?gpITNf705c5fRcgmFKPJT6VecxsVCkTfVUxTpQBgWsE6MZI1RJs4lL57MID0?=
 =?us-ascii?Q?s1nfhbBAtc41DpVy2pKGy6L3fuvv7y4NubTlcf/2ctdDPjiuxu+r7MjZt98C?=
 =?us-ascii?Q?8Tx/Tr3llnvJRvD2KOGT22lKPULwOke9PtphXilKk6Ic2BIfGHqNfSb3LVps?=
 =?us-ascii?Q?l6wRMVa8U7aLiaa6O4NkeAn8sk/gbWAl6GKweEDyWMJo1ruZJVdWqMprQjYS?=
 =?us-ascii?Q?uBhyvlreiFl/JYaXU/P0dIDK8fY/pl/VHNoR/Owppy9ASdspjeLcf0ejnpEz?=
 =?us-ascii?Q?X1GnX9X51ZPH9baYW1vTIoQ1BWqZVKTJhAyTMMZkoB6A3NBHT3NEMKxzH37l?=
 =?us-ascii?Q?pyTQ3FK3Yt3pOFWfvID3rxIk2aYN7T2Ocz//aZYnPKGG6RnR3DyxwVjLQc+G?=
 =?us-ascii?Q?NgHBpaiPPCZYBek7AbGSfz4YLxHcDopbfRessXb8oDmJE2CP/ZkO7IRbiIvb?=
 =?us-ascii?Q?vCaWNRFt/e39apXXW0D1dhnlm3qX0gy2YA9pt4WQ4z1VUvK/Jyzf31fdkTOG?=
 =?us-ascii?Q?hwKgVgso0krfxRkp6nsssDqGMPrqSr78kicc6vI9LvXEruQOs+dodzroMb45?=
 =?us-ascii?Q?QnG22CC/jhRpyPsrpoPWBDf4w1sbq9A+z10gNU8KlgTSdsEZ/NiPcsDXmYie?=
 =?us-ascii?Q?9QlCwkjs8/BFX6aWk6XwBSNXOFDTtJsjAuUku8Pq5Q1zBCVZMLxK1/luNC7b?=
 =?us-ascii?Q?C3vPWNV0BOOEpda8+szLTJWfrfO3Algjre9UIqnZJBtM61WrzN1421gla+st?=
 =?us-ascii?Q?U0J0jQhJtiDUuFDWTaShgeM/3FaUM5dWuIi7L9iFc+TgGttBvqrJWmwFBf1b?=
 =?us-ascii?Q?cGPOZf88mNwL615OZWFRF9wkpUPbZlIznqFheof142lPSGYXYiwx0gIZZTic?=
 =?us-ascii?Q?Z6UnAawi9wVvtfFDWD+ClNQgXwr47aVA8g9eUY1Trzst2JtQxjnpLIAXR/I4?=
 =?us-ascii?Q?rKRdIvkfSpaHbNesiInsyjRJtMq0ys0QtcsxU9a1vbpv2oi+hJCOZajc1mVX?=
 =?us-ascii?Q?TYx4rmdoiO2Gq1WAOjuSVPW6UOtFG/eOGozJTlH?=
X-Microsoft-Antispam-Message-Info: PKjWZ1dJjbuo5eaY2wnoUcjoHgYAbzjw01GmMTNxcKV/ueiV1ipB8cegcDiI2KiNpiGll7glo6U/16ktHtbsgrQZjkb5sRVFFCXInu+ox9cHG0D78tGRDDicPcxUwpOn4ZoCym53MAgb7msyNv4CzkQAwJ05+oClflsR/Nn81sK3f9PIfJjXP578Bxc/XfAe
X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3470;
 6:J7r9jslrb7zb0yHUNHRc+/9ORuZZsTqf9WXdd00yAVFgZy0OfZL5Pa/MRpkN88nv/NqcMQHkUneLIuZ/cQYoHx4/X4MuyDjNd7mHOboTejIiHADFcqH04ufWnaIsfpNHM/YtA0KH8G3FUJJmquOY+2o+C9bcIOeVke2UdV0uQC/Y7TaCVAhgZScuIen0WqR0qAPlX0T+6CQk3EVyvpcePQXfMaCwGt6Bl0rbaRf8kVwvwUSDLIQLJektaBYSBwb6T033AE/6Cvq7LjR3ngnnsOrtvlRWW9h1jEGJhZQBoL5OhrD31R1W62yDD9t4VspbNQ3JdYyW/jmO+lN9YbYW5aIYOAutL4fi2hxCvcQplDk=;
 5:HzlYy0Mkyj6fpjmJ9RR0uQ5m7CMLTodrp4IT06XyHavPw8bHwQWZ8xDwPPHhOKbLr88fC4DrlENese7p2vkfF9/ey0Jc/L7wO7klLX5tWniPepGI5tO4N7abTu2V84hGNLboJbBR+uuFP8gEoDS8AFI8goSuluzI7bgVnxb4b0k=;
 24:lgZgKGQ1ELbX3F8OqplxLuSEzwf6lJ+u2M9iBVtY4ifnWWme67FxVoNccaiXZ9RcqHRBWsbOmEak0kX/mhinsl54pe1W9gy4dr6+0R/YNtU=;
 7:5k+EKf7B96WztQ3qkKV6E63VKUBFSaTIoI8so2KMeLn8mCRX1TKn1r61/rr8mnEoexY0EuJgDt3PQmkhSKNK1pt8KKv4KEnqYbbigHbd+9aKgUhKw242Ek5YNiR3CNKBlRd7AeQsA9Bcau/SQFycPaTs4kqHxYq53gCoKT7fLsjARZSMciJLSfD5GzEKr7E0TmoG0AMkddkYsYJ5gmbj1K78vN7tJwbrz7eyK3K3XhV/fYH191UPbpDVyutiecUV
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-OriginatorOrg: caviumnetworks.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Mar 2018 13:53:17.2209 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 40cf026b-f9b5-4bd7-c83a-08d589b2f185
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR07MB3470
Subject: [dpdk-dev] [PATCH v2 04/11] event/octeontx: add support to start
	and stop timer device
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Wed, 14 Mar 2018 13:53:22 -0000

When application requests to start the timer adapter through
`rte_event_timer_adapter_start`, Octeontx TIMvf ring does the
following:
- Uses mbox to communicate TIMpf driver about,
  * SCLK frequency used to convert ns<->cycles.
  * program the ring control parameters and start the ring.
  * get the exact cycle at which the TIMvf ring has started which can be
  used to estimate the bucket position.

On `rte_event_timer_adapter_stop` i.e stop, Octeontx TIMvf ring does the
following:
- Use mbox to communicate TIMpf driver about,
  * reset the ring control parameters and stop the ring.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
---
 drivers/event/octeontx/timvf_evdev.c | 140 +++++++++++++++++++++++++++++++++++
 drivers/event/octeontx/timvf_evdev.h |   5 ++
 2 files changed, 145 insertions(+)

diff --git a/drivers/event/octeontx/timvf_evdev.c b/drivers/event/octeontx/timvf_evdev.c
index 473311fa4..ccf724115 100644
--- a/drivers/event/octeontx/timvf_evdev.c
+++ b/drivers/event/octeontx/timvf_evdev.c
@@ -16,6 +16,32 @@ otx_timvf_init_log(void)
 		rte_log_set_level(otx_logtype_timvf, RTE_LOG_NOTICE);
 }
 
+struct __rte_packed timvf_mbox_dev_info {
+	uint64_t ring_active[4];
+	uint64_t clk_freq;
+};
+
+/* Response messages */
+enum {
+	MBOX_RET_SUCCESS,
+	MBOX_RET_INVALID,
+	MBOX_RET_INTERNAL_ERR,
+};
+
+static int
+timvf_mbox_dev_info_get(struct timvf_mbox_dev_info *info)
+{
+	struct octeontx_mbox_hdr hdr = {0};
+	uint16_t len = sizeof(struct timvf_mbox_dev_info);
+
+	hdr.coproc = TIM_COPROC;
+	hdr.msg = TIM_GET_DEV_INFO;
+	hdr.vfid = 0; /* TIM DEV is always 0. TIM RING ID changes. */
+
+	memset(info, 0, len);
+	return octeontx_ssovf_mbox_send(&hdr, NULL, 0, info, len);
+}
+
 static void
 timvf_ring_info_get(const struct rte_event_timer_adapter *adptr,
 		struct rte_event_timer_adapter_info *adptr_info)
@@ -27,6 +53,118 @@ timvf_ring_info_get(const struct rte_event_timer_adapter *adptr,
 			sizeof(struct rte_event_timer_adapter_conf));
 }
 
+static int
+timvf_ring_conf_set(struct timvf_ctrl_reg *rctl, uint8_t ring_id)
+{
+	struct octeontx_mbox_hdr hdr = {0};
+	uint16_t len = sizeof(struct timvf_ctrl_reg);
+	int ret;
+
+	hdr.coproc = TIM_COPROC;
+	hdr.msg = TIM_SET_RING_INFO;
+	hdr.vfid = ring_id;
+
+	ret = octeontx_ssovf_mbox_send(&hdr, rctl, len, NULL, 0);
+	if (ret < 0 || hdr.res_code != MBOX_RET_SUCCESS)
+		return -EACCES;
+	return 0;
+}
+
+static int
+timvf_get_start_cyc(uint64_t *now, uint8_t ring_id)
+{
+	struct octeontx_mbox_hdr hdr = {0};
+
+	hdr.coproc = TIM_COPROC;
+	hdr.msg = TIM_RING_START_CYC_GET;
+	hdr.vfid = ring_id;
+	*now = 0;
+	return octeontx_ssovf_mbox_send(&hdr, NULL, 0, now, sizeof(uint64_t));
+}
+
+static int
+timvf_ring_start(const struct rte_event_timer_adapter *adptr)
+{
+	int ret;
+	uint64_t interval = 0;
+	struct timvf_ctrl_reg rctrl = {0};
+	struct timvf_mbox_dev_info dinfo;
+	struct timvf_ring *timr = adptr->data->adapter_priv;
+
+	ret = timvf_mbox_dev_info_get(&dinfo);
+	if (ret < 0 || ret != sizeof(struct timvf_mbox_dev_info))
+		return -EINVAL;
+
+	/* Calculate the interval cycles according to clock source. */
+	switch (timr->clk_src) {
+	case TIM_CLK_SRC_SCLK:
+		interval = NSEC2CLK(timr->tck_nsec, dinfo.clk_freq);
+		break;
+	case TIM_CLK_SRC_GPIO:
+		/* GPIO doesn't work on tck_nsec. */
+		interval = 0;
+		break;
+	case TIM_CLK_SRC_GTI:
+		interval = NSEC2CLK(timr->tck_nsec, dinfo.clk_freq);
+		break;
+	case TIM_CLK_SRC_PTP:
+		interval = NSEC2CLK(timr->tck_nsec, dinfo.clk_freq);
+		break;
+	}
+
+	/*CTRL0 register.*/
+	rctrl.rctrl0 = interval;
+
+	/*CTRL1	register.*/
+	rctrl.rctrl1 =	(uint64_t)(timr->clk_src) << 51 |
+		1ull << 48 |
+		1ull << 47 |
+		1ull << 44 |
+		(timr->meta.nb_bkts - 1);
+
+	rctrl.rctrl2 = (uint64_t)(TIM_CHUNK_SIZE / 16) << 40;
+
+	timvf_write64((uint64_t)timr->meta.bkt,
+			(uint8_t *)timr->vbar0 + TIM_VRING_BASE);
+	if (timvf_ring_conf_set(&rctrl, timr->tim_ring_id)) {
+		ret = -EACCES;
+		goto error;
+	}
+
+	if (timvf_get_start_cyc(&timr->meta.ring_start_cyc,
+				timr->tim_ring_id) < 0) {
+		ret = -EACCES;
+		goto error;
+	}
+	timr->meta.tck_int = NSEC2CLK(timr->tck_nsec, rte_get_timer_hz());
+	timr->meta.fast_div = rte_reciprocal_value_u64(timr->meta.tck_int);
+	timvf_log_info("nb_bkts %d min_ns %"PRIu64" min_cyc %"PRIu64""
+			" maxtmo %"PRIu64"\n",
+			timr->meta.nb_bkts, timr->tck_nsec, interval,
+			timr->max_tout);
+
+	return 0;
+error:
+	rte_free(timr->meta.bkt);
+	rte_mempool_free(timr->meta.chunk_pool);
+	return ret;
+}
+
+static int
+timvf_ring_stop(const struct rte_event_timer_adapter *adptr)
+{
+	struct timvf_ring *timr = adptr->data->adapter_priv;
+	struct timvf_ctrl_reg rctrl = {0};
+	rctrl.rctrl0 = timvf_read64((uint8_t *)timr->vbar0 + TIM_VRING_CTL0);
+	rctrl.rctrl1 = timvf_read64((uint8_t *)timr->vbar0 + TIM_VRING_CTL1);
+	rctrl.rctrl1 &= ~(1ull << 47); /* Disable */
+	rctrl.rctrl2 = timvf_read64((uint8_t *)timr->vbar0 + TIM_VRING_CTL2);
+
+	if (timvf_ring_conf_set(&rctrl, timr->tim_ring_id))
+		return -EACCES;
+	return 0;
+}
+
 static int
 timvf_ring_create(struct rte_event_timer_adapter *adptr)
 {
@@ -146,6 +284,8 @@ timvf_ring_free(struct rte_event_timer_adapter *adptr)
 static struct rte_event_timer_adapter_ops timvf_ops = {
 		.init		= timvf_ring_create,
 		.uninit		= timvf_ring_free,
+		.start		= timvf_ring_start,
+		.stop		= timvf_ring_stop,
 		.get_info	= timvf_ring_info_get,
 };
 
diff --git a/drivers/event/octeontx/timvf_evdev.h b/drivers/event/octeontx/timvf_evdev.h
index e3f558e10..e155b6ce2 100644
--- a/drivers/event/octeontx/timvf_evdev.h
+++ b/drivers/event/octeontx/timvf_evdev.h
@@ -75,6 +75,11 @@
 #define TIM_VRING_AURA				(0x108)
 #define TIM_VRING_REL				(0x110)
 
+
+#define NSEC_PER_SEC 1E9
+#define NSEC2CLK(__ns, __freq) (((__ns) * (__freq)) / NSEC_PER_SEC)
+#define CLK2NSEC(__clk, __freq) (((__clk) * NSEC_PER_SEC) / (__freq))
+
 #define timvf_read64 rte_read64_relaxed
 #define timvf_write64 rte_write64_relaxed
 
-- 
2.16.2