summaryrefslogtreecommitdiffstatshomepage
path: root/drivers/memory
Commit message (Collapse)AuthorAge
* drivers/memory: Add IS25LPWP064D chip to list of external flash devices.robert-hh2024-03-28
| | | | | | Confirguration provided by by @ironss-iotec. Signed-off-by: robert-hh <robert@hammelrath.com>
* all: Remove the "STATIC" macro and just use "static" instead.Angus Gratton2024-03-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The STATIC macro was introduced a very long time ago in commit d5df6cd44a433d6253a61cb0f987835fbc06b2de. The original reason for this was to have the option to define it to nothing so that all static functions become global functions and therefore visible to certain debug tools, so one could do function size comparison and other things. This STATIC feature is rarely (if ever) used. And with the use of LTO and heavy inline optimisation, analysing the size of individual functions when they are not static is not a good representation of the size of code when fully optimised. So the macro does not have much use and it's simpler to just remove it. Then you know exactly what it's doing. For example, newcomers don't have to learn what the STATIC macro is and why it exists. Reading the code is also less "loud" with a lowercase static. One other minor point in favour of removing it, is that it stops bugs with `STATIC inline`, which should always be `static inline`. Methodology for this commit was: 1) git ls-files | egrep '\.[ch]$' | \ xargs sed -Ei "s/(^| )STATIC($| )/\1static\2/" 2) Do some manual cleanup in the diff by searching for the word STATIC in comments and changing those back. 3) "git-grep STATIC docs/", manually fixed those cases. 4) "rg -t python STATIC", manually fixed codegen lines that used STATIC. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
* samd/samd_qspiflash: Add QSPI flash driver and configure it accordingly.robert-hh2023-06-06
| | | | | | | | | The QSPI driver provides the interface for using an on-board QSPI flash for the filesystem. It provides the same methods as the driver for the internal flash and uses the same name. Therefore, only one of the drivers for internal flash, SPI flash and QSPI flash must be enabled at a time. Signed-off-by: robert-hh <robert@hammelrath.com>
* drivers/bus: Change QSPI read_cmd signature to return an error code.Damien George2022-12-09
| | | | Signed-off-by: Damien George <damien@micropython.org>
* drivers/bus: Detect QSPI transfer errors and pass up to spiflash driver.Andrew Leech2022-12-09
| | | | | | | | | This changes the signatures of QSPI write_cmd_data, write_cmd_addr_data and read_cmd_qaddr_qdata so they return an error code. The softqspi and stm32 hardware qspi driver are updated to follow this new signature. Also the spiflash driver is updated to use these new return values. Signed-off-by: Damien George <damien@micropython.org>
* drivers/bus: Rename MP_SPI_ADDR_IS_32B to MICROPY_HW_SPI_ADDR_IS_32BIT.Damien George2022-06-02
| | | | | | And allow it to be configured externally, if needed. Signed-off-by: Damien George <damien@micropython.org>
* drivers/memory/spiflash: Add MICROPY_HW_SPIFLASH_ENABLE_CACHE option.Damien George2020-12-18
| | | | | | | This only needs to be enabled if a board uses FAT FS on external SPI flash. When disabled (and using external SPI flash) 4k of RAM can be saved. Signed-off-by: Damien George <damien@micropython.org>
* drivers, stm32: Support SPI/QSPI flash chips over 16MB.Andrew Leech2020-01-30
| | | | | | | | With a SPI flash that has more than 16MB, 32-bit addressing is required rather than the standard 24-bit. This commit adds support for 32-bit addressing so that the SPI flash commands (read/write/erase) are selected automatically depending on the size of the address being used at each operation.
* drivers/memory/spiflash: Add support to put SPI flash in sleep mode.Damien George2019-07-03
|
* drivers/memory/spiflash: Rework wait_sr to fix uninit'd variable 'sr'.Andrew Leech2019-03-08
|
* drivers/memory/spiflash: Add functions for direct erase/read/write.Damien George2018-06-14
| | | | These new API functions do not use the cache.
* drivers/memory/spiflash: Rename functions to indicate they use cache.Damien George2018-06-14
| | | | | | | | | This patch renames the existing SPI flash API functions to reflect the fact that the go through the cache: mp_spiflash_flush -> mp_spiflash_cache_flush mp_spiflash_read -> mp_spiflash_cached_read mp_spiflash_write -> mp_spiflash_cached_write
* drivers/memory/spiflash: Move cache buffer to user-provided config.Damien George2018-06-14
| | | | | | | | | | | | | | | | | This patch removes the global cache variables from the SPI flash driver and now requires the user to provide the cache memory themselves, via the SPI flash configuration struct. This allows to either have a shared cache for multiple SPI flash devices (by sharing a mp_spiflash_cache_t struct), or have a single cache per device (or a mix of these options). To configure the cache use: mp_spiflash_cache_t spi_bdev_cache; const mp_spiflash_config_t spiflash_config = // any bus options .cache = &spi_bdev_cache, };
* drivers/memory/spiflash: Fix bugs in and clean up read/write functions.Damien George2018-03-13
| | | | | | | | | | | mp_spiflash_read had a bug in it where "dest" and "addr" were incremented twice for a certain special case. This was fixed, which then allowed the function to be simplified to reduce code size. mp_spiflash_write had a bug in it where "src" was not incremented correctly for the case where the data to be written included the caching buffer as well as some bytes after this buffer. This was fixed and the resulting code simplified.
* drivers/memory/spiflash: Fix setting of QE bit in flash register.Damien George2018-03-11
|
* drivers/memory/spiflash: Change to use low-level SPI object not uPy one.Damien George2018-03-10
| | | | | | | This patch alters the SPI-flash memory driver so that it uses the new low-level C SPI protocol (from drivers/bus/spi.h) instead of the uPy SPI protocol (from extmod/machine_spi.h). This allows the SPI-flash driver to be used independently from the uPy runtime.
* drivers/memory/spiflash: Add support for QSPI interface.Damien George2018-03-02
| | | | | | | The spiflash memory driver is reworked to allow the underlying bus to be either normal SPI or QSPI. In both cases the bus can be implemented in software or hardware, as long as the spiflash driver is passed the correct configuration structure.
* drivers/memory/spiflash: Change from hard-coded soft SPI to generic SPI.Damien George2017-08-29
| | | | | | The SPI flash driver now supports using an arbitrary SPI object to communicate with the flash chip, and in particular can use a hardware SPI peripheral.
* all: Unify header guard usage.Alexander Steffen2017-07-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code conventions suggest using header guards, but do not define how those should look like and instead point to existing files. However, not all existing files follow the same scheme, sometimes omitting header guards altogether, sometimes using non-standard names, making it easy to accidentally pick a "wrong" example. This commit ensures that all header files of the MicroPython project (that were not simply copied from somewhere else) follow the same pattern, that was already present in the majority of files, especially in the py folder. The rules are as follows. Naming convention: * start with the words MICROPY_INCLUDED * contain the full path to the file * replace special characters with _ In addition, there are no empty lines before #ifndef, between #ifndef and one empty line before #endif. #endif is followed by a comment containing the name of the guard macro. py/grammar.h cannot use header guards by design, since it has to be included multiple times in a single C file. Several other files also do not need header guards as they are only used internally and guaranteed to be included only once: * MICROPY_MPHALPORT_H * mpconfigboard.h * mpconfigport.h * mpthreadport.h * pin_defs_*.h * qstrdefs*.h
* drivers/memory: Add SPI flash driver, written in C.Damien George2017-01-24