static sint8 spi_flash_probe(uint32 * u32FlashId) { sint8 ret = M2M_SUCCESS; uint32 pin_mux_0; uint32 orig_pin_mux_0; uint32 flashid; pin_mux_0 = nm_read_reg(0x1408); orig_pin_mux_0 = pin_mux_0; if( (orig_pin_mux_0 & 0xffff000) != 0x1111000) { /* Select PINMUX to use SPI MASTER */ pin_mux_0 &= ~0xffff000; pin_mux_0 |= 0x1111000; nm_write_reg(0x1408, pin_mux_0); } flashid = spi_flash_rdid(); if( (orig_pin_mux_0 & 0xffff000) != 0x1111000) { nm_write_reg(0x1408, orig_pin_mux_0); } *u32FlashId = flashid; return ret; }
/** * @fn spi_flash_get_size * @brief Get size of SPI Flash * @return Size of Flash */ uint32 spi_flash_get_size(void) { uint32 u32FlashId = 0, u32FlashPwr = 0; static uint32 gu32InernalFlashSize= 0; if(!gu32InernalFlashSize) { u32FlashId = spi_flash_rdid();//spi_flash_probe(); if(u32FlashId != 0xffffffff) { /*flash size is the third byte from the FLASH RDID*/ u32FlashPwr = ((u32FlashId>>16)&0xff) - 0x11; /*2MBIT is the min*/ /*That number power 2 to get the flash size*/ gu32InernalFlashSize = 1<<u32FlashPwr; M2M_INFO("Flash Size %lu Mb\n",gu32InernalFlashSize); }