qcacmn: Move the spectral tgt layer functionality to tgt file

If the definition of an API in umac layer is same for
both OL and DA chipsets, it is better to have a single
implementation of that API for maintainance pursposes.
tgt file is the placeholder for such APIs.

CRs-Fixed: 2151543
Change-Id: I3ae969452b10f6d81e46351a74ed9d4c3f5ea96c
diff --git a/spectral/core/spectral_direct_attach.c b/spectral/core/spectral_direct_attach.c
index 22177fb..ae011aa 100644
--- a/spectral/core/spectral_direct_attach.c
+++ b/spectral/core/spectral_direct_attach.c
@@ -18,308 +18,7 @@
  */
 
 #include "spectral_cmn_api_i.h"
-
-/**
- * spectral_control_da()- handler for demultiplexing requests from higher layer
- * @pdev:    reference to global pdev object
- * @id:      spectral config command id
- * @indata:  reference to input data
- * @insize:  input data size
- * @outdata: reference to output data
- * @outsize: output data size
- *
- * This function processes the spectral config command
- * and appropriate handlers are invoked.
- *
- * Return: 0 success else failure
- */
-int
-spectral_control_da(struct wlan_objmgr_pdev *pdev, u_int id, void *indata,
-		    uint32_t insize, void *outdata, uint32_t *outsize)
-{
-	struct spectral_context *sc;
-	int error = 0;
-
-	if (!pdev) {
-		spectral_err("PDEV is NULL!");
-		return -EPERM;
-	}
-	sc = spectral_get_spectral_ctx_from_pdev(pdev);
-	if (!sc) {
-		spectral_err("spectral context is NULL!");
-		return -EPERM;
-	}
-
-	/*
-	 * Note: Add handling for the cases SPECTRAL_ADC_ENABLE_TEST_ADDAC_MODE
-	 * SPECTRAL_ADC_DISABLE_TEST_ADDAC_MODE and SPECTRAL_ADC_RETRIEVE_DATA,
-	 * when raw ADC capture is needed.
-	 * This is only applicable for direct attach chipsets.
-	 */
-	error = spectral_control_cmn(pdev,
-				     id,
-				     indata, insize, outdata, outsize);
-
-	return error;
-}
-
-/**
- * pdev_spectral_init_da() - offload implementation for spectral init
- * @pdev: Pointer to pdev
- *
- * Return: On success, pointer to Spectral target_if internal private data, on
- * failure, NULL
- */
-static void *
-pdev_spectral_init_da(struct wlan_objmgr_pdev *pdev)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_pdev_spectral_init(
-		pdev);
-}
-
-/**
- * pdev_spectral_deinit_da() - offload implementation for spectral de-init
- * @pdev: Pointer to pdev
- *
- * Return: None
- */
-static void
-pdev_spectral_deinit_da(struct wlan_objmgr_pdev *pdev)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-
-	psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_pdev_spectral_deinit(pdev);
-}
-
-/**
- * set_spectral_config_da() - Set spectral config
- * @pdev:       Pointer to pdev object
- * @threshtype: spectral parameter type
- * @value:      value to be configured for the given spectral parameter
- *
- * DA implementation for setting spectral config
- *
- * Return: 0 on success else failure
- */
-static int
-set_spectral_config_da(struct wlan_objmgr_pdev *pdev,
-		       const uint32_t threshtype, const uint32_t value)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_set_spectral_config(
-		pdev, threshtype, value);
-}
-
-/**
- * get_spectral_config_da() - Get spectral configuration
- * @pdev: Pointer to pdev object
- * @param: Pointer to spectral_config structure in which the configuration
- * should be returned
- *
- * DA implementation for getting the current spectral configuration
- *
- * Return: None
- */
-static void
-get_spectral_config_da(struct wlan_objmgr_pdev *pdev,
-		       struct spectral_config *sptrl_config)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-
-	psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_get_spectral_config(
-		pdev,
-		sptrl_config);
-}
-
-/**
- * start_spectral_scan_da() - Start spectral scan
- * @pdev: Pointer to pdev object
- *
- * DA implementation for starting spectral scan
- *
- * Return: 0 in case of success, -1 on failure
- */
-static int
-start_spectral_scan_da(struct wlan_objmgr_pdev *pdev)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_start_spectral_scan(
-		pdev);
-}
-
-/**
- * stop_spectral_scan_da() - Stop spectral scan
- * @pdev: Pointer to pdev object
- *
- * DA implementation for stop spectral scan
- *
- * Return: None
- */
-static void
-stop_spectral_scan_da(struct wlan_objmgr_pdev *pdev)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-
-	psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_stop_spectral_scan(pdev);
-}
-
-/**
- * is_spectral_active_da() - Get whether Spectral is active
- * @pdev: Pointer to pdev object
- *
- * DA implementation to get whether Spectral is active
- *
- * Return: True if Spectral is active, false if Spectral is not active
- */
-static bool
-is_spectral_active_da(struct wlan_objmgr_pdev *pdev)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_is_spectral_active(
-		pdev);
-}
-
-/**
- * is_spectral_enabled_da() - Get whether Spectral is active
- * @pdev: Pointer to pdev object
- *
- * DA implementation to get whether Spectral is active
- *
- * Return: True if Spectral is active, false if Spectral is not active
- */
-static bool
-is_spectral_enabled_da(struct wlan_objmgr_pdev *pdev)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_is_spectral_enabled(
-		pdev);
-}
-
-/**
- * set_debug_level_da() - Set debug level for Spectral
- * @pdev: Pointer to pdev object
- * @debug_level: Debug level
- *
- * DA implementation to set the debug level for Spectral
- *
- * Return: 0 in case of success
- */
-static int
-set_debug_level_da(struct wlan_objmgr_pdev *pdev, uint32_t debug_level)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_set_debug_level(
-			pdev,
-			debug_level);
-}
-
-/**
- * get_debug_level_da() - Get debug level for Spectral
- * @pdev: Pointer to pdev object
- *
- * DA implementation to get the debug level for Spectral
- *
- * Return: Current debug level
- */
-static uint32_t
-get_debug_level_da(struct wlan_objmgr_pdev *pdev)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_get_debug_level(pdev);
-}
-
-/**
- * get_spectral_capinfo_da() - Get Spectral capability information
- * @pdev: Pointer to pdev object
- * @outdata: Buffer into which data should be copied
- *
- * DA implementation to get the spectral capability information
- *
- * Return: void
- */
-static void
-get_spectral_capinfo_da(struct wlan_objmgr_pdev *pdev, void *outdata)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_get_spectral_capinfo(
-		pdev, outdata);
-}
-
-/**
- * get_spectral_diagstats_da() - Get Spectral diagnostic statistics
- * @pdev:  Pointer to pdev object
- * @outdata: Buffer into which data should be copied
- *
- * DA implementation to get the spectral diagnostic statistics
- *
- * Return: void
- */
-static void
-get_spectral_diagstats_da(struct wlan_objmgr_pdev *pdev, void *outdata)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_get_spectral_diagstats(
-		pdev, outdata);
-}
-
-/**
- * register_wmi_spectral_cmd_ops_da() - Register wmi_spectral_cmd_ops
- * @cmd_ops: Pointer to the structure having wmi_spectral_cmd function pointers
- * @pdev: Pointer to pdev object
- *
- * DA implementation to register wmi_spectral_cmd_ops in spectral
- * internal data structure
- *
- * Return: void
- */
-static void
-register_wmi_spectral_cmd_ops_da(struct wlan_objmgr_pdev *pdev,
-				 struct wmi_spectral_cmd_ops *cmd_ops)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-	struct wlan_lmac_if_sptrl_tx_ops *psptrl_tx_ops = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-
-	psptrl_tx_ops = &psoc->soc_cb.tx_ops.sptrl_tx_ops;
-
-	return psptrl_tx_ops->sptrlto_register_wmi_spectral_cmd_ops(pdev,
-								    cmd_ops);
-}
+#include "../dispatcher/inc/wlan_spectral_tgt_api.h"
 
 void
 spectral_ctx_init_da(struct spectral_context *sc)
@@ -328,19 +27,19 @@
 		spectral_err("spectral context is null!");
 		return;
 	}
-	sc->sptrlc_spectral_control = spectral_control_da;
-	sc->sptrlc_pdev_spectral_init = pdev_spectral_init_da;
-	sc->sptrlc_pdev_spectral_deinit = pdev_spectral_deinit_da;
-	sc->sptrlc_set_spectral_config = set_spectral_config_da;
-	sc->sptrlc_get_spectral_config = get_spectral_config_da;
-	sc->sptrlc_start_spectral_scan = start_spectral_scan_da;
-	sc->sptrlc_stop_spectral_scan = stop_spectral_scan_da;
-	sc->sptrlc_is_spectral_active = is_spectral_active_da;
-	sc->sptrlc_is_spectral_enabled = is_spectral_enabled_da;
-	sc->sptrlc_set_debug_level = set_debug_level_da;
-	sc->sptrlc_get_debug_level = get_debug_level_da;
-	sc->sptrlc_get_spectral_capinfo = get_spectral_capinfo_da;
-	sc->sptrlc_get_spectral_diagstats = get_spectral_diagstats_da;
+	sc->sptrlc_spectral_control = tgt_spectral_control;
+	sc->sptrlc_pdev_spectral_init = tgt_pdev_spectral_init;
+	sc->sptrlc_pdev_spectral_deinit = tgt_pdev_spectral_deinit;
+	sc->sptrlc_set_spectral_config = tgt_set_spectral_config;
+	sc->sptrlc_get_spectral_config = tgt_get_spectral_config;
+	sc->sptrlc_start_spectral_scan = tgt_start_spectral_scan;
+	sc->sptrlc_stop_spectral_scan = tgt_stop_spectral_scan;
+	sc->sptrlc_is_spectral_active = tgt_is_spectral_active;
+	sc->sptrlc_is_spectral_enabled = tgt_is_spectral_enabled;
+	sc->sptrlc_set_debug_level = tgt_set_debug_level;
+	sc->sptrlc_get_debug_level = tgt_get_debug_level;
+	sc->sptrlc_get_spectral_capinfo = tgt_get_spectral_capinfo;
+	sc->sptrlc_get_spectral_diagstats = tgt_get_spectral_diagstats;
 	sc->sptrlc_register_wmi_spectral_cmd_ops =
-	    register_wmi_spectral_cmd_ops_da;
+	    tgt_register_wmi_spectral_cmd_ops;
 }
diff --git a/spectral/core/spectral_offload.c b/spectral/core/spectral_offload.c
index 83feac8..b4b6068 100644
--- a/spectral/core/spectral_offload.c
+++ b/spectral/core/spectral_offload.c
@@ -19,286 +19,7 @@
 
 #include "spectral_cmn_api_i.h"
 #include "spectral_ol_api_i.h"
-
-/**
- * spectral_control_ol()- handler for demultiplexing requests from higher layer
- * @pdev:    reference to global pdev object
- * @id:      spectral config command id
- * @indata:  reference to input data
- * @insize:  input data size
- * @outdata: reference to output data
- * @outsize: output data size
- *
- * This function processes the spectral config command
- * and appropriate handlers are invoked.
- *
- * Return: 0 success else failure
- */
-int
-spectral_control_ol(struct wlan_objmgr_pdev *pdev,
-		    u_int id,
-		    void *indata,
-		    uint32_t insize, void *outdata, uint32_t *outsize)
-{
-	struct spectral_context *sc;
-
-	if (!pdev) {
-		spectral_err("PDEV is NULL!");
-		return -EPERM;
-	}
-	sc = spectral_get_spectral_ctx_from_pdev(pdev);
-	if (!sc) {
-		spectral_err("spectral context is NULL!");
-		return -EPERM;
-	}
-	return spectral_control_cmn(pdev, id, indata, insize, outdata, outsize);
-}
-
-/**
- * pdev_spectral_init_ol() - offload implementation for spectral init
- * @pdev: Pointer to pdev
- *
- * Return: On success, pointer to Spectral target_if internal private data, on
- * failure, NULL
- */
-static void *
-pdev_spectral_init_ol(struct wlan_objmgr_pdev *pdev)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_pdev_spectral_init(
-		pdev);
-}
-
-/**
- * pdev_spectral_deinit_ol() - offload implementation for spectral de-init
- * @pdev: Pointer to pdev
- *
- * Return: None
- */
-static void
-pdev_spectral_deinit_ol(struct wlan_objmgr_pdev *pdev)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-	psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_pdev_spectral_deinit(pdev);
-}
-
-/**
- * set_spectral_config_ol() - Set spectral config
- * @pdev:       Pointer to pdev object
- * @threshtype: spectral parameter type
- * @value:      value to be configured for the given spectral parameter
- *
- * Offload implementation for setting spectral config
- *
- * Return: 0 on success else failure
- */
-static int
-set_spectral_config_ol(struct wlan_objmgr_pdev *pdev,
-		       const uint32_t threshtype, const uint32_t value)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_set_spectral_config(
-		pdev, threshtype, value);
-}
-
-/**
- * get_spectral_config_ol() - Get spectral configuration
- * @pdev: Pointer to pdev object
- * @param: Pointer to spectral_config structure in which the configuration
- * should be returned
- *
- * Offload implementation for getting the current spectral configuration
- *
- * Return: None
- */
-static void
-get_spectral_config_ol(struct wlan_objmgr_pdev *pdev,
-		       struct spectral_config *sptrl_config)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-	psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_get_spectral_config(
-			pdev,
-			sptrl_config);
-}
-
-/**
- * start_spectral_scan_ol() - Start spectral scan
- * @pdev: Pointer to pdev object
- *
- * Offload implementation for starting spectral scan
- *
- * Return: 0 in case of success, -1 on failure
- */
-static int
-start_spectral_scan_ol(struct wlan_objmgr_pdev *pdev)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_start_spectral_scan(
-		pdev);
-}
-
-/**
- * stop_spectral_scan_ol() - Stop spectral scan
- * @pdev: Pointer to pdev object
- *
- * Offload implementation for stop spectral scan
- *
- * Return: None
- */
-static void
-stop_spectral_scan_ol(struct wlan_objmgr_pdev *pdev)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-	psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_stop_spectral_scan(pdev);
-}
-
-/**
- * is_spectral_active_ol() - Get whether Spectral is active
- * @pdev: Pointer to pdev object
- *
- * Offload implementation to get whether Spectral is active
- *
- * Return: True if Spectral is active, false if Spectral is not active
- */
-static bool
-is_spectral_active_ol(struct wlan_objmgr_pdev *pdev)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_is_spectral_active(
-		pdev);
-}
-
-/**
- * is_spectral_enabled_ol() - Get whether Spectral is active
- * @pdev: Pointer to pdev object
- *
- * Offload implementation to get whether Spectral is active
- *
- * Return: True if Spectral is active, false if Spectral is not active
- */
-static bool
-is_spectral_enabled_ol(struct wlan_objmgr_pdev *pdev)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_is_spectral_enabled(
-		pdev);
-}
-
-/**
- * set_debug_level_ol() - Set debug level for Spectral
- * @pdev: Pointer to pdev object
- * @debug_level: Debug level
- *
- * Offload implementation to set the debug level for Spectral
- *
- * Return: 0 in case of success
- */
-static int
-set_debug_level_ol(struct wlan_objmgr_pdev *pdev, uint32_t debug_level)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_set_debug_level(
-			pdev,
-			debug_level);
-}
-
-/**
- * get_debug_level_ol() - Get debug level for Spectral
- * @pdev: Pointer to pdev object
- *
- * Offload implementation to get the debug level for Spectral
- *
- * Return: Current debug level
- */
-static uint32_t
-get_debug_level_ol(struct wlan_objmgr_pdev *pdev)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_get_debug_level(pdev);
-}
-
-/**
- * get_spectral_capinfo_ol() - Get Spectral capability information
- * @pdev: Pointer to pdev object
- * @outdata: Buffer into which data should be copied
- *
- * Offload implementation to get the spectral capability information
- *
- * Return: void
- */
-static void
-get_spectral_capinfo_ol(struct wlan_objmgr_pdev *pdev, void *outdata)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_get_spectral_capinfo(
-		pdev, outdata);
-}
-
-/**
- * get_spectral_diagstats_ol() - Get Spectral diagnostic statistics
- * @pdev:  Pointer to pdev object
- * @outdata: Buffer into which data should be copied
- *
- * Offload implementation to get the spectral diagnostic statistics
- *
- * Return: void
- */
-static void
-get_spectral_diagstats_ol(struct wlan_objmgr_pdev *pdev, void *outdata)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_get_spectral_diagstats(
-		pdev, outdata);
-}
-
-/**
- * register_wmi_spectral_cmd_ops_ol() - Register wmi_spectral_cmd_ops
- * @cmd_ops: Pointer to the structure having wmi_spectral_cmd function pointers
- * @pdev: Pointer to pdev object
- *
- * Offload implementation to register wmi_spectral_cmd_ops in spectral
- * internal data structure
- *
- * Return: void
- */
-static void
-register_wmi_spectral_cmd_ops_ol(struct wlan_objmgr_pdev *pdev,
-				 struct wmi_spectral_cmd_ops *cmd_ops)
-{
-	struct wlan_objmgr_psoc *psoc = NULL;
-	struct wlan_lmac_if_sptrl_tx_ops *psptrl_tx_ops = NULL;
-
-	psoc = wlan_pdev_get_psoc(pdev);
-
-	psptrl_tx_ops = &psoc->soc_cb.tx_ops.sptrl_tx_ops;
-
-	return psptrl_tx_ops->sptrlto_register_wmi_spectral_cmd_ops(pdev,
-								    cmd_ops);
-}
+#include "../dispatcher/inc/wlan_spectral_tgt_api.h"
 
 void
 spectral_ctx_init_ol(struct spectral_context *sc)
@@ -307,19 +28,19 @@
 		spectral_err("spectral context is null!");
 		return;
 	}
-	sc->sptrlc_spectral_control = spectral_control_ol;
-	sc->sptrlc_pdev_spectral_init = pdev_spectral_init_ol;
-	sc->sptrlc_pdev_spectral_deinit = pdev_spectral_deinit_ol;
-	sc->sptrlc_set_spectral_config = set_spectral_config_ol;
-	sc->sptrlc_get_spectral_config = get_spectral_config_ol;
-	sc->sptrlc_start_spectral_scan = start_spectral_scan_ol;
-	sc->sptrlc_stop_spectral_scan = stop_spectral_scan_ol;
-	sc->sptrlc_is_spectral_active = is_spectral_active_ol;
-	sc->sptrlc_is_spectral_enabled = is_spectral_enabled_ol;
-	sc->sptrlc_set_debug_level = set_debug_level_ol;
-	sc->sptrlc_get_debug_level = get_debug_level_ol;
-	sc->sptrlc_get_spectral_capinfo = get_spectral_capinfo_ol;
-	sc->sptrlc_get_spectral_diagstats = get_spectral_diagstats_ol;
+	sc->sptrlc_spectral_control = tgt_spectral_control;
+	sc->sptrlc_pdev_spectral_init = tgt_pdev_spectral_init;
+	sc->sptrlc_pdev_spectral_deinit = tgt_pdev_spectral_deinit;
+	sc->sptrlc_set_spectral_config = tgt_set_spectral_config;
+	sc->sptrlc_get_spectral_config = tgt_get_spectral_config;
+	sc->sptrlc_start_spectral_scan = tgt_start_spectral_scan;
+	sc->sptrlc_stop_spectral_scan = tgt_stop_spectral_scan;
+	sc->sptrlc_is_spectral_active = tgt_is_spectral_active;
+	sc->sptrlc_is_spectral_enabled = tgt_is_spectral_enabled;
+	sc->sptrlc_set_debug_level = tgt_set_debug_level;
+	sc->sptrlc_get_debug_level = tgt_get_debug_level;
+	sc->sptrlc_get_spectral_capinfo = tgt_get_spectral_capinfo;
+	sc->sptrlc_get_spectral_diagstats = tgt_get_spectral_diagstats;
 	sc->sptrlc_register_wmi_spectral_cmd_ops =
-	    register_wmi_spectral_cmd_ops_ol;
+	    tgt_register_wmi_spectral_cmd_ops;
 }
diff --git a/spectral/dispatcher/inc/wlan_spectral_tgt_api.h b/spectral/dispatcher/inc/wlan_spectral_tgt_api.h
index 4659df3..5221d8a 100644
--- a/spectral/dispatcher/inc/wlan_spectral_tgt_api.h
+++ b/spectral/dispatcher/inc/wlan_spectral_tgt_api.h
@@ -22,6 +22,7 @@
 
 #include <wlan_objmgr_cmn.h>
 #include <qdf_types.h>
+#include "../../core/spectral_cmn_api_i.h"
 
 /**
  * tgt_send_phydata() - Send Spectral PHY data
@@ -47,4 +48,179 @@
  */
 void *tgt_get_target_handle(struct wlan_objmgr_pdev *pdev);
 
+/**
+ * tgt_spectral_control()- handler for demultiplexing requests from higher layer
+ * @pdev:    reference to global pdev object
+ * @id:      spectral config command id
+ * @indata:  reference to input data
+ * @insize:  input data size
+ * @outdata: reference to output data
+ * @outsize: output data size
+ *
+ * This function processes the spectral config command
+ * and appropriate handlers are invoked.
+ *
+ * Return: 0 success else failure
+ */
+int
+tgt_spectral_control(
+	struct wlan_objmgr_pdev *pdev,
+	u_int id,
+	void *indata,
+	u_int32_t insize, void *outdata, u_int32_t *outsize);
+
+/**
+ * tgt_pdev_spectral_init() - implementation for spectral init
+ * @pdev: Pointer to pdev
+ *
+ * Return: On success, pointer to Spectral target_if internal private data, on
+ * failure, NULL
+ */
+void *
+tgt_pdev_spectral_init(struct wlan_objmgr_pdev *pdev);
+
+/**
+ * tgt_pdev_spectral_deinit() - implementation for spectral de-init
+ * @pdev: Pointer to pdev
+ *
+ * Return: None
+ */
+void
+tgt_pdev_spectral_deinit(struct wlan_objmgr_pdev *pdev);
+
+/**
+ * tgt_set_spectral_config() - Set spectral config
+ * @pdev:       Pointer to pdev object
+ * @threshtype: spectral parameter type
+ * @value:      value to be configured for the given spectral parameter
+ *
+ * Implementation for setting spectral config
+ *
+ * Return: 0 on success else failure
+ */
+int
+tgt_set_spectral_config(
+	struct wlan_objmgr_pdev *pdev,
+	const u_int32_t threshtype, const u_int32_t value);
+
+/**
+ * tgt_get_spectral_config() - Get spectral configuration
+ * @pdev: Pointer to pdev object
+ * @param: Pointer to spectral_config structure in which the configuration
+ * should be returned
+ *
+ * Implementation for getting the current spectral configuration
+ *
+ * Return: None
+ */
+void
+tgt_get_spectral_config(
+	struct wlan_objmgr_pdev *pdev,
+	struct spectral_config *sptrl_config);
+
+/**
+ * tgt_start_spectral_scan() - Start spectral scan
+ * @pdev: Pointer to pdev object
+ *
+ * Implementation for starting spectral scan
+ *
+ * Return: 0 in case of success, -1 on failure
+ */
+int
+tgt_start_spectral_scan(struct wlan_objmgr_pdev *pdev);
+
+/**
+ * tgt_stop_spectral_scan() - Stop spectral scan
+ * @pdev: Pointer to pdev object
+ *
+ * Implementation for stop spectral scan
+ *
+ * Return: None
+ */
+void
+tgt_stop_spectral_scan(struct wlan_objmgr_pdev *pdev);
+
+/**
+ * tgt_is_spectral_active() - Get whether Spectral is active
+ * @pdev: Pointer to pdev object
+ *
+ * Implementation to get whether Spectral is active
+ *
+ * Return: True if Spectral is active, false if Spectral is not active
+ */
+bool
+tgt_is_spectral_active(struct wlan_objmgr_pdev *pdev);
+
+/**
+ * tgt_is_spectral_enabled() - Get whether Spectral is active
+ * @pdev: Pointer to pdev object
+ *
+ * Implementation to get whether Spectral is active
+ *
+ * Return: True if Spectral is active, false if Spectral is not active
+ */
+bool
+tgt_is_spectral_enabled(struct wlan_objmgr_pdev *pdev);
+
+/**
+ * tgt_set_debug_level() - Set debug level for Spectral
+ * @pdev: Pointer to pdev object
+ * @debug_level: Debug level
+ *
+ * Implementation to set the debug level for Spectral
+ *
+ * Return: 0 in case of success
+ */
+int
+tgt_set_debug_level(struct wlan_objmgr_pdev *pdev, u_int32_t debug_level);
+
+/**
+ * tgt_get_debug_level() - Get debug level for Spectral
+ * @pdev: Pointer to pdev object
+ *
+ * Implementation to get the debug level for Spectral
+ *
+ * Return: Current debug level
+ */
+u_int32_t
+tgt_get_debug_level(struct wlan_objmgr_pdev *pdev);
+
+/**
+ * tgt_get_spectral_capinfo() - Get Spectral capability information
+ * @pdev: Pointer to pdev object
+ * @outdata: Buffer into which data should be copied
+ *
+ * Implementation to get the spectral capability information
+ *
+ * Return: void
+ */
+void
+tgt_get_spectral_capinfo(struct wlan_objmgr_pdev *pdev, void *outdata);
+
+/**
+ * tgt_get_spectral_diagstats() - Get Spectral diagnostic statistics
+ * @pdev:  Pointer to pdev object
+ * @outdata: Buffer into which data should be copied
+ *
+ * Implementation to get the spectral diagnostic statistics
+ *
+ * Return: void
+ */
+void
+tgt_get_spectral_diagstats(struct wlan_objmgr_pdev *pdev, void *outdata);
+
+/**
+ * tgt_register_wmi_spectral_cmd_ops() - Register wmi_spectral_cmd_ops
+ * @cmd_ops: Pointer to the structure having wmi_spectral_cmd function pointers
+ * @pdev: Pointer to pdev object
+ *
+ * Implementation to register wmi_spectral_cmd_ops in spectral
+ * internal data structure
+ *
+ * Return: void
+ */
+void
+tgt_register_wmi_spectral_cmd_ops(
+	struct wlan_objmgr_pdev *pdev,
+	struct wmi_spectral_cmd_ops *cmd_ops);
 #endif /* _WLAN_SPECTRAL_TGT_API_H_ */
diff --git a/spectral/dispatcher/src/wlan_spectral_tgt_api.c b/spectral/dispatcher/src/wlan_spectral_tgt_api.c
index 001f33c..0952bc8 100644
--- a/spectral/dispatcher/src/wlan_spectral_tgt_api.c
+++ b/spectral/dispatcher/src/wlan_spectral_tgt_api.c
@@ -18,7 +18,6 @@
  */
 
 #include <wlan_spectral_tgt_api.h>
-#include "../../core/spectral_cmn_api_i.h"
 
 int
 tgt_send_phydata(struct wlan_objmgr_pdev *pdev,
@@ -44,3 +43,163 @@
 	}
 	return ps->psptrl_target_handle;
 }
+
+int
+tgt_spectral_control(
+	struct wlan_objmgr_pdev *pdev,
+	u_int id,
+	void *indata,
+	u_int32_t insize, void *outdata, u_int32_t *outsize)
+{
+	struct spectral_context *sc;
+
+	if (!pdev) {
+		spectral_err("PDEV is NULL!");
+		return -EPERM;
+	}
+	sc = spectral_get_spectral_ctx_from_pdev(pdev);
+	if (!sc) {
+		spectral_err("spectral context is NULL!");
+		return -EPERM;
+	}
+	return spectral_control_cmn(pdev, id, indata, insize, outdata, outsize);
+}
+
+void *
+tgt_pdev_spectral_init(struct wlan_objmgr_pdev *pdev)
+{
+	struct wlan_objmgr_psoc *psoc = NULL;
+
+	psoc = wlan_pdev_get_psoc(pdev);
+	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_pdev_spectral_init(
+		pdev);
+}
+
+void
+tgt_pdev_spectral_deinit(struct wlan_objmgr_pdev *pdev)
+{
+	struct wlan_objmgr_psoc *psoc = NULL;
+
+	psoc = wlan_pdev_get_psoc(pdev);
+	psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_pdev_spectral_deinit(pdev);
+}
+
+int
+tgt_set_spectral_config(
+	struct wlan_objmgr_pdev *pdev,
+	const u_int32_t threshtype, const u_int32_t value)
+{
+	struct wlan_objmgr_psoc *psoc = NULL;
+
+	psoc = wlan_pdev_get_psoc(pdev);
+	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_set_spectral_config(
+		pdev, threshtype, value);
+}
+
+void
+tgt_get_spectral_config(
+	struct wlan_objmgr_pdev *pdev,
+	struct spectral_config *sptrl_config)
+{
+	struct wlan_objmgr_psoc *psoc = NULL;
+
+	psoc = wlan_pdev_get_psoc(pdev);
+	psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_get_spectral_config(
+			pdev,
+			sptrl_config);
+}
+
+int
+tgt_start_spectral_scan(struct wlan_objmgr_pdev *pdev)
+{
+	struct wlan_objmgr_psoc *psoc = NULL;
+
+	psoc = wlan_pdev_get_psoc(pdev);
+	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_start_spectral_scan(
+		pdev);
+}
+
+void
+tgt_stop_spectral_scan(struct wlan_objmgr_pdev *pdev)
+{
+	struct wlan_objmgr_psoc *psoc = NULL;
+
+	psoc = wlan_pdev_get_psoc(pdev);
+	psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_stop_spectral_scan(pdev);
+}
+
+bool
+tgt_is_spectral_active(struct wlan_objmgr_pdev *pdev)
+{
+	struct wlan_objmgr_psoc *psoc = NULL;
+
+	psoc = wlan_pdev_get_psoc(pdev);
+	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_is_spectral_active(
+		pdev);
+}
+
+bool
+tgt_is_spectral_enabled(struct wlan_objmgr_pdev *pdev)
+{
+	struct wlan_objmgr_psoc *psoc = NULL;
+
+	psoc = wlan_pdev_get_psoc(pdev);
+	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_is_spectral_enabled(
+		pdev);
+}
+
+int
+tgt_set_debug_level(struct wlan_objmgr_pdev *pdev, u_int32_t debug_level)
+{
+	struct wlan_objmgr_psoc *psoc = NULL;
+
+	psoc = wlan_pdev_get_psoc(pdev);
+	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_set_debug_level(
+			pdev,
+			debug_level);
+}
+
+u_int32_t
+tgt_get_debug_level(struct wlan_objmgr_pdev *pdev)
+{
+	struct wlan_objmgr_psoc *psoc = NULL;
+
+	psoc = wlan_pdev_get_psoc(pdev);
+	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_get_debug_level(pdev);
+}
+
+void
+tgt_get_spectral_capinfo(struct wlan_objmgr_pdev *pdev, void *outdata)
+{
+	struct wlan_objmgr_psoc *psoc = NULL;
+
+	psoc = wlan_pdev_get_psoc(pdev);
+	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_get_spectral_capinfo(
+		pdev, outdata);
+}
+
+void
+tgt_get_spectral_diagstats(struct wlan_objmgr_pdev *pdev, void *outdata)
+{
+	struct wlan_objmgr_psoc *psoc = NULL;
+
+	psoc = wlan_pdev_get_psoc(pdev);
+	return psoc->soc_cb.tx_ops.sptrl_tx_ops.sptrlto_get_spectral_diagstats(
+		pdev, outdata);
+}
+
+void
+tgt_register_wmi_spectral_cmd_ops(
+	struct wlan_objmgr_pdev *pdev,
+	struct wmi_spectral_cmd_ops *cmd_ops)
+{
+	struct wlan_objmgr_psoc *psoc = NULL;
+	struct wlan_lmac_if_sptrl_tx_ops *psptrl_tx_ops = NULL;
+
+	psoc = wlan_pdev_get_psoc(pdev);
+
+	psptrl_tx_ops = &psoc->soc_cb.tx_ops.sptrl_tx_ops;
+
+	return psptrl_tx_ops->sptrlto_register_wmi_spectral_cmd_ops(pdev,
+								    cmd_ops);
+}