Lines Matching +full:device +full:- +full:id
9 * Kai-Uwe Bloem, Auerswald GmbH & Co KG, <linux-development@auerswald.de>
18 * $Id: cmdlinepart.c,v 1.17 2004/11/26 11:18:47 lavinen Exp $
19 * Copyright 2002 SYSGO Real-Time Solutions GmbH
21 * SPDX-License-Identifier: GPL-2.0+
27 * 'partition' - keeps current partition identifier
29 * partition := <part-id>
30 * <part-id> := <dev-id>,part_num
33 * 'mtdids' - linux kernel mtd device id <-> u-boot device id mapping
37 * <idmap> := <dev-id>=<mtd-id>
38 * <dev-id> := 'nand'|'nor'|'onenand'<dev-num>
39 * <dev-num> := mtd device number, 0...
40 * <mtd-id> := unique device tag used by linux kernel to find mtd device (mtd->name)
43 * 'mtdparts' - partition list
45 * mtdparts=mtdparts=<mtd-def>[;<mtd-def>...]
47 * <mtd-def> := <mtd-id>:<part-def>[,<part-def>...]
48 * <mtd-id> := unique device tag used by linux kernel to find mtd device (mtd->name)
49 * <part-def> := <size>[@<offset>][<name>][<ro-flag>]
50 * <size> := standard linux memsize OR '-' to denote all remaining space
51 * <offset> := partition start offset within the device
53 * <ro-flag> := when set to 'ro' makes partition read-only (not used, passed to kernel)
56 * - each <mtd-id> used in mtdparts must albo exist in 'mtddis' mapping
57 * - if the above variables are not set defaults for a given target are used
62 * mtdids=nor0=edb7312-nor
63 * mtdparts=mtdparts=edb7312-nor:-
66 * mtdids=nor0=edb7312-nor,nand0=edb7312-nand
67 * mtdparts=mtdparts=edb7312-nor:256k(ARMboot)ro,-(root);edb7312-nand:-(home)
116 * field for read-only partitions */
119 /* current active device and partition number */
139 #define cramfs_load(x,y,z) (-1)
146 * Check device number to be within valid range for given device type.
148 * @param dev device to validate
149 * @return 0 if device is valid, 1 otherwise
162 printf("no such FLASH device: %s%d (valid range 0 ... %d\n", in mtd_device_validate()
163 MTD_DEV_TYPE(type), num, CONFIG_SYS_MAX_FLASH_BANKS - 1); in mtd_device_validate()
171 *size = mtd->size; in mtd_device_validate()
175 printf("no such NAND device: %s%d (valid range 0 ... %d)\n", in mtd_device_validate()
176 MTD_DEV_TYPE(type), num, CONFIG_SYS_MAX_NAND_DEVICE - 1); in mtd_device_validate()
194 * Parse device id string <dev-id> := 'nand'|'nor'|'onenand'<dev-num>,
195 * return device type and number.
197 * @param id string describing device id
199 * @param dev_type parsed device type (output)
200 * @param dev_num parsed device number (output)
203 static int mtd_id_parse(const char *id, const char **ret_id, u8 *dev_type, u8 *dev_num) in mtd_id_parse() argument
205 const char *p = id; in mtd_id_parse()
218 printf("incorrect device type in %s\n", id); in mtd_id_parse()
223 printf("incorrect device number in %s\n", id); in mtd_id_parse()
235 * a single device configuration.
243 static inline u32 get_part_sector_size_nand(struct mtdids *id) in get_part_sector_size_nand() argument
248 mtd = get_nand_dev_by_index(id->num); in get_part_sector_size_nand()
250 return mtd->erasesize; in get_part_sector_size_nand()
257 static inline u32 get_part_sector_size_nor(struct mtdids *id, struct part_info *part) in get_part_sector_size_nor() argument
266 flash = &flash_info[id->num]; in get_part_sector_size_nor()
268 start_phys = flash->start[0] + part->offset; in get_part_sector_size_nor()
269 end_phys = start_phys + part->size - 1; in get_part_sector_size_nor()
271 for (i = 0; i < flash->sector_count; i++) { in get_part_sector_size_nor()
272 if (flash->start[i] >= end_phys) in get_part_sector_size_nor()
275 if (flash->start[i] >= start_phys) { in get_part_sector_size_nor()
276 if (i == flash->sector_count - 1) { in get_part_sector_size_nor()
277 size = flash->start[0] + flash->size - flash->start[i]; in get_part_sector_size_nor()
279 size = flash->start[i+1] - flash->start[i]; in get_part_sector_size_nor()
301 return mtd->erasesize; in get_part_sector_size_onenand()
308 static inline u32 get_part_sector_size(struct mtdids *id, struct part_info *part) in get_part_sector_size() argument
310 if (id->type == MTD_DEV_TYPE_NAND) in get_part_sector_size()
311 return get_part_sector_size_nand(id); in get_part_sector_size()
312 else if (id->type == MTD_DEV_TYPE_NOR) in get_part_sector_size()
313 return get_part_sector_size_nor(id, part); in get_part_sector_size()
314 else if (id->type == MTD_DEV_TYPE_ONENAND) in get_part_sector_size()
317 DEBUGF("Error: Unknown device type.\n"); in get_part_sector_size()
324 * device/partition list.
327 * a single device configuration.
337 DEBUGF("\n---mtdparts_init---\n"); in mtdparts_init()
339 struct mtdids *id; in mtdparts_init() local
354 id = (struct mtdids *)(current_mtd_dev + 1); in mtdparts_init()
355 part = (struct part_info *)(id + 1); in mtdparts_init()
357 /* id */ in mtdparts_init()
358 id->mtd_id = "single part"; in mtdparts_init()
366 if ((mtd_id_parse(dev_name, NULL, &id->type, &id->num) != 0) || in mtdparts_init()
367 (mtd_device_validate(id->type, id->num, &size) != 0)) { in mtdparts_init()
368 printf("incorrect device: %s%d\n", MTD_DEV_TYPE(id->type), id->num); in mtdparts_init()
372 id->size = size; in mtdparts_init()
373 INIT_LIST_HEAD(&id->link); in mtdparts_init()
375 DEBUGF("dev id: type = %d, num = %d, size = 0x%08lx, mtd_id = %s\n", in mtdparts_init()
376 id->type, id->num, id->size, id->mtd_id); in mtdparts_init()
379 part->name = "static"; in mtdparts_init()
380 part->auto_name = 0; in mtdparts_init()
383 part->size = CONFIG_JFFS2_PART_SIZE; in mtdparts_init()
385 part->size = SIZE_REMAINING; in mtdparts_init()
389 part->offset = CONFIG_JFFS2_PART_OFFSET; in mtdparts_init()
391 part->offset = 0x00000000; in mtdparts_init()
394 part->dev = current_mtd_dev; in mtdparts_init()
395 INIT_LIST_HEAD(&part->link); in mtdparts_init()
398 if (part->size == SIZE_REMAINING) in mtdparts_init()
399 part->size = id->size - part->offset; in mtdparts_init()
401 part->sector_size = get_part_sector_size(id, part); in mtdparts_init()
404 part->name, part->size, part->offset); in mtdparts_init()
406 /* device */ in mtdparts_init()
407 current_mtd_dev->id = id; in mtdparts_init()
408 INIT_LIST_HEAD(¤t_mtd_dev->link); in mtdparts_init()
409 current_mtd_dev->num_parts = 1; in mtdparts_init()
410 INIT_LIST_HEAD(¤t_mtd_dev->parts); in mtdparts_init()
411 list_add(&part->link, ¤t_mtd_dev->parts); in mtdparts_init()
420 * device.
422 * @param dev device that is to be searched for a partition
435 DEBUGF("\n--- jffs2_part_info: partition number %d for device %s%d (%s)\n", in jffs2_part_info()
436 part_num, MTD_DEV_TYPE(dev->id->type), in jffs2_part_info()
437 dev->id->num, dev->id->mtd_id); in jffs2_part_info()
439 if (part_num >= dev->num_parts) { in jffs2_part_info()
440 printf("invalid partition number %d for device %s%d (%s)\n", in jffs2_part_info()
441 part_num, MTD_DEV_TYPE(dev->id->type), in jffs2_part_info()
442 dev->id->num, dev->id->mtd_id); in jffs2_part_info()
448 list_for_each(entry, &dev->parts) { in jffs2_part_info()
460 /* U-Boot commands */
464 * Routine implementing fsload u-boot command. This routine tries to load
481 /* pre-set Boot file name */ in do_jffs2_fsload()
526 * Routine implementing u-boot ls command which lists content of a given
564 * Routine implementing u-boot fsinfo command. This routine prints out
606 " - load binary file from flash bank\n"