writeprotect.c: merge range tables: move AMIC and Atmel ranges

Merge generic_range_table() and w25_range_table(). Both functions handle
each chip as a separate case already, so they can easily be unified,
reducing complexity associated with choosing the right range table
function for a specific chip.

Now that generic_range_table and w25_range_table() function signatures
match we can start merging them.

Both functions contain a large number of ranges, so merge them
incrementally: this patch only moves ranges for AMIC and Atmel chips
from w25_range_table() into generic_range_table().

BUG=b:182223106
TEST=builds
BRANCH=none

Signed-off-by: Nikolai Artemiev <nartemiev@google.com>
Change-Id: Ibc5ef81c6b5c672ffb4b0222a506675018e90793
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/flashrom/+/2816716
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
diff --git a/writeprotect.c b/writeprotect.c
index 3cb9fa2..f4d5947 100644
--- a/writeprotect.c
+++ b/writeprotect.c
@@ -1005,57 +1005,7 @@
                            struct wp_range_descriptor **descrs,
                            int *num_entries)
 {
-	*descrs = 0;
-	*num_entries = 0;
-
-	switch (flash->chip->manufacture_id) {
-	case WINBOND_NEX_ID:
-	case EON_ID_NOPREFIX:
-	case MACRONIX_ID:
-	case ST_ID:
-	case GIGADEVICE_ID:
-		return generic_range_table(flash, descrs, num_entries);
-	case AMIC_ID_NOPREFIX:
-		switch(flash->chip->model_id) {
-		case AMIC_A25L040:
-			*descrs = a25l040_ranges;
-			*num_entries = ARRAY_SIZE(a25l040_ranges);
-			break;
-		default:
-			msg_cerr("%s() %d: AMIC flash chip mismatch"
-				 " (0x%04x), aborting\n", __func__, __LINE__,
-				 flash->chip->model_id);
-			return -1;
-		}
-		break;
-	case ATMEL_ID:
-		switch(flash->chip->model_id) {
-		case ATMEL_AT25SF128A:
-		case ATMEL_AT25SL128A:
-			if (w25q_read_status_register_2(flash) & (1 << 6)) {
-				/* CMP == 1 */
-				*descrs = w25rq128_cmp1_ranges;
-				*num_entries = ARRAY_SIZE(w25rq128_cmp1_ranges);
-			} else {
-				/* CMP == 0 */
-				*descrs = w25rq128_cmp0_ranges;
-				*num_entries = ARRAY_SIZE(w25rq128_cmp0_ranges);
-			}
-			break;
-		default:
-			msg_cerr("%s() %d: Atmel flash chip mismatch"
-				 " (0x%04x), aborting\n", __func__, __LINE__,
-				 flash->chip->model_id);
-			return -1;
-		}
-		break;
-	default:
-		msg_cerr("%s: flash vendor (0x%x) not found, aborting\n",
-		         __func__, flash->chip->manufacture_id);
-		return -1;
-	}
-
-	return 0;
+	return generic_range_table(flash, descrs, num_entries);
 }
 
 int w25_range_to_status(const struct flashctx *flash,
@@ -2090,6 +2040,40 @@
 	*num_entries = 0;
 
 	switch (flash->chip->manufacture_id) {
+	case AMIC_ID_NOPREFIX:
+		switch(flash->chip->model_id) {
+		case AMIC_A25L040:
+			*descrs = a25l040_ranges;
+			*num_entries = ARRAY_SIZE(a25l040_ranges);
+			break;
+		default:
+			msg_cerr("%s() %d: AMIC flash chip mismatch"
+				 " (0x%04x), aborting\n", __func__, __LINE__,
+				 flash->chip->model_id);
+			return -1;
+		}
+		break;
+	case ATMEL_ID:
+		switch(flash->chip->model_id) {
+		case ATMEL_AT25SF128A:
+		case ATMEL_AT25SL128A:
+			if (w25q_read_status_register_2(flash) & (1 << 6)) {
+				/* CMP == 1 */
+				*descrs = w25rq128_cmp1_ranges;
+				*num_entries = ARRAY_SIZE(w25rq128_cmp1_ranges);
+			} else {
+				/* CMP == 0 */
+				*descrs = w25rq128_cmp0_ranges;
+				*num_entries = ARRAY_SIZE(w25rq128_cmp0_ranges);
+			}
+			break;
+		default:
+			msg_cerr("%s() %d: Atmel flash chip mismatch"
+				 " (0x%04x), aborting\n", __func__, __LINE__,
+				 flash->chip->model_id);
+			return -1;
+		}
+		break;
 	case WINBOND_NEX_ID:
 		switch(flash->chip->model_id) {
 		case WINBOND_NEX_W25X10: