net/bnxt: update TruFlow core index table
[dpdk.git] / drivers / net / bnxt / tf_core / tf_device.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2019-2021 Broadcom
3  * All rights reserved.
4  */
5
6 #ifndef _TF_DEVICE_H_
7 #define _TF_DEVICE_H_
8
9 #include "tf_core.h"
10 #include "tf_identifier.h"
11 #include "tf_tbl.h"
12 #include "tf_tcam.h"
13 #ifdef TF_TCAM_SHARED
14 #include "tf_tcam_shared.h"
15 #endif
16 #include "tf_if_tbl.h"
17 #include "tf_global_cfg.h"
18
19 struct tf;
20 struct tf_session;
21
22 /**
23  * The Device module provides a general device template. A supported
24  * device type should implement one or more of the listed function
25  * pointers according to its capabilities.
26  *
27  * If a device function pointer is NULL the device capability is not
28  * supported.
29  */
30
31 /**
32  * TF device information
33  */
34 struct tf_dev_info {
35         enum tf_device_type type;
36         const struct tf_dev_ops *ops;
37 };
38
39 /**
40  * @page device Device
41  *
42  * @ref tf_dev_bind
43  *
44  * @ref tf_dev_unbind
45  */
46
47 /**
48  * Device bind handles the initialization of the specified device
49  * type.
50  *
51  * [in] tfp
52  *   Pointer to TF handle
53  *
54  * [in] type
55  *   Device type
56  *
57  * [in] resources
58  *   Pointer to resource allocation information
59  *
60  * [out] dev_handle
61  *   Device handle
62  *
63  * Returns
64  *   - (0) if successful.
65  *   - (-EINVAL) parameter failure.
66  *   - (-ENODEV) no such device supported.
67  */
68 int tf_dev_bind(struct tf *tfp,
69                 enum tf_device_type type,
70                 bool shadow_copy,
71                 struct tf_session_resources *resources,
72                 struct tf_dev_info *dev_handle);
73
74 /**
75  * Device release handles cleanup of the device specific information.
76  *
77  * [in] tfp
78  *   Pointer to TF handle
79  *
80  * [in] dev_handle
81  *   Device handle
82  *
83  * Returns
84  *   - (0) if successful.
85  *   - (-EINVAL) parameter failure.
86  *   - (-ENODEV) no such device supported.
87  */
88 int tf_dev_unbind(struct tf *tfp,
89                   struct tf_dev_info *dev_handle);
90
91 int
92 tf_dev_bind_ops(enum tf_device_type type,
93                 struct tf_dev_info *dev_handle);
94
95 /**
96  * Truflow device specific function hooks structure
97  *
98  * The following device hooks can be defined; unless noted otherwise,
99  * they are optional and can be filled with a null pointer. The
100  * purpose of these hooks is to support Truflow device operations for
101  * different device variants.
102  */
103 struct tf_dev_ops {
104         /**
105          * Retrieves the MAX number of resource types that the device
106          * supports.
107          *
108          * [in] tfp
109          *   Pointer to TF handle
110          *
111          * [out] max_types
112          *   Pointer to MAX number of types the device supports
113          *
114          * Returns
115          *   - (0) if successful.
116          *   - (-EINVAL) on failure.
117          */
118         int (*tf_dev_get_max_types)(struct tf *tfp,
119                                     uint16_t *max_types);
120
121         /**
122          * Retrieves the string description for the CFA resource
123          * type
124          *
125          * [in] tfp
126          *   Pointer to TF handle
127          *
128          * [in] resource_id
129          *   HCAPI cfa resource type id
130          *
131          * [out] resource_str
132          *   Pointer to a string
133          *
134          * Returns
135          *   - (0) if successful.
136          *   - (-EINVAL) on failure.
137          */
138         int (*tf_dev_get_resource_str)(struct tf *tfp,
139                                        uint16_t resource_id,
140                                        const char **resource_str);
141
142         /**
143          * Retrieves the WC TCAM slice information that the device
144          * supports.
145          *
146          * [in] tfp
147          *   Pointer to TF handle
148          *
149          * [in] type
150          *   TCAM table type
151          *
152          * [in] key_sz
153          *   Key size
154          *
155          * [out] num_slices_per_row
156          *   Pointer to number of slices per row the device supports
157          *
158          * Returns
159          *   - (0) if successful.
160          *   - (-EINVAL) on failure.
161          */
162         int (*tf_dev_get_tcam_slice_info)(struct tf *tfp,
163                                           enum tf_tcam_tbl_type type,
164                                           uint16_t key_sz,
165                                           uint16_t *num_slices_per_row);
166
167         /**
168          * Allocation of an identifier element.
169          *
170          * This API allocates the specified identifier element from a
171          * device specific identifier DB. The allocated element is
172          * returned.
173          *
174          * [in] tfp
175          *   Pointer to TF handle
176          *
177          * [in] parms
178          *   Pointer to identifier allocation parameters
179          *
180          * Returns
181          *   - (0) if successful.
182          *   - (-EINVAL) on failure.
183          */
184         int (*tf_dev_alloc_ident)(struct tf *tfp,
185                                   struct tf_ident_alloc_parms *parms);
186
187         /**
188          * Free of an identifier element.
189          *
190          * This API free's a previous allocated identifier element from a
191          * device specific identifier DB.
192          *
193          * [in] tfp
194          *   Pointer to TF handle
195          *
196          * [in] parms
197          *   Pointer to identifier free parameters
198          *
199          * Returns
200          *   - (0) if successful.
201          *   - (-EINVAL) on failure.
202          */
203         int (*tf_dev_free_ident)(struct tf *tfp,
204                                  struct tf_ident_free_parms *parms);
205
206         /**
207          * Search of an identifier element.
208          *
209          * This API search the specified identifier element from a
210          * device specific identifier shadow DB. The allocated element
211          * is returned.
212          *
213          * [in] tfp
214          *   Pointer to TF handle
215          *
216          * [in] parms
217          *   Pointer to identifier search parameters
218          *
219          * Returns
220          *   - (0) if successful.
221          *   - (-EINVAL) on failure.
222          */
223         int (*tf_dev_search_ident)(struct tf *tfp,
224                                    struct tf_ident_search_parms *parms);
225
226         /**
227          * Retrieves the identifier resource info.
228          *
229          * This API retrieves the identifier resource info from the rm db.
230          *
231          * [in] tfp
232          *   Pointer to TF handle
233          *
234          * [in] parms
235          *   Pointer to identifier info
236          *
237          * Returns
238          *   - (0) if successful.
239          *   - (-EINVAL) on failure.
240          */
241         int (*tf_dev_get_ident_resc_info)(struct tf *tfp,
242                                           struct tf_identifier_resource_info *parms);
243
244         /**
245          * Get SRAM table information.
246          *
247          * Converts an internal RM allocated element offset to
248          * a user address and vice versa.
249          *
250          * [in] tfp
251          *   Pointer to TF handle
252          *
253          * [in] type
254          *   Truflow index table type, e.g. TF_TYPE_FULL_ACT_RECORD
255          *
256          * [in/out] base
257          *   Pointer to the base address of the associated table type.
258          *
259          * [in/out] shift
260          *   Pointer to any shift required for the associated table type.
261          *
262          * Returns
263          *   - (0) if successful.
264          *   - (-EINVAL) on failure.
265          */
266         int (*tf_dev_get_tbl_info)(struct tf *tfp,
267                                    void *tbl_db,
268                                    enum tf_tbl_type type,
269                                    uint16_t *base,
270                                    uint16_t *shift);
271
272         /**
273          * Allocation of an index table type element.
274          *
275          * This API allocates the specified table type element from a
276          * device specific table type DB. The allocated element is
277          * returned.
278          *
279          * [in] tfp
280          *   Pointer to TF handle
281          *
282          * [in] parms
283          *   Pointer to table allocation parameters
284          *
285          * Returns
286          *   - (0) if successful.
287          *   - (-EINVAL) on failure.
288          */
289         int (*tf_dev_alloc_tbl)(struct tf *tfp,
290                                 struct tf_tbl_alloc_parms *parms);
291
292         /**
293          * Allocation of a external table type element.
294          *
295          * This API allocates the specified table type element from a
296          * device specific table type DB. The allocated element is
297          * returned.
298          *
299          * [in] tfp
300          *   Pointer to TF handle
301          *
302          * [in] parms
303          *   Pointer to table allocation parameters
304          *
305          * Returns
306          *   - (0) if successful.
307          *   - (-EINVAL) on failure.
308          */
309         int (*tf_dev_alloc_ext_tbl)(struct tf *tfp,
310                                     struct tf_tbl_alloc_parms *parms);
311
312         /**
313          * Free of a table type element.
314          *
315          * This API free's a previous allocated table type element from a
316          * device specific table type DB.
317          *
318          * [in] tfp
319          *   Pointer to TF handle
320          *
321          * [in] parms
322          *   Pointer to table free parameters
323          *
324          * Returns
325          *   - (0) if successful.
326          *   - (-EINVAL) on failure.
327          */
328         int (*tf_dev_free_tbl)(struct tf *tfp,
329                                struct tf_tbl_free_parms *parms);
330
331         /**
332          * Free of a external table type element.
333          *
334          * This API free's a previous allocated table type element from a
335          * device specific table type DB.
336          *
337          * [in] tfp
338          *   Pointer to TF handle
339          *
340          * [in] parms
341          *   Pointer to table free parameters
342          *
343          * Returns
344          *   - (0) if successful.
345          *   - (-EINVAL) on failure.
346          */
347         int (*tf_dev_free_ext_tbl)(struct tf *tfp,
348                                    struct tf_tbl_free_parms *parms);
349
350         /**
351          * Sets the specified table type element.
352          *
353          * This API sets the specified element data by invoking the
354          * firmware.
355          *
356          * [in] tfp
357          *   Pointer to TF handle
358          *
359          * [in] parms
360          *   Pointer to table set parameters
361          *
362          * Returns
363          *   - (0) if successful.
364          *   - (-EINVAL) on failure.
365          */
366         int (*tf_dev_set_tbl)(struct tf *tfp,
367                               struct tf_tbl_set_parms *parms);
368
369         /**
370          * Sets the specified external table type element.
371          *
372          * This API sets the specified element data by invoking the
373          * firmware.
374          *
375          * [in] tfp
376          *   Pointer to TF handle
377          *
378          * [in] parms
379          *   Pointer to table set parameters
380          *
381          * Returns
382          *   - (0) if successful.
383          *   - (-EINVAL) on failure.
384          */
385         int (*tf_dev_set_ext_tbl)(struct tf *tfp,
386                                   struct tf_tbl_set_parms *parms);
387
388         /**
389          * Retrieves the specified table type element.
390          *
391          * This API retrieves the specified element data by invoking the
392          * firmware.
393          *
394          * [in] tfp
395          *   Pointer to TF handle
396          *
397          * [in] parms
398          *   Pointer to table get parameters
399          *
400          * Returns
401          *   - (0) if successful.
402          *   - (-EINVAL) on failure.
403          */
404         int (*tf_dev_get_tbl)(struct tf *tfp,
405                               struct tf_tbl_get_parms *parms);
406
407         /**
408          * Retrieves the specified table type element using 'bulk'
409          * mechanism.
410          *
411          * This API retrieves the specified element data by invoking the
412          * firmware.
413          *
414          * [in] tfp
415          *   Pointer to TF handle
416          *
417          * [in] parms
418          *   Pointer to table get bulk parameters
419          *
420          * Returns
421          *   - (0) if successful.
422          *   - (-EINVAL) on failure.
423          */
424         int (*tf_dev_get_bulk_tbl)(struct tf *tfp,
425                                    struct tf_tbl_get_bulk_parms *parms);
426
427         /**
428          * Gets the increment value to add to the shared session resource
429          * start offset by for each count in the "stride"
430          *
431          * [in] tfp
432          *   Pointer to TF handle
433          *
434          * [in] parms
435          *   Pointer to get shared tbl increment parameters
436          *
437          * Returns
438          *   - (0) if successful.
439          *   - (-EINVAL) on failure.
440          */
441         int (*tf_dev_get_shared_tbl_increment)(struct tf *tfp,
442                                 struct tf_get_shared_tbl_increment_parms *parms);
443
444         /**
445          * Retrieves the table resource info.
446          *
447          * This API retrieves the table resource info from the rm db.
448          *
449          * [in] tfp
450          *   Pointer to TF handle
451          *
452          * [in] parms
453          *   Pointer to tbl info
454          *
455          * Returns
456          *   - (0) if successful.
457          *   - (-EINVAL) on failure.
458          */
459         int (*tf_dev_get_tbl_resc_info)(struct tf *tfp,
460                                          struct tf_tbl_resource_info *parms);
461
462         /**
463          * Allocation of a tcam element.
464          *
465          * This API allocates the specified tcam element from a device
466          * specific tcam DB. The allocated element is returned.
467          *
468          * [in] tfp
469          *   Pointer to TF handle
470          *
471          * [in] parms
472          *   Pointer to tcam allocation parameters
473          *
474          * Returns
475          *   - (0) if successful.
476          *   - (-EINVAL) on failure.
477          */
478         int (*tf_dev_alloc_tcam)(struct tf *tfp,
479                                  struct tf_tcam_alloc_parms *parms);
480
481         /**
482          * Free of a tcam element.
483          *
484          * This API free's a previous allocated tcam element from a
485          * device specific tcam DB.
486          *
487          * [in] tfp
488          *   Pointer to TF handle
489          *
490          * [in] parms
491          *   Pointer to tcam free parameters
492          *
493          * Returns
494          *   - (0) if successful.
495          *   - (-EINVAL) on failure.
496          */
497         int (*tf_dev_free_tcam)(struct tf *tfp,
498                                 struct tf_tcam_free_parms *parms);
499
500         /**
501          * Searches for the specified tcam element in a shadow DB.
502          *
503          * This API searches for the specified tcam element in a
504          * device specific shadow DB. If the element is found the
505          * reference count for the element is updated. If the element
506          * is not found a new element is allocated from the tcam DB
507          * and then inserted into the shadow DB.
508          *
509          * [in] tfp
510          *   Pointer to TF handle
511          *
512          * [in] parms
513          *   Pointer to tcam allocation and search parameters
514          *
515          * Returns
516          *   - (0) if successful.
517          *   - (-EINVAL) on failure.
518          */
519         int (*tf_dev_alloc_search_tcam)
520                         (struct tf *tfp,
521                         struct tf_tcam_alloc_search_parms *parms);
522
523         /**
524          * Sets the specified tcam element.
525          *
526          * This API sets the specified element data by invoking the
527          * firmware.
528          *
529          * [in] tfp
530          *   Pointer to TF handle
531          *
532          * [in] parms
533          *   Pointer to tcam set parameters
534          *
535          * Returns
536          *   - (0) if successful.
537          *   - (-EINVAL) on failure.
538          */
539         int (*tf_dev_set_tcam)(struct tf *tfp,
540                                struct tf_tcam_set_parms *parms);
541
542         /**
543          * Retrieves the specified tcam element.
544          *
545          * This API retrieves the specified element data by invoking the
546          * firmware.
547          *
548          * [in] tfp
549          *   Pointer to TF handle
550          *
551          * [in] parms
552          *   Pointer to tcam get parameters
553          *
554          * Returns
555          *   - (0) if successful.
556          *   - (-EINVAL) on failure.
557          */
558         int (*tf_dev_get_tcam)(struct tf *tfp,
559                                struct tf_tcam_get_parms *parms);
560
561 #ifdef TF_TCAM_SHARED
562         /**
563          * Move TCAM shared entries
564          *
565          * [in] tfp
566          *   Pointer to TF handle
567          *
568          * [in] parms
569          *   Pointer to parameters
570          *
571          *    returns:
572          *    0       - Success
573          *    -EINVAL - Error
574          */
575         int (*tf_dev_move_tcam)(struct tf *tfp,
576                                struct tf_move_tcam_shared_entries_parms *parms);
577
578         /**
579          * Move TCAM shared entries
580          *
581          * [in] tfp
582          *   Pointer to TF handle
583          *
584          * [in] parms
585          *   Pointer to parameters
586          *
587          *    returns:
588          *    0       - Success
589          *    -EINVAL - Error
590          */
591         int (*tf_dev_clear_tcam)(struct tf *tfp,
592                               struct tf_clear_tcam_shared_entries_parms *parms);
593
594 #endif /* TF_TCAM_SHARED */
595
596         /**
597          * Retrieves the tcam resource info.
598          *
599          * This API retrieves the tcam resource info from the rm db.
600          *
601          * [in] tfp
602          *   Pointer to TF handle
603          *
604          * [in] parms
605          *   Pointer to tcam info
606          *
607          * Returns
608          *   - (0) if successful.
609          *   - (-EINVAL) on failure.
610          */
611         int (*tf_dev_get_tcam_resc_info)(struct tf *tfp,
612                                          struct tf_tcam_resource_info *parms);
613
614         /**
615          * Insert EM hash entry API
616          *
617          * [in] tfp
618          *   Pointer to TF handle
619          *
620          * [in] parms
621          *   Pointer to E/EM insert parameters
622          *
623          *  Returns:
624          *    0       - Success
625          *    -EINVAL - Error
626          */
627         int (*tf_dev_insert_int_em_entry)(struct tf *tfp,
628                                           struct tf_insert_em_entry_parms *parms);
629
630         /**
631          * Delete EM hash entry API
632          *
633          * [in] tfp
634          *   Pointer to TF handle
635          *
636          * [in] parms
637          *   Pointer to E/EM delete parameters
638          *
639          *    returns:
640          *    0       - Success
641          *    -EINVAL - Error
642          */
643         int (*tf_dev_delete_int_em_entry)(struct tf *tfp,
644                                           struct tf_delete_em_entry_parms *parms);
645
646         /**
647          * Move EM hash entry API
648          *
649          * [in] tfp
650          *   Pointer to TF handle
651          *
652          * [in] parms
653          *   Pointer to E/EM move parameters
654          *
655          *    returns:
656          *    0       - Success
657          *    -EINVAL - Error
658          */
659         int (*tf_dev_move_int_em_entry)(struct tf *tfp,
660                                         struct tf_move_em_entry_parms *parms);
661
662         /**
663          * Insert EEM hash entry API
664          *
665          * [in] tfp
666          *   Pointer to TF handle
667          *
668          * [in] parms
669          *   Pointer to E/EM insert parameters
670          *
671          *  Returns:
672          *    0       - Success
673          *    -EINVAL - Error
674          */
675         int (*tf_dev_insert_ext_em_entry)(struct tf *tfp,
676                                           struct tf_insert_em_entry_parms *parms);
677
678         /**
679          * Delete EEM hash entry API
680          *
681          * [in] tfp
682          *   Pointer to TF handle
683          *
684          * [in] parms
685          *   Pointer to E/EM delete parameters
686          *
687          *    returns:
688          *    0       - Success
689          *    -EINVAL - Error
690          */
691         int (*tf_dev_delete_ext_em_entry)(struct tf *tfp,
692                                           struct tf_delete_em_entry_parms *parms);
693
694         /**
695          * Retrieves the em resource info.
696          *
697          * This API retrieves the em resource info from the rm db.
698          *
699          * [in] tfp
700          *   Pointer to TF handle
701          *
702          * [in] parms
703          *   Pointer to em info
704          *
705          * Returns
706          *   - (0) if successful.
707          *   - (-EINVAL) on failure.
708          */
709         int (*tf_dev_get_em_resc_info)(struct tf *tfp,
710                                        struct tf_em_resource_info *parms);
711
712         /**
713          * Move EEM hash entry API
714          *
715          *   Pointer to E/EM move parameters
716          *
717          * [in] tfp
718          *   Pointer to TF handle
719          *
720          * [in] parms
721          *   Pointer to em info
722          *
723          *    returns:
724          *    0       - Success
725          *    -EINVAL - Error
726          */
727         int (*tf_dev_move_ext_em_entry)(struct tf *tfp,
728                                         struct tf_move_em_entry_parms *parms);
729
730         /**
731          * Allocate EEM table scope
732          *
733          * [in] tfp
734          *   Pointer to TF handle
735          *
736          * [in] parms
737          *   Pointer to table scope alloc parameters
738          *
739          *    returns:
740          *    0       - Success
741          *    -EINVAL - Error
742          */
743         int (*tf_dev_alloc_tbl_scope)(struct tf *tfp,
744                                       struct tf_alloc_tbl_scope_parms *parms);
745         /**
746          * Map EEM parif
747          *
748          * [in] tfp
749          *   Pointer to TF handle
750          *
751          * [in] pf
752          * PF associated with the table scope
753          *
754          * [in] parif_bitmask
755          * Bitmask of PARIFs to enable
756          *
757          * [in/out] pointer to the parif_2_pf data to be updated
758          *
759          * [in/out] pointer to the parif_2_pf mask to be updated
760          *
761          * [in] sz_in_bytes - number of bytes to be written
762          *
763          *    returns:
764          *    0       - Success
765          *    -EINVAL - Error
766          */
767         int (*tf_dev_map_parif)(struct tf *tfp,
768                                 uint16_t parif_bitmask,
769                                 uint16_t pf,
770                                 uint8_t *data,
771                                 uint8_t *mask,
772                                 uint16_t sz_in_bytes);
773         /**
774          * Map EEM table scope
775          *
776          * [in] tfp
777          *   Pointer to TF handle
778          *
779          * [in] parms
780          *   Pointer to table scope map parameters
781          *
782          *    returns:
783          *    0       - Success
784          *    -EINVAL - Error
785          */
786         int (*tf_dev_map_tbl_scope)(struct tf *tfp,
787                                     struct tf_map_tbl_scope_parms *parms);
788
789         /**
790          * Free EEM table scope
791          *
792          * [in] tfp
793          *   Pointer to TF handle
794          *
795          * [in] parms
796          *   Pointer to table scope free parameters
797          *
798          *    returns:
799          *    0       - Success
800          *    -EINVAL - Error
801          */
802         int (*tf_dev_free_tbl_scope)(struct tf *tfp,
803                                      struct tf_free_tbl_scope_parms *parms);
804
805         /**
806          * Sets the specified interface table type element.
807          *
808          * This API sets the specified element data by invoking the
809          * firmware.
810          *
811          * [in] tfp
812          *   Pointer to TF handle
813          *
814          * [in] parms
815          *   Pointer to interface table set parameters
816          *
817          * Returns
818          *   - (0) if successful.
819          *   - (-EINVAL) on failure.
820          */
821         int (*tf_dev_set_if_tbl)(struct tf *tfp,
822                                  struct tf_if_tbl_set_parms *parms);
823
824         /**
825          * Retrieves the specified interface table type element.
826          *
827          * This API retrieves the specified element data by invoking the
828          * firmware.
829          *
830          * [in] tfp
831          *   Pointer to TF handle
832          *
833          * [in] parms
834          *   Pointer to table get parameters
835          *
836          * Returns
837          *   - (0) if successful.
838          *   - (-EINVAL) on failure.
839          */
840         int (*tf_dev_get_if_tbl)(struct tf *tfp,
841                                  struct tf_if_tbl_get_parms *parms);
842
843         /**
844          * Update global cfg
845          *
846          * [in] tfp
847          *   Pointer to TF handle
848          *
849          * [in] parms
850          *   Pointer to global cfg parameters
851          *
852          *    returns:
853          *    0       - Success
854          *    -EINVAL - Error
855          */
856         int (*tf_dev_set_global_cfg)(struct tf *tfp,
857                                      struct tf_global_cfg_parms *parms);
858
859         /**
860          * Get global cfg
861          *
862          * [in] tfp
863          *   Pointer to TF handle
864          *
865          * [in] parms
866          *   Pointer to global cfg parameters
867          *
868          *    returns:
869          *    0       - Success
870          *    -EINVAL - Error
871          */
872         int (*tf_dev_get_global_cfg)(struct tf *tfp,
873                                      struct tf_global_cfg_parms *parms);
874
875         /**
876          * Get mailbox
877          *
878          *    returns:
879          *      mailbox
880          */
881         int (*tf_dev_get_mailbox)(void);
882
883         /**
884          * Convert length in bit to length in byte and align to word.
885          * The word length depends on device type.
886          *
887          * [in] size
888          *   Size in bit
889          *
890          * Returns
891          *   Size in byte
892          */
893         int (*tf_dev_word_align)(uint16_t size);
894
895         /**
896          * Hash key using crc32 and lookup3
897          *
898          * [in] key_data
899          *   Pointer to key
900          *
901          * [in] bitlen
902          *   Number of key bits
903          *
904          * Returns
905          *   Hashes
906          */
907         uint64_t (*tf_dev_cfa_key_hash)(uint64_t *key_data,
908                                           uint16_t bitlen);
909 };
910
911 /**
912  * Supported device operation structures
913  */
914 extern const struct tf_dev_ops tf_dev_ops_p4_init;
915 extern const struct tf_dev_ops tf_dev_ops_p4;
916 extern const struct tf_dev_ops tf_dev_ops_p58_init;
917 extern const struct tf_dev_ops tf_dev_ops_p58;
918
919 #endif /* _TF_DEVICE_H_ */