1config SPIRAM
2    bool "Support for external, SPI-connected RAM"
3    default "n"
4    help
5        This enables support for an external SPI RAM chip, connected in parallel with the
6        main SPI flash chip.
7
8menu "SPI RAM config"
9    depends on SPIRAM
10
11    config SPIRAM_MODE_QUAD
12        bool
13        default "y"
14
15    choice SPIRAM_TYPE
16        prompt "Type of SPI RAM chip in use"
17        default SPIRAM_TYPE_AUTO
18
19        config SPIRAM_TYPE_AUTO
20            bool "Auto-detect"
21
22        config SPIRAM_TYPE_ESPPSRAM16
23            bool "ESP-PSRAM16 or APS1604"
24
25        config SPIRAM_TYPE_ESPPSRAM32
26            bool "ESP-PSRAM32"
27
28        config SPIRAM_TYPE_ESPPSRAM64
29            bool "ESP-PSRAM64 or LY68L6400"
30    endchoice
31
32    config SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY
33        bool "Allow external memory as an argument to xTaskCreateStatic"
34        default y
35        help
36            Accessing memory in SPIRAM has certain restrictions, so task stacks allocated by xTaskCreate
37            are by default allocated from internal RAM.
38
39            This option allows for passing memory allocated from SPIRAM to be passed to xTaskCreateStatic.
40            This should only be used for tasks where the stack is never accessed while the cache is disabled.
41
42    config SPIRAM_CLK_IO
43        int
44        default 30
45
46    config SPIRAM_CS_IO
47        int
48        default 26
49
50    config SPIRAM_FETCH_INSTRUCTIONS
51        bool "Move Instructions in Flash to PSRAM"
52        default n
53        help
54            If enabled, instructions in flash will be moved into PSRAM on startup.
55            If SPIRAM_RODATA is also enabled, code that requires execution during an SPI1 Flash operation
56            can forgo being placed in IRAM, thus optimizing RAM usage (see External RAM documentation
57            for more details).
58
59
60    config SPIRAM_RODATA
61        bool "Move Read-Only Data in Flash to PSRAM"
62        default n
63        help
64            If enabled, rodata in flash will be moved into PSRAM on startup.
65            If SPIRAM_FETCH_INSTRUCTIONS is also enabled, code that requires execution during an SPI1 Flash operation
66            can forgo being placed in IRAM, thus optimizing RAM usage (see External RAM documentation
67            for more details).
68
69
70    choice SPIRAM_SPEED
71        prompt "Set RAM clock speed"
72        default SPIRAM_SPEED_40M
73        help
74            Select the speed for the SPI RAM chip.
75
76        config SPIRAM_SPEED_80M
77            bool "80MHz clock speed"
78        config SPIRAM_SPEED_40M
79            bool "40Mhz clock speed"
80        config SPIRAM_SPEED_26M
81            bool "26Mhz clock speed"
82        config SPIRAM_SPEED_20M
83            bool "20Mhz clock speed"
84    endchoice
85
86    config SPIRAM_SPEED
87        int
88        default 80 if SPIRAM_SPEED_80M
89        default 40 if SPIRAM_SPEED_40M
90        default 40 if SPIRAM_SPEED_26M
91        default 40 if SPIRAM_SPEED_20M
92
93    source "$IDF_PATH/components/esp_psram/Kconfig.spiram.common"    # insert non-chip-specific items here
94
95endmenu
96