aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/lightnvm.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/lightnvm.h')
-rw-r--r--include/linux/lightnvm.h52
1 files changed, 33 insertions, 19 deletions
diff --git a/include/linux/lightnvm.h b/include/linux/lightnvm.h
index a5d8e0cbbb46..8e43bfebd38d 100644
--- a/include/linux/lightnvm.h
+++ b/include/linux/lightnvm.h
@@ -159,12 +159,16 @@ struct nvm_id_group {
159 u8 fmtype; 159 u8 fmtype;
160 u8 num_ch; 160 u8 num_ch;
161 u8 num_lun; 161 u8 num_lun;
162 u8 num_pln; 162 u16 num_chk;
163 u16 num_blk; 163 u16 clba;
164 u16 num_pg;
165 u16 fpg_sz;
166 u16 csecs; 164 u16 csecs;
167 u16 sos; 165 u16 sos;
166
167 u16 ws_min;
168 u16 ws_opt;
169 u16 ws_seq;
170 u16 ws_per_chk;
171
168 u32 trdt; 172 u32 trdt;
169 u32 trdm; 173 u32 trdm;
170 u32 tprt; 174 u32 tprt;
@@ -174,6 +178,11 @@ struct nvm_id_group {
174 u32 mpos; 178 u32 mpos;
175 u32 mccap; 179 u32 mccap;
176 u16 cpar; 180 u16 cpar;
181
182 /* 1.2 compatibility */
183 u8 num_pln;
184 u16 num_pg;
185 u16 fpg_sz;
177}; 186};
178 187
179struct nvm_addr_format { 188struct nvm_addr_format {
@@ -259,31 +268,36 @@ enum {
259 NVM_BLK_ST_BAD = 0x8, /* Bad block */ 268 NVM_BLK_ST_BAD = 0x8, /* Bad block */
260}; 269};
261 270
271
262/* Device generic information */ 272/* Device generic information */
263struct nvm_geo { 273struct nvm_geo {
274 /* generic geometry */
264 int nr_chnls; 275 int nr_chnls;
265 int nr_luns; 276 int all_luns; /* across channels */
266 int luns_per_chnl; /* -1 if channels are not symmetric */ 277 int nr_luns; /* per channel */
267 int nr_planes; 278 int nr_chks; /* per lun */
268 int sec_per_pg; /* only sectors for a single page */ 279
269 int pgs_per_blk;
270 int blks_per_lun;
271 int fpg_size;
272 int pfpg_size; /* size of buffer if all pages are to be read */
273 int sec_size; 280 int sec_size;
274 int oob_size; 281 int oob_size;
275 int mccap; 282 int mccap;
276 struct nvm_addr_format ppaf;
277 283
278 /* Calculated/Cached values. These do not reflect the actual usable 284 int sec_per_chk;
279 * blocks at run-time. 285 int sec_per_lun;
280 */ 286
287 int ws_min;
288 int ws_opt;
289 int ws_seq;
290 int ws_per_chk;
291
281 int max_rq_size; 292 int max_rq_size;
282 int plane_mode; /* drive device in single, double or quad mode */
283 293
294 struct nvm_addr_format ppaf;
295
296 /* Legacy 1.2 specific geometry */
297 int plane_mode; /* drive device in single, double or quad mode */
298 int nr_planes;
299 int sec_per_pg; /* only sectors for a single page */
284 int sec_per_pl; /* all sectors across planes */ 300 int sec_per_pl; /* all sectors across planes */
285 int sec_per_blk;
286 int sec_per_lun;
287}; 301};
288 302
289/* sub-device structure */ 303/* sub-device structure */