/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __LINUX_MTD_QINFO_H #define __LINUX_MTD_QINFO_H #include <linux/mtd/map.h> #include <linux/wait.h> #include <linux/spinlock.h> #include <linux/delay.h> #include <linux/mtd/mtd.h> #include <linux/mtd/flashchip.h> #include <linux/mtd/partitions.h> /* lpddr_private describes lpddr flash chip in memory map * @ManufactId - Chip Manufacture ID * @DevId - Chip Device ID * @qinfo - pointer to qinfo records describing the chip * @numchips - number of chips including virual RWW partitions * @chipshift - Chip/partition size 2^chipshift * @chips - per-chip data structure */ struct lpddr_private { … }; /* qinfo_query_info structure contains request information for * each qinfo record * @major - major number of qinfo record * @major - minor number of qinfo record * @id_str - descriptive string to access the record * @desc - detailed description for the qinfo record */ struct qinfo_query_info { … }; /* * qinfo_chip structure contains necessary qinfo records data * @DevSizeShift - Device size 2^n bytes * @BufSizeShift - Program buffer size 2^n bytes * @TotalBlocksNum - Total number of blocks * @UniformBlockSizeShift - Uniform block size 2^UniformBlockSizeShift bytes * @HWPartsNum - Number of hardware partitions * @SuspEraseSupp - Suspend erase supported * @SingleWordProgTime - Single word program 2^SingleWordProgTime u-sec * @ProgBufferTime - Program buffer write 2^ProgBufferTime u-sec * @BlockEraseTime - Block erase 2^BlockEraseTime m-sec */ struct qinfo_chip { … }; /* defines for fixup usage */ #define LPDDR_MFR_ANY … #define LPDDR_ID_ANY … #define NUMONYX_MFGR_ID … #define R18_DEVICE_ID_1G … static inline map_word lpddr_build_cmd(u_long cmd, struct map_info *map) { … } #define CMD(x) … #define CMDVAL(cmd) … struct mtd_info *lpddr_cmdset(struct map_info *); #endif