📄 bspirda.c
字号:
//-----------------------------------------------------------------------------
//
// Copyright (C) 2004, Motorola Inc. All Rights Reserved
//
//------------------------------------------------------------------------------
//
// Copyright (C) 2004-2007, Freescale Semiconductor, Inc. All Rights Reserved.
// THIS SOURCE CODE, AND ITS USE AND DISTRIBUTION, IS SUBJECT TO THE TERMS
// AND CONDITIONS OF THE APPLICABLE LICENSE AGREEMENT
//
//------------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//
// File: bspirda.c
//
// Provides BSP-specific configuration routines for the Irda peripheral.
//
//-----------------------------------------------------------------------------
//------------------------------------------------------------------------------
// INCLUDE FILES
//------------------------------------------------------------------------------
#include <windows.h>
#include <bsp.h>
//------------------------------------------------------------------------------
// Local Functions
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//
// Function: BSPIrdaEnable
//
// This is a private function to enable the IRDA.
//
// Parameters:
// bEnable
// [in] TRUE if enable IRDA. FALSE if disable.
//
// Returns:
// none.
//-----------------------------------------------------------------------------
VOID BSPIrdaEnable(BOOL bEnable)
{
PHYSICAL_ADDRESS phyAddr;
BSP_EIO_IO0_REGS * pEioReg;
phyAddr.QuadPart = BSP_BASE_REG_PA_EIO_IO0_BASE;
pEioReg = (BSP_EIO_IO0_REGS *)MmMapIoSpace(phyAddr, sizeof(BSP_EIO_IO0_REGS), FALSE);
if (bEnable) {
INSREG16BF(&pEioReg->IO0_L, EIO_IO0_L_IRDA_EN, EIO_IO0_L_IRDA_EN_ENABLE);
} else {
INSREG16BF(&pEioReg->IO0_L, EIO_IO0_L_IRDA_EN, EIO_IO0_L_IRDA_EN_DISABLE);
}
MmUnmapIoSpace(pEioReg, sizeof(BSP_EIO_IO0_REGS));
return;
}
//-----------------------------------------------------------------------------
//
// Function: BSPIrdaSetMode
//
// This is a private function to set the IRDA mode.
//
// Parameters:
// none.
//
// Returns:
// none.
//-----------------------------------------------------------------------------
VOID BSPIrdaSetMode(irMode_c mode)
{
PHYSICAL_ADDRESS phyAddr;
BSP_EIO_IO0_REGS * pEioReg;
phyAddr.QuadPart = BSP_BASE_REG_PA_EIO_IO0_BASE;
pEioReg = (BSP_EIO_IO0_REGS *)MmMapIoSpace(phyAddr, sizeof(BSP_EIO_IO0_REGS), FALSE);
switch (mode) {
case SIR_MODE:
INSREG16BF(&pEioReg->IO0_L, EIO_IO0_L_IRDA_MD, 1);
INSREG16BF(&pEioReg->IO0_L, EIO_IO0_L_IRDA_FIR_SEL, EIO_IO0_L_IRDA_FIR_SEL_IR);
break;
case MIR_MODE:
case FIR_MODE:
INSREG16BF(&pEioReg->IO0_L, EIO_IO0_L_IRDA_MD, 1);
INSREG16BF(&pEioReg->IO0_L, EIO_IO0_L_IRDA_FIR_SEL, EIO_IO0_L_IRDA_FIR_SEL_FIR);
break;
}
MmUnmapIoSpace(pEioReg, sizeof(BSP_EIO_IO0_REGS));
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -