0001
0002 #ifndef __LINUX_MTD_QINFO_H
0003 #define __LINUX_MTD_QINFO_H
0004
0005 #include <linux/mtd/map.h>
0006 #include <linux/wait.h>
0007 #include <linux/spinlock.h>
0008 #include <linux/delay.h>
0009 #include <linux/mtd/mtd.h>
0010 #include <linux/mtd/flashchip.h>
0011 #include <linux/mtd/partitions.h>
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 struct lpddr_private {
0022 uint16_t ManufactId;
0023 uint16_t DevId;
0024 struct qinfo_chip *qinfo;
0025 int numchips;
0026 unsigned long chipshift;
0027 struct flchip chips[];
0028 };
0029
0030
0031
0032
0033
0034
0035
0036
0037 struct qinfo_query_info {
0038 uint8_t major;
0039 uint8_t minor;
0040 char *id_str;
0041 char *desc;
0042 };
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056 struct qinfo_chip {
0057
0058 uint16_t DevSizeShift;
0059 uint16_t BufSizeShift;
0060
0061 uint16_t TotalBlocksNum;
0062 uint16_t UniformBlockSizeShift;
0063
0064 uint16_t HWPartsNum;
0065
0066 uint16_t SuspEraseSupp;
0067
0068 uint16_t SingleWordProgTime;
0069 uint16_t ProgBufferTime;
0070 uint16_t BlockEraseTime;
0071 };
0072
0073
0074 #define LPDDR_MFR_ANY 0xffff
0075 #define LPDDR_ID_ANY 0xffff
0076 #define NUMONYX_MFGR_ID 0x0089
0077 #define R18_DEVICE_ID_1G 0x893c
0078
0079 static inline map_word lpddr_build_cmd(u_long cmd, struct map_info *map)
0080 {
0081 map_word val = { {0} };
0082 val.x[0] = cmd;
0083 return val;
0084 }
0085
0086 #define CMD(x) lpddr_build_cmd(x, map)
0087 #define CMDVAL(cmd) cmd.x[0]
0088
0089 struct mtd_info *lpddr_cmdset(struct map_info *);
0090
0091 #endif
0092