@@ -137,7 +137,6 @@ __u64 sndk_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
137137
138138 int ret ;
139139 uint32_t read_device_id = -1 , read_vendor_id = -1 ;
140- __u32 cust_id ;
141140
142141 ret = sndk_get_pci_ids (r , dev , & read_device_id , & read_vendor_id );
143142 if (ret < 0 ) {
@@ -158,201 +157,6 @@ __u64 sndk_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
158157 switch (read_vendor_id ) {
159158 case SNDK_NVME_WDC_VID :
160159 switch (read_device_id ) {
161- case SNDK_NVME_SN630_DEV_ID :
162- case SNDK_NVME_SN630_DEV_ID_1 :
163- capabilities = (SNDK_DRIVE_CAP_INTERNAL_LOG |
164- SNDK_DRIVE_CAP_DRIVE_STATUS |
165- SNDK_DRIVE_CAP_CLEAR_ASSERT |
166- SNDK_DRIVE_CAP_RESIZE |
167- SNDK_DRIVE_CAP_CLEAR_PCIE );
168- /* verify the 0xCA log page is supported */
169- if (run_wdc_nvme_check_supported_log_page (r , dev ,
170- SNDK_NVME_GET_DEVICE_INFO_LOG_ID ))
171- capabilities |= SNDK_DRIVE_CAP_CA_LOG_PAGE ;
172-
173- /* verify the 0xD0 log page is supported */
174- if (run_wdc_nvme_check_supported_log_page (r , dev ,
175- SNDK_NVME_GET_VU_SMART_LOG_ID ))
176- capabilities |= SNDK_DRIVE_CAP_D0_LOG_PAGE ;
177- break ;
178-
179- case SNDK_NVME_SN640_DEV_ID :
180- case SNDK_NVME_SN640_DEV_ID_1 :
181- case SNDK_NVME_SN640_DEV_ID_2 :
182- case SNDK_NVME_SN640_DEV_ID_3 :
183- /* verify the 0xC0 log page is supported */
184- if (run_wdc_nvme_check_supported_log_page (r , dev ,
185- SNDK_NVME_GET_SMART_CLOUD_ATTR_LOG_ID ))
186- capabilities |= SNDK_DRIVE_CAP_C0_LOG_PAGE ;
187-
188- capabilities |= (SNDK_DRIVE_CAP_INTERNAL_LOG |
189- SNDK_DRIVE_CAP_DRIVE_STATUS |
190- SNDK_DRIVE_CAP_CLEAR_ASSERT |
191- SNDK_DRIVE_CAP_RESIZE |
192- SNDK_DRIVE_CAP_FW_ACTIVATE_HISTORY |
193- SNDK_DRIVE_CAP_DISABLE_CTLR_TELE_LOG |
194- SNDK_DRIVE_CAP_REASON_ID |
195- SNDK_DRIVE_CAP_LOG_PAGE_DIR );
196-
197- /* verify the 0xC1 (OCP Error Recovery) log page is supported */
198- if (run_wdc_nvme_check_supported_log_page (r , dev ,
199- SNDK_ERROR_REC_LOG_ID ))
200- capabilities |= SNDK_DRIVE_CAP_OCP_C1_LOG_PAGE ;
201-
202- /* verify the 0xC3 (OCP Latency Monitor) log page is supported */
203- if (run_wdc_nvme_check_supported_log_page (r , dev ,
204- SNDK_LATENCY_MON_LOG_ID ))
205- capabilities |= SNDK_DRIVE_CAP_C3_LOG_PAGE ;
206-
207- /* verify the 0xC4 (OCP Device Capabilities) log page is supported */
208- if (run_wdc_nvme_check_supported_log_page (r , dev ,
209- SNDK_DEV_CAP_LOG_ID ))
210- capabilities |= SNDK_DRIVE_CAP_OCP_C4_LOG_PAGE ;
211-
212- /* verify the 0xC5 (OCP Unsupported Requirements) log page is supported */
213- if (run_wdc_nvme_check_supported_log_page (r , dev ,
214- SNDK_UNSUPPORTED_REQS_LOG_ID ))
215- capabilities |= SNDK_DRIVE_CAP_OCP_C5_LOG_PAGE ;
216-
217- /* verify the 0xCA log page is supported */
218- if (run_wdc_nvme_check_supported_log_page (r , dev ,
219- SNDK_NVME_GET_DEVICE_INFO_LOG_ID ))
220- capabilities |= SNDK_DRIVE_CAP_CA_LOG_PAGE ;
221-
222- /* verify the 0xD0 log page is supported */
223- if (run_wdc_nvme_check_supported_log_page (r , dev ,
224- SNDK_NVME_GET_VU_SMART_LOG_ID ))
225- capabilities |= SNDK_DRIVE_CAP_D0_LOG_PAGE ;
226-
227- cust_id = run_wdc_get_fw_cust_id (r , dev );
228- if (cust_id == SNDK_INVALID_CUSTOMER_ID ) {
229- fprintf (stderr , "%s: ERROR: SNDK: invalid customer id\n" , __func__ );
230- return -1 ;
231- }
232-
233- if ((cust_id == SNDK_CUSTOMER_ID_0x1004 ) ||
234- (cust_id == SNDK_CUSTOMER_ID_0x1008 ) ||
235- (cust_id == SNDK_CUSTOMER_ID_0x1005 ) ||
236- (cust_id == SNDK_CUSTOMER_ID_0x1304 ))
237- capabilities |= (SNDK_DRIVE_CAP_VU_FID_CLEAR_FW_ACT_HISTORY |
238- SNDK_DRIVE_CAP_VU_FID_CLEAR_PCIE |
239- SNDK_DRIVE_CAP_INFO |
240- SNDK_DRIVE_CAP_CLOUD_SSD_VERSION );
241- else
242- capabilities |= (SNDK_DRIVE_CAP_CLEAR_FW_ACT_HISTORY |
243- SNDK_DRIVE_CAP_CLEAR_PCIE );
244-
245- break ;
246-
247- case SNDK_NVME_SN840_DEV_ID :
248- case SNDK_NVME_SN840_DEV_ID_1 :
249- /* verify the 0xC0 log page is supported */
250- if (run_wdc_nvme_check_supported_log_page (r , dev ,
251- SNDK_NVME_GET_EOL_STATUS_LOG_ID ))
252- capabilities |= SNDK_DRIVE_CAP_C0_LOG_PAGE ;
253-
254- capabilities |= (SNDK_DRIVE_CAP_INTERNAL_LOG |
255- SNDK_DRIVE_CAP_DRIVE_STATUS |
256- SNDK_DRIVE_CAP_CLEAR_ASSERT |
257- SNDK_DRIVE_CAP_RESIZE |
258- SNDK_DRIVE_CAP_CLEAR_PCIE |
259- SNDK_DRIVE_CAP_FW_ACTIVATE_HISTORY |
260- SNDK_DRIVE_CAP_CLEAR_FW_ACT_HISTORY |
261- SNDK_DRIVE_CAP_DISABLE_CTLR_TELE_LOG |
262- SNDK_DRIVE_CAP_REASON_ID |
263- SNDK_DRIVE_CAP_LOG_PAGE_DIR );
264-
265- /* verify the 0xCA log page is supported */
266- if (run_wdc_nvme_check_supported_log_page (r , dev ,
267- SNDK_NVME_GET_DEVICE_INFO_LOG_ID ))
268- capabilities |= SNDK_DRIVE_CAP_CA_LOG_PAGE ;
269-
270- /* verify the 0xD0 log page is supported */
271- if (run_wdc_nvme_check_supported_log_page (r , dev ,
272- SNDK_NVME_GET_VU_SMART_LOG_ID ))
273- capabilities |= SNDK_DRIVE_CAP_D0_LOG_PAGE ;
274- break ;
275-
276- case SNDK_NVME_SN650_DEV_ID :
277- case SNDK_NVME_SN650_DEV_ID_1 :
278- case SNDK_NVME_SN650_DEV_ID_2 :
279- case SNDK_NVME_SN650_DEV_ID_3 :
280- case SNDK_NVME_SN650_DEV_ID_4 :
281- case SNDK_NVME_SN655_DEV_ID :
282- case SNDK_NVME_SN655_DEV_ID_1 :
283- /* verify the 0xC0 log page is supported */
284- if (run_wdc_nvme_check_supported_log_page (r , dev ,
285- SNDK_NVME_GET_SMART_CLOUD_ATTR_LOG_ID ))
286- capabilities |= SNDK_DRIVE_CAP_C0_LOG_PAGE ;
287-
288- /* verify the 0xC1 (OCP Error Recovery) log page is supported */
289- if (run_wdc_nvme_check_supported_log_page (r , dev ,
290- SNDK_ERROR_REC_LOG_ID ))
291- capabilities |= SNDK_DRIVE_CAP_OCP_C1_LOG_PAGE ;
292-
293- /* verify the 0xC3 (OCP Latency Monitor) log page is supported */
294- if (run_wdc_nvme_check_supported_log_page (r , dev ,
295- SNDK_LATENCY_MON_LOG_ID ))
296- capabilities |= SNDK_DRIVE_CAP_C3_LOG_PAGE ;
297-
298- /* verify the 0xC4 (OCP Device Capabilities) log page is supported */
299- if (run_wdc_nvme_check_supported_log_page (r , dev ,
300- SNDK_DEV_CAP_LOG_ID ))
301- capabilities |= SNDK_DRIVE_CAP_OCP_C4_LOG_PAGE ;
302-
303- /* verify the 0xC5 (OCP Unsupported Requirements) log page is supported */
304- if (run_wdc_nvme_check_supported_log_page (r , dev ,
305- SNDK_UNSUPPORTED_REQS_LOG_ID ))
306- capabilities |= SNDK_DRIVE_CAP_OCP_C5_LOG_PAGE ;
307-
308- capabilities |= (SNDK_DRIVE_CAP_INTERNAL_LOG |
309- SNDK_DRIVE_CAP_DRIVE_STATUS |
310- SNDK_DRIVE_CAP_CLEAR_ASSERT |
311- SNDK_DRIVE_CAP_RESIZE |
312- SNDK_DRIVE_CAP_FW_ACTIVATE_HISTORY |
313- SNDK_DRIVE_CAP_DISABLE_CTLR_TELE_LOG |
314- SNDK_DRIVE_CAP_REASON_ID |
315- SNDK_DRIVE_CAP_LOG_PAGE_DIR );
316-
317- cust_id = run_wdc_get_fw_cust_id (r , dev );
318- if (cust_id == SNDK_INVALID_CUSTOMER_ID ) {
319- fprintf (stderr , "%s: ERROR: SNDK: invalid customer id\n" , __func__ );
320- return -1 ;
321- }
322-
323- if ((cust_id == SNDK_CUSTOMER_ID_0x1004 ) ||
324- (cust_id == SNDK_CUSTOMER_ID_0x1008 ) ||
325- (cust_id == SNDK_CUSTOMER_ID_0x1005 ) ||
326- (cust_id == SNDK_CUSTOMER_ID_0x1304 ))
327- capabilities |= (SNDK_DRIVE_CAP_VU_FID_CLEAR_FW_ACT_HISTORY |
328- SNDK_DRIVE_CAP_VU_FID_CLEAR_PCIE |
329- SNDK_DRIVE_CAP_INFO |
330- SNDK_DRIVE_CAP_CLOUD_SSD_VERSION );
331- else
332- capabilities |= (SNDK_DRIVE_CAP_CLEAR_FW_ACT_HISTORY |
333- SNDK_DRIVE_CAP_CLEAR_PCIE );
334-
335- break ;
336-
337- case SNDK_NVME_SN861_DEV_ID :
338- case SNDK_NVME_SN861_DEV_ID_1 :
339- case SNDK_NVME_SN861_DEV_ID_2 :
340- capabilities |= (SNDK_DRIVE_CAP_C0_LOG_PAGE |
341- SNDK_DRIVE_CAP_C3_LOG_PAGE |
342- SNDK_DRIVE_CAP_CA_LOG_PAGE |
343- SNDK_DRIVE_CAP_OCP_C4_LOG_PAGE |
344- SNDK_DRIVE_CAP_OCP_C5_LOG_PAGE |
345- SNDK_DRIVE_CAP_INTERNAL_LOG |
346- SNDK_DRIVE_CAP_FW_ACTIVATE_HISTORY_C2 |
347- SNDK_DRIVE_CAP_VU_FID_CLEAR_PCIE |
348- SNDK_DRIVE_CAP_VU_FID_CLEAR_FW_ACT_HISTORY |
349- SNDK_DRIVE_CAP_INFO |
350- SNDK_DRIVE_CAP_CLOUD_SSD_VERSION |
351- SNDK_DRIVE_CAP_LOG_PAGE_DIR |
352- SNDK_DRIVE_CAP_DRIVE_STATUS |
353- SNDK_DRIVE_CAP_SET_LATENCY_MONITOR );
354- break ;
355-
356160 case SNDK_NVME_SNTMP_DEV_ID :
357161 capabilities |= (SNDK_DRIVE_CAP_C0_LOG_PAGE |
358162 SNDK_DRIVE_CAP_C3_LOG_PAGE |
@@ -377,86 +181,14 @@ __u64 sndk_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
377181
378182 case SNDK_NVME_SNDK_VID :
379183 switch (read_device_id ) {
380- case SNDK_NVME_SN520_DEV_ID :
381- case SNDK_NVME_SN520_DEV_ID_1 :
382- case SNDK_NVME_SN520_DEV_ID_2 :
383- case SNDK_NVME_SN810_DEV_ID :
384- capabilities = SNDK_DRIVE_CAP_DUI_DATA ;
385- break ;
386-
387- case SNDK_NVME_SN820CL_DEV_ID :
388- capabilities = SNDK_DRIVE_CAP_DUI_DATA |
389- SNDK_DRIVE_CAP_CLOUD_BOOT_SSD_VERSION |
390- SNDK_DRIVE_CAP_CLOUD_LOG_PAGE |
391- SNDK_DRIVE_CAP_C0_LOG_PAGE |
392- SNDK_DRIVE_CAP_HW_REV_LOG_PAGE |
393- SNDK_DRIVE_CAP_INFO |
394- SNDK_DRIVE_CAP_VU_FID_CLEAR_PCIE |
395- SNDK_DRIVE_CAP_NAND_STATS |
396- SNDK_DRIVE_CAP_DEVICE_WAF |
397- SNDK_DRIVE_CAP_TEMP_STATS ;
398- break ;
399-
400- case SNDK_NVME_SN720_DEV_ID :
401- capabilities = SNDK_DRIVE_CAP_DUI_DATA |
402- SNDK_DRIVE_CAP_NAND_STATS |
403- SNDK_DRIVE_CAP_NS_RESIZE ;
404- break ;
405-
406- case SNDK_NVME_SN730_DEV_ID :
407- capabilities = SNDK_DRIVE_CAP_DUI |
408- SNDK_DRIVE_CAP_NAND_STATS |
409- SNDK_DRIVE_CAP_INFO |
410- SNDK_DRIVE_CAP_TEMP_STATS |
411- SNDK_DRIVE_CAP_VUC_CLEAR_PCIE |
412- SNDK_DRIVE_CAP_PCIE_STATS ;
413- break ;
414-
415- case SNDK_NVME_SN530_DEV_ID_1 :
416- case SNDK_NVME_SN530_DEV_ID_2 :
417- case SNDK_NVME_SN530_DEV_ID_3 :
418- case SNDK_NVME_SN530_DEV_ID_4 :
419- case SNDK_NVME_SN530_DEV_ID_5 :
420- case SNDK_NVME_SN350_DEV_ID :
421- case SNDK_NVME_SN570_DEV_ID :
422- case SNDK_NVME_SN850X_DEV_ID :
423- case SNDK_NVME_SN5000_DEV_ID_1 :
424- case SNDK_NVME_SN5000_DEV_ID_2 :
425- case SNDK_NVME_SN5000_DEV_ID_3 :
426- case SNDK_NVME_SN5000_DEV_ID_4 :
427- case SNDK_NVME_SN7000S_DEV_ID_1 :
428184 case SNDK_NVME_SN7150_DEV_ID_1 :
429185 case SNDK_NVME_SN7150_DEV_ID_2 :
430186 case SNDK_NVME_SN7150_DEV_ID_3 :
431187 case SNDK_NVME_SN7150_DEV_ID_4 :
432188 case SNDK_NVME_SN7150_DEV_ID_5 :
433- case SNDK_NVME_SN7100_DEV_ID_1 :
434- case SNDK_NVME_SN7100_DEV_ID_2 :
435- case SNDK_NVME_SN7100_DEV_ID_3 :
436- case SNDK_NVME_SN8000S_DEV_ID :
437- case SNDK_NVME_SN5100S_DEV_ID_1 :
438- case SNDK_NVME_SN5100S_DEV_ID_2 :
439- case SNDK_NVME_SN5100S_DEV_ID_3 :
440- case SNDK_NVME_SN740_DEV_ID :
441- case SNDK_NVME_SN740_DEV_ID_1 :
442- case SNDK_NVME_SN740_DEV_ID_2 :
443- case SNDK_NVME_SN740_DEV_ID_3 :
444- case SNDK_NVME_SN340_DEV_ID :
445189 capabilities = SNDK_DRIVE_CAP_DUI ;
446190 break ;
447191
448- case SNDK_NVME_ZN350_DEV_ID :
449- case SNDK_NVME_ZN350_DEV_ID_1 :
450- capabilities = SNDK_DRIVE_CAP_DUI_DATA |
451- SNDK_DRIVE_CAP_VU_FID_CLEAR_PCIE |
452- SNDK_DRIVE_CAP_C0_LOG_PAGE |
453- SNDK_DRIVE_CAP_VU_FID_CLEAR_FW_ACT_HISTORY |
454- SNDK_DRIVE_CAP_FW_ACTIVATE_HISTORY_C2 |
455- SNDK_DRIVE_CAP_INFO |
456- SNDK_DRIVE_CAP_CLOUD_SSD_VERSION |
457- SNDK_DRIVE_CAP_LOG_PAGE_DIR ;
458- break ;
459-
460192 default :
461193 capabilities = 0 ;
462194 }
@@ -465,6 +197,10 @@ __u64 sndk_get_drive_capabilities(nvme_root_t r, struct nvme_dev *dev)
465197 capabilities = 0 ;
466198 }
467199
200+ /* Check for fallback WDC plugin support */
201+ if (!capabilities )
202+ capabilities = run_wdc_get_drive_capabilities (r , dev );
203+
468204 return capabilities ;
469205}
470206
0 commit comments