1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 #ifndef _QED_MCP_H
34 #define _QED_MCP_H
35
36 #include <linux/types.h>
37 #include <linux/delay.h>
38 #include <linux/slab.h>
39 #include <linux/spinlock.h>
40 #include <linux/qed/qed_fcoe_if.h>
41 #include "qed_hsi.h"
42 #include "qed_dev_api.h"
43
44 struct qed_mcp_link_speed_params {
45 bool autoneg;
46 u32 advertised_speeds;
47 u32 forced_speed;
48 };
49
50 struct qed_mcp_link_pause_params {
51 bool autoneg;
52 bool forced_rx;
53 bool forced_tx;
54 };
55
56 enum qed_mcp_eee_mode {
57 QED_MCP_EEE_DISABLED,
58 QED_MCP_EEE_ENABLED,
59 QED_MCP_EEE_UNSUPPORTED
60 };
61
62 struct qed_mcp_link_params {
63 struct qed_mcp_link_speed_params speed;
64 struct qed_mcp_link_pause_params pause;
65 u32 loopback_mode;
66 struct qed_link_eee_params eee;
67 };
68
69 struct qed_mcp_link_capabilities {
70 u32 speed_capabilities;
71 bool default_speed_autoneg;
72 enum qed_mcp_eee_mode default_eee;
73 u32 eee_lpi_timer;
74 u8 eee_speed_caps;
75 };
76
77 struct qed_mcp_link_state {
78 bool link_up;
79
80 u32 min_pf_rate;
81
82
83 u32 line_speed;
84
85
86
87
88 u32 speed;
89 bool full_duplex;
90
91 bool an;
92 bool an_complete;
93 bool parallel_detection;
94 bool pfc_enabled;
95
96 #define QED_LINK_PARTNER_SPEED_1G_HD BIT(0)
97 #define QED_LINK_PARTNER_SPEED_1G_FD BIT(1)
98 #define QED_LINK_PARTNER_SPEED_10G BIT(2)
99 #define QED_LINK_PARTNER_SPEED_20G BIT(3)
100 #define QED_LINK_PARTNER_SPEED_25G BIT(4)
101 #define QED_LINK_PARTNER_SPEED_40G BIT(5)
102 #define QED_LINK_PARTNER_SPEED_50G BIT(6)
103 #define QED_LINK_PARTNER_SPEED_100G BIT(7)
104 u32 partner_adv_speed;
105
106 bool partner_tx_flow_ctrl_en;
107 bool partner_rx_flow_ctrl_en;
108
109 #define QED_LINK_PARTNER_SYMMETRIC_PAUSE (1)
110 #define QED_LINK_PARTNER_ASYMMETRIC_PAUSE (2)
111 #define QED_LINK_PARTNER_BOTH_PAUSE (3)
112 u8 partner_adv_pause;
113
114 bool sfp_tx_fault;
115 bool eee_active;
116 u8 eee_adv_caps;
117 u8 eee_lp_adv_caps;
118 };
119
120 struct qed_mcp_function_info {
121 u8 pause_on_host;
122
123 enum qed_pci_personality protocol;
124
125 u8 bandwidth_min;
126 u8 bandwidth_max;
127
128 u8 mac[ETH_ALEN];
129
130 u64 wwn_port;
131 u64 wwn_node;
132
133 #define QED_MCP_VLAN_UNSET (0xffff)
134 u16 ovlan;
135
136 u16 mtu;
137 };
138
139 struct qed_mcp_nvm_common {
140 u32 offset;
141 u32 param;
142 u32 resp;
143 u32 cmd;
144 };
145
146 struct qed_mcp_drv_version {
147 u32 version;
148 u8 name[MCP_DRV_VER_STR_SIZE - 4];
149 };
150
151 struct qed_mcp_lan_stats {
152 u64 ucast_rx_pkts;
153 u64 ucast_tx_pkts;
154 u32 fcs_err;
155 };
156
157 struct qed_mcp_fcoe_stats {
158 u64 rx_pkts;
159 u64 tx_pkts;
160 u32 fcs_err;
161 u32 login_failure;
162 };
163
164 struct qed_mcp_iscsi_stats {
165 u64 rx_pdus;
166 u64 tx_pdus;
167 u64 rx_bytes;
168 u64 tx_bytes;
169 };
170
171 struct qed_mcp_rdma_stats {
172 u64 rx_pkts;
173 u64 tx_pkts;
174 u64 rx_bytes;
175 u64 tx_byts;
176 };
177
178 enum qed_mcp_protocol_type {
179 QED_MCP_LAN_STATS,
180 QED_MCP_FCOE_STATS,
181 QED_MCP_ISCSI_STATS,
182 QED_MCP_RDMA_STATS
183 };
184
185 union qed_mcp_protocol_stats {
186 struct qed_mcp_lan_stats lan_stats;
187 struct qed_mcp_fcoe_stats fcoe_stats;
188 struct qed_mcp_iscsi_stats iscsi_stats;
189 struct qed_mcp_rdma_stats rdma_stats;
190 };
191
192 enum qed_ov_eswitch {
193 QED_OV_ESWITCH_NONE,
194 QED_OV_ESWITCH_VEB,
195 QED_OV_ESWITCH_VEPA
196 };
197
198 enum qed_ov_client {
199 QED_OV_CLIENT_DRV,
200 QED_OV_CLIENT_USER,
201 QED_OV_CLIENT_VENDOR_SPEC
202 };
203
204 enum qed_ov_driver_state {
205 QED_OV_DRIVER_STATE_NOT_LOADED,
206 QED_OV_DRIVER_STATE_DISABLED,
207 QED_OV_DRIVER_STATE_ACTIVE
208 };
209
210 enum qed_ov_wol {
211 QED_OV_WOL_DEFAULT,
212 QED_OV_WOL_DISABLED,
213 QED_OV_WOL_ENABLED
214 };
215
216 enum qed_mfw_tlv_type {
217 QED_MFW_TLV_GENERIC = 0x1,
218 QED_MFW_TLV_ETH = 0x2,
219 QED_MFW_TLV_FCOE = 0x4,
220 QED_MFW_TLV_ISCSI = 0x8,
221 QED_MFW_TLV_MAX = 0x16,
222 };
223
224 struct qed_mfw_tlv_generic {
225 #define QED_MFW_TLV_FLAGS_SIZE 2
226 struct {
227 u8 ipv4_csum_offload;
228 u8 lso_supported;
229 bool b_set;
230 } flags;
231
232 #define QED_MFW_TLV_MAC_COUNT 3
233
234 u8 mac[QED_MFW_TLV_MAC_COUNT][6];
235 bool mac_set[QED_MFW_TLV_MAC_COUNT];
236
237 u64 rx_frames;
238 bool rx_frames_set;
239 u64 rx_bytes;
240 bool rx_bytes_set;
241 u64 tx_frames;
242 bool tx_frames_set;
243 u64 tx_bytes;
244 bool tx_bytes_set;
245 };
246
247 union qed_mfw_tlv_data {
248 struct qed_mfw_tlv_generic generic;
249 struct qed_mfw_tlv_eth eth;
250 struct qed_mfw_tlv_fcoe fcoe;
251 struct qed_mfw_tlv_iscsi iscsi;
252 };
253
254 #define QED_NVM_CFG_OPTION_ALL BIT(0)
255 #define QED_NVM_CFG_OPTION_INIT BIT(1)
256 #define QED_NVM_CFG_OPTION_COMMIT BIT(2)
257 #define QED_NVM_CFG_OPTION_FREE BIT(3)
258 #define QED_NVM_CFG_OPTION_ENTITY_SEL BIT(4)
259
260
261
262
263
264
265
266
267 struct qed_mcp_link_params *qed_mcp_get_link_params(struct qed_hwfn *);
268
269
270
271
272
273
274
275
276 struct qed_mcp_link_state *qed_mcp_get_link_state(struct qed_hwfn *);
277
278
279
280
281
282
283
284
285 struct qed_mcp_link_capabilities
286 *qed_mcp_get_link_capabilities(struct qed_hwfn *p_hwfn);
287
288
289
290
291
292
293
294
295
296
297 int qed_mcp_set_link(struct qed_hwfn *p_hwfn,
298 struct qed_ptt *p_ptt,
299 bool b_up);
300
301
302
303
304
305
306
307
308
309
310
311 int qed_mcp_get_mfw_ver(struct qed_hwfn *p_hwfn,
312 struct qed_ptt *p_ptt,
313 u32 *p_mfw_ver, u32 *p_running_bundle_id);
314
315
316
317
318
319
320
321
322
323
324 int qed_mcp_get_mbi_ver(struct qed_hwfn *p_hwfn,
325 struct qed_ptt *p_ptt, u32 *p_mbi_ver);
326
327
328
329
330
331
332
333
334
335
336
337
338 int qed_mcp_get_media_type(struct qed_hwfn *p_hwfn,
339 struct qed_ptt *p_ptt, u32 *media_type);
340
341
342
343
344
345
346
347
348
349
350
351
352
353 int qed_mcp_get_transceiver_data(struct qed_hwfn *p_hwfn,
354 struct qed_ptt *p_ptt,
355 u32 *p_transceiver_state,
356 u32 *p_tranceiver_type);
357
358
359
360
361
362
363
364
365
366
367
368
369
370 int qed_mcp_trans_speed_mask(struct qed_hwfn *p_hwfn,
371 struct qed_ptt *p_ptt, u32 *p_speed_mask);
372
373
374
375
376
377
378
379
380
381
382
383
384 int qed_mcp_get_board_config(struct qed_hwfn *p_hwfn,
385 struct qed_ptt *p_ptt, u32 *p_board_config);
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404 int qed_mcp_cmd(struct qed_hwfn *p_hwfn,
405 struct qed_ptt *p_ptt,
406 u32 cmd,
407 u32 param,
408 u32 *o_mcp_resp,
409 u32 *o_mcp_param);
410
411
412
413
414
415
416
417
418 int qed_mcp_drain(struct qed_hwfn *p_hwfn,
419 struct qed_ptt *p_ptt);
420
421
422
423
424
425
426
427
428
429
430 int qed_mcp_get_flash_size(struct qed_hwfn *p_hwfn,
431 struct qed_ptt *p_ptt,
432 u32 *p_flash_size);
433
434
435
436
437
438
439
440
441
442
443
444 int
445 qed_mcp_send_drv_version(struct qed_hwfn *p_hwfn,
446 struct qed_ptt *p_ptt,
447 struct qed_mcp_drv_version *p_ver);
448
449
450
451
452
453
454
455
456
457 u32 qed_get_process_kill_counter(struct qed_hwfn *p_hwfn,
458 struct qed_ptt *p_ptt);
459
460
461
462
463
464
465
466
467
468 int qed_start_recovery_process(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
469
470
471
472
473
474
475
476
477
478
479 int qed_recovery_prolog(struct qed_dev *cdev);
480
481
482
483
484
485
486
487
488
489
490 int qed_mcp_ov_update_current_config(struct qed_hwfn *p_hwfn,
491 struct qed_ptt *p_ptt,
492 enum qed_ov_client client);
493
494
495
496
497
498
499
500
501
502
503 int qed_mcp_ov_update_driver_state(struct qed_hwfn *p_hwfn,
504 struct qed_ptt *p_ptt,
505 enum qed_ov_driver_state drv_state);
506
507
508
509
510
511
512
513
514
515
516 int qed_mcp_ov_update_mtu(struct qed_hwfn *p_hwfn,
517 struct qed_ptt *p_ptt, u16 mtu);
518
519
520
521
522
523
524
525
526
527
528 int qed_mcp_ov_update_mac(struct qed_hwfn *p_hwfn,
529 struct qed_ptt *p_ptt, u8 *mac);
530
531
532
533
534
535
536
537
538
539
540 int qed_mcp_ov_update_wol(struct qed_hwfn *p_hwfn,
541 struct qed_ptt *p_ptt,
542 enum qed_ov_wol wol);
543
544
545
546
547
548
549
550
551
552
553 int qed_mcp_set_led(struct qed_hwfn *p_hwfn,
554 struct qed_ptt *p_ptt,
555 enum qed_led_mode mode);
556
557
558
559
560
561
562
563
564
565
566
567 int qed_mcp_nvm_read(struct qed_dev *cdev, u32 addr, u8 *p_buf, u32 len);
568
569
570
571
572
573
574
575
576
577
578
579
580 int qed_mcp_nvm_write(struct qed_dev *cdev,
581 u32 cmd, u32 addr, u8 *p_buf, u32 len);
582
583
584
585
586
587
588
589
590
591 int qed_mcp_nvm_resp(struct qed_dev *cdev, u8 *p_buf);
592
593 struct qed_nvm_image_att {
594 u32 start_addr;
595 u32 length;
596 };
597
598
599
600
601
602
603
604
605
606
607 int
608 qed_mcp_get_nvm_image_att(struct qed_hwfn *p_hwfn,
609 enum qed_nvm_images image_id,
610 struct qed_nvm_image_att *p_image_att);
611
612
613
614
615
616
617
618
619
620
621
622 int qed_mcp_get_nvm_image(struct qed_hwfn *p_hwfn,
623 enum qed_nvm_images image_id,
624 u8 *p_buffer, u32 buffer_len);
625
626
627
628
629
630
631
632
633
634 int qed_mcp_bist_register_test(struct qed_hwfn *p_hwfn,
635 struct qed_ptt *p_ptt);
636
637
638
639
640
641
642
643
644
645 int qed_mcp_bist_clock_test(struct qed_hwfn *p_hwfn,
646 struct qed_ptt *p_ptt);
647
648
649
650
651
652
653
654
655
656
657
658 int qed_mcp_bist_nvm_get_num_images(struct qed_hwfn *p_hwfn,
659 struct qed_ptt *p_ptt,
660 u32 *num_images);
661
662
663
664
665
666
667
668
669
670
671
672 int qed_mcp_bist_nvm_get_image_att(struct qed_hwfn *p_hwfn,
673 struct qed_ptt *p_ptt,
674 struct bist_nvm_image_att *p_image_att,
675 u32 image_index);
676
677
678
679
680
681
682
683
684
685
686 int qed_mfw_process_tlv_req(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
687
688
689
690
691
692
693
694 #define MCP_PF_ID_BY_REL(p_hwfn, rel_pfid) (QED_IS_BB((p_hwfn)->cdev) ? \
695 ((rel_pfid) | \
696 ((p_hwfn)->abs_pf_id & 1) << 3) : \
697 rel_pfid)
698 #define MCP_PF_ID(p_hwfn) MCP_PF_ID_BY_REL(p_hwfn, (p_hwfn)->rel_pf_id)
699
700 struct qed_mcp_info {
701
702 struct list_head cmd_list;
703
704
705
706
707 spinlock_t cmd_lock;
708
709
710 bool b_block_cmd;
711
712
713
714
715 spinlock_t link_lock;
716
717 u32 public_base;
718 u32 drv_mb_addr;
719 u32 mfw_mb_addr;
720 u32 port_addr;
721 u16 drv_mb_seq;
722 u16 drv_pulse_seq;
723 struct qed_mcp_link_params link_input;
724 struct qed_mcp_link_state link_output;
725 struct qed_mcp_link_capabilities link_capabilities;
726 struct qed_mcp_function_info func_info;
727 u8 *mfw_mb_cur;
728 u8 *mfw_mb_shadow;
729 u16 mfw_mb_length;
730 u32 mcp_hist;
731
732
733 u32 capabilities;
734 };
735
736 struct qed_mcp_mb_params {
737 u32 cmd;
738 u32 param;
739 void *p_data_src;
740 void *p_data_dst;
741 u8 data_src_size;
742 u8 data_dst_size;
743 u32 mcp_resp;
744 u32 mcp_param;
745 u32 flags;
746 #define QED_MB_FLAG_CAN_SLEEP (0x1 << 0)
747 #define QED_MB_FLAG_AVOID_BLOCK (0x1 << 1)
748 #define QED_MB_FLAGS_IS_SET(params, flag) \
749 ({ typeof(params) __params = (params); \
750 (__params && (__params->flags & QED_MB_FLAG_ ## flag)); })
751 };
752
753 struct qed_drv_tlv_hdr {
754 u8 tlv_type;
755 u8 tlv_length;
756 u8 tlv_reserved;
757 #define QED_DRV_TLV_FLAGS_CHANGED 0x01
758 u8 tlv_flags;
759 };
760
761
762
763
764
765
766
767
768
769 int qed_mcp_cmd_init(struct qed_hwfn *p_hwfn,
770 struct qed_ptt *p_ptt);
771
772
773
774
775
776
777
778
779 void qed_mcp_cmd_port_init(struct qed_hwfn *p_hwfn,
780 struct qed_ptt *p_ptt);
781
782
783
784
785
786
787
788
789
790 int qed_mcp_free(struct qed_hwfn *p_hwfn);
791
792
793
794
795
796
797
798
799
800
801
802
803
804 int qed_mcp_handle_events(struct qed_hwfn *p_hwfn,
805 struct qed_ptt *p_ptt);
806
807 enum qed_drv_role {
808 QED_DRV_ROLE_OS,
809 QED_DRV_ROLE_KDUMP,
810 };
811
812 struct qed_load_req_params {
813
814 enum qed_drv_role drv_role;
815 u8 timeout_val;
816 bool avoid_eng_reset;
817 enum qed_override_force_load override_force_load;
818
819
820 u32 load_code;
821 };
822
823
824
825
826
827
828
829
830
831
832
833 int qed_mcp_load_req(struct qed_hwfn *p_hwfn,
834 struct qed_ptt *p_ptt,
835 struct qed_load_req_params *p_params);
836
837
838
839
840
841
842
843
844
845 int qed_mcp_load_done(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
846
847
848
849
850
851
852
853
854
855 int qed_mcp_unload_req(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
856
857
858
859
860
861
862
863
864
865 int qed_mcp_unload_done(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
866
867
868
869
870
871
872
873 void qed_mcp_read_mb(struct qed_hwfn *p_hwfn,
874 struct qed_ptt *p_ptt);
875
876
877
878
879
880
881
882
883
884
885 int qed_mcp_ack_vf_flr(struct qed_hwfn *p_hwfn,
886 struct qed_ptt *p_ptt, u32 *vfs_to_ack);
887
888
889
890
891
892
893
894
895 int qed_mcp_fill_shmem_func_info(struct qed_hwfn *p_hwfn,
896 struct qed_ptt *p_ptt);
897
898
899
900
901
902
903
904
905
906 int qed_mcp_reset(struct qed_hwfn *p_hwfn,
907 struct qed_ptt *p_ptt);
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925 int qed_mcp_nvm_rd_cmd(struct qed_hwfn *p_hwfn,
926 struct qed_ptt *p_ptt,
927 u32 cmd,
928 u32 param,
929 u32 *o_mcp_resp,
930 u32 *o_mcp_param, u32 *o_txn_size, u32 *o_buf);
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945 int qed_mcp_phy_sfp_read(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
946 u32 port, u32 addr, u32 offset, u32 len, u8 *p_buf);
947
948
949
950
951
952
953
954
955 bool qed_mcp_is_init(struct qed_hwfn *p_hwfn);
956
957
958
959
960
961
962
963
964
965
966
967 int qed_mcp_config_vf_msix(struct qed_hwfn *p_hwfn,
968 struct qed_ptt *p_ptt, u8 vf_id, u8 num);
969
970
971
972
973
974
975
976
977
978 int qed_mcp_halt(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
979
980
981
982
983
984
985
986
987
988 int qed_mcp_resume(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
989
990 int qed_configure_pf_min_bandwidth(struct qed_dev *cdev, u8 min_bw);
991 int qed_configure_pf_max_bandwidth(struct qed_dev *cdev, u8 max_bw);
992 int __qed_configure_pf_max_bandwidth(struct qed_hwfn *p_hwfn,
993 struct qed_ptt *p_ptt,
994 struct qed_mcp_link_state *p_link,
995 u8 max_bw);
996 int __qed_configure_pf_min_bandwidth(struct qed_hwfn *p_hwfn,
997 struct qed_ptt *p_ptt,
998 struct qed_mcp_link_state *p_link,
999 u8 min_bw);
1000
1001 int qed_mcp_mask_parities(struct qed_hwfn *p_hwfn,
1002 struct qed_ptt *p_ptt, u32 mask_parities);
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015 int
1016 qed_mcp_set_resc_max_val(struct qed_hwfn *p_hwfn,
1017 struct qed_ptt *p_ptt,
1018 enum qed_resources res_id,
1019 u32 resc_max_val, u32 *p_mcp_resp);
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033 int
1034 qed_mcp_get_resc_info(struct qed_hwfn *p_hwfn,
1035 struct qed_ptt *p_ptt,
1036 enum qed_resources res_id,
1037 u32 *p_mcp_resp, u32 *p_resc_num, u32 *p_resc_start);
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048 int qed_mcp_ov_update_eswitch(struct qed_hwfn *p_hwfn,
1049 struct qed_ptt *p_ptt,
1050 enum qed_ov_eswitch eswitch);
1051
1052 #define QED_MCP_RESC_LOCK_MIN_VAL RESOURCE_DUMP
1053 #define QED_MCP_RESC_LOCK_MAX_VAL 31
1054
1055 enum qed_resc_lock {
1056 QED_RESC_LOCK_DBG_DUMP = QED_MCP_RESC_LOCK_MIN_VAL,
1057 QED_RESC_LOCK_PTP_PORT0,
1058 QED_RESC_LOCK_PTP_PORT1,
1059 QED_RESC_LOCK_PTP_PORT2,
1060 QED_RESC_LOCK_PTP_PORT3,
1061 QED_RESC_LOCK_RESC_ALLOC = QED_MCP_RESC_LOCK_MAX_VAL,
1062 QED_RESC_LOCK_RESC_INVALID
1063 };
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073 int qed_mcp_initiate_pf_flr(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
1074 struct qed_resc_lock_params {
1075
1076 u8 resource;
1077
1078
1079 u8 timeout;
1080 #define QED_MCP_RESC_LOCK_TO_DEFAULT 0
1081 #define QED_MCP_RESC_LOCK_TO_NONE 255
1082
1083
1084 u8 retry_num;
1085 #define QED_MCP_RESC_LOCK_RETRY_CNT_DFLT 10
1086
1087
1088 u16 retry_interval;
1089 #define QED_MCP_RESC_LOCK_RETRY_VAL_DFLT 10000
1090
1091
1092 bool sleep_b4_retry;
1093
1094
1095 bool b_granted;
1096
1097
1098
1099
1100 u8 owner;
1101 };
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112 int
1113 qed_mcp_resc_lock(struct qed_hwfn *p_hwfn,
1114 struct qed_ptt *p_ptt, struct qed_resc_lock_params *p_params);
1115
1116 struct qed_resc_unlock_params {
1117
1118 u8 resource;
1119
1120
1121 bool b_force;
1122
1123
1124 bool b_released;
1125 };
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136 int
1137 qed_mcp_resc_unlock(struct qed_hwfn *p_hwfn,
1138 struct qed_ptt *p_ptt,
1139 struct qed_resc_unlock_params *p_params);
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149 void qed_mcp_resc_lock_default_init(struct qed_resc_lock_params *p_lock,
1150 struct qed_resc_unlock_params *p_unlock,
1151 enum qed_resc_lock
1152 resource, bool b_is_permanent);
1153
1154
1155
1156
1157
1158
1159
1160
1161 bool qed_mcp_is_smart_an_supported(struct qed_hwfn *p_hwfn);
1162
1163
1164
1165
1166
1167
1168
1169 int qed_mcp_get_capabilities(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
1170
1171
1172
1173
1174
1175
1176
1177
1178 int qed_mcp_set_capabilities(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
1179
1180
1181
1182
1183
1184
1185
1186 void qed_mcp_read_ufp_config(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
1187
1188
1189
1190
1191
1192
1193 int qed_mcp_nvm_info_populate(struct qed_hwfn *p_hwfn);
1194
1195
1196
1197
1198
1199
1200
1201 int qed_mcp_get_engine_config(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
1202
1203
1204
1205
1206
1207
1208
1209 int qed_mcp_get_ppfid_bitmap(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222 int qed_mcp_nvm_get_cfg(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
1223 u16 option_id, u8 entity_id, u16 flags, u8 *p_buf,
1224 u32 *p_len);
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237 int qed_mcp_nvm_set_cfg(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
1238 u16 option_id, u8 entity_id, u16 flags, u8 *p_buf,
1239 u32 len);
1240 #endif