2023-12-22 05:44:51 -05:00
|
|
|
/*
|
2023-08-22 10:45:34 -04:00
|
|
|
* SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
|
2023-12-22 05:44:51 -05:00
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include "sdkconfig.h"
|
|
|
|
#include "esp_attr.h"
|
|
|
|
#include "esp_log.h"
|
|
|
|
#include "esp_check.h"
|
|
|
|
#include "soc/soc_caps.h"
|
|
|
|
#include "hal/ldo_ll.h"
|
|
|
|
#include "esp_private/esp_ldo_psram.h"
|
|
|
|
|
2023-08-22 10:45:34 -04:00
|
|
|
static const char *TAG = "ldo_psram";
|
|
|
|
|
|
|
|
esp_ldo_unit_handle_t esp_ldo_vdd_psram_early_init(void)
|
2023-12-22 05:44:51 -05:00
|
|
|
{
|
|
|
|
if (CONFIG_ESP_VDD_PSRAM_LDO_ID != -1) {
|
|
|
|
esp_ldo_unit_init_cfg_t unit_cfg = {
|
2024-01-07 21:52:01 -05:00
|
|
|
.unit_id = CONFIG_ESP_VDD_PSRAM_LDO_ID,
|
2023-12-22 05:44:51 -05:00
|
|
|
.cfg = {
|
|
|
|
.voltage_mv = CONFIG_ESP_VDD_PSRAM_LDO_VOLTAGE_MV,
|
|
|
|
},
|
|
|
|
.flags.enable_unit = true,
|
|
|
|
.flags.shared_ldo = true,
|
|
|
|
};
|
|
|
|
esp_ldo_unit_handle_t early_unit = esp_ldo_init_unit_early(&unit_cfg);
|
|
|
|
assert(early_unit);
|
2023-08-22 10:45:34 -04:00
|
|
|
return early_unit;
|
|
|
|
}
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
esp_err_t esp_ldo_vdd_psram_init(esp_ldo_unit_handle_t *ldo_unit)
|
|
|
|
{
|
|
|
|
esp_err_t ret = ESP_OK;
|
|
|
|
ESP_RETURN_ON_FALSE(ldo_unit, ESP_ERR_INVALID_ARG, TAG, "null pointer");
|
|
|
|
if (CONFIG_ESP_VDD_PSRAM_LDO_ID != -1) {
|
|
|
|
esp_ldo_unit_init_cfg_t unit_cfg = {
|
|
|
|
.unit_id = LDO_ID2UNIT(CONFIG_ESP_VDD_PSRAM_LDO_ID),
|
|
|
|
.cfg = {
|
|
|
|
.voltage_mv = CONFIG_ESP_VDD_PSRAM_LDO_VOLTAGE_MV,
|
|
|
|
},
|
|
|
|
.flags.enable_unit = true,
|
|
|
|
.flags.shared_ldo = true,
|
|
|
|
};
|
|
|
|
ESP_RETURN_ON_ERROR(esp_ldo_init_unit(&unit_cfg, ldo_unit), TAG, "internal LDO init failed");
|
|
|
|
} else {
|
|
|
|
ESP_LOGD(TAG, "internal LDO not initialized, external power supply is configured to be used");
|
|
|
|
*ldo_unit = NULL;
|
|
|
|
return ESP_ERR_INVALID_STATE;
|
2023-12-22 05:44:51 -05:00
|
|
|
}
|
2023-08-22 10:45:34 -04:00
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
esp_err_t esp_ldo_vdd_psram_deinit(esp_ldo_unit_handle_t ldo_unit)
|
|
|
|
{
|
|
|
|
return esp_ldo_deinit_unit(ldo_unit);
|
2023-12-22 05:44:51 -05:00
|
|
|
}
|