@@ -80,10 +80,12 @@ struct ftl_struct_s
8080 FAR uint8_t * eblock ; /* One, in-memory erase block */
8181 int oflags ;
8282
83+ #ifdef CONFIG_MTD_NAND
8384 /* The nand block map between logic block and physical block */
8485
8586 FAR off_t * lptable ;
8687 off_t lpcount ;
88+ #endif
8789};
8890
8991/****************************************************************************
@@ -133,6 +135,8 @@ static const struct block_operations g_bops =
133135 * Private Functions
134136 ****************************************************************************/
135137
138+ #ifdef CONFIG_MTD_NAND
139+
136140/****************************************************************************
137141 * Name: ftl_init_map
138142 *
@@ -207,6 +211,7 @@ static size_t ftl_get_cblock(FAR struct ftl_struct_s *dev, off_t start,
207211
208212 return count ;
209213}
214+ #endif
210215
211216/****************************************************************************
212217 * Name: ftl_open
@@ -273,11 +278,15 @@ static int ftl_close(FAR struct inode *inode)
273278static ssize_t ftl_mtd_bread (FAR struct ftl_struct_s * dev , off_t startblock ,
274279 size_t nblocks , FAR uint8_t * buffer )
275280{
281+ #ifdef CONFIG_MTD_NAND
276282 off_t mask = dev -> blkper - 1 ;
277283 size_t nread = nblocks ;
284+ #endif
278285 ssize_t ret = OK ;
279286
287+ #ifdef CONFIG_MTD_NAND
280288 if (dev -> lptable == NULL )
289+ #endif
281290 {
282291 ret = MTD_BREAD (dev -> mtd , startblock , nblocks , buffer );
283292 if (ret != nblocks )
@@ -289,6 +298,7 @@ static ssize_t ftl_mtd_bread(FAR struct ftl_struct_s *dev, off_t startblock,
289298 return ret ;
290299 }
291300
301+ #ifdef CONFIG_MTD_NAND
292302 while (nblocks > 0 )
293303 {
294304 off_t startphysicalblock ;
@@ -324,6 +334,7 @@ static ssize_t ftl_mtd_bread(FAR struct ftl_struct_s *dev, off_t startblock,
324334 }
325335
326336 return nblocks != nread ? nread - nblocks : ret ;
337+ #endif
327338}
328339
329340/****************************************************************************
@@ -339,10 +350,14 @@ static ssize_t ftl_mtd_bread(FAR struct ftl_struct_s *dev, off_t startblock,
339350static ssize_t ftl_mtd_bwrite (FAR struct ftl_struct_s * dev , off_t startblock ,
340351 FAR const uint8_t * buffer )
341352{
353+ #ifdef CONFIG_MTD_NAND
342354 off_t starteraseblock ;
355+ #endif
343356 ssize_t ret ;
344357
358+ #ifdef CONFIG_MTD_NAND
345359 if (dev -> lptable == NULL )
360+ #endif
346361 {
347362 ret = MTD_BWRITE (dev -> mtd , startblock , dev -> blkper , buffer );
348363 if (ret != dev -> blkper )
@@ -354,6 +369,7 @@ static ssize_t ftl_mtd_bwrite(FAR struct ftl_struct_s *dev, off_t startblock,
354369 return ret ;
355370 }
356371
372+ #ifdef CONFIG_MTD_NAND
357373 starteraseblock = startblock / dev -> blkper ;
358374 while (1 )
359375 {
@@ -372,6 +388,7 @@ static ssize_t ftl_mtd_bwrite(FAR struct ftl_struct_s *dev, off_t startblock,
372388 MTD_MARKBAD (dev -> mtd , dev -> lptable [starteraseblock ]);
373389 ftl_update_map (dev , starteraseblock );
374390 }
391+ #endif
375392}
376393
377394/****************************************************************************
@@ -389,7 +406,9 @@ static ssize_t ftl_mtd_erase(FAR struct ftl_struct_s *dev, off_t startblock)
389406{
390407 ssize_t ret ;
391408
409+ #ifdef CONFIG_MTD_NAND
392410 if (dev -> lptable == NULL )
411+ #endif
393412 {
394413 ret = MTD_ERASE (dev -> mtd , startblock , 1 );
395414 if (ret < 0 && ret != - ENOSYS )
@@ -402,6 +421,7 @@ static ssize_t ftl_mtd_erase(FAR struct ftl_struct_s *dev, off_t startblock)
402421 return OK ;
403422 }
404423
424+ #ifdef CONFIG_MTD_NAND
405425 while (1 )
406426 {
407427 if (startblock >= dev -> lpcount )
@@ -418,6 +438,7 @@ static ssize_t ftl_mtd_erase(FAR struct ftl_struct_s *dev, off_t startblock)
418438 MTD_MARKBAD (dev -> mtd , dev -> lptable [startblock ]);
419439 ftl_update_map (dev , startblock );
420440 }
441+ #endif
421442}
422443
423444/****************************************************************************
@@ -517,7 +538,9 @@ static ssize_t ftl_flush_direct(FAR struct ftl_struct_s *dev,
517538 }
518539 }
519540
541+ #ifdef CONFIG_MTD_NAND
520542 if (dev -> lptable == NULL )
543+ #endif
521544 {
522545 ret = MTD_BWRITE (dev -> mtd , startblock , count , buffer );
523546 if (ret != count )
@@ -527,6 +550,7 @@ static ssize_t ftl_flush_direct(FAR struct ftl_struct_s *dev,
527550 return ret ;
528551 }
529552 }
553+ #ifdef CONFIG_MTD_NAND
530554 else
531555 {
532556 if (starteraseblock >= dev -> lpcount )
@@ -544,6 +568,7 @@ static ssize_t ftl_flush_direct(FAR struct ftl_struct_s *dev,
544568 continue ;
545569 }
546570 }
571+ #endif
547572
548573 nblocks -= count ;
549574 startblock += count ;
@@ -567,7 +592,11 @@ static ssize_t ftl_flush(FAR void *priv, FAR const uint8_t *buffer,
567592 int nbytes ;
568593 int ret ;
569594
595+ #ifdef CONFIG_MTD_NAND
570596 if (dev -> mtd -> erase == NULL && dev -> lptable == NULL )
597+ #else
598+ if (dev -> mtd -> erase == NULL )
599+ #endif
571600 {
572601 ret = MTD_BWRITE (dev -> mtd , startblock , nblocks , buffer );
573602 if (ret != nblocks )
@@ -978,6 +1007,7 @@ int ftl_initialize_by_path(FAR const char *path, FAR struct mtd_dev_s *mtd,
9781007 }
9791008#endif
9801009
1010+ #ifdef CONFIG_MTD_NAND
9811011 if (MTD_ISBAD (dev -> mtd , 0 ) != - ENOSYS )
9821012 {
9831013 ret = ftl_init_map (dev );
@@ -986,15 +1016,18 @@ int ftl_initialize_by_path(FAR const char *path, FAR struct mtd_dev_s *mtd,
9861016 goto out ;
9871017 }
9881018 }
1019+ #endif
9891020
9901021 /* Inode private data is a reference to the FTL device structure */
9911022
9921023 ret = register_blockdriver (path , & g_bops , 0 , dev );
9931024 if (ret < 0 )
9941025 {
9951026 ferr ("ERROR: register_blockdriver failed: %d\n" , - ret );
1027+ #ifdef CONFIG_MTD_NAND
9961028 kmm_free (dev -> lptable );
9971029out :
1030+ #endif
9981031#ifdef FTL_HAVE_RWBUFFER
9991032 rwb_uninitialize (& dev -> rwb );
10001033#endif
0 commit comments