diff --git a/source/drivers/gpadc/v0/gpadc.c b/source/drivers/gpadc/v0/gpadc.c
index b72ed8790a..4b73d760e5 100644
--- a/source/drivers/gpadc/v0/gpadc.c
+++ b/source/drivers/gpadc/v0/gpadc.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2021 Texas Instruments Incorporated
+ * Copyright (C) 2021-23 Texas Instruments Incorporated
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -63,19 +63,12 @@
 /* ========================================================================== */
 
 static uint8_t GPADC_convSkipTimeToCode(uint32_t skipSamples);
-static void GPADC_convert(uint32_t cfgVal,
-                          uint32_t paramVal,
+static void GPADC_convert(uint32_t cfgVal, uint32_t paramVal,
                           GPADC_ResultType *gpAdcResult);
-static void GPADC_cfg(uint32_t cfgVal,
-                      uint32_t paramVal);
+static void GPADC_cfg(uint32_t cfgVal, uint32_t paramVal);
 static void GPADC_readSamplingResult(uint8_t numSamples,
-                                     GPADC_ResultType *gpAdcResult);
-static uint16_t GPADC_efuseExtractTrims (volatile uint32_t reg,
-                                        uint8_t msb, uint8_t lsb);
-static int32_t GPADC_calculateTemp(uint16_t gpadcTempCode,
-                                   uint8_t index);
+                                    GPADC_ResultType *gpAdcResult);
 static void GPADC_SWTrigger(void);
-static void GPADC_computeTempSlope(void);
 
 /* ========================================================================== */
 /*                            Global Variables                                */
@@ -85,19 +78,13 @@ static void GPADC_computeTempSlope(void);
 Bool isGPADCInitialized = FALSE;
 /** \brief Externally defined GPADC Driver object */
 GPADC_DriverObjectType GPADCDrvObj;
-/** \brief Temperature sensor trim Slop Values */
-GPADC_TempSensTrimType tempSensTrimSlopeValues;
-/** \brief Efuse Temperature trim Values */
-GPADC_EfuseTempTrimType efuseTempTrimValues;
 
-
-/** \brief TopRCM Base Address */
-CSL_top_ctrlRegs *topCtrlRegs = (CSL_top_ctrlRegs *)CSL_MSS_TOPRCM_U_BASE;
 /** \brief Externally defined  GPADC Param Lut*/
 extern GPADC_CfgAndParamValuesType GPADC_ConfigParamLuTab[MAX_GPADC_MEAS_SOURCES];
 /** \brief Externally defined  GPADC Temperature Sensors Param Lookup Table*/
 extern GPADC_TempSensMuxType GPADC_TempSensConfigParamTab[MAX_GPADC_TEMP_SENSORS];
 
+
 /* ========================================================================== */
 /*                          Function Definitions                              */
 /* ========================================================================== */
@@ -123,7 +110,7 @@ int32_t GPADC_open(GPADC_ConfigType *CfgPtr)
     uint8_t skipSamplesReg = 0U;
     int32_t status = SystemP_SUCCESS;
     GPADC_ConfigType *ConfigPtr;
-    
+
 	if(TRUE == isGPADCInitialized)
 	{
 		 status = SystemP_FAILURE;
@@ -178,7 +165,7 @@ int32_t GPADC_open(GPADC_ConfigType *CfgPtr)
                     skipSamples = GPADC_TempSensConfigParamTab[channelIndex].skipSamples;;
                     skipSamplesReg = GPADC_convSkipTimeToCode(skipSamples);
                     GPADCDrvObj.driverChannelConfig[channelIndex].channelParamValue.bits.b7_SkipSamples = (((uint32_t)skipSamplesReg & (uint32_t)0x7FU));
-                    GPADCDrvObj.driverChannelConfig[channelIndex].channelParamValue.bits.b9_Reserved = 0U; // Clear reserved 9 bits
+                    GPADCDrvObj.driverChannelConfig[channelIndex].channelParamValue.bits.b9_Reserved = 0U; /* Clear reserved 9 bits */
                 }
             }
         }
@@ -209,7 +196,7 @@ int32_t GPADC_open(GPADC_ConfigType *CfgPtr)
         /* Enable the GPADC FSM clock */
         REG_STRUCT_SWRITE(GPADC_REGS_PTR->r_Reg0.b1_GpadcFsmClkEnable, 1U, regWrSts);
 
-        /* Enable the GPADC clock */    
+        /* Enable the GPADC clock */
         REG_STRUCT_SWRITE(GPADC_REGS_PTR->r_Reg8.b1_GpadcClkEnable, 1U, regWrSts);
 
         /* Write the Mode of operation */
@@ -296,7 +283,7 @@ GPADC_ConvResultType GPADC_startGroupConversion(GPADC_channelsGroupSelectType ch
                     /* Check if the GPADC is not in use before using it */
                     DebugP_assert(GPADC_MODE_DISABLE == GPADC_REGS_PTR->r_Reg0.b2_DcbistMode);
 
-                        /* Change the Mode of operation to IFM */
+                    /* Change the Mode of operation to IFM */
                     REG_STRUCT_SWRITE(GPADC_REGS_PTR->r_Reg0.b2_DcbistMode, GPADC_MODE_IFM, regWrSts);
                     REG_STRUCT_SWRITE(GPADC_REGS_PTR->r_Reg0.b1_GpadcDebugModeEnable, 1U, regWrSts);
 
@@ -526,114 +513,7 @@ int32_t GPADC_close(void)
     return status;
 }
 
-void GPADC_initTempMeasurement(void)
-{
-    int16_t trimTemp;
-    memset(&efuseTempTrimValues,0,sizeof(efuseTempTrimValues));
-
-    efuseTempTrimValues.FuseROMVer = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_14, \
-            EFUSE1_ROW_14_FUSEROM_VER_STOP_BIT, EFUSE1_ROW_14_FUSEROM_VER_START_BIT);
-	trimTemp = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_36, \
-    		EFUSE1_ROW_36_TRIM_TEMPERATURE_30C_STOP_BIT , EFUSE1_ROW_36_TRIM_TEMPERATURE_30C_START_BIT);
-
-    efuseTempTrimValues.TrimTemp30C = trimTemp;
-
-    trimTemp = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_33, \
-            EFUSE1_ROW_33_TRIM_TEMPERATURE_125C_STOP_BIT , EFUSE1_ROW_33_TRIM_TEMPERATURE_125C_START_BIT);
-
-    efuseTempTrimValues.TrimTemp125C = trimTemp;
-
-
-	if((0U == efuseTempTrimValues.FuseROMVer) && (0U == efuseTempTrimValues.TrimTemp30C) \
-			&& (0U == efuseTempTrimValues.TrimTemp125C))
-	{
-		tempSensTrimSlopeValues.TrimTemp30C = ZERO;
-		tempSensTrimSlopeValues.TrimTemp125C = ZERO;
-
-		tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_DSP_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_DIG_TEMP_SENSOR_TRIM_30C;
-		tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_HWA_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_DIG_TEMP_SENSOR_TRIM_30C;
-		tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_HSM_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_DIG_TEMP_SENSOR_TRIM_30C;
-
-		tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_DSP_TEMP_SENSOR] = ZERO;
-		tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_HWA_TEMP_SENSOR] = ZERO;
-		tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_HSM_TEMP_SENSOR] = ZERO;
-
-		tempSensTrimSlopeValues.Slope[GPADC_DIG_DSP_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_SLOPE;
-		tempSensTrimSlopeValues.Slope[GPADC_DIG_HWA_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_SLOPE;
-		tempSensTrimSlopeValues.Slope[GPADC_DIG_HSM_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_SLOPE;
-
-		tempSensTrimSlopeValues.InterceptTemp = ZERO_PT_TRIM_FIXED_TRIM_TEMP;
-	}
-	else if((1U == efuseTempTrimValues.FuseROMVer) || (0U != efuseTempTrimValues.TrimTemp30C) \
-			|| (0U != efuseTempTrimValues.TrimTemp125C))
-	{
-		tempSensTrimSlopeValues.TrimTemp30C = efuseTempTrimValues.TrimTemp30C;
-		tempSensTrimSlopeValues.TrimTemp125C = efuseTempTrimValues.TrimTemp125C;
-
-		efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_DSP_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_37, \
-				EFUSE1_ROW_37_DIG_DSP_TEMP_SENSOR_TRIM0_30C_STOP_BIT, EFUSE1_ROW_37_DIG_DSP_TEMP_SENSOR_TRIM0_30C_START_BIT);
-		efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_HWA_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_37, \
-				EFUSE1_ROW_37_DIG_HWA_TEMP_SENSOR_TRIM1_30C_STOP_BIT, EFUSE1_ROW_37_DIG_HWA_TEMP_SENSOR_TRIM1_30C_START_BIT);
-		efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_HSM_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_38, \
-				EFUSE1_ROW_38_DIG_HSM_TEMP_SENSOR_TRIM2_30C_STOP_BIT, EFUSE1_ROW_38_DIG_HSM_TEMP_SENSOR_TRIM2_30C_START_BIT);
-
-
-		efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_DSP_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_34, \
-				EFUSE1_ROW_34_DIG_DSP_TEMP_SENSOR_TRIM0_125C_STOP_BIT, EFUSE1_ROW_34_DIG_DSP_TEMP_SENSOR_TRIM0_125C_START_BIT);
-		efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_HWA_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_34, \
-				EFUSE1_ROW_34_DIG_HWA_TEMP_SENSOR_TRIM1_125C_STOP_BIT, EFUSE1_ROW_34_DIG_HWA_TEMP_SENSOR_TRIM1_125C_START_BIT);
-		efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_HSM_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_35, \
-				EFUSE1_ROW_35_DIG_HSM_TEMP_SENSOR_TRIM2_125C_STOP_BIT, EFUSE1_ROW_35_DIG_HSM_TEMP_SENSOR_TRIM2_125C_START_BIT);
-
-		tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_DSP_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_DSP_TEMP_SENSOR];
-		tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_HWA_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_HWA_TEMP_SENSOR];
-		tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_HSM_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_HSM_TEMP_SENSOR];
-
-		tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_DSP_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_DSP_TEMP_SENSOR];
-		tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_HWA_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_HWA_TEMP_SENSOR];
-		tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_HSM_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_HSM_TEMP_SENSOR];
-
-		tempSensTrimSlopeValues.Slope[GPADC_DIG_DSP_TEMP_SENSOR] = ONE_PT_TRIM_FIXED_SLOPE;
-		tempSensTrimSlopeValues.Slope[GPADC_DIG_HWA_TEMP_SENSOR] = ONE_PT_TRIM_FIXED_SLOPE;
-		tempSensTrimSlopeValues.Slope[GPADC_DIG_HSM_TEMP_SENSOR] = ONE_PT_TRIM_FIXED_SLOPE;
-
-		tempSensTrimSlopeValues.InterceptTemp = ( tempSensTrimSlopeValues.TrimTemp30C - EFUSE_TRIM_TEMPERATURE_CONST )/ EFUSE_TRIM_TEMPERATURE_DIV_CONST;
-	}
-	else if(2U == efuseTempTrimValues.FuseROMVer)
-	{
-		tempSensTrimSlopeValues.TrimTemp30C = efuseTempTrimValues.TrimTemp30C;
-		tempSensTrimSlopeValues.TrimTemp125C = efuseTempTrimValues.TrimTemp125C;
-
-		efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_DSP_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_37, \
-				EFUSE1_ROW_37_DIG_DSP_TEMP_SENSOR_TRIM0_30C_STOP_BIT, EFUSE1_ROW_37_DIG_DSP_TEMP_SENSOR_TRIM0_30C_START_BIT);
-		efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_HWA_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_37, \
-				EFUSE1_ROW_37_DIG_HWA_TEMP_SENSOR_TRIM1_30C_STOP_BIT, EFUSE1_ROW_37_DIG_HWA_TEMP_SENSOR_TRIM1_30C_START_BIT);
-		efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_HSM_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_38, \
-				EFUSE1_ROW_38_DIG_HSM_TEMP_SENSOR_TRIM2_30C_STOP_BIT, EFUSE1_ROW_38_DIG_HSM_TEMP_SENSOR_TRIM2_30C_START_BIT);
-
-
-		efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_DSP_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_34, \
-				EFUSE1_ROW_34_DIG_DSP_TEMP_SENSOR_TRIM0_125C_STOP_BIT, EFUSE1_ROW_34_DIG_DSP_TEMP_SENSOR_TRIM0_125C_START_BIT);
-		efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_HWA_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_34, \
-				EFUSE1_ROW_34_DIG_HWA_TEMP_SENSOR_TRIM1_125C_STOP_BIT, EFUSE1_ROW_34_DIG_HWA_TEMP_SENSOR_TRIM1_125C_START_BIT);
-		efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_HSM_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_35, \
-				EFUSE1_ROW_35_DIG_HSM_TEMP_SENSOR_TRIM2_125C_STOP_BIT, EFUSE1_ROW_35_DIG_HSM_TEMP_SENSOR_TRIM2_125C_START_BIT);
-
-		tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_DSP_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_DSP_TEMP_SENSOR];
-		tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_HWA_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_HWA_TEMP_SENSOR];
-		tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_HSM_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_HSM_TEMP_SENSOR];
-
-		tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_DSP_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_DSP_TEMP_SENSOR];
-		tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_HWA_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_HWA_TEMP_SENSOR];
-		tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_HSM_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_HSM_TEMP_SENSOR];
-
-
-		GPADC_computeTempSlope();
 
-		tempSensTrimSlopeValues.InterceptTemp = ( tempSensTrimSlopeValues.TrimTemp30C - EFUSE_TRIM_TEMPERATURE_CONST )/ EFUSE_TRIM_TEMPERATURE_DIV_CONST;
-
-	}
-}
 
 static uint8_t GPADC_convSkipTimeToCode(uint32_t skipSamples)
 {
@@ -780,92 +660,3 @@ static void GPADC_readSamplingResult(uint8_t numSamples, GPADC_ResultType *gpAdc
 
     return;
 }
-
-int32_t GPADC_readTemperature(uint8_t numAverages,uint8_t numChannels, GPADC_TempSensValueType * tempValuesPtr)
-{
-	uint16_t gpadcTempVal[3] = {0}, gpadcCode;
-	int32_t gpadcTempValSum[3] = {0}, tempVal;
-	uint8_t index, index2;
-	GPADC_channelsGroupSelectType channels;
-	GPADC_ConvResultType convRes;
-    uint32_t regWrSts = 0U;
-    static uint8_t avgSamples = 0;
-    int32_t status = SystemP_SUCCESS;
-    avgSamples = numAverages;
-
-	channels.bits.b9_ChannelSelectionBitMap = 0x007;
-
-    REG_STRUCT_SWRITE(MSS_TOPRCM_ANA_REG_TW_CTRL_REG_LOWV_PTR->b1_TsSeInpBufEn, 1U, regWrSts);
-    REG_STRUCT_SWRITE(MSS_TOPRCM_ANA_REG_TW_CTRL_REG_LOWV_PTR->b1_TsDiffInpBufEn, 0U, regWrSts);
-
-	GPADC_setupResultBuffer(&gpadcTempVal[0]);
-
-	for( index = 0; index < avgSamples; index++)
-	{
-		convRes = GPADC_startGroupConversion(channels, numChannels);
-
-		if(GPADC_CONV_DONE == convRes)
-		{
-			status = SystemP_SUCCESS;
-		}
-		else if(GPADC_CONV_CHANNEL_CONFIG_MISSING == convRes)
-		{
-			status = SystemP_FAILURE;
-			break;
-		}
-		else
-		{
-			status = SystemP_FAILURE;
-			break;
-		}
-
-		for( index2 = 0; index2 < MAX_GPADC_TEMP_SENSORS; index2++)
-		{
-			gpadcCode = gpadcTempVal[index2];
-			tempVal = GPADC_calculateTemp(gpadcCode, index2);
-			gpadcTempValSum[index2] = gpadcTempValSum[index2] + tempVal;
-		}
-	}
-
-	tempValuesPtr->DigDspTempValue = gpadcTempValSum[GPADC_DIG_DSP_TEMP_SENSOR] / avgSamples;
-	tempValuesPtr->DigHwaTempValue = gpadcTempValSum[GPADC_DIG_HWA_TEMP_SENSOR] / avgSamples;
-	tempValuesPtr->DigHsmTempValue = gpadcTempValSum[GPADC_DIG_HSM_TEMP_SENSOR] / avgSamples;
-
-	return status;
-}
-
-static uint16_t GPADC_efuseExtractTrims (volatile uint32_t reg, uint8_t msb, uint8_t lsb)
-{
-    uint32_t    mask;
-    uint8_t     bits;
-    uint16_t    value;
-
-    /* Compute the mask: */
-    bits = (msb - lsb + 1U);
-    mask = (uint32_t)((uint32_t)1U << bits);
-    mask = mask - 1U;
-
-    value = (uint16_t)((reg >> lsb) & mask);
-    return value;
-}
-
-static void GPADC_computeTempSlope(void)
-{
-    uint8_t index;
-
-    for( index = 0; index < MAX_GPADC_TEMP_SENSORS; index++)
-    {
-        tempSensTrimSlopeValues.Slope[index] = (tempSensTrimSlopeValues.TrimIntercept125C[index] - tempSensTrimSlopeValues.TrimIntercept30C[index]) \
-            / (tempSensTrimSlopeValues.TrimTemp125C - tempSensTrimSlopeValues.TrimTemp30C);
-    }
-}
-
-static int32_t GPADC_calculateTemp(uint16_t gpadcTempCode, uint8_t index)
-{
-	int32_t tempVal;
-
-	tempVal = ((((int32_t)gpadcTempCode - (int32_t)tempSensTrimSlopeValues.TrimIntercept30C[index]) \
-			/ (int32_t)tempSensTrimSlopeValues.Slope[index]) \
-			+ tempSensTrimSlopeValues.InterceptTemp);
-	return tempVal;
-}
diff --git a/source/drivers/gpadc/v0/gpadc.h b/source/drivers/gpadc/v0/gpadc.h
index 6d9ed2d9c1..088daecf05 100644
--- a/source/drivers/gpadc/v0/gpadc.h
+++ b/source/drivers/gpadc/v0/gpadc.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2021 Texas Instruments Incorporated
+ * Copyright (C) 2021-23 Texas Instruments Incorporated
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -121,58 +121,6 @@ extern "C" {
  */
 #define GPADC_TIMEOUT_MAX         (200000U)
 
-/** \brief   Efuse Trime Constant Temperature */
-#define EFUSE_TRIM_TEMPERATURE_CONST           523
-/** \brief   Efuse Trime Constant Temperature Divider */
-#define EFUSE_TRIM_TEMPERATURE_DIV_CONST       10
-/** \brief   Zero point TRIM Fixed Temperature */
-#define ZERO_PT_TRIM_FIXED_TRIM_TEMP                    110
-/** \brief   Zero point TRIM Fixed  Digital Temperature */
-#define ZERO_PT_TRIM_FIXED_DIG_TEMP_SENSOR_TRIM_30C     305U
-/** \brief   Zero Value */
-#define ZERO                                            0
-
-/** \brief   Zero point TRIM Fixed Slope */
-#define ZERO_PT_TRIM_FIXED_SLOPE -1.05
-/** \brief   One point TRIM Fixed Slope */
-#define ONE_PT_TRIM_FIXED_SLOPE -1.05
-/** \brief   Efuse Version Start Bit */
-#define EFUSE1_ROW_14_FUSEROM_VER_START_BIT    20U
-/** \brief   Efuse Version Stop Bit */
-#define EFUSE1_ROW_14_FUSEROM_VER_STOP_BIT     24U
-/** \brief   Efuse Trim Temperature 30C Start Bit */
-#define EFUSE1_ROW_36_TRIM_TEMPERATURE_30C_START_BIT    15U
-/** \brief   Efuse Trim Temperature 30C Stop Bit */
-#define EFUSE1_ROW_36_TRIM_TEMPERATURE_30C_STOP_BIT     25U
-/** \brief   Efuse Trim Temperature 125C Start Bit */
-#define EFUSE1_ROW_33_TRIM_TEMPERATURE_125C_START_BIT    0U
-/** \brief   Efuse Trim Temperature 125C Stop Bit */
-#define EFUSE1_ROW_33_TRIM_TEMPERATURE_125C_STOP_BIT     10U
-/** \brief   Efuse Digital DSP Temperature 30C Sensor Start Bit */
-#define EFUSE1_ROW_37_DIG_DSP_TEMP_SENSOR_TRIM0_30C_START_BIT  5U
-/** \brief   Efuse Digital DSP Temperature 30C Sensor Stop Bit */
-#define EFUSE1_ROW_37_DIG_DSP_TEMP_SENSOR_TRIM0_30C_STOP_BIT   14U
-/** \brief   Efuse Digital HWA Temperature 30C Sensor Start Bit */
-#define EFUSE1_ROW_37_DIG_HWA_TEMP_SENSOR_TRIM1_30C_START_BIT  15U
-/** \brief   Efuse Digital HWA Temperature 30C Sensor Stop Bit */
-#define EFUSE1_ROW_37_DIG_HWA_TEMP_SENSOR_TRIM1_30C_STOP_BIT   24U
-/** \brief   Efuse Digital HSM Temperature 30C Sensor Start Bit */
-#define EFUSE1_ROW_38_DIG_HSM_TEMP_SENSOR_TRIM2_30C_START_BIT  0U
-/** \brief   Efuse Digital HSM Temperature 30C Sensor Stop Bit */
-#define EFUSE1_ROW_38_DIG_HSM_TEMP_SENSOR_TRIM2_30C_STOP_BIT  9U
-/** \brief   Efuse Digital DSP Temperature 125C Sensor Start Bit */
-#define EFUSE1_ROW_34_DIG_DSP_TEMP_SENSOR_TRIM0_125C_START_BIT  5U
-/** \brief   Efuse Digital DSP Temperature 125C Sensor Stop Bit */
-#define EFUSE1_ROW_34_DIG_DSP_TEMP_SENSOR_TRIM0_125C_STOP_BIT   14U
-/** \brief   Efuse Digital HWA Temperature 125C Sensor Start Bit */
-#define EFUSE1_ROW_34_DIG_HWA_TEMP_SENSOR_TRIM1_125C_START_BIT  15U
-/** \brief   Efuse Digital HWA Temperature 125C Sensor Stop Bit */
-#define EFUSE1_ROW_34_DIG_HWA_TEMP_SENSOR_TRIM1_125C_STOP_BIT   24U
-/** \brief   Efuse Digital HSM Temperature 125C Sensor Start Bit */
-#define EFUSE1_ROW_35_DIG_HSM_TEMP_SENSOR_TRIM2_125C_START_BIT  0U
-/** \brief   Efuse Digital HSM Temperature 125C Sensor Stop Bit */
-#define EFUSE1_ROW_35_DIG_HSM_TEMP_SENSOR_TRIM2_125C_STOP_BIT   9U
-
 /** \brief   GPADC Register Base Address */
 #define GPADC_REGS_PTR            ((T_GPADC_REGS*)CSL_MSS_GPADC_REG_U_BASE)
 /** \brief   GPADCPKTRAM Register Base Address */
@@ -538,7 +486,7 @@ typedef struct
  * \brief
  *  GPADC Driver Object configuration
  *
- *  The structure holds the channel confiiguration structure,operation mode structure 
+ *  The structure holds the channel confiiguration structure,operation mode structure
  */
 typedef struct
 {
@@ -554,43 +502,6 @@ typedef struct
 	uint16_t                        *ResultBufferPtr;
 }GPADC_DriverObjectType;
 
-/**
- * \brief
- *   The Temperature sensor trim parameters structure
- */
-typedef struct
-{
-   /** \brief FuseROM Version */
-   uint16_t      FuseROMVer;
-   /** \brief Efuse Tim Temperature30C Value */
-   uint16_t      TrimTemp30C;
-   /** \brief Efuse Tim Temperature125C Value */
-   uint16_t      TrimTemp125C;
-   /** \brief Efuse Tim Intercept30C Value */
-   uint16_t      TrimIntercept30C[MAX_GPADC_TEMP_SENSORS];
-   /** \brief Efuse Tim Intercept125C Value */
-   uint16_t      TrimIntercept125C[MAX_GPADC_TEMP_SENSORS];
-} GPADC_EfuseTempTrimType;
-
-/** \brief
- *    The Temperature sensor trim parameters structure
- */
-typedef struct
-{
-    /** \brief Temperature trim value */
-   uint16_t     TrimTemp30C;
-   /** \brief Temperature trim value */
-   uint16_t     TrimTemp125C;
-   /** \brief Intercept trim value */
-   uint16_t     TrimIntercept30C[MAX_GPADC_TEMP_SENSORS];
-   /** \brief Intercept trim value */
-   uint16_t     TrimIntercept125C[MAX_GPADC_TEMP_SENSORS];
-   /** \brief Slope value */
-   float        Slope[MAX_GPADC_TEMP_SENSORS];
-   /** \brief Intercept Temperature value */
-   float        InterceptTemp;
-} GPADC_TempSensTrimType;
-
 /** \brief
  *   Temperature sensors mux values
  */
@@ -1083,7 +994,7 @@ int32_t GPADC_close(void);
  *
  *  \param[in]  channels
  *  	        Channel selection bitmap to start conversion together
- *  \param[in]  numChannels     
+ *  \param[in]  numChannels
  *              number of channels
  *
  *  \return     GPADC_CONV_ERROR: GPADC Conversion Error
diff --git a/source/drivers/gpadc/v0/soc/am273x/gpadc_soc.c b/source/drivers/gpadc/v0/soc/am273x/gpadc_soc.c
index 2bc2dd2538..ee268ef88e 100644
--- a/source/drivers/gpadc/v0/soc/am273x/gpadc_soc.c
+++ b/source/drivers/gpadc/v0/soc/am273x/gpadc_soc.c
@@ -1,5 +1,5 @@
 /*
- *  Copyright (C) 2021 Texas Instruments Incorporated.
+ *  Copyright (C) 2021-23 Texas Instruments Incorporated.
  *
  *  Redistribution and use in source and binary forms, with or without
  *  modification, are permitted provided that the following conditions
@@ -47,16 +47,44 @@
 #include <drivers/gpadc.h>
 
 /* ========================================================================== */
-/*                         Global Variables                        */
+/*                             Macros & Typedefs                              */
 /* ========================================================================== */
 
-/* None */
+/** \brief   Zero point TRIM Fixed Slope */
+#define ZERO_PT_TRIM_FIXED_SLOPE                                     (-0.988f)
+
+/** \brief   Zero point TRIM Fixed Temperature */
+#define ZERO_PT_TRIM_FIXED_TRIM_TEMP                                 (32.0f)
 
+/** \brief   Zero Value */
+#define ZERO                                                         (0.0f)
+
+/** \brief   Zero point TRIM Fixed  Digital Temperature */
+#define ZERO_PT_TRIM_FIXED_DIG_TEMP_SENSOR_TRIM_30C                  (384U)
 
 /* ========================================================================== */
 /*                         Structure                  */
 /* ========================================================================== */
 
+/** \brief
+ *    The Temperature sensor trim parameters structure
+ */
+typedef struct
+{
+    /** \brief Temperature trim value */
+   Float32      TrimTemp30C;
+   /** \brief Temperature trim value */
+   Float32      TrimTemp125C;
+   /** \brief Intercept trim value */
+   uint16_t     TrimIntercept30C[MAX_GPADC_TEMP_SENSORS];
+   /** \brief Intercept trim value */
+   uint16_t     TrimIntercept125C[MAX_GPADC_TEMP_SENSORS];
+   /** \brief Slope value */
+   Float32      Slope[MAX_GPADC_TEMP_SENSORS];
+   /** \brief Intercept Temperature value */
+   Float32      InterceptTemp;
+} GPADC_TempSensTrimType;
+
 /** \brief
  *   GPADC Param Lut
  *   ConfigValue, {ParamValue, CollectSamples, SkipSamples, ChirpBreak, Reserved}, time(10MHz clock)
@@ -85,11 +113,19 @@ GPADC_TempSensMuxType GPADC_TempSensConfigParamTab[MAX_GPADC_TEMP_SENSORS] = {
     {   0x100000U,     0x7CU,        0U,           255U}   /* #2 GPADC_DIG_HSM_TEMP_SENSOR */
 };
 
+/* ========================================================================== */
+/*                         Global Variables                        */
+/* ========================================================================== */
+
+/** \brief Temperature sensor trim Slop Values */
+GPADC_TempSensTrimType tempSensTrimSlopeValues;
+
 /* ========================================================================== */
 /*                          Function Declarations                             */
 /* ========================================================================== */
 
-/* None */
+static void GPADC_computeTempSlope(void);
+static Float32 GPADC_calculateTemp(uint16_t gpadcTempCode, uint8_t index);
 
 /* ========================================================================== */
 /*                          Function Definitions                              */
@@ -124,5 +160,88 @@ void GPADC_socResetRelease(void)
 
     /*! Assert if Register read back test failed */
     DebugP_assert(NULL == regWrSts);
+}
+
+void GPADC_initTempMeasurement(void)
+{
+    memset(&tempSensTrimSlopeValues, 0, sizeof(GPADC_TempSensTrimType));
+
+    /* Zero-Point Trim */
+    tempSensTrimSlopeValues.TrimTemp30C  = ZERO;
+    tempSensTrimSlopeValues.TrimTemp125C = ZERO;
+
+    tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_DSP_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_DIG_TEMP_SENSOR_TRIM_30C;
+    tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_HWA_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_DIG_TEMP_SENSOR_TRIM_30C;
+    tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_HSM_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_DIG_TEMP_SENSOR_TRIM_30C;
+
+    tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_DSP_TEMP_SENSOR] = ZERO;
+    tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_HWA_TEMP_SENSOR] = ZERO;
+    tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_HSM_TEMP_SENSOR] = ZERO;
+
+    tempSensTrimSlopeValues.Slope[GPADC_DIG_DSP_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_SLOPE;
+    tempSensTrimSlopeValues.Slope[GPADC_DIG_HWA_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_SLOPE;
+    tempSensTrimSlopeValues.Slope[GPADC_DIG_HSM_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_SLOPE;
+
+    tempSensTrimSlopeValues.InterceptTemp = ZERO_PT_TRIM_FIXED_TRIM_TEMP;
+}
+
+int32_t GPADC_readTemperature(uint8_t numAverages,uint8_t numChannels, GPADC_TempSensValueType * tempValuesPtr)
+{
+    uint16_t gpadcTempVal[3] = {0}, gpadcCode;
+    Float32 gpadcTempValSum[3] = {0}, tempVal;
+    uint8_t index, index2;
+    GPADC_channelsGroupSelectType channels;
+    GPADC_ConvResultType convRes;
+    uint32_t regWrSts = 0U;
+    int32_t status = SystemP_SUCCESS;
+
+    channels.bits.b9_ChannelSelectionBitMap = 0x007;
+
+    REG_STRUCT_SWRITE(MSS_TOPRCM_ANA_REG_TW_CTRL_REG_LOWV_PTR->b1_TsSeInpBufEn, 1U, regWrSts);
+    REG_STRUCT_SWRITE(MSS_TOPRCM_ANA_REG_TW_CTRL_REG_LOWV_PTR->b1_TsDiffInpBufEn, 0U, regWrSts);
+
+    GPADC_setupResultBuffer(&gpadcTempVal[0]);
+
+    for( index = 0; index < numAverages; index++)
+    {
+        convRes = GPADC_startGroupConversion(channels, numChannels);
+
+        if(GPADC_CONV_DONE == convRes)
+        {
+            status = SystemP_SUCCESS;
+        }
+        else if(GPADC_CONV_CHANNEL_CONFIG_MISSING == convRes)
+        {
+            status = SystemP_FAILURE;
+            break;
+        }
+        else
+        {
+            status = SystemP_FAILURE;
+            break;
+        }
+
+        for( index2 = 0; index2 < MAX_GPADC_TEMP_SENSORS; index2++)
+        {
+            gpadcCode = gpadcTempVal[index2];
+            tempVal = GPADC_calculateTemp(gpadcCode, index2);
+            gpadcTempValSum[index2] = gpadcTempValSum[index2] + tempVal;
+        }
+    }
+
+    tempValuesPtr->DigDspTempValue = gpadcTempValSum[GPADC_DIG_DSP_TEMP_SENSOR] / numAverages;
+    tempValuesPtr->DigHwaTempValue = gpadcTempValSum[GPADC_DIG_HWA_TEMP_SENSOR] / numAverages;
+    tempValuesPtr->DigHsmTempValue = gpadcTempValSum[GPADC_DIG_HSM_TEMP_SENSOR] / numAverages;
+
+    return status;
+}
+
+static Float32 GPADC_calculateTemp(uint16_t gpadcTempCode, uint8_t index)
+{
+    Float32 tempVal;
 
+    tempVal = ((((Float32)gpadcTempCode - (Float32)tempSensTrimSlopeValues.TrimIntercept30C[index]) \
+            / tempSensTrimSlopeValues.Slope[index]) \
+            + tempSensTrimSlopeValues.InterceptTemp);
+    return tempVal;
 }
diff --git a/source/drivers/gpadc/v0/soc/awr294x/gpadc_soc.c b/source/drivers/gpadc/v0/soc/awr294x/gpadc_soc.c
index edf38f4e53..7a35309022 100644
--- a/source/drivers/gpadc/v0/soc/awr294x/gpadc_soc.c
+++ b/source/drivers/gpadc/v0/soc/awr294x/gpadc_soc.c
@@ -1,5 +1,5 @@
 /*
- *  Copyright (C) 2021 Texas Instruments Incorporated.
+ *  Copyright (C) 2021-23 Texas Instruments Incorporated.
  *
  *  Redistribution and use in source and binary forms, with or without
  *  modification, are permitted provided that the following conditions
@@ -62,17 +62,128 @@
 #define AR_RFANACIO_RX_REFSYS_TMUX_SPARE_CTRL_ANA_TEST_ESD_MUX_EN_MASK          (0x80000000U)
 #define AR_RFANACIO_RX_REFSYS_TMUX_SPARE_CTRL_ANA_TEST_ESD_MUX_EN_SHIFT         (0x0000001FU)
 
-/* ========================================================================== */
-/*                         Global Variables                        */
-/* ========================================================================== */
 
-/* None */
+/** \brief   Efuse Trime Constant Temperature */
+#define EFUSE_TRIM_TEMPERATURE_CONST                                 (523.0f)
+
+/** \brief   Efuse Trime Constant Temperature Divider */
+
+#define EFUSE_TRIM_TEMPERATURE_DIV_CONST                             (10.0f)
+
+/** \brief   Zero point TRIM Fixed Temperature */
+#define ZERO_PT_TRIM_FIXED_TRIM_TEMP                                 (32.0f)
+
+/** \brief   Zero point TRIM Fixed  Digital Temperature */
+#define ZERO_PT_TRIM_FIXED_DIG_TEMP_SENSOR_TRIM_30C                  (384U)
+
+/** \brief   Zero Value */
+#define ZERO                                                         (0.0f)
+
+/** \brief   Zero point TRIM Fixed Slope */
+#define ZERO_PT_TRIM_FIXED_SLOPE                                     (-0.988f)
+
+/** \brief   One point TRIM Fixed Slope */
+#define ONE_PT_TRIM_FIXED_SLOPE                                      (-1.05f)
+
+
+/** \brief   Efuse Version Start Bit */
+#define EFUSE1_ROW_14_FUSEROM_VER_START_BIT                          (20U)
+/** \brief   Efuse Version Stop Bit */
+#define EFUSE1_ROW_14_FUSEROM_VER_STOP_BIT                           (24U)
 
+/** \brief   Efuse Trim Temperature 30C Start Bit */
+#define EFUSE1_ROW_36_TRIM_TEMPERATURE_30C_START_BIT                 (15U)
+/** \brief   Efuse Trim Temperature 30C Stop Bit */
+#define EFUSE1_ROW_36_TRIM_TEMPERATURE_30C_STOP_BIT                  (25U)
+
+/** \brief   Efuse Trim Temperature 125C Start Bit */
+#define EFUSE1_ROW_33_TRIM_TEMPERATURE_125C_START_BIT                (0U)
+/** \brief   Efuse Trim Temperature 125C Stop Bit */
+#define EFUSE1_ROW_33_TRIM_TEMPERATURE_125C_STOP_BIT                 (10U)
+
+/** \brief   Efuse Digital DSP Temperature 30C Sensor Start Bit */
+#define EFUSE1_ROW_37_DIG_DSP_TEMP_SENSOR_TRIM0_30C_START_BIT        (5U)
+/** \brief   Efuse Digital DSP Temperature 30C Sensor Stop Bit */
+#define EFUSE1_ROW_37_DIG_DSP_TEMP_SENSOR_TRIM0_30C_STOP_BIT         (14U)
+
+/** \brief   Efuse Digital HWA Temperature 30C Sensor Start Bit */
+#define EFUSE1_ROW_37_DIG_HWA_TEMP_SENSOR_TRIM1_30C_START_BIT        (15U)
+/** \brief   Efuse Digital HWA Temperature 30C Sensor Stop Bit */
+#define EFUSE1_ROW_37_DIG_HWA_TEMP_SENSOR_TRIM1_30C_STOP_BIT         (24U)
+
+/** \brief   Efuse Digital HSM Temperature 30C Sensor Start Bit */
+#define EFUSE1_ROW_38_DIG_HSM_TEMP_SENSOR_TRIM2_30C_START_BIT        (0U)
+/** \brief   Efuse Digital HSM Temperature 30C Sensor Stop Bit */
+#define EFUSE1_ROW_38_DIG_HSM_TEMP_SENSOR_TRIM2_30C_STOP_BIT         (9U)
+
+/** \brief   Efuse Digital DSP Temperature 125C Sensor Start Bit */
+#define EFUSE1_ROW_34_DIG_DSP_TEMP_SENSOR_TRIM0_125C_START_BIT       (5U)
+/** \brief   Efuse Digital DSP Temperature 125C Sensor Stop Bit */
+#define EFUSE1_ROW_34_DIG_DSP_TEMP_SENSOR_TRIM0_125C_STOP_BIT        (14U)
+
+/** \brief   Efuse Digital HWA Temperature 125C Sensor Start Bit */
+#define EFUSE1_ROW_34_DIG_HWA_TEMP_SENSOR_TRIM1_125C_START_BIT       (15U)
+/** \brief   Efuse Digital HWA Temperature 125C Sensor Stop Bit */
+#define EFUSE1_ROW_34_DIG_HWA_TEMP_SENSOR_TRIM1_125C_STOP_BIT        (24U)
+
+/** \brief   Efuse Digital HSM Temperature 125C Sensor Start Bit */
+#define EFUSE1_ROW_35_DIG_HSM_TEMP_SENSOR_TRIM2_125C_START_BIT       (0U)
+/** \brief   Efuse Digital HSM Temperature 125C Sensor Stop Bit */
+#define EFUSE1_ROW_35_DIG_HSM_TEMP_SENSOR_TRIM2_125C_STOP_BIT        (9U)
+
+/** \brief   Efuse Precision Temperature Start Bit */
+#define EFUSE1_ROW_39_TRIM_PRECISION_TEMPERATURE_START_BIT           (0U)
+/** \brief   Efuse Precision Temperature End Bit */
+#define EFUSE1_ROW_39_TRIM_PRECISION_TEMPERATURE_STOP_BIT            (13U)
+
+/* Relative offset to be applied to temp sensors, both at room and hot temp
+ * This value is computed based on the experiments to meet Design spec.
+ */
+#define GPADC_TEMP_SENSOR_OFFSET                                     (3.16f)
 
 /* ========================================================================== */
-/*                         Structure                  */
+/*                         Structure                                          */
 /* ========================================================================== */
 
+/** \brief
+ *    The Temperature sensor trim parameters structure
+ */
+typedef struct
+{
+    /** \brief Temperature trim value */
+   Float32      TrimTemp30C;
+   /** \brief Temperature trim value */
+   Float32      TrimTemp125C;
+   /** \brief Intercept trim value */
+   uint16_t     TrimIntercept30C[MAX_GPADC_TEMP_SENSORS];
+   /** \brief Intercept trim value */
+   uint16_t     TrimIntercept125C[MAX_GPADC_TEMP_SENSORS];
+   /** \brief Slope value */
+   Float32      Slope[MAX_GPADC_TEMP_SENSORS];
+   /** \brief Intercept Temperature value */
+   Float32      InterceptTemp;
+} GPADC_TempSensTrimType;
+
+/**
+ * \brief
+ *   The Temperature sensor trim parameters structure
+ */
+typedef struct
+{
+    /** \brief FuseROM Version */
+    uint16_t      FuseROMVer;
+    /** \brief Precision Temperature Trim */
+    uint16_t      TrimPrecisionTemp;
+    /** \brief Efuse Tim Temperature30C Value */
+    uint16_t      TrimTemp30C;
+    /** \brief Efuse Tim Temperature125C Value */
+    uint16_t      TrimTemp125C;
+    /** \brief Efuse Tim Intercept30C Value */
+    uint16_t      TrimIntercept30C[MAX_GPADC_TEMP_SENSORS];
+    /** \brief Efuse Tim Intercept125C Value */
+    uint16_t      TrimIntercept125C[MAX_GPADC_TEMP_SENSORS];
+} GPADC_EfuseTempTrimType;
+
 /** \brief
  *   GPADC Param Lut
  *   ConfigValue, {ParamValue, CollectSamples, SkipSamples, ChirpBreak, Reserved}, time(10MHz clock)
@@ -102,16 +213,64 @@ GPADC_TempSensMuxType GPADC_TempSensConfigParamTab[MAX_GPADC_TEMP_SENSORS] = {
     {   0x100000U,     0x2U,        0U,           255U}   /* #2 GPADC_DIG_HSM_TEMP_SENSOR */
 };
 
+/* ========================================================================== */
+/*                         Global Variables                                   */
+/* ========================================================================== */
+
+/** \brief Temperature sensor trim Slop Values */
+GPADC_TempSensTrimType tempSensTrimSlopeValues;
+
+/** \brief Efuse Temperature trim Values */
+GPADC_EfuseTempTrimType efuseTempTrimValues;
+
 /* ========================================================================== */
 /*                          Function Declarations                             */
 /* ========================================================================== */
 
-/* None */
+static void GPADC_computeTempSlope(void);
+static Float32 GPADC_calculateTemp(uint16_t gpadcTempCode, uint8_t index);
 
 /* ========================================================================== */
 /*                          Function Definitions                              */
 /* ========================================================================== */
 
+static uint16_t GPADC_efuseExtractTrims (volatile uint32_t reg, uint8_t msb, uint8_t lsb)
+{
+    uint32_t    mask;
+    uint8_t     bits;
+    uint16_t    value;
+
+    /* Compute the mask: */
+    bits = (msb - lsb + 1U);
+    mask = (uint32_t)((uint32_t)1U << bits);
+    mask = mask - 1U;
+
+    value = (uint16_t)((reg >> lsb) & mask);
+    return value;
+}
+
+static void GPADC_computeTempSlope(void)
+{
+    uint8_t index;
+
+    for( index = 0; index < MAX_GPADC_TEMP_SENSORS; index++)
+    {
+        tempSensTrimSlopeValues.Slope[index] = (Float32)(((Float32)tempSensTrimSlopeValues.TrimIntercept125C[index] - (Float32)tempSensTrimSlopeValues.TrimIntercept30C[index]) /
+                                               (tempSensTrimSlopeValues.TrimTemp125C - tempSensTrimSlopeValues.TrimTemp30C));
+    }
+}
+
+static Float32 GPADC_calculateTemp(uint16_t gpadcTempCode, uint8_t index)
+{
+    Float32 tempVal;
+
+    tempVal = ((((Float32)gpadcTempCode - (Float32)tempSensTrimSlopeValues.TrimIntercept30C[index]) \
+            / tempSensTrimSlopeValues.Slope[index]) \
+            + tempSensTrimSlopeValues.InterceptTemp);
+    return tempVal;
+}
+
+
 void GPADC_socResetRelease(void)
 {
     uint32_t regWrSts = 0U;
@@ -142,6 +301,158 @@ void GPADC_socResetRelease(void)
     REG_STRUCT_SWRITE(MSS_TOPRCM_ANA_REG_TW_CTRL_REG_LOWV_PTR->b1_AdcStartConv, 1U, regWrSts);
 
     /*! Assert if Register read back test failed */
-	DebugP_assert(NULL == regWrSts);
-	
+    DebugP_assert(NULL == regWrSts);
+}
+
+void GPADC_initTempMeasurement(void)
+{
+    /** \brief TopRCM Base Address */
+    CSL_top_ctrlRegs *topCtrlRegs = (CSL_top_ctrlRegs *)CSL_TOP_CTRL_U_BASE;
+
+    memset(&efuseTempTrimValues, 0, sizeof(GPADC_EfuseTempTrimType));
+
+    memset(&tempSensTrimSlopeValues, 0, sizeof(GPADC_TempSensTrimType));
+
+    efuseTempTrimValues.FuseROMVer = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_14,
+                                     EFUSE1_ROW_14_FUSEROM_VER_STOP_BIT,
+                                     EFUSE1_ROW_14_FUSEROM_VER_START_BIT);
+
+    efuseTempTrimValues.TrimPrecisionTemp = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_39,
+                                     EFUSE1_ROW_39_TRIM_PRECISION_TEMPERATURE_STOP_BIT,
+                                     EFUSE1_ROW_39_TRIM_PRECISION_TEMPERATURE_START_BIT);
+
+    efuseTempTrimValues.TrimTemp30C = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_36,
+                                    EFUSE1_ROW_36_TRIM_TEMPERATURE_30C_STOP_BIT,
+                                    EFUSE1_ROW_36_TRIM_TEMPERATURE_30C_START_BIT);
+
+    efuseTempTrimValues.TrimTemp125C = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_33,
+                                    EFUSE1_ROW_33_TRIM_TEMPERATURE_125C_STOP_BIT,
+                                    EFUSE1_ROW_33_TRIM_TEMPERATURE_125C_START_BIT);
+
+    if((efuseTempTrimValues.FuseROMVer >= 6U) && (efuseTempTrimValues.TrimPrecisionTemp != 0U) &&
+       (efuseTempTrimValues.TrimTemp30C != 0U) && (efuseTempTrimValues.TrimTemp125C != 0U))
+    {
+        /* 2-Point Trim */
+        tempSensTrimSlopeValues.TrimTemp30C = (((Float32)efuseTempTrimValues.TrimTemp30C - EFUSE_TRIM_TEMPERATURE_CONST) /
+                                              EFUSE_TRIM_TEMPERATURE_DIV_CONST);
+
+        tempSensTrimSlopeValues.TrimTemp125C = (((Float32)efuseTempTrimValues.TrimTemp125C - EFUSE_TRIM_TEMPERATURE_CONST) /
+                                               EFUSE_TRIM_TEMPERATURE_DIV_CONST);
+
+        efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_DSP_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_37,
+                                                                          EFUSE1_ROW_37_DIG_DSP_TEMP_SENSOR_TRIM0_30C_STOP_BIT,
+                                                                          EFUSE1_ROW_37_DIG_DSP_TEMP_SENSOR_TRIM0_30C_START_BIT);
+
+        efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_HWA_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_37,
+                                                                          EFUSE1_ROW_37_DIG_HWA_TEMP_SENSOR_TRIM1_30C_STOP_BIT,
+                                                                          EFUSE1_ROW_37_DIG_HWA_TEMP_SENSOR_TRIM1_30C_START_BIT);
+
+        efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_HSM_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_38,
+                                                                          EFUSE1_ROW_38_DIG_HSM_TEMP_SENSOR_TRIM2_30C_STOP_BIT,
+                                                                          EFUSE1_ROW_38_DIG_HSM_TEMP_SENSOR_TRIM2_30C_START_BIT);
+
+        efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_DSP_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_34,
+                                                                           EFUSE1_ROW_34_DIG_DSP_TEMP_SENSOR_TRIM0_125C_STOP_BIT,
+                                                                           EFUSE1_ROW_34_DIG_DSP_TEMP_SENSOR_TRIM0_125C_START_BIT);
+
+        efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_HWA_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_34,
+                                                                           EFUSE1_ROW_34_DIG_HWA_TEMP_SENSOR_TRIM1_125C_STOP_BIT,
+                                                                           EFUSE1_ROW_34_DIG_HWA_TEMP_SENSOR_TRIM1_125C_START_BIT);
+
+        efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_HSM_TEMP_SENSOR] = GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_35,
+                                                                           EFUSE1_ROW_35_DIG_HSM_TEMP_SENSOR_TRIM2_125C_STOP_BIT,
+                                                                           EFUSE1_ROW_35_DIG_HSM_TEMP_SENSOR_TRIM2_125C_START_BIT);
+
+        tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_DSP_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_DSP_TEMP_SENSOR];
+        tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_HWA_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_HWA_TEMP_SENSOR];
+        tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_HSM_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept30C[GPADC_DIG_HSM_TEMP_SENSOR];
+
+        tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_DSP_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_DSP_TEMP_SENSOR];
+        tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_HWA_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_HWA_TEMP_SENSOR];
+        tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_HSM_TEMP_SENSOR] = efuseTempTrimValues.TrimIntercept125C[GPADC_DIG_HSM_TEMP_SENSOR];
+
+        /* Check if temp offset is required */
+        if((GPADC_efuseExtractTrims(topCtrlRegs->EFUSE1_ROW_11, 2U, 0U) == 0x3U) &&
+           (efuseTempTrimValues.FuseROMVer <= 17U))
+        {
+            /* Configure Offset for temperature sensors */
+            tempSensTrimSlopeValues.TrimTemp125C += GPADC_TEMP_SENSOR_OFFSET;
+        }
+
+        /* Compute Slope */
+        GPADC_computeTempSlope();
+
+        tempSensTrimSlopeValues.InterceptTemp = tempSensTrimSlopeValues.TrimTemp30C;
+    }
+    else
+    {
+        /* Zero-Point Trim */
+        tempSensTrimSlopeValues.TrimTemp30C  = ZERO;
+        tempSensTrimSlopeValues.TrimTemp125C = ZERO;
+
+        tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_DSP_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_DIG_TEMP_SENSOR_TRIM_30C;
+        tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_HWA_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_DIG_TEMP_SENSOR_TRIM_30C;
+        tempSensTrimSlopeValues.TrimIntercept30C[GPADC_DIG_HSM_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_DIG_TEMP_SENSOR_TRIM_30C;
+
+        tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_DSP_TEMP_SENSOR] = ZERO;
+        tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_HWA_TEMP_SENSOR] = ZERO;
+        tempSensTrimSlopeValues.TrimIntercept125C[GPADC_DIG_HSM_TEMP_SENSOR] = ZERO;
+
+        tempSensTrimSlopeValues.Slope[GPADC_DIG_DSP_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_SLOPE;
+        tempSensTrimSlopeValues.Slope[GPADC_DIG_HWA_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_SLOPE;
+        tempSensTrimSlopeValues.Slope[GPADC_DIG_HSM_TEMP_SENSOR] = ZERO_PT_TRIM_FIXED_SLOPE;
+
+        tempSensTrimSlopeValues.InterceptTemp = ZERO_PT_TRIM_FIXED_TRIM_TEMP;
+    }
+}
+
+int32_t GPADC_readTemperature(uint8_t numAverages,uint8_t numChannels, GPADC_TempSensValueType * tempValuesPtr)
+{
+    uint16_t gpadcTempVal[3] = {0}, gpadcCode;
+    Float32 gpadcTempValSum[3] = {0}, tempVal;
+    uint8_t index, index2;
+    GPADC_channelsGroupSelectType channels;
+    GPADC_ConvResultType convRes;
+    uint32_t regWrSts = 0U;
+    int32_t status = SystemP_SUCCESS;
+
+    channels.bits.b9_ChannelSelectionBitMap = 0x007;
+
+    REG_STRUCT_SWRITE(MSS_TOPRCM_ANA_REG_TW_CTRL_REG_LOWV_PTR->b1_TsSeInpBufEn, 1U, regWrSts);
+    REG_STRUCT_SWRITE(MSS_TOPRCM_ANA_REG_TW_CTRL_REG_LOWV_PTR->b1_TsDiffInpBufEn, 0U, regWrSts);
+
+    GPADC_setupResultBuffer(&gpadcTempVal[0]);
+
+    for( index = 0; index < numAverages; index++)
+    {
+        convRes = GPADC_startGroupConversion(channels, numChannels);
+
+        if(GPADC_CONV_DONE == convRes)
+        {
+            status = SystemP_SUCCESS;
+        }
+        else if(GPADC_CONV_CHANNEL_CONFIG_MISSING == convRes)
+        {
+            status = SystemP_FAILURE;
+            break;
+        }
+        else
+        {
+            status = SystemP_FAILURE;
+            break;
+        }
+
+        for( index2 = 0; index2 < MAX_GPADC_TEMP_SENSORS; index2++)
+        {
+            gpadcCode = gpadcTempVal[index2];
+            tempVal = GPADC_calculateTemp(gpadcCode, index2);
+            gpadcTempValSum[index2] = gpadcTempValSum[index2] + tempVal;
+        }
+    }
+
+    tempValuesPtr->DigDspTempValue = gpadcTempValSum[GPADC_DIG_DSP_TEMP_SENSOR] / numAverages;
+    tempValuesPtr->DigHwaTempValue = gpadcTempValSum[GPADC_DIG_HWA_TEMP_SENSOR] / numAverages;
+    tempValuesPtr->DigHsmTempValue = gpadcTempValSum[GPADC_DIG_HSM_TEMP_SENSOR] / numAverages;
+
+    return status;
 }
