changeset 3387:c1cbf062a826

io/nand: Add CYGINT_IO_NAND_TEST_PARTITION to specify which partition the tests should use.
author Ross Younger <wry@ecoscentric.com>
date Sat, 27 Sep 2014 12:35:37 +1200
parents 3ec9445648cd
children 77f93339ffd8
files packages/io/nand/current/ChangeLog packages/io/nand/current/cdl/nand.cdl packages/io/nand/current/src/nand.c packages/io/nand/current/tests/nand_readlimits.c packages/io/nand/current/tests/nand_readwrite.c packages/io/nand/current/tests/nand_rwbenchmark.c
diffstat 6 files changed, 19 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/packages/io/nand/current/ChangeLog
+++ b/packages/io/nand/current/ChangeLog
@@ -1,3 +1,9 @@
+2014-09-27  Ross Younger  <wry@ecoscentric.com>
+	* cdl/nand.cdl src/nand.c tests/nand_readlimits.c
+	tests/nand_readwrite.c tests/nand_rwbenchmark.c:
+	Create CYGINT_IO_NAND_TEST_PARTITION to specify which partition the
+	tests should use.
+
 2014-09-26  Ross Younger  <wry@ecoscentric.com>
 
 	* tests/nand_rwbenchmark.c: Cope with CYGNUM_KERNEL_COUNTERS_RTC_PERIOD
--- a/packages/io/nand/current/cdl/nand.cdl
+++ b/packages/io/nand/current/cdl/nand.cdl
@@ -293,6 +293,15 @@ cdl_package CYGPKG_IO_NAND {
                     library tests (and utilities, if enabled) to build."
 	}
 
+    cdl_option CYGINT_IO_NAND_TEST_PARTITION {
+        display "The NAND partition to use for tests."
+        flavor data
+        default_value 0
+        legal_values 0 to CYGNUM_NAND_MAX_PARTITIONS-1
+        description "Some of the NAND library tests need to write to
+            a device. This controls which partition to use."
+    }
+
     cdl_option    CYGSEM_IO_NAND_ECC_SPLIT_FUNCTION {
         flavor      bool
         calculated  1
--- a/packages/io/nand/current/src/nand.c
+++ b/packages/io/nand/current/src/nand.c
@@ -300,7 +300,7 @@ done:
 /* Device access */
 
 #define DEV_INIT_CHECK(dev) do { if (!dev->is_inited) return -ENXIO; } while(0)
-#define PARTITION_CHECK(p) do { if (!p->dev) return -ENXIO; } while(0)
+#define PARTITION_CHECK(p) do { if (!p) return -EBADF; if (!p->dev) return -ENXIO; } while(0)
 
 // Partition-to-Device and Device-to-Partition address xlation
 #define BLOCK_P_TO_D(_part,_block) ((_block) + (_part)->first)
--- a/packages/io/nand/current/tests/nand_readlimits.c
+++ b/packages/io/nand/current/tests/nand_readlimits.c
@@ -106,7 +106,7 @@ int cyg_user_start(void)
     diag_printf("Using NAND device %s\n", cyg_nanddevtab->devname);
     CYG_TEST_CHECK(0==cyg_nand_lookup(cyg_nanddevtab->devname, &dev),"lookup failed");
 
-    prt = cyg_nand_get_partition(dev, 0);
+    CYG_TEST_CHECK( NULL != (prt = cyg_nand_get_partition(dev, CYGINT_IO_NAND_TEST_PARTITION)), "partition not present" );
 
     /* Check we can read the first page of the partition, and the page
      * before it (which might be off the start of the device) */
--- a/packages/io/nand/current/tests/nand_readwrite.c
+++ b/packages/io/nand/current/tests/nand_readwrite.c
@@ -107,7 +107,7 @@ int cyg_user_start(void)
     CYG_TEST_INFO(cyg_nanddevtab->devname);
     CYG_TEST_CHECK(0==cyg_nand_lookup(cyg_nanddevtab->devname, &dev),"lookup failed");
 
-    prt = cyg_nand_get_partition(dev, 0);
+    CYG_TEST_CHECK( NULL != (prt = cyg_nand_get_partition(dev, CYGINT_IO_NAND_TEST_PARTITION)), "partition not present" );
 
     /* Now select a usable block in the partition to base ourselves around. */
     blk = 0;
--- a/packages/io/nand/current/tests/nand_rwbenchmark.c
+++ b/packages/io/nand/current/tests/nand_rwbenchmark.c
@@ -94,8 +94,6 @@ extern unsigned char _stext[], _etext[];
 #define DEVICE "onboard"
 #endif
 
-#define PARTITION 0
-
 #define MUST(what) do { \
         if (0 != what) { \
                 perror(#what);          \
@@ -568,7 +566,7 @@ void rwbenchmark_main(void)
     cyg_nand_lookup(DEVICE, &dev);
     if (!dev)
         CYG_TEST_FAIL_EXIT("can't get device "DEVICE);
-    part = cyg_nand_get_partition(dev, PARTITION); 
+    part = cyg_nand_get_partition(dev, CYGINT_IO_NAND_TEST_PARTITION); 
     if (!part)
         CYG_TEST_FAIL_EXIT("can't get partition");