|
@@ -286,6 +286,29 @@ static void current_save(void)
|
|
index_partitions();
|
|
index_partitions();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * Produce a mtd_info given a type and num.
|
|
|
|
+ *
|
|
|
|
+ * @param type mtd type
|
|
|
|
+ * @param num mtd number
|
|
|
|
+ * @param mtd a pointer to an mtd_info instance (output)
|
|
|
|
+ * @return 0 if device is valid, 1 otherwise
|
|
|
|
+ */
|
|
|
|
+static int get_mtd_info(u8 type, u8 num, struct mtd_info **mtd)
|
|
|
|
+{
|
|
|
|
+ char mtd_dev[16];
|
|
|
|
+
|
|
|
|
+ sprintf(mtd_dev, "%s%d", MTD_DEV_TYPE(type), num);
|
|
|
|
+ *mtd = get_mtd_device_nm(mtd_dev);
|
|
|
|
+ if (IS_ERR(*mtd)) {
|
|
|
|
+ printf("Device %s not found!\n", mtd_dev);
|
|
|
|
+ return 1;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* Performs sanity check for supplied flash partition.
|
|
* Performs sanity check for supplied flash partition.
|
|
* Table of existing MTD flash devices is searched and partition device
|
|
* Table of existing MTD flash devices is searched and partition device
|
|
@@ -297,17 +320,12 @@ static void current_save(void)
|
|
*/
|
|
*/
|
|
static int part_validate_eraseblock(struct mtdids *id, struct part_info *part)
|
|
static int part_validate_eraseblock(struct mtdids *id, struct part_info *part)
|
|
{
|
|
{
|
|
- struct mtd_info *mtd;
|
|
|
|
- char mtd_dev[16];
|
|
|
|
|
|
+ struct mtd_info *mtd = NULL;
|
|
int i, j;
|
|
int i, j;
|
|
ulong start;
|
|
ulong start;
|
|
|
|
|
|
- sprintf(mtd_dev, "%s%d", MTD_DEV_TYPE(id->type), id->num);
|
|
|
|
- mtd = get_mtd_device_nm(mtd_dev);
|
|
|
|
- if (IS_ERR(mtd)) {
|
|
|
|
- printf("Partition %s not found on device %s!\n", part->name, mtd_dev);
|
|
|
|
|
|
+ if (get_mtd_info(id->type, id->num, &mtd))
|
|
return 1;
|
|
return 1;
|
|
- }
|
|
|
|
|
|
|
|
part->sector_size = mtd->erasesize;
|
|
part->sector_size = mtd->erasesize;
|
|
|
|
|
|
@@ -684,20 +702,17 @@ static int part_parse(const char *const partdef, const char **ret, struct part_i
|
|
/**
|
|
/**
|
|
* Check device number to be within valid range for given device type.
|
|
* Check device number to be within valid range for given device type.
|
|
*
|
|
*
|
|
- * @param dev device to validate
|
|
|
|
|
|
+ * @param type mtd type
|
|
|
|
+ * @param num mtd number
|
|
|
|
+ * @param size a pointer to the size of the mtd device (output)
|
|
* @return 0 if device is valid, 1 otherwise
|
|
* @return 0 if device is valid, 1 otherwise
|
|
*/
|
|
*/
|
|
int mtd_device_validate(u8 type, u8 num, u32 *size)
|
|
int mtd_device_validate(u8 type, u8 num, u32 *size)
|
|
{
|
|
{
|
|
- struct mtd_info *mtd;
|
|
|
|
- char mtd_dev[16];
|
|
|
|
|
|
+ struct mtd_info *mtd = NULL;
|
|
|
|
|
|
- sprintf(mtd_dev, "%s%d", MTD_DEV_TYPE(type), num);
|
|
|
|
- mtd = get_mtd_device_nm(mtd_dev);
|
|
|
|
- if (IS_ERR(mtd)) {
|
|
|
|
- printf("Device %s not found!\n", mtd_dev);
|
|
|
|
|
|
+ if (get_mtd_info(type, num, &mtd))
|
|
return 1;
|
|
return 1;
|
|
- }
|
|
|
|
|
|
|
|
*size = mtd->size;
|
|
*size = mtd->size;
|
|
|
|
|