]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - include/jffs2/load_kernel.h
NAND: Fix integer overflow in ONFI detection of chips >= 4GiB
[people/ms/u-boot.git] / include / jffs2 / load_kernel.h
index d8b4240766e6a9164f64482f1e58b740333d0a22..906eb3d3cdbe9f5b539c6341c873ed87de876be5 100644 (file)
  *
  */
 
-/* this struct is very similar to mtd_info */
-struct part_info {
-       u32 size;        /* Total size of the Partition */
-
-       /* "Major" erase size for the device. Naïve users may take this
-        * to be the only erase size available, or may use the more detailed
-        * information below if they desire
-        */
-       u32 erasesize;
+#include <linux/list.h>
 
-       /* Where in memory does this partition start? */
-       char *offset;
+/* mtd device types */
+#define MTD_DEV_TYPE_NOR       0x0001
+#define MTD_DEV_TYPE_NAND      0x0002
+#define MTD_DEV_TYPE_ONENAND   0x0004
 
-       /* used by jffs2 set to NULL */
-       void *jffs2_priv;
+#define MTD_DEV_TYPE(type) ((type == MTD_DEV_TYPE_NAND) ? "nand" :     \
+                       (type == MTD_DEV_TYPE_ONENAND) ? "onenand" : "nor")
 
-       /* private filed used by user */
-       void *usr_priv;
+struct mtd_device {
+       struct list_head link;
+       struct mtdids *id;              /* parent mtd id entry */
+       u16 num_parts;                  /* number of partitions on this device */
+       struct list_head parts;         /* partitions */
 };
 
-struct part_info*
-jffs2_part_info(int part_num);
-
-struct kernel_loader {
-
-       /* Return true if there is a kernel contained at src */
-       int (* check_magic)(struct part_info *part);
-
-       /* load the kernel from the partition part to dst, return the number
-        * of bytes copied if successful, zero if not */
-       u32 (* load_kernel)(u32 *dst, struct part_info *part, const char *kernel_filename);
+struct part_info {
+       struct list_head link;
+       char *name;                     /* partition name */
+       u8 auto_name;                   /* set to 1 for generated name */
+       u32 size;                       /* total size of the partition */
+       u32 offset;                     /* offset within device */
+       void *jffs2_priv;               /* used internaly by jffs2 */
+       u32 mask_flags;                 /* kernel MTD mask flags */
+       u32 sector_size;                /* size of sector */
+       struct mtd_device *dev;         /* parent device */
+};
 
-       /* A brief description of the module (ie, "cramfs") */
-       char *name;
+struct mtdids {
+       struct list_head link;
+       u8 type;                        /* device type */
+       u8 num;                         /* device number */
+       u32 size;                       /* device size */
+       char *mtd_id;                   /* linux kernel device id */
 };
 
 #define ldr_strlen     strlen
@@ -73,4 +74,10 @@ struct kernel_loader {
 #define putLabeledWord(x, y)   printf("%s %08x\n", x, (unsigned int)y)
 #define led_blink(x, y, z, a)
 
+/* common/cmd_jffs2.c */
+extern int mtdparts_init(void);
+extern int find_dev_and_part(const char *id, struct mtd_device **dev,
+                               u8 *part_num, struct part_info **part);
+extern struct mtd_device *device_find(u8 type, u8 num);
+
 #endif /* load_kernel_h */