-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[MTD] LPDDR QINFO records definitions
There are declaraton of structures and macros definitions necessary for operations with QINFO in this patch. Signed-off-by: Alexey Korolev <akorolev@infradead.org> Acked-by: Jared Hulbert <jaredeh@gmail.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
- Loading branch information
Alexey Korolev
authored and
David Woodhouse
committed
Jan 5, 2009
1 parent
8dc0043
commit 922ab53
Showing
1 changed file
with
91 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
#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/partiton size 2^chipshift | ||
* @chips - per-chip data structure | ||
*/ | ||
struct lpddr_private { | ||
uint16_t ManufactId; | ||
uint16_t DevId; | ||
struct qinfo_chip *qinfo; | ||
int numchips; | ||
unsigned long chipshift; | ||
struct flchip chips[0]; | ||
}; | ||
|
||
/* 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 { | ||
uint8_t major; | ||
uint8_t minor; | ||
char *id_str; | ||
char *desc; | ||
}; | ||
|
||
/* | ||
* 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 { | ||
/* General device info */ | ||
uint16_t DevSizeShift; | ||
uint16_t BufSizeShift; | ||
/* Erase block information */ | ||
uint16_t TotalBlocksNum; | ||
uint16_t UniformBlockSizeShift; | ||
/* Partition information */ | ||
uint16_t HWPartsNum; | ||
/* Optional features */ | ||
uint16_t SuspEraseSupp; | ||
/* Operation typical time */ | ||
uint16_t SingleWordProgTime; | ||
uint16_t ProgBufferTime; | ||
uint16_t BlockEraseTime; | ||
}; | ||
|
||
/* defines for fixup usage */ | ||
#define LPDDR_MFR_ANY 0xffff | ||
#define LPDDR_ID_ANY 0xffff | ||
#define NUMONYX_MFGR_ID 0x0089 | ||
#define R18_DEVICE_ID_1G 0x893c | ||
|
||
static inline map_word lpddr_build_cmd(u_long cmd, struct map_info *map) | ||
{ | ||
map_word val = { {0} }; | ||
val.x[0] = cmd; | ||
return val; | ||
} | ||
|
||
#define CMD(x) lpddr_build_cmd(x, map) | ||
#define CMDVAL(cmd) cmd.x[0] | ||
|
||
struct mtd_info *lpddr_cmdset(struct map_info *); | ||
|
||
#endif | ||
|