/** @file DHL_SYS.h @brief System Control APIs Copyright 2006~2010 Digital STREAM Technology, Inc. All Rights Reserved */ #ifndef __DHL_SYS_API_H__ #define __DHL_SYS_API_H__ #include "DHL_OSAL.h" #ifdef __cplusplus extern "C" { #endif #if COMMENT ____Overview____(){} #endif /** @file DHL_SYS.h module overview APIs implementations dependencies */ #if COMMENT ____Config____(){} #endif /** GPIO ¹øÈ£ µîÀº platform ¸¶´Ù ´Þ¶óÁú ¼ö ÀÖ´Â ³»¿ëÀ̹ǷÎ, º°µµÀÇ ÆÄÀÏ·Î °ü¸®ÇÑ´Ù. */ #include "DHL_SYS_Config.h" #if COMMENT ____Types____(){} #endif enum DHL_HOST_ENDIAN { eENDIAN_UNKNOWN = 0, eENDIAN_BIG, eENDIAN_LITTLE }; typedef enum { eDHL_SYS_CB_MIN = 0, eDHL_SYS_CB_SWITCH = 100, /* define your own switch info in Impl.. */ eDHL_SYS_CB_BUTTON = 200, /* define your own button info in Impl.. */ eDHL_SYS_CB_CUSTOM = 300, /* define your own info in Impl.. */ eDHL_SYS_CB_MAX = 400, } DHL_SYS_CB_TYPE; /** @brief HAL¿¡¼­ Áö¿øÇÏ´Â º¸µå ŸÀÔ. revision Á¤º¸·Î ±¸ºÐÀÌ ¾ÈµÇ´Â º¸µåµéÀº ¾Æ·¡¿¡ ¼­·Î ±¸ºÐµÈ typeÀ¸·Î Ãß°¡ ÇÊ¿äÇÏ´Ù. runtime ½Ã¿¡ üũ°¡ ¾ÈµÇ´Â º¸µå ŸÀÔÀº DHL_CONFIG.h ¿¡¼­ DHL_CFG_BOARDTYPE_XXX À¸·Î build time È®Á¤ µÇ¾î¾ß ÇÔ. */ typedef enum { eDHL_BOARD_UNKNOWN, ///< /*==== Broadcom STB SoC base (bcm7xxx) ==== */ eDHL_BOARD_CRUX, eDHL_BOARD_DCAS, eDHL_BOARD_NEO, eDHL_BOARD_TRINITY, eDHL_BOARD_UDCP, eDHL_BOARD_HOTIP, /*==== Renesas EMMA3 SL/P based ==== */ /** NEC´Â Renesas·Î º¯°æµÇ¾úÀ¸¹Ç·Î EMMA¶ó´Â À̸§À» »ç¿ëÇÏÀÚ. ¶ÇÇÑ Eval º¸µå´Â Tube3 Proto, ES1, ES2 µî ´Ù¾çÇϸç, Proto´Â FE°¡ ÂøÅ»½ÄÀÌ¶ó¼­ Å¸ÀÔÀÇ Àǹ̰¡ ¹Ý°¨µÈ´Ù. ÀÏ´Ü ÇϳªÀÇ TypeÀ¸·Î ÅëÀÏÇÑ´Ù. ³ªÁß¿¡¶óµµ SubTypeÀ» ±¸ºÐÇÏ°í ½Í´Ù¸é Ãß°¡Çϱ⠹ٶ÷. */ eDHL_BOARD_EMMA3EVAL = 0x10, ///< Renesas EMMA3 SL/P Board eDHL_BOARD_NEWBY = 0x20, eDHL_BOARD_NEWCON, eDHL_BOARD_NEWCON2, eDHL_BOARD_NEWCON3 } DHL_BOARD_TYPE; /** @brief °¢ º¸µå ŸÀÔ ³»¿¡¼­ °ü¸®ÇÏ´Â º¸µå ¸®ºñÀü. DHL_SYS_GetBoardTypeVersion() API¿¡¼­ ¸®ÅϵǴ °ªÀÌ´Ù. ÀϹÝÀûÀ¸·Î º¸µå ¸®ºñÀüÀ» °ü¸®ÇÏ´Â ¹æ¹ýÀº GPIOÀÇ HWBITÀ» ÀÌ¿ëÇϴµ¥, °¢ HWBIT °ªÀÇ Àǹ̴ º¸µå ŸÀÔ º°·Î ´Þ¶óÁú ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î NEO º¸µå´Â ³× ºñÆ®¸¦ »ç¿ëÇϴµ¥ 0010b ÀÌ R0.2 ¸¦ ÀǹÌÇÏÁö¸¸, ÇâÈÄ ³ª¿Ã »õ ÇÁ·ÎÁ§Æ®¿¡¼­´Â ¼¼ ºñÆ®¸¸ »ç¿ëÇϰí 010b°¡ 0.3ÀÌ µÉ ¼öµµ ÀÖÀ» °ÍÀÓ. enum °ª¿¡ ´ëÀÀÇÏ´Â ½ÇÁ¦ °ªÀ¸·Î´Â 16-bit °ªÀ» »ç¿ëÇÑ´Ù. */ typedef enum { eREV_None = 0, eREV_010 = 0x0010, eREV_015 = 0x0015, eREV_020 = 0x0020, eREV_021 = 0x0021, eREV_025 = 0x0025, eREV_030 = 0x0030, eREV_035 = 0x0035, eREV_040 = 0x0040, eREV_045 = 0x0045, eREV_050 = 0x0050, eREV_055 = 0x0055, eREV_060 = 0x0060, eREV_065 = 0x0065, eREV_070 = 0x0070, eREV_075 = 0x0075, eREV_080 = 0x0080, eREV_085 = 0x0085, eREV_090 = 0x0090, eREV_095 = 0x0095, eREV_100 = 0x0100, } DHL_BOARD_REV; /** @brief Àü¿ø ¸ðµå DHL_SYS_Reset APIÀÇ ÀÎÀÚ·Î »ç¿ëµÈ´Ù. */ typedef enum { eDHL_RESET_Standby, ///< ÀúÀü·Â »óÅÂ. CPU ¿Ü ÀϺΠȸ·Î¸¸ ON. eDHL_RESET_Normal, ///< full powered mode eDHL_RESET_Reboot, ///< ÀçºÎÆÃ. } DHL_RESET_MODE; /** @brief ½Ã½ºÅÛ ÀÏ¹Ý Á¦¾î ŸÀÔ. DHL_SYS_Control APIÀÇ ÀÎÀÚ·Î »ç¿ëµÈ´Ù. °¢ ŸÀÔ º°·Î param ÀÎÀÚÀÇ type ¹× Àǹ̰¡ Á¤ÀǵȴÙ. */ typedef enum { /** system reset ÇÏ´Â ÀÏÀº º°µµÀÇ APIÀÎ DHL_SYS_Reset API¿Í µ¿ÀÏÇÏ´Ù. param: DHL_RESET_MODE */ eSYSCTL_Reset, /** */ //eSYSCTL_Watchdog, } DHL_SYSCTL_TYPE; /** @breif ½Ã½ºÅÛ ÀÏ¹Ý query ŸÀÔ. DHL_SYS_Query APIÀÇ ÀÎÀÚ·Î »ç¿ëµÈ´Ù. °¢ query ŸÀÔ º°·Î pdata ÀÎÀÚÀÇ Å¸ÀÔ/Àǹ̰¡ Á¤ÀǵȴÙ. */ typedef enum { /** get ddr clock frequency in MHz. pdata: UINT32 * */ eSYSQRY_DDRClock, } DHL_SYSQRY_TYPE; #if COMMENT ____Defines____(){} #endif #if COMMENT ____GPIO____(){} #endif /** @name GPIO APIs @{ */ /** @brief GPIO direction mode TriState output Áö¿øÇÏÁö ¾Ê´Â systemÀÇ °æ¿ì ±×³É output À¸·Î µ¿ÀÛÇϵµ·Ï ÇÔ. */ typedef enum { eDHL_GPIO_MODE_Input, eDHL_GPIO_MODE_Output, eDHL_GPIO_MODE_OutputZ, ///< Tristate output. hard wired AND logic. eDHL_GPIO_MODE_Max, } DHL_GPIO_MODE; /** @brief GPIO ÀÎÅÍ·´Æ® ¸ðµå */ typedef enum { eDHL_GPIO_INT_Disabled, /*! No interrupt */ eDHL_GPIO_INT_RisingEdge, /*! Interrupt on a 0->1 transition */ eDHL_GPIO_INT_FallingEdge, /*! Interrupt on a 1->0 transition */ eDHL_GPIO_INT_Edge, /*! Interrupt on both a 0->1 and a 1->0 transition */ eDHL_GPIO_INT_Low, /*! Interrupt on a 0 value */ eDHL_GPIO_INT_High, /*! Interrupt on a 1 value */ eDHL_GPIO_INT_Max } DHL_GPIO_INT_MODE; /** @brief »ç¿ëÀÚ GPIO ISR Äݹé ÇÔ¼ö prototype. DHL_SYS_EnableGpioInt ¿¡¼­ »ç¿ë. */ typedef void (*DHL_GPIO_CALLBACK)(int gpio_num, UINT32 user_param); /** @file DHL_SYS.h @todo ¾Æ·¡ ÇÔ¼ö´Â API·Î Á¦°øµÉ Çʿ䰡 ¾øÀ¸¹Ç·Î Á¦°Å. ÀÌ ±â´ÉÀº init ÇÒ ¶§ ³»ºÎÀûÀ¸·Î ¼öÇàµÇ¾î¾ß ÇÑ´Ù. DHL_RESULT DHL_SYS_GpioConfig(void); */ /** @file DHL_SYS.h @todo ¾Æ·¡ API´Â »ç¿ëÇÏ´Â °÷ÀÌ ¾øÀ¸¹Ç·Î Á¦°Å. // reset all GPIO pins that configured as a "RESET".. # define DHL_SYS_GpioResetAll(void) (DHL_OK) */ #if SUPPORT_MICOM /** @brief GPIO ¹æÇâ ¼³Á¤ API @param[in] gpio GPIO ¹øÈ£. ¼ýÀÚ ´ë½Å »ó¼ö °ªÀ» »ç¿ëÇÒ °Í. @param[in] eMode Àû¿ë ÇÒ GPIO µ¿ÀÛ ¸ðµå. @param[in] value output ¸ðµåÀÎ °æ¿ì ¼³Á¤ ÇÒ »óÅ °ª. @return */ //DHL_RESULT DHL_SYS_SetGpioDirection(int gpio, DHL_GPIO_MODE eMode, BOOL value); #endif /** @brief ƯÁ¤ GPIO¿¡ ÀÎÅÍ·´Æ®¸¦ ¼³Á¤. @param[in] gpio GPIO ¹øÈ£. ¼ýÀÚ ´ë½Å »ó¼ö °ªÀ» »ç¿ëÇÒ °Í. @param[in] eIntMode ¼³Á¤ ÇÒ ÀÎÅÍ·´Æ® ¸ðµå. @param[in] cb ÀÎÅÍ·´Æ® ¹ß»ý ½Ã È£Ãâ µÉ »ç¿ëÀÚ Äݹé ÇÔ¼ö. @param[in] param Äݹé È£Ã⠽à Àü´Þ µÉ »ç¿ëÀÚ ÆÄ¶ó¹ÌÅÍ. @return */ //DHL_RESULT DHL_SYS_EnableGpioInt(int gpio, DHL_GPIO_INT_MODE eIntMode, DHL_GPIO_CALLBACK cb, UINT32 param); /** @file DHL_SYS.h @todo ¾Æ·¡ ÇÔ¼ö´Â »ç¿ëÇÏÁö ¾ÊÀ¸¹Ç·Î »èÁ¦. //void DHL_SYS_InstallGpioISR(DHL_GPIO_CALLBACK cb); */ /*@}*/ //DHL_RESULT DHL_SYS_GpioConfig(void); // reset all GPIO pins that configured as a "RESET".. #define DHL_SYS_GpioResetAll(void) (DHL_OK) /* following APIs are deprecated now. will be re-visited in future. */ #define DHL_SYS_GpioName(gpio) ("ERR") #define DHL_SYS_GpioNum(gpio) (gpio) #define DHL_SYS_GpioPad(gpio) (0) /* gpio read/write routines. */ /** @brief GPIO set API @param[in] gpio GPIO ¹øÈ£. ¼ýÀÚ ´ë½Å »ó¼ö °ªÀ» »ç¿ëÇÒ °Í. */ #define DHL_SYS_SetGPIO(gpio) dhl_sys_gpio_rw((gpio), 1, TRUE) /** @brief GPIO reset API @param[in] gpio GPIO ¹øÈ£. ¼ýÀÚ ´ë½Å »ó¼ö °ªÀ» »ç¿ëÇÒ °Í. */ #define DHL_SYS_ResetGPIO(gpio) dhl_sys_gpio_rw((gpio), 0, TRUE) /** @brief GPIO status read API @param[in] gpio GPIO ¹øÈ£. ¼ýÀÚ ´ë½Å »ó¼ö °ªÀ» »ç¿ëÇÒ °Í. */ #define DHL_SYS_ReadGPIO(gpio) dhl_sys_gpio_rw((gpio), 0, FALSE) /* GPIO control routines. usually, this api is not needed. only DHL_SYS_Impl use it. */ #define DHL_SYS_SetGpioDirection(gpio, bOutput) \ dhl_sys_gpio_config((gpio), (bOutput) ? DHL_GPIO_OUTPUT : DHL_GPIO_INPUT) #define DHL_SYS_InstallGpioISR(gpio, routine) (DHL_FAIL_NOT_IMPLEMENTED) #define DHL_SYS_EnableGpioInt(gpio, bEnable) (DHL_FAIL_NOT_IMPLEMENTED) #if COMMENT ____API____(){} #endif /** @brief º¸µåÀÇ Å¸ÀÔ ¹× ¸®ºñÀü Á¤º¸. @param[out] pType º¸µå ŸÀÔ @param[out] pVer º¸µå ¸®ºñÀü Á¤º¸. */ DHL_RESULT DHL_SYS_GetBoardTypeVersion(DHL_BOARD_TYPE *pType, DHL_BOARD_REV *pVer); /** @brief º¸µåÀÇ power »óÅ ¼³Á¤. - ÀúÀü·Â »óÅ ÁøÀÔ (½ºÅĹÙÀÌ ¸ðµå) - ÀÏ¹Ý »óÅ·Π±ú¾î³² - ÀÏ¹Ý »óÅ¿¡¼­ ¸®ºÎÆÃ @param[in] mode Àüȯ ÇÒ º¸µå Àü¿ø »óÅÂ. */ DHL_RESULT DHL_SYS_Reset(DHL_RESET_MODE mode); /** @brief ½Ã½ºÅÛÀÇ °¢Á¾ Á¦¾î @param[in] type Á¦¾î ŸÀÔ. @param[in] param type º° Ãß°¡ ÆÄ¶ó¹ÌÅÍ. */ DHL_RESULT DHL_SYS_Control(DHL_SYSCTL_TYPE type, UINT32 param); /** @brief ½Ã½ºÅÛ °¢Á¾ »óÅ query @param[in] type queryÇÒ µ¥ÀÌÅÍ Á¾·ù. @param[out] pdata query µÈ °á°ú°¡ Àü´ÞµÉ Æ÷ÀÎÅÍ. ½ÇÁ¦ ŸÀÔÀº type¿¡ µû¶ó ´Þ¶óÁü. */ DHL_RESULT DHL_SYS_Query(DHL_SYSQRY_TYPE type, void *pdata); #if COMMENT ____Watchdog____(){} #endif BOOL DHL_SYS_IsWatchdogEnabled(void); void DHL_SYS_EnableWatchdog(void); void DHL_SYS_DisableWatchdog(void); #if COMMENT ____Init____(){} #endif /** @brief SYS ¸ðµâ ÃʱâÈ­. GPIO µî SYS ¸ðµâ ³» ±â´É ÃʱâÈ­. */ DHL_RESULT DHL_SYS_Init(void); /** @brief SYS ¸ðµâ shutdown */ DHL_RESULT DHL_SYS_Uninit(void); #if COMMENT ____PlatformInit____(){} #endif /** @brief Ç÷§Æû ¸ÞÀÎ ÃʱâÈ­ ÇÔ¼ö. °¢ Ç÷§Æû º°·Î ÃʱâÈ­ ÇÏ´Â ¼ø¼­ µîÀÌ ´Ù¸¦ ¼ö ÀÖÀ¸¹Ç·Î, ¸ÞÀÎ ÃʱâÈ­ ÇÔ¼ö ÀÚü¸¦ platform ¿¡¼­ Á¦°øÇÏ´Â Çü½ÄÀ¸·Î ÇÏÀÚ. SYS ÃʱâÈ­, OSAL ÃʱâÈ­, Dbg Module ÃʱâÈ­ µî ¸ðµç HAL ÃʱâÈ­ ¼ø¼­¸¦ ÀÌ ÇÔ¼ö ¾È¿¡¼­ °áÁ¤Çؼ­ ÁøÇàÇÑ´Ù. */ void DHL_SYS_PlatformInit(void); /** @brief Ç÷§Æû ¸ÞÀÎ ¼Ë´Ù¿î ÇÔ¼ö. */ void DHL_SYS_PlatformUninit(void); #ifdef __cplusplus } /* extern "C" */ #endif #endif /* __DHL_SYS_API_H__ */