Commit 568d841b authored by Boris Brezillon's avatar Boris Brezillon Committed by Miquel Raynal
Browse files

mtd: cmdlinepart: Add an slc option to use SLC mode on a part

parent 1998053c
Loading
Loading
Loading
Loading
+10 −2
Original line number Original line Diff line number Diff line
@@ -9,7 +9,7 @@
 *
 *
 * mtdparts=<mtddef>[;<mtddef]
 * mtdparts=<mtddef>[;<mtddef]
 * <mtddef>  := <mtd-id>:<partdef>[,<partdef>]
 * <mtddef>  := <mtd-id>:<partdef>[,<partdef>]
 * <partdef> := <size>[@<offset>][<name>][ro][lk]
 * <partdef> := <size>[@<offset>][<name>][ro][lk][slc]
 * <mtd-id>  := unique name used in mapping driver/device (mtd->name)
 * <mtd-id>  := unique name used in mapping driver/device (mtd->name)
 * <size>    := standard linux memsize OR "-" to denote all remaining space
 * <size>    := standard linux memsize OR "-" to denote all remaining space
 *              size is automatically truncated at end of device
 *              size is automatically truncated at end of device
@@ -92,7 +92,7 @@ static struct mtd_partition * newpart(char *s,
	int name_len;
	int name_len;
	unsigned char *extra_mem;
	unsigned char *extra_mem;
	char delim;
	char delim;
	unsigned int mask_flags;
	unsigned int mask_flags, add_flags;


	/* fetch the partition size */
	/* fetch the partition size */
	if (*s == '-') {
	if (*s == '-') {
@@ -109,6 +109,7 @@ static struct mtd_partition * newpart(char *s,


	/* fetch partition name and flags */
	/* fetch partition name and flags */
	mask_flags = 0; /* this is going to be a regular partition */
	mask_flags = 0; /* this is going to be a regular partition */
	add_flags = 0;
	delim = 0;
	delim = 0;


	/* check for offset */
	/* check for offset */
@@ -152,6 +153,12 @@ static struct mtd_partition * newpart(char *s,
		s += 2;
		s += 2;
	}
	}


	/* if slc is found use emulated SLC mode on this partition*/
	if (!strncmp(s, "slc", 3)) {
		add_flags |= MTD_SLC_ON_MLC_EMULATION;
		s += 3;
	}

	/* test if more partitions are following */
	/* test if more partitions are following */
	if (*s == ',') {
	if (*s == ',') {
		if (size == SIZE_REMAINING) {
		if (size == SIZE_REMAINING) {
@@ -184,6 +191,7 @@ static struct mtd_partition * newpart(char *s,
	parts[this_part].size = size;
	parts[this_part].size = size;
	parts[this_part].offset = offset;
	parts[this_part].offset = offset;
	parts[this_part].mask_flags = mask_flags;
	parts[this_part].mask_flags = mask_flags;
	parts[this_part].add_flags = add_flags;
	if (name)
	if (name)
		strlcpy(extra_mem, name, name_len + 1);
		strlcpy(extra_mem, name, name_len + 1);
	else
	else