11/***************************************************************************
2- * Copyright (c) 2024 Microsoft Corporation
3- *
2+ * Copyright (c) 2024 Microsoft Corporation
3+ * Portion Copyright (c) 2025 STMicroelectronics
4+ *
45 * This program and the accompanying materials are made available under the
56 * terms of the MIT License which is available at
67 * https://opensource.org/licenses/MIT.
@@ -203,7 +204,9 @@ typedef unsigned long long ULONG64;
203204#define AZURE_RTOS_LEVELX
204205#define LEVELX_MAJOR_VERSION 6
205206#define LEVELX_MINOR_VERSION 4
206- #define LEVELX_PATCH_VERSION 1
207+ #define LEVELX_PATCH_VERSION 5
208+ #define LEVELX_BUILD_VERSION 202504
209+ #define LEVELX_HOTFIX_VERSION ' '
207210
208211
209212/* Define general LevelX Constants. */
@@ -528,7 +531,6 @@ typedef struct LX_NAND_FLASH_STRUCT
528531#endif
529532 UCHAR * lx_nand_flash_page_buffer ;
530533 UINT lx_nand_flash_page_buffer_size ;
531-
532534#ifdef LX_THREAD_SAFE_ENABLE
533535
534536 /* When this conditional is used, the LevelX code utilizes a ThreadX mutex for thread
@@ -537,6 +539,8 @@ typedef struct LX_NAND_FLASH_STRUCT
537539 TX_MUTEX lx_nand_flash_mutex ;
538540#endif
539541
542+ /* user data pointer optionally passed by the application to the driver via the lx_nand_flash_open_extended */
543+ VOID * lx_nand_flash_driver_info_ptr ;
540544 /* Define the NAND flash control block open next/previous pointers. */
541545 struct LX_NAND_FLASH_STRUCT * lx_nand_flash_open_next ,
542546 * lx_nand_flash_open_previous ;
@@ -666,7 +670,8 @@ typedef struct LX_NOR_FLASH_STRUCT
666670 a higher layer. */
667671 TX_MUTEX lx_nor_flash_mutex ;
668672#endif
669-
673+ /* user data pointer optionally passed by the application to the driver via the lx_nor_flash_open_extended */
674+ VOID * lx_nor_flash_driver_info_ptr ;
670675 /* Define the NOR flash control block open next/previous pointers. */
671676 struct LX_NOR_FLASH_STRUCT * lx_nor_flash_open_next ,
672677 * lx_nor_flash_open_previous ;
@@ -725,8 +730,10 @@ extern ULONG _lx_nor_flash_opened_cou
725730#define lx_nand_flash_partial_defragment _lx_nand_flash_partial_defragment
726731#define lx_nand_flash_extended_cache_enable _lx_nand_flash_extended_cache_enable
727732#define lx_nand_flash_format _lx_nand_flash_format
733+ #define lx_nand_flash_format_extended _lx_nand_flash_format_extended
728734#define lx_nand_flash_initialize _lx_nand_flash_initialize
729735#define lx_nand_flash_open _lx_nand_flash_open
736+ #define lx_nand_flash_open_extended _lx_nand_flash_open_extended
730737#define lx_nand_flash_page_ecc_check _lx_nand_flash_page_ecc_check
731738#define lx_nand_flash_page_ecc_compute _lx_nand_flash_page_ecc_compute
732739#define lx_nand_flash_sector_read _lx_nand_flash_sector_read
@@ -743,7 +750,9 @@ extern ULONG _lx_nor_flash_opened_cou
743750#define lx_nor_flash_partial_defragment _lx_nor_flash_partial_defragment
744751#define lx_nor_flash_extended_cache_enable _lx_nor_flash_extended_cache_enable
745752#define lx_nor_flash_initialize _lx_nor_flash_initialize
753+ #define lx_nor_flash_format _lx_nor_flash_format
746754#define lx_nor_flash_open _lx_nor_flash_open
755+ #define lx_nor_flash_open_extended _lx_nor_flash_open_extended
747756#define lx_nor_flash_sector_read _lx_nor_flash_sector_read
748757#define lx_nor_flash_sector_release _lx_nor_flash_sector_release
749758#define lx_nor_flash_sector_write _lx_nor_flash_sector_write
@@ -759,7 +768,13 @@ UINT _lx_nand_flash_extended_cache_enable(LX_NAND_FLASH *nand_flash, VOID *m
759768UINT _lx_nand_flash_format (LX_NAND_FLASH * nand_flash , CHAR * name ,
760769 UINT (* nand_driver_initialize )(LX_NAND_FLASH * ),
761770 ULONG * memory_ptr , UINT memory_size );
771+ UINT _lx_nand_flash_format_extended (LX_NAND_FLASH * nand_flash , CHAR * name ,
772+ UINT (* nand_driver_initialize )(LX_NAND_FLASH * ), VOID * nand_driver_info_ptr ,
773+ ULONG * memory_ptr , UINT memory_size );
762774UINT _lx_nand_flash_open (LX_NAND_FLASH * nand_flash , CHAR * name , UINT (* nand_driver_initialize )(LX_NAND_FLASH * ), ULONG * memory_ptr , UINT memory_size );
775+ UINT _lx_nand_flash_open_extended (LX_NAND_FLASH * nand_flash , CHAR * name ,
776+ UINT (* nand_driver_initialize )(LX_NAND_FLASH * ), VOID * nand_driver_info_ptr ,
777+ ULONG * memory_ptr , UINT memory_size );
763778UINT _lx_nand_flash_page_ecc_check (LX_NAND_FLASH * nand_flash , UCHAR * page_buffer , UCHAR * ecc_buffer );
764779UINT _lx_nand_flash_page_ecc_compute (LX_NAND_FLASH * nand_flash , UCHAR * page_buffer , UCHAR * ecc_buffer );
765780UINT _lx_nand_flash_partial_defragment (LX_NAND_FLASH * nand_flash , UINT max_blocks );
@@ -774,7 +789,9 @@ UINT _lx_nor_flash_close(LX_NOR_FLASH *nor_flash);
774789UINT _lx_nor_flash_defragment (LX_NOR_FLASH * nor_flash );
775790UINT _lx_nor_flash_extended_cache_enable (LX_NOR_FLASH * nor_flash , VOID * memory , ULONG size );
776791UINT _lx_nor_flash_initialize (void );
792+ UINT _lx_nor_flash_format (LX_NOR_FLASH * nor_flash , CHAR * name , UINT (* nor_driver_initialize )(LX_NOR_FLASH * ), VOID * nor_driver_info_ptr );
777793UINT _lx_nor_flash_open (LX_NOR_FLASH * nor_flash , CHAR * name , UINT (* nor_driver_initialize )(LX_NOR_FLASH * ));
794+ UINT _lx_nor_flash_open_extended (LX_NOR_FLASH * nor_flash , CHAR * name , UINT (* nor_driver_initialize )(LX_NOR_FLASH * ), VOID * nor_driver_info_ptr );
778795UINT _lx_nor_flash_partial_defragment (LX_NOR_FLASH * nor_flash , UINT max_blocks );
779796UINT _lx_nor_flash_sector_read (LX_NOR_FLASH * nor_flash , ULONG logical_sector , VOID * buffer );
780797UINT _lx_nor_flash_sector_release (LX_NOR_FLASH * nor_flash , ULONG logical_sector );
0 commit comments