Skip to content

Commit e02a3cf

Browse files
committed
Add power down of IOM within deinitialize().
1 parent 6d501c0 commit e02a3cf

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

cores/arduino/ard_sup/iomaster/ap3_iomaster.cpp

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ SOFTWARE.
2525
IOMaster::IOMaster(uint8_t instance)
2626
{
2727
_instance = instance;
28+
_handle = NULL;
2829
}
2930

3031
ap3_err_t IOMaster::initialize(void)
@@ -37,8 +38,10 @@ ap3_err_t IOMaster::initialize(am_hal_iom_config_t config)
3738
uint32_t retVal32 = 0;
3839
_config = config;
3940

40-
am_hal_iom_disable(_handle);
41-
am_hal_iom_uninitialize(_handle);
41+
if (_handle != NULL)
42+
{
43+
deinitialize();
44+
}
4245

4346
retVal32 = am_hal_iom_initialize(_instance, &_handle);
4447
if (retVal32 != AM_HAL_STATUS_SUCCESS)
@@ -73,18 +76,28 @@ ap3_err_t IOMaster::deinitialize(void)
7376
{
7477
uint32_t retVal32 = 0;
7578

76-
retVal32 = am_hal_iom_disable(_handle);
77-
if (retVal32 != AM_HAL_STATUS_SUCCESS)
79+
if (_handle != NULL)
7880
{
79-
return AP3_ERR;
80-
}
81+
retVal32 = am_hal_iom_disable(_handle);
82+
if (retVal32 != AM_HAL_STATUS_SUCCESS)
83+
{
84+
return AP3_ERR;
85+
}
8186

82-
retVal32 = am_hal_iom_uninitialize(_handle);
83-
if (retVal32 != AM_HAL_STATUS_SUCCESS)
84-
{
85-
return AP3_ERR;
87+
retVal32 = am_hal_iom_power_ctrl(_handle, AM_HAL_SYSCTRL_DEEPSLEEP, false);
88+
if (retVal32 != AM_HAL_STATUS_SUCCESS)
89+
{
90+
return AP3_ERR;
91+
}
92+
93+
retVal32 = am_hal_iom_uninitialize(_handle);
94+
if (retVal32 != AM_HAL_STATUS_SUCCESS)
95+
{
96+
return AP3_ERR;
97+
}
8698
}
8799

100+
_handle = NULL;
88101
return AP3_OK;
89102
}
90103

0 commit comments

Comments
 (0)