mirror of
https://github.com/taubel/sdk-ameba-v4.0b-gcc.git
synced 2026-07-12 22:35:40 +00:00
269 lines
6.9 KiB
C
269 lines
6.9 KiB
C
/*
|
|
* Routines to access hardware
|
|
*
|
|
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
|
*
|
|
* This module is a confidential and proprietary property of RealTek and
|
|
* possession or use of this module requires written permission of RealTek.
|
|
*/
|
|
|
|
|
|
#include "rtl8195a.h"
|
|
#include "rtl8195a_dac.h"
|
|
#include "hal_dac.h"
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------
|
|
//Function Name:
|
|
// HalDACInit8195a
|
|
//
|
|
// Description:
|
|
// To initialize DAC module by using the given data.
|
|
//
|
|
// Arguments:
|
|
// [in] VOID *Data -
|
|
// The DAC parameter data struct.
|
|
//
|
|
// Return:
|
|
// The status of the DeInit process.
|
|
// _EXIT_SUCCESS if the initialization succeeded.
|
|
// _EXIT_FAILURE if the initialization failed.
|
|
//
|
|
// Note:
|
|
// None
|
|
//
|
|
// See Also:
|
|
// NA
|
|
//
|
|
// Author:
|
|
// By Jason Deng, 2014-04-15.
|
|
//
|
|
//---------------------------------------------------------------------------------------------------
|
|
RTK_STATUS
|
|
HalDACInit8195a(
|
|
IN VOID *Data
|
|
){
|
|
PHAL_DAC_INIT_DAT pHalDacInitData = (PHAL_DAC_INIT_DAT)Data;
|
|
u32 DacTempDat;
|
|
u8 DacTempIdx = pHalDacInitData->DACIdx;
|
|
|
|
/* Enable DAC power cut */
|
|
DacTempDat = HAL_DAC_READ32(0, REG_DAC_PWR_CTRL);
|
|
DacTempDat |= BIT_DAC_PWR_AUTO;
|
|
|
|
HAL_DAC_WRITE32(0, REG_DAC_PWR_CTRL, DacTempDat);
|
|
|
|
/* Disable DAC module first */
|
|
HAL_DAC_WRITE32(DacTempIdx, REG_DAC_CTRL, 0);
|
|
|
|
/* Setup DAC module */
|
|
DacTempDat = 0;
|
|
DacTempDat |= (BIT_CTRL_DAC_SPEED(pHalDacInitData->DACDataRate) |
|
|
BIT_CTRL_DAC_ENDIAN(pHalDacInitData->DACEndian) |
|
|
BIT_CTRL_DAC_FILTER_SETTLE(pHalDacInitData->DACFilterSet) |
|
|
BIT_CTRL_DAC_BURST_SIZE(pHalDacInitData->DACBurstSz) |
|
|
BIT_CTRL_DAC_DBG_SEL(pHalDacInitData->DACDbgSel) |
|
|
BIT_CTRL_DAC_DSC_DBG_SEL(pHalDacInitData->DACDscDbgSel) |
|
|
BIT_CTRL_DAC_BYPASS_DSC(pHalDacInitData->DACBPDsc) |
|
|
BIT_CTRL_DAC_DELTA_SIGMA(pHalDacInitData->DACDeltaSig));
|
|
|
|
HAL_DAC_WRITE32(DacTempIdx, REG_DAC_CTRL, DacTempDat);
|
|
|
|
return _EXIT_SUCCESS;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------------------------------
|
|
//Function Name:
|
|
// HalI2CInit8195a
|
|
//
|
|
// Description:
|
|
// To initialize I2C module by using the given data.
|
|
//
|
|
// Arguments:
|
|
// [in] VOID *Data -
|
|
// The I2C parameter data struct.
|
|
//
|
|
// Return:
|
|
// The status of the DeInit process.
|
|
// _EXIT_SUCCESS if the initialization succeeded.
|
|
// _EXIT_FAILURE if the initialization failed.
|
|
//
|
|
// Note:
|
|
// None
|
|
//
|
|
// See Also:
|
|
// NA
|
|
//
|
|
// Author:
|
|
// By Jason Deng, 2014-04-02.
|
|
//
|
|
//---------------------------------------------------------------------------------------------------
|
|
RTK_STATUS
|
|
HalDACDeInit8195a(
|
|
IN VOID *Data
|
|
){
|
|
PHAL_DAC_INIT_DAT pHalDacInitData = (PHAL_DAC_INIT_DAT)Data;
|
|
u32 DacTempDat;
|
|
|
|
DacTempDat = HAL_DAC_READ32(pHalDacInitData->DACIdx, REG_DAC_CTRL);
|
|
DacTempDat &= (~BIT_DAC_FIFO_EN);
|
|
HAL_DAC_WRITE32(pHalDacInitData->DACIdx, REG_DAC_CTRL ,DacTempDat);
|
|
|
|
return _EXIT_SUCCESS;
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------
|
|
//Function Name:
|
|
// HalI2CIntrCtrl8195a
|
|
//
|
|
// Description:
|
|
// Modify the I2C interrupt mask according to the given value
|
|
//
|
|
// Arguments:
|
|
// [in] VOID *Data -
|
|
// The I2C parameter data struct.
|
|
//
|
|
// Return:
|
|
// The status of the enable process.
|
|
// _EXIT_SUCCESS if the de-initialization succeeded.
|
|
// _EXIT_FAILURE if the de-initialization failed.
|
|
//
|
|
// Note:
|
|
// None
|
|
//
|
|
// See Also:
|
|
// NA
|
|
//
|
|
// Author:
|
|
// By Jason Deng, 2014-02-18.
|
|
//
|
|
//---------------------------------------------------------------------------------------------------
|
|
RTK_STATUS
|
|
HalDACEnableRtl8195a(
|
|
IN VOID *Data
|
|
){
|
|
PHAL_DAC_INIT_DAT pHalDacInitData = (PHAL_DAC_INIT_DAT)Data;
|
|
u32 DacTempDat;
|
|
u8 DacTempIdx = pHalDacInitData->DACIdx;
|
|
|
|
DacTempDat = HAL_DAC_READ32(DacTempIdx, REG_DAC_CTRL);
|
|
DacTempDat &= (~BIT_DAC_FIFO_EN);
|
|
|
|
DacTempDat |= BIT_CTRL_DAC_FIFO_EN(pHalDacInitData->DACEn);
|
|
HAL_DAC_WRITE32(DacTempIdx, REG_DAC_CTRL, DacTempDat);
|
|
|
|
return _EXIT_SUCCESS;
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------
|
|
//Function Name:
|
|
// HalI2CIntrCtrl8195a
|
|
//
|
|
// Description:
|
|
// Modify the I2C interrupt mask according to the given value
|
|
//
|
|
// Arguments:
|
|
// [in] VOID *Data -
|
|
// The I2C parameter data struct.
|
|
//
|
|
// Return:
|
|
// The status of the enable process.
|
|
// _EXIT_SUCCESS if the de-initialization succeeded.
|
|
// _EXIT_FAILURE if the de-initialization failed.
|
|
//
|
|
// Note:
|
|
// None
|
|
//
|
|
// See Also:
|
|
// NA
|
|
//
|
|
// Author:
|
|
// By Jason Deng, 2014-02-18.
|
|
//
|
|
//---------------------------------------------------------------------------------------------------
|
|
RTK_STATUS
|
|
HalDACIntrCtrl8195a(
|
|
IN VOID *Data
|
|
){
|
|
PHAL_DAC_INIT_DAT pHalDacInitData = (PHAL_DAC_INIT_DAT)Data;
|
|
|
|
HAL_DAC_WRITE32(pHalDacInitData->DACIdx, REG_DAC_INTR_CTRL, pHalDacInitData->DACIntrMSK);
|
|
|
|
return _EXIT_SUCCESS;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------------------------------
|
|
//Function Name:
|
|
// HalI2CReceiveRtl8195a
|
|
//
|
|
// Description:
|
|
// Directly read one data byte a I2C data fifo.
|
|
//
|
|
// Arguments:
|
|
// [in] VOID *Data -
|
|
// The I2C parameter data struct.
|
|
//
|
|
// Return:
|
|
// The first data fifo content.
|
|
//
|
|
// Note:
|
|
// None
|
|
//
|
|
// See Also:
|
|
// NA
|
|
//
|
|
// Author:
|
|
// By Jason Deng, 2014-02-18.
|
|
//
|
|
//---------------------------------------------------------------------------------------------------
|
|
u8
|
|
HalDACSendRtl8195a(
|
|
IN VOID *Data
|
|
){
|
|
|
|
Data = Data;
|
|
return (0);
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------
|
|
//Function Name:
|
|
// HalDACReadRegRtl8195a
|
|
//
|
|
// Description:
|
|
//
|
|
//
|
|
// Arguments:
|
|
// [in] VOID *Data -
|
|
// The DAC parameter data struct.
|
|
// [in] I2CReg -
|
|
// The DAC register offset.
|
|
//
|
|
// Return:
|
|
// The DAC register content in u32 format.
|
|
//
|
|
// Note:
|
|
// None
|
|
//
|
|
// See Also:
|
|
// NA
|
|
//
|
|
// Author:
|
|
// By Jason Deng, 2014-04-15.
|
|
//
|
|
//---------------------------------------------------------------------------------------------------
|
|
u32
|
|
HalDACReadRegRtl8195a(
|
|
IN VOID *Data,
|
|
IN u8 I2CReg
|
|
){
|
|
PHAL_DAC_INIT_DAT pHalDacInitData = (PHAL_DAC_INIT_DAT)Data;
|
|
|
|
//DBG_8195A_DAC("dac read reg idx:%x\n",pHalDacInitData->DACIdx);
|
|
//DBG_8195A_DAC("dac read reg offset:%x\n",I2CReg);
|
|
|
|
return (u32)HAL_DAC_READ32(pHalDacInitData->DACIdx, I2CReg);
|
|
}
|
|
|