| 1 | /* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */ |
| 2 | /* Copyright 2025 NXP */ |
| 3 | #ifndef __NETC_NTMP_H |
| 4 | #define __NETC_NTMP_H |
| 5 | |
| 6 | #include <linux/bitops.h> |
| 7 | #include <linux/if_ether.h> |
| 8 | |
| 9 | struct maft_keye_data { |
| 10 | u8 mac_addr[ETH_ALEN]; |
| 11 | __le16 resv; |
| 12 | }; |
| 13 | |
| 14 | struct maft_cfge_data { |
| 15 | __le16 si_bitmap; |
| 16 | __le16 resv; |
| 17 | }; |
| 18 | |
| 19 | struct netc_cbdr_regs { |
| 20 | void __iomem *pir; |
| 21 | void __iomem *cir; |
| 22 | void __iomem *mr; |
| 23 | |
| 24 | void __iomem *bar0; |
| 25 | void __iomem *bar1; |
| 26 | void __iomem *lenr; |
| 27 | }; |
| 28 | |
| 29 | struct netc_tbl_vers { |
| 30 | u8 maft_ver; |
| 31 | u8 ; |
| 32 | }; |
| 33 | |
| 34 | struct netc_cbdr { |
| 35 | struct device *dev; |
| 36 | struct netc_cbdr_regs regs; |
| 37 | |
| 38 | int bd_num; |
| 39 | int next_to_use; |
| 40 | int next_to_clean; |
| 41 | |
| 42 | int dma_size; |
| 43 | void *addr_base; |
| 44 | void *addr_base_align; |
| 45 | dma_addr_t dma_base; |
| 46 | dma_addr_t dma_base_align; |
| 47 | |
| 48 | /* Serialize the order of command BD ring */ |
| 49 | spinlock_t ring_lock; |
| 50 | }; |
| 51 | |
| 52 | struct ntmp_user { |
| 53 | int cbdr_num; /* number of control BD ring */ |
| 54 | struct device *dev; |
| 55 | struct netc_cbdr *ring; |
| 56 | struct netc_tbl_vers tbl; |
| 57 | }; |
| 58 | |
| 59 | struct maft_entry_data { |
| 60 | struct maft_keye_data keye; |
| 61 | struct maft_cfge_data cfge; |
| 62 | }; |
| 63 | |
| 64 | #if IS_ENABLED(CONFIG_NXP_NETC_LIB) |
| 65 | int ntmp_init_cbdr(struct netc_cbdr *cbdr, struct device *dev, |
| 66 | const struct netc_cbdr_regs *regs); |
| 67 | void ntmp_free_cbdr(struct netc_cbdr *cbdr); |
| 68 | |
| 69 | /* NTMP APIs */ |
| 70 | int ntmp_maft_add_entry(struct ntmp_user *user, u32 entry_id, |
| 71 | struct maft_entry_data *maft); |
| 72 | int ntmp_maft_query_entry(struct ntmp_user *user, u32 entry_id, |
| 73 | struct maft_entry_data *maft); |
| 74 | int ntmp_maft_delete_entry(struct ntmp_user *user, u32 entry_id); |
| 75 | int (struct ntmp_user *user, const u32 *table, |
| 76 | int count); |
| 77 | int (struct ntmp_user *user, |
| 78 | u32 *table, int count); |
| 79 | #else |
| 80 | static inline int ntmp_init_cbdr(struct netc_cbdr *cbdr, struct device *dev, |
| 81 | const struct netc_cbdr_regs *regs) |
| 82 | { |
| 83 | return 0; |
| 84 | } |
| 85 | |
| 86 | static inline void ntmp_free_cbdr(struct netc_cbdr *cbdr) |
| 87 | { |
| 88 | } |
| 89 | |
| 90 | static inline int ntmp_maft_add_entry(struct ntmp_user *user, u32 entry_id, |
| 91 | struct maft_entry_data *maft) |
| 92 | { |
| 93 | return 0; |
| 94 | } |
| 95 | |
| 96 | static inline int ntmp_maft_query_entry(struct ntmp_user *user, u32 entry_id, |
| 97 | struct maft_entry_data *maft) |
| 98 | { |
| 99 | return 0; |
| 100 | } |
| 101 | |
| 102 | static inline int ntmp_maft_delete_entry(struct ntmp_user *user, u32 entry_id) |
| 103 | { |
| 104 | return 0; |
| 105 | } |
| 106 | |
| 107 | static inline int ntmp_rsst_update_entry(struct ntmp_user *user, |
| 108 | const u32 *table, int count) |
| 109 | { |
| 110 | return 0; |
| 111 | } |
| 112 | |
| 113 | static inline int ntmp_rsst_query_entry(struct ntmp_user *user, |
| 114 | u32 *table, int count) |
| 115 | { |
| 116 | return 0; |
| 117 | } |
| 118 | |
| 119 | #endif |
| 120 | |
| 121 | #endif |
| 122 | |