@@ -267,17 +267,33 @@ static void s_config_psram_clock(bool init_state)
267267#endif //#if !SOC_SPI_MEM_SUPPORT_TIMING_TUNING
268268
269269/**
270- * For certain wafer version and 8MB case, we consider it as 4MB mode as it uses 2T mode
270+ * For mrj069000aa, this wafer version and 8MB case, we consider it as 4MB mode as it uses 2T mode
271271 */
272- bool s_check_aps3204_2tmode (void )
272+ static bool s_check_mrj069000aa_2tmode (uint32_t eid_47_16 )
273+ {
274+ bool is_2t = false;
275+ ESP_EARLY_LOGD (TAG , "(eid_47_16 >> 5) & 0xfffff: 0x%" PRIx32 , (eid_47_16 >> 5 ) & 0xfffff );
276+ if (((eid_47_16 >> 5 ) & 0xfffff ) == 0x8a445 ) {
277+ is_2t = true;
278+ }
279+
280+ return is_2t ;
281+ }
282+
283+ static bool s_check_2tmode (void )
273284{
274285 uint64_t full_eid = 0 ;
275286 psram_read_id (PSRAM_CTRLR_LL_MSPI_ID_1 , (uint8_t * )& full_eid , PSRAM_QUAD_EID_BITS_NUM );
276287
277288 bool is_2t = false;
278289 uint32_t eid_47_16 = __builtin_bswap32 ((full_eid >> 16 ) & UINT32_MAX );
279- ESP_EARLY_LOGD (TAG , "full_eid: 0x%" PRIx64 ", eid_47_16: 0x%" PRIx32 ", (eid_47_16 >> 5) & 0xfffff: 0x%" PRIx32 , full_eid , eid_47_16 , (eid_47_16 >> 5 ) & 0xfffff );
280- if (((eid_47_16 >> 5 ) & 0xfffff ) == 0x8a445 ) {
290+ ESP_EARLY_LOGD (TAG , "full_eid: 0x%" PRIx64 ", eid_47_16: 0x%" PRIx32 ", (eid_47_16 >> 25) & 0x1: 0x%" PRIx32 , full_eid , eid_47_16 , (eid_47_16 >> 25 ) & 0x1 );
291+ //EID[41]: 0 for 2t mode; 1 for non-2t mode
292+ if (((eid_47_16 >> 25 ) & 0x1 ) == 0 ) {
293+ is_2t = true;
294+ }
295+
296+ if (s_check_mrj069000aa_2tmode (eid_47_16 )) {
281297 is_2t = true;
282298 }
283299
@@ -328,10 +344,11 @@ esp_err_t esp_psram_impl_enable(void)
328344 * that are 16MB or 32MB to be interpreted as QEMU PSRAM devices */
329345 eid == PSRAM_QUAD_QEMU_16MB_ID ? PSRAM_SIZE_16MB :
330346 eid == PSRAM_QUAD_QEMU_32MB_ID ? PSRAM_SIZE_32MB : 0 ;
331- }
332347
333- if ((s_psram_size == PSRAM_SIZE_8MB ) && s_check_aps3204_2tmode ()) {
334- s_psram_size = PSRAM_SIZE_4MB ;
348+ if ((s_psram_size == PSRAM_SIZE_8MB ) && s_check_2tmode ()) {
349+ //2t mode is only valid for EID[47:45] == 0x10 chips
350+ s_psram_size = s_psram_size / 2 ;
351+ }
335352 }
336353
337354 //SPI1: send psram reset command
0 commit comments