mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	Add PSRAM mode and speed config (#5312)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
		| @@ -4,6 +4,8 @@ from esphome.components.esp32 import add_idf_sdkconfig_option, get_esp32_variant | |||||||
| from esphome.core import CORE | from esphome.core import CORE | ||||||
| from esphome.const import ( | from esphome.const import ( | ||||||
|     CONF_ID, |     CONF_ID, | ||||||
|  |     CONF_MODE, | ||||||
|  |     CONF_SPEED, | ||||||
| ) | ) | ||||||
|  |  | ||||||
| CODEOWNERS = ["@esphome/core"] | CODEOWNERS = ["@esphome/core"] | ||||||
| @@ -11,8 +13,26 @@ CODEOWNERS = ["@esphome/core"] | |||||||
| psram_ns = cg.esphome_ns.namespace("psram") | psram_ns = cg.esphome_ns.namespace("psram") | ||||||
| PsramComponent = psram_ns.class_("PsramComponent", cg.Component) | PsramComponent = psram_ns.class_("PsramComponent", cg.Component) | ||||||
|  |  | ||||||
|  | SPIRAM_MODES = { | ||||||
|  |     "quad": "CONFIG_SPIRAM_MODE_QUAD", | ||||||
|  |     "octal": "CONFIG_SPIRAM_MODE_OCT", | ||||||
|  | } | ||||||
|  |  | ||||||
|  | SPIRAM_SPEEDS = { | ||||||
|  |     40e6: "CONFIG_SPIRAM_SPEED_40M", | ||||||
|  |     80e6: "CONFIG_SPIRAM_SPEED_80M", | ||||||
|  |     120e6: "CONFIG_SPIRAM_SPEED_120M", | ||||||
|  | } | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = cv.All( | CONFIG_SCHEMA = cv.All( | ||||||
|     cv.Schema({cv.GenerateID(): cv.declare_id(PsramComponent)}), cv.only_on_esp32 |     cv.Schema( | ||||||
|  |         { | ||||||
|  |             cv.GenerateID(): cv.declare_id(PsramComponent), | ||||||
|  |             cv.Optional(CONF_MODE): cv.enum(SPIRAM_MODES, lower=True), | ||||||
|  |             cv.Optional(CONF_SPEED): cv.All(cv.frequency, cv.one_of(*SPIRAM_SPEEDS)), | ||||||
|  |         } | ||||||
|  |     ), | ||||||
|  |     cv.only_on_esp32, | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -29,5 +49,10 @@ async def to_code(config): | |||||||
|         add_idf_sdkconfig_option("CONFIG_SPIRAM_USE_CAPS_ALLOC", True) |         add_idf_sdkconfig_option("CONFIG_SPIRAM_USE_CAPS_ALLOC", True) | ||||||
|         add_idf_sdkconfig_option("CONFIG_SPIRAM_IGNORE_NOTFOUND", True) |         add_idf_sdkconfig_option("CONFIG_SPIRAM_IGNORE_NOTFOUND", True) | ||||||
|  |  | ||||||
|  |         if CONF_MODE in config: | ||||||
|  |             add_idf_sdkconfig_option(f"{SPIRAM_MODES[config[CONF_MODE]]}", True) | ||||||
|  |         if CONF_SPEED in config: | ||||||
|  |             add_idf_sdkconfig_option(f"{SPIRAM_SPEEDS[config[CONF_SPEED]]}", True) | ||||||
|  |  | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = cg.new_Pvariable(config[CONF_ID]) | ||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user