26
26
/* APPLICATION INTERFACE DEFINITION RELEASE */
27
27
/* */
28
28
/* lx_api.h PORTABLE C */
29
- /* 6.x */
29
+ /* 6.2.1 */
30
30
/* AUTHOR */
31
31
/* */
32
32
/* William E. Lamie, Microsoft Corporation */
75
75
/* 10-31-2022 Xiuwen Cai Modified comment(s), and */
76
76
/* updated product constants, */
77
77
/* resulting in version 6.2.0 */
78
- /* xx-xx-xxxx Xiuwen Cai Modified comment(s), */
78
+ /* 03-08-2023 Xiuwen Cai Modified comment(s), */
79
79
/* modified NAND logic, */
80
- /* resulting in version 6.x */
80
+ /* added new driver interface */
81
+ /* and user extension, */
82
+ /* resulting in version 6.2.1 */
81
83
/* */
82
84
/**************************************************************************/
83
85
@@ -190,7 +192,7 @@ typedef unsigned long long ULONG64;
190
192
#define AZURE_RTOS_LEVELX
191
193
#define LEVELX_MAJOR_VERSION 6
192
194
#define LEVELX_MINOR_VERSION 2
193
- #define LEVELX_PATCH_VERSION 0
195
+ #define LEVELX_PATCH_VERSION 1
194
196
195
197
196
198
/* Define general LevelX Constants. */
@@ -385,6 +387,14 @@ typedef struct LX_NAND_DEVICE_INFO_STRUCT
385
387
ULONG lx_nand_device_info_base_erase_count ;
386
388
} LX_NAND_DEVICE_INFO ;
387
389
390
+
391
+ /* Determine if the flash control block has an extension defined. If not,
392
+ define the extension to whitespace. */
393
+
394
+ #ifndef LX_NAND_FLASH_USER_EXTENSION
395
+ #define LX_NAND_FLASH_USER_EXTENSION
396
+ #endif
397
+
388
398
/* Define the NAND flash control block structure. */
389
399
390
400
typedef struct LX_NAND_FLASH_STRUCT
@@ -454,6 +464,22 @@ typedef struct LX_NAND_FLASH_STRUCT
454
464
ULONG lx_nand_flash_diagnostic_block_erased_verifies ;
455
465
ULONG lx_nand_flash_diagnostic_page_erased_verifies ;
456
466
467
+ #ifdef LX_NAND_ENABLE_CONTROL_BLOCK_FOR_DRIVER_INTERFACE
468
+ UINT (* lx_nand_flash_driver_read )(struct LX_NAND_FLASH_STRUCT * nand_flash , ULONG block , ULONG page , ULONG * destination , ULONG words );
469
+ UINT (* lx_nand_flash_driver_write )(struct LX_NAND_FLASH_STRUCT * nand_flash , ULONG block , ULONG page , ULONG * source , ULONG words );
470
+ UINT (* lx_nand_flash_driver_block_erase )(struct LX_NAND_FLASH_STRUCT * nand_flash , ULONG block , ULONG erase_count );
471
+ UINT (* lx_nand_flash_driver_block_erased_verify )(struct LX_NAND_FLASH_STRUCT * nand_flash , ULONG block );
472
+ UINT (* lx_nand_flash_driver_page_erased_verify )(struct LX_NAND_FLASH_STRUCT * nand_flash , ULONG block , ULONG page );
473
+ UINT (* lx_nand_flash_driver_block_status_get )(struct LX_NAND_FLASH_STRUCT * nand_flash , ULONG block , UCHAR * bad_block_flag );
474
+ UINT (* lx_nand_flash_driver_block_status_set )(struct LX_NAND_FLASH_STRUCT * nand_flash , ULONG block , UCHAR bad_block_flag );
475
+ UINT (* lx_nand_flash_driver_extra_bytes_get )(struct LX_NAND_FLASH_STRUCT * nand_flash , ULONG block , ULONG page , UCHAR * destination , UINT size );
476
+ UINT (* lx_nand_flash_driver_extra_bytes_set )(struct LX_NAND_FLASH_STRUCT * nand_flash , ULONG block , ULONG page , UCHAR * source , UINT size );
477
+ UINT (* lx_nand_flash_driver_system_error )(struct LX_NAND_FLASH_STRUCT * nand_flash , UINT error_code , ULONG block , ULONG page );
478
+
479
+ UINT (* lx_nand_flash_driver_pages_read )(struct LX_NAND_FLASH_STRUCT * nand_flash , ULONG block , ULONG page , UCHAR * main_buffer , UCHAR * spare_buffer , ULONG pages );
480
+ UINT (* lx_nand_flash_driver_pages_write )(struct LX_NAND_FLASH_STRUCT * nand_flash , ULONG block , ULONG page , UCHAR * main_buffer , UCHAR * spare_buffer , ULONG pages );
481
+ UINT (* lx_nand_flash_driver_pages_copy )(struct LX_NAND_FLASH_STRUCT * nand_flash , ULONG source_block , ULONG source_page , ULONG destination_block , ULONG destination_page , ULONG pages , UCHAR * data_buffer );
482
+ #else
457
483
UINT (* lx_nand_flash_driver_read )(ULONG block , ULONG page , ULONG * destination , ULONG words );
458
484
UINT (* lx_nand_flash_driver_write )(ULONG block , ULONG page , ULONG * source , ULONG words );
459
485
UINT (* lx_nand_flash_driver_block_erase )(ULONG block , ULONG erase_count );
@@ -468,7 +494,7 @@ typedef struct LX_NAND_FLASH_STRUCT
468
494
UINT (* lx_nand_flash_driver_pages_read )(ULONG block , ULONG page , UCHAR * main_buffer , UCHAR * spare_buffer , ULONG pages );
469
495
UINT (* lx_nand_flash_driver_pages_write )(ULONG block , ULONG page , UCHAR * main_buffer , UCHAR * spare_buffer , ULONG pages );
470
496
UINT (* lx_nand_flash_driver_pages_copy )(ULONG source_block , ULONG source_page , ULONG destination_block , ULONG destination_page , ULONG pages , UCHAR * data_buffer );
471
-
497
+ #endif
472
498
UCHAR * lx_nand_flash_page_buffer ;
473
499
UINT lx_nand_flash_page_buffer_size ;
474
500
@@ -483,6 +509,10 @@ typedef struct LX_NAND_FLASH_STRUCT
483
509
/* Define the NAND flash control block open next/previous pointers. */
484
510
struct LX_NAND_FLASH_STRUCT * lx_nand_flash_open_next ,
485
511
* lx_nand_flash_open_previous ;
512
+
513
+ /* Define the user extension in the flash control block. This
514
+ is typically defined in lx_user.h. */
515
+ LX_NAND_FLASH_USER_EXTENSION
486
516
487
517
} LX_NAND_FLASH ;
488
518
@@ -508,6 +538,13 @@ typedef struct LX_NOR_FLASH_EXTENDED_CACHE_ENTRY_STRUCT
508
538
} LX_NOR_FLASH_EXTENDED_CACHE_ENTRY ;
509
539
510
540
541
+ /* Determine if the flash control block has an extension defined. If not,
542
+ define the extension to whitespace. */
543
+
544
+ #ifndef LX_NOR_FLASH_USER_EXTENSION
545
+ #define LX_NOR_FLASH_USER_EXTENSION
546
+ #endif
547
+
511
548
/* Define the NOR flash control block structure. */
512
549
513
550
typedef struct LX_NOR_FLASH_STRUCT
@@ -553,11 +590,19 @@ typedef struct LX_NOR_FLASH_STRUCT
553
590
ULONG lx_nor_flash_diagnostic_sector_not_free ;
554
591
ULONG lx_nor_flash_diagnostic_sector_data_not_free ;
555
592
593
+ #ifdef LX_NOR_ENABLE_CONTROL_BLOCK_FOR_DRIVER_INTERFACE
594
+ UINT (* lx_nor_flash_driver_read )(struct LX_NOR_FLASH_STRUCT * nor_flash , ULONG * flash_address , ULONG * destination , ULONG words );
595
+ UINT (* lx_nor_flash_driver_write )(struct LX_NOR_FLASH_STRUCT * nor_flash , ULONG * flash_address , ULONG * source , ULONG words );
596
+ UINT (* lx_nor_flash_driver_block_erase )(struct LX_NOR_FLASH_STRUCT * nor_flash , ULONG block , ULONG erase_count );
597
+ UINT (* lx_nor_flash_driver_block_erased_verify )(struct LX_NOR_FLASH_STRUCT * nor_flash , ULONG block );
598
+ UINT (* lx_nor_flash_driver_system_error )(struct LX_NOR_FLASH_STRUCT * nor_flash , UINT error_code );
599
+ #else
556
600
UINT (* lx_nor_flash_driver_read )(ULONG * flash_address , ULONG * destination , ULONG words );
557
601
UINT (* lx_nor_flash_driver_write )(ULONG * flash_address , ULONG * source , ULONG words );
558
602
UINT (* lx_nor_flash_driver_block_erase )(ULONG block , ULONG erase_count );
559
603
UINT (* lx_nor_flash_driver_block_erased_verify )(ULONG block );
560
604
UINT (* lx_nor_flash_driver_system_error )(UINT error_code );
605
+ #endif
561
606
562
607
ULONG * lx_nor_flash_sector_buffer ;
563
608
UINT lx_nor_flash_sector_mapping_cache_enabled ;
@@ -585,6 +630,10 @@ typedef struct LX_NOR_FLASH_STRUCT
585
630
struct LX_NOR_FLASH_STRUCT * lx_nor_flash_open_next ,
586
631
* lx_nor_flash_open_previous ;
587
632
633
+ /* Define the user extension in the flash control block. This
634
+ is typically defined in lx_user.h. */
635
+ LX_NOR_FLASH_USER_EXTENSION
636
+
588
637
} LX_NOR_FLASH ;
589
638
590
639
0 commit comments