diff options
Diffstat (limited to 'include/linux/lightnvm.h')
-rw-r--r-- | include/linux/lightnvm.h | 52 |
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 | ||
179 | struct nvm_addr_format { | 188 | struct 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 */ |
263 | struct nvm_geo { | 273 | struct 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 */ |