MCUXpresso: Update ENET drivers to not enter deep sleep when active

Signed-off-by: Mahesh Mahadevan <mahesh.mahadevan@nxp.com>
pull/10796/head
Mahesh Mahadevan 2019-08-02 10:19:45 -05:00
parent eaace297dc
commit 85ef683bfc
2 changed files with 12 additions and 2 deletions

View File

@ -46,6 +46,7 @@
#include "kinetis_emac_config.h" #include "kinetis_emac_config.h"
#include "kinetis_emac.h" #include "kinetis_emac.h"
#include "mbed_power_mgmt.h"
enet_handle_t g_handle; enet_handle_t g_handle;
// TX Buffer descriptors // TX Buffer descriptors
@ -496,6 +497,9 @@ bool Kinetis_EMAC::power_up()
return false; return false;
} }
// Can't enter deep sleep as long as Ethernet is active
sleep_manager_lock_deep_sleep();
/* Worker thread */ /* Worker thread */
thread = create_new_thread("Kinetis_EMAC_thread", &Kinetis_EMAC::thread_function, this, THREAD_STACKSIZE, THREAD_PRIORITY, &thread_cb); thread = create_new_thread("Kinetis_EMAC_thread", &Kinetis_EMAC::thread_function, this, THREAD_STACKSIZE, THREAD_PRIORITY, &thread_cb);
@ -580,7 +584,8 @@ void Kinetis_EMAC::set_all_multicast(bool all)
void Kinetis_EMAC::power_down() void Kinetis_EMAC::power_down()
{ {
/* No-op at this stage */ // Ethernet went down, can enter deep sleep
sleep_manager_unlock_deep_sleep();
} }
void Kinetis_EMAC::set_memory_manager(EMACMemoryManager &mem_mngr) void Kinetis_EMAC::set_memory_manager(EMACMemoryManager &mem_mngr)

View File

@ -46,6 +46,7 @@
#include "imx_emac_config.h" #include "imx_emac_config.h"
#include "imx_emac.h" #include "imx_emac.h"
#include "mbed_power_mgmt.h"
enet_handle_t g_handle; enet_handle_t g_handle;
// RX packet buffer pointers // RX packet buffer pointers
@ -500,6 +501,9 @@ bool Kinetis_EMAC::power_up()
return false; return false;
} }
// Can't enter deep sleep as long as Ethernet is active
sleep_manager_lock_deep_sleep();
/* Worker thread */ /* Worker thread */
thread = create_new_thread("Kinetis_EMAC_thread", &Kinetis_EMAC::thread_function, this, THREAD_STACKSIZE, THREAD_PRIORITY, &thread_cb); thread = create_new_thread("Kinetis_EMAC_thread", &Kinetis_EMAC::thread_function, this, THREAD_STACKSIZE, THREAD_PRIORITY, &thread_cb);
@ -584,7 +588,8 @@ void Kinetis_EMAC::set_all_multicast(bool all)
void Kinetis_EMAC::power_down() void Kinetis_EMAC::power_down()
{ {
/* No-op at this stage */ // Ethernet went down, can enter deep sleep
sleep_manager_unlock_deep_sleep();
} }
void Kinetis_EMAC::set_memory_manager(EMACMemoryManager &mem_mngr) void Kinetis_EMAC::set_memory_manager(EMACMemoryManager &mem_mngr)