mirror of
https://github.com/pvvx/RTL00_HelloWorld.git
synced 2024-11-25 14:04:15 +00:00
145 lines
3.4 KiB
C
145 lines
3.4 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"
|
|
|
|
#ifdef CONFIG_GPIO_EN
|
|
|
|
HAL_GPIO_DATA_SECTION HAL_GPIO_ADAPTER gHAL_Gpio_Adapter;
|
|
extern PHAL_GPIO_ADAPTER _pHAL_Gpio_Adapter;
|
|
|
|
extern VOID GPIO_PullCtrl_8195a(u32 chip_pin, u8 pull_type);
|
|
|
|
/**
|
|
* @brief To get the GPIO IP Pin name for the given chip pin name
|
|
*
|
|
* @param chip_pin: The chip pin name.
|
|
*
|
|
* @retval The gotten GPIO IP pin name
|
|
*/
|
|
HAL_GPIO_TEXT_SECTION u32
|
|
HAL_GPIO_GetPinName(
|
|
u32 chip_pin
|
|
)
|
|
{
|
|
return HAL_GPIO_GetIPPinName_8195a((u32)chip_pin);
|
|
}
|
|
|
|
/**
|
|
* @brief Set the GPIO pad Pull type
|
|
*
|
|
* @param pin: The pin for pull type control.
|
|
* @param mode: the pull type for the pin.
|
|
* @return None
|
|
*/
|
|
VOID
|
|
HAL_GPIO_PullCtrl(
|
|
u32 pin,
|
|
u32 mode
|
|
)
|
|
{
|
|
u8 pull_type;
|
|
|
|
DBG_GPIO_INFO("%s: pin=0x%x mode=%d\n ", __FUNCTION__, (u32)pin, (u32)mode);
|
|
|
|
switch (mode) {
|
|
case hal_PullNone:
|
|
pull_type = DIN_PULL_NONE;
|
|
break;
|
|
|
|
case hal_PullDown:
|
|
pull_type = DIN_PULL_LOW;
|
|
break;
|
|
|
|
case hal_PullUp:
|
|
pull_type = DIN_PULL_HIGH;
|
|
break;
|
|
|
|
case hal_OpenDrain:
|
|
default:
|
|
pull_type = DIN_PULL_NONE;
|
|
break;
|
|
}
|
|
|
|
// HAL_GPIO_PullCtrl_8195a (pin, pull_type);
|
|
GPIO_PullCtrl_8195a (pin, pull_type);
|
|
}
|
|
|
|
|
|
/**
|
|
* @brief Initializes a GPIO Pin by the GPIO_Pin parameters.
|
|
*
|
|
* @param GPIO_Pin: The data structer which contains the parameters for the GPIO Pin initialization.
|
|
*
|
|
* @retval HAL_Status
|
|
*/
|
|
HAL_GPIO_TEXT_SECTION VOID
|
|
HAL_GPIO_Init(
|
|
HAL_GPIO_PIN *GPIO_Pin
|
|
)
|
|
{
|
|
if (_pHAL_Gpio_Adapter == NULL) {
|
|
_pHAL_Gpio_Adapter = &gHAL_Gpio_Adapter;
|
|
DBG_GPIO_INFO("%s: Initial GPIO Adapter\n ", __FUNCTION__);
|
|
}
|
|
|
|
HAL_GPIO_Init_8195a(GPIO_Pin);
|
|
}
|
|
|
|
/**
|
|
* @brief Initializes a GPIO Pin as a interrupt signal
|
|
*
|
|
* @param GPIO_Pin: The data structer which contains the parameters for the GPIO Pin initialization.
|
|
*
|
|
* @retval HAL_Status
|
|
*/
|
|
VOID
|
|
HAL_GPIO_Irq_Init(
|
|
HAL_GPIO_PIN *GPIO_Pin
|
|
)
|
|
{
|
|
if (_pHAL_Gpio_Adapter == NULL) {
|
|
_pHAL_Gpio_Adapter = &gHAL_Gpio_Adapter;
|
|
DBG_GPIO_INFO("%s: Initial GPIO Adapter\n ", __FUNCTION__);
|
|
}
|
|
|
|
if (_pHAL_Gpio_Adapter->IrqHandle.IrqFun == NULL) {
|
|
_pHAL_Gpio_Adapter->IrqHandle.IrqFun = HAL_GPIO_MbedIrqHandler_8195a;
|
|
_pHAL_Gpio_Adapter->IrqHandle.Priority = 8;
|
|
HAL_GPIO_RegIrq_8195a(&_pHAL_Gpio_Adapter->IrqHandle);
|
|
InterruptEn(&_pHAL_Gpio_Adapter->IrqHandle);
|
|
DBG_GPIO_INFO("%s: Initial GPIO IRQ Adapter\n ", __FUNCTION__);
|
|
}
|
|
|
|
DBG_GPIO_INFO("%s: GPIO(name=0x%x)(mode=%d)\n ", __FUNCTION__, GPIO_Pin->pin_name,
|
|
GPIO_Pin->pin_mode);
|
|
HAL_GPIO_MaskIrq_8195a(GPIO_Pin);
|
|
HAL_GPIO_Init_8195a(GPIO_Pin);
|
|
}
|
|
|
|
/**
|
|
* @brief UnInitial GPIO Adapter
|
|
*
|
|
*
|
|
* @retval HAL_Status
|
|
*/
|
|
VOID
|
|
HAL_GPIO_IP_DeInit(
|
|
VOID
|
|
)
|
|
{
|
|
if (_pHAL_Gpio_Adapter != NULL) {
|
|
InterruptDis(&_pHAL_Gpio_Adapter->IrqHandle);
|
|
HAL_GPIO_UnRegIrq_8195a(&_pHAL_Gpio_Adapter->IrqHandle);
|
|
_pHAL_Gpio_Adapter = NULL;
|
|
}
|
|
|
|
}
|
|
|
|
#endif // CONFIG_GPIO_EN
|