1 #include <stdint.h> 2 #include <string.h> 3 #include <types.h> 4 #include <hal/hal.h> 5 #include <pm.h> 6 #include <genie_sal_lpm.h> 7 #if defined(BOARD_TG7100B) || defined(BOARD_PHY6220_EVB) || defined(BOARD_TG7120B_EVB) 8 #include "gpio.h" 9 #endif 10 11 extern void drv_pm_sleep_enable(); 12 extern void drv_pm_sleep_disable(); 13 extern int drv_pm_enter_standby(); 14 genie_sal_sleep_enable()15void genie_sal_sleep_enable() 16 { 17 drv_pm_sleep_enable(); 18 } 19 genie_sal_sleep_disable()20void genie_sal_sleep_disable() 21 { 22 drv_pm_sleep_disable(); 23 } 24 genie_sal_sleep_enter_standby()25int genie_sal_sleep_enter_standby() 26 { 27 return drv_pm_enter_standby(); 28 } 29 genie_sal_sleep_wakup_io_set(uint8_t port,uint8_t pol)30int genie_sal_sleep_wakup_io_set(uint8_t port, uint8_t pol) 31 { 32 #if defined(BOARD_TG7100B) || defined(BOARD_PHY6220_EVB) || defined(BOARD_TG7120B_EVB) 33 uint8_t type = (pol >= 2) ? pol - 2 : pol; 34 phy_gpio_pull_set(port, !type); 35 phy_gpio_wakeup_set(port, type); 36 return 0; 37 #endif 38 return -1; 39 } 40 genie_sal_sleep_wakeup_io_get_status(uint8_t port)41__attribute__((section(".__sram.code"))) bool genie_sal_sleep_wakeup_io_get_status(uint8_t port) 42 { 43 #if defined(BOARD_TG7100B) || defined(BOARD_PHY6220_EVB) || defined(BOARD_TG7120B_EVB) 44 return phy_gpio_read(port); 45 #endif 46 return 0; 47 } 48 genie_sal_io_wakeup_cb_register(genie_io_wakeup_cb cb)49int genie_sal_io_wakeup_cb_register(genie_io_wakeup_cb cb) 50 { 51 if (!cb) 52 { 53 return -1; 54 } 55 drv_pm_io_wakeup_handler_register(cb); 56 return 0; 57 } 58 genie_sal_io_wakeup_cb_unregister()59int genie_sal_io_wakeup_cb_unregister() 60 { 61 drv_pm_io_wakeup_handler_unregister(); 62 return 0; 63 } 64