hwif.h (75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37) | hwif.h (425eabddaf0f6e81756720f60a838a3941a6ceb8) |
---|---|
1// SPDX-License-Identifier: (GPL-2.0 OR MIT) 2// Copyright (c) 2018 Synopsys, Inc. and/or its affiliates. 3// stmmac HW Interface Callbacks 4 5#ifndef __STMMAC_HWIF_H__ 6#define __STMMAC_HWIF_H__ 7 8#include <linux/netdevice.h> --- 72 unchanged lines hidden (view full) --- 81 /* set MSS via context descriptor */ 82 void (*set_mss)(struct dma_desc *p, unsigned int mss); 83 /* get descriptor skbuff address */ 84 void (*get_addr)(struct dma_desc *p, unsigned int *addr); 85 /* set descriptor skbuff address */ 86 void (*set_addr)(struct dma_desc *p, dma_addr_t addr); 87 /* clear descriptor */ 88 void (*clear)(struct dma_desc *p); | 1// SPDX-License-Identifier: (GPL-2.0 OR MIT) 2// Copyright (c) 2018 Synopsys, Inc. and/or its affiliates. 3// stmmac HW Interface Callbacks 4 5#ifndef __STMMAC_HWIF_H__ 6#define __STMMAC_HWIF_H__ 7 8#include <linux/netdevice.h> --- 72 unchanged lines hidden (view full) --- 81 /* set MSS via context descriptor */ 82 void (*set_mss)(struct dma_desc *p, unsigned int mss); 83 /* get descriptor skbuff address */ 84 void (*get_addr)(struct dma_desc *p, unsigned int *addr); 85 /* set descriptor skbuff address */ 86 void (*set_addr)(struct dma_desc *p, dma_addr_t addr); 87 /* clear descriptor */ 88 void (*clear)(struct dma_desc *p); |
89 /* RSS */ 90 int (*get_rx_hash)(struct dma_desc *p, u32 *hash, 91 enum pkt_hash_types *type); 92 int (*get_rx_header_len)(struct dma_desc *p, unsigned int *len); 93 void (*set_sec_addr)(struct dma_desc *p, dma_addr_t addr); 94 void (*set_sarc)(struct dma_desc *p, u32 sarc_type); 95 void (*set_vlan_tag)(struct dma_desc *p, u16 tag, u16 inner_tag, 96 u32 inner_type); 97 void (*set_vlan)(struct dma_desc *p, u32 type); |
|
89}; 90 91#define stmmac_init_rx_desc(__priv, __args...) \ 92 stmmac_do_void_callback(__priv, desc, init_rx_desc, __args) 93#define stmmac_init_tx_desc(__priv, __args...) \ 94 stmmac_do_void_callback(__priv, desc, init_tx_desc, __args) 95#define stmmac_prepare_tx_desc(__priv, __args...) \ 96 stmmac_do_void_callback(__priv, desc, prepare_tx_desc, __args) --- 34 unchanged lines hidden (view full) --- 131#define stmmac_set_mss(__priv, __args...) \ 132 stmmac_do_void_callback(__priv, desc, set_mss, __args) 133#define stmmac_get_desc_addr(__priv, __args...) \ 134 stmmac_do_void_callback(__priv, desc, get_addr, __args) 135#define stmmac_set_desc_addr(__priv, __args...) \ 136 stmmac_do_void_callback(__priv, desc, set_addr, __args) 137#define stmmac_clear_desc(__priv, __args...) \ 138 stmmac_do_void_callback(__priv, desc, clear, __args) | 98}; 99 100#define stmmac_init_rx_desc(__priv, __args...) \ 101 stmmac_do_void_callback(__priv, desc, init_rx_desc, __args) 102#define stmmac_init_tx_desc(__priv, __args...) \ 103 stmmac_do_void_callback(__priv, desc, init_tx_desc, __args) 104#define stmmac_prepare_tx_desc(__priv, __args...) \ 105 stmmac_do_void_callback(__priv, desc, prepare_tx_desc, __args) --- 34 unchanged lines hidden (view full) --- 140#define stmmac_set_mss(__priv, __args...) \ 141 stmmac_do_void_callback(__priv, desc, set_mss, __args) 142#define stmmac_get_desc_addr(__priv, __args...) \ 143 stmmac_do_void_callback(__priv, desc, get_addr, __args) 144#define stmmac_set_desc_addr(__priv, __args...) \ 145 stmmac_do_void_callback(__priv, desc, set_addr, __args) 146#define stmmac_clear_desc(__priv, __args...) \ 147 stmmac_do_void_callback(__priv, desc, clear, __args) |
148#define stmmac_get_rx_hash(__priv, __args...) \ 149 stmmac_do_callback(__priv, desc, get_rx_hash, __args) 150#define stmmac_get_rx_header_len(__priv, __args...) \ 151 stmmac_do_callback(__priv, desc, get_rx_header_len, __args) 152#define stmmac_set_desc_sec_addr(__priv, __args...) \ 153 stmmac_do_void_callback(__priv, desc, set_sec_addr, __args) 154#define stmmac_set_desc_sarc(__priv, __args...) \ 155 stmmac_do_void_callback(__priv, desc, set_sarc, __args) 156#define stmmac_set_desc_vlan_tag(__priv, __args...) \ 157 stmmac_do_void_callback(__priv, desc, set_vlan_tag, __args) 158#define stmmac_set_desc_vlan(__priv, __args...) \ 159 stmmac_do_void_callback(__priv, desc, set_vlan, __args) |
|
139 140struct stmmac_dma_cfg; 141struct dma_features; 142 143/* Specific DMA helpers */ 144struct stmmac_dma_ops { 145 /* DMA core initialization */ 146 int (*reset)(void __iomem *ioaddr); --- 34 unchanged lines hidden (view full) --- 181 void (*rx_watchdog)(void __iomem *ioaddr, u32 riwt, u32 number_chan); 182 void (*set_tx_ring_len)(void __iomem *ioaddr, u32 len, u32 chan); 183 void (*set_rx_ring_len)(void __iomem *ioaddr, u32 len, u32 chan); 184 void (*set_rx_tail_ptr)(void __iomem *ioaddr, u32 tail_ptr, u32 chan); 185 void (*set_tx_tail_ptr)(void __iomem *ioaddr, u32 tail_ptr, u32 chan); 186 void (*enable_tso)(void __iomem *ioaddr, bool en, u32 chan); 187 void (*qmode)(void __iomem *ioaddr, u32 channel, u8 qmode); 188 void (*set_bfsize)(void __iomem *ioaddr, int bfsize, u32 chan); | 160 161struct stmmac_dma_cfg; 162struct dma_features; 163 164/* Specific DMA helpers */ 165struct stmmac_dma_ops { 166 /* DMA core initialization */ 167 int (*reset)(void __iomem *ioaddr); --- 34 unchanged lines hidden (view full) --- 202 void (*rx_watchdog)(void __iomem *ioaddr, u32 riwt, u32 number_chan); 203 void (*set_tx_ring_len)(void __iomem *ioaddr, u32 len, u32 chan); 204 void (*set_rx_ring_len)(void __iomem *ioaddr, u32 len, u32 chan); 205 void (*set_rx_tail_ptr)(void __iomem *ioaddr, u32 tail_ptr, u32 chan); 206 void (*set_tx_tail_ptr)(void __iomem *ioaddr, u32 tail_ptr, u32 chan); 207 void (*enable_tso)(void __iomem *ioaddr, bool en, u32 chan); 208 void (*qmode)(void __iomem *ioaddr, u32 channel, u8 qmode); 209 void (*set_bfsize)(void __iomem *ioaddr, int bfsize, u32 chan); |
210 void (*enable_sph)(void __iomem *ioaddr, bool en, u32 chan); |
|
189}; 190 191#define stmmac_reset(__priv, __args...) \ 192 stmmac_do_callback(__priv, dma, reset, __args) 193#define stmmac_dma_init(__priv, __args...) \ 194 stmmac_do_void_callback(__priv, dma, init, __args) 195#define stmmac_init_chan(__priv, __args...) \ 196 stmmac_do_void_callback(__priv, dma, init_chan, __args) --- 40 unchanged lines hidden (view full) --- 237#define stmmac_set_tx_tail_ptr(__priv, __args...) \ 238 stmmac_do_void_callback(__priv, dma, set_tx_tail_ptr, __args) 239#define stmmac_enable_tso(__priv, __args...) \ 240 stmmac_do_void_callback(__priv, dma, enable_tso, __args) 241#define stmmac_dma_qmode(__priv, __args...) \ 242 stmmac_do_void_callback(__priv, dma, qmode, __args) 243#define stmmac_set_dma_bfsize(__priv, __args...) \ 244 stmmac_do_void_callback(__priv, dma, set_bfsize, __args) | 211}; 212 213#define stmmac_reset(__priv, __args...) \ 214 stmmac_do_callback(__priv, dma, reset, __args) 215#define stmmac_dma_init(__priv, __args...) \ 216 stmmac_do_void_callback(__priv, dma, init, __args) 217#define stmmac_init_chan(__priv, __args...) \ 218 stmmac_do_void_callback(__priv, dma, init_chan, __args) --- 40 unchanged lines hidden (view full) --- 259#define stmmac_set_tx_tail_ptr(__priv, __args...) \ 260 stmmac_do_void_callback(__priv, dma, set_tx_tail_ptr, __args) 261#define stmmac_enable_tso(__priv, __args...) \ 262 stmmac_do_void_callback(__priv, dma, enable_tso, __args) 263#define stmmac_dma_qmode(__priv, __args...) \ 264 stmmac_do_void_callback(__priv, dma, qmode, __args) 265#define stmmac_set_dma_bfsize(__priv, __args...) \ 266 stmmac_do_void_callback(__priv, dma, set_bfsize, __args) |
267#define stmmac_enable_sph(__priv, __args...) \ 268 stmmac_do_void_callback(__priv, dma, enable_sph, __args) |
|
245 246struct mac_device_info; 247struct net_device; 248struct rgmii_adv; 249struct stmmac_safety_stats; 250struct stmmac_tc_entry; 251struct stmmac_pps_cfg; | 269 270struct mac_device_info; 271struct net_device; 272struct rgmii_adv; 273struct stmmac_safety_stats; 274struct stmmac_tc_entry; 275struct stmmac_pps_cfg; |
276struct stmmac_rss; |
|
252 253/* Helpers to program the MAC core */ 254struct stmmac_ops { 255 /* MAC core initialization */ 256 void (*core_init)(struct mac_device_info *hw, struct net_device *dev); 257 /* Enable the MAC RX/TX */ 258 void (*set_mac)(void __iomem *ioaddr, bool enable); 259 /* Enable and verify that the IPC module is supported */ --- 62 unchanged lines hidden (view full) --- 322 int (*rxp_config)(void __iomem *ioaddr, struct stmmac_tc_entry *entries, 323 unsigned int count); 324 /* Flexible PPS */ 325 int (*flex_pps_config)(void __iomem *ioaddr, int index, 326 struct stmmac_pps_cfg *cfg, bool enable, 327 u32 sub_second_inc, u32 systime_flags); 328 /* Loopback for selftests */ 329 void (*set_mac_loopback)(void __iomem *ioaddr, bool enable); | 277 278/* Helpers to program the MAC core */ 279struct stmmac_ops { 280 /* MAC core initialization */ 281 void (*core_init)(struct mac_device_info *hw, struct net_device *dev); 282 /* Enable the MAC RX/TX */ 283 void (*set_mac)(void __iomem *ioaddr, bool enable); 284 /* Enable and verify that the IPC module is supported */ --- 62 unchanged lines hidden (view full) --- 347 int (*rxp_config)(void __iomem *ioaddr, struct stmmac_tc_entry *entries, 348 unsigned int count); 349 /* Flexible PPS */ 350 int (*flex_pps_config)(void __iomem *ioaddr, int index, 351 struct stmmac_pps_cfg *cfg, bool enable, 352 u32 sub_second_inc, u32 systime_flags); 353 /* Loopback for selftests */ 354 void (*set_mac_loopback)(void __iomem *ioaddr, bool enable); |
355 /* RSS */ 356 int (*rss_configure)(struct mac_device_info *hw, 357 struct stmmac_rss *cfg, u32 num_rxq); 358 /* VLAN */ 359 void (*update_vlan_hash)(struct mac_device_info *hw, u32 hash, 360 bool is_double); 361 void (*enable_vlan)(struct mac_device_info *hw, u32 type); 362 /* TX Timestamp */ 363 int (*get_mac_tx_timestamp)(struct mac_device_info *hw, u64 *ts); 364 /* Source Address Insertion / Replacement */ 365 void (*sarc_configure)(void __iomem *ioaddr, int val); 366 /* Filtering */ 367 int (*config_l3_filter)(struct mac_device_info *hw, u32 filter_no, 368 bool en, bool ipv6, bool sa, bool inv, 369 u32 match); 370 int (*config_l4_filter)(struct mac_device_info *hw, u32 filter_no, 371 bool en, bool udp, bool sa, bool inv, 372 u32 match); |
|
330}; 331 332#define stmmac_core_init(__priv, __args...) \ 333 stmmac_do_void_callback(__priv, mac, core_init, __args) 334#define stmmac_mac_set(__priv, __args...) \ 335 stmmac_do_void_callback(__priv, mac, set_mac, __args) 336#define stmmac_rx_ipc(__priv, __args...) \ 337 stmmac_do_callback(__priv, mac, rx_ipc, __args) --- 54 unchanged lines hidden (view full) --- 392#define stmmac_safety_feat_dump(__priv, __args...) \ 393 stmmac_do_callback(__priv, mac, safety_feat_dump, __args) 394#define stmmac_rxp_config(__priv, __args...) \ 395 stmmac_do_callback(__priv, mac, rxp_config, __args) 396#define stmmac_flex_pps_config(__priv, __args...) \ 397 stmmac_do_callback(__priv, mac, flex_pps_config, __args) 398#define stmmac_set_mac_loopback(__priv, __args...) \ 399 stmmac_do_void_callback(__priv, mac, set_mac_loopback, __args) | 373}; 374 375#define stmmac_core_init(__priv, __args...) \ 376 stmmac_do_void_callback(__priv, mac, core_init, __args) 377#define stmmac_mac_set(__priv, __args...) \ 378 stmmac_do_void_callback(__priv, mac, set_mac, __args) 379#define stmmac_rx_ipc(__priv, __args...) \ 380 stmmac_do_callback(__priv, mac, rx_ipc, __args) --- 54 unchanged lines hidden (view full) --- 435#define stmmac_safety_feat_dump(__priv, __args...) \ 436 stmmac_do_callback(__priv, mac, safety_feat_dump, __args) 437#define stmmac_rxp_config(__priv, __args...) \ 438 stmmac_do_callback(__priv, mac, rxp_config, __args) 439#define stmmac_flex_pps_config(__priv, __args...) \ 440 stmmac_do_callback(__priv, mac, flex_pps_config, __args) 441#define stmmac_set_mac_loopback(__priv, __args...) \ 442 stmmac_do_void_callback(__priv, mac, set_mac_loopback, __args) |
443#define stmmac_rss_configure(__priv, __args...) \ 444 stmmac_do_callback(__priv, mac, rss_configure, __args) 445#define stmmac_update_vlan_hash(__priv, __args...) \ 446 stmmac_do_void_callback(__priv, mac, update_vlan_hash, __args) 447#define stmmac_enable_vlan(__priv, __args...) \ 448 stmmac_do_void_callback(__priv, mac, enable_vlan, __args) 449#define stmmac_get_mac_tx_timestamp(__priv, __args...) \ 450 stmmac_do_callback(__priv, mac, get_mac_tx_timestamp, __args) 451#define stmmac_sarc_configure(__priv, __args...) \ 452 stmmac_do_void_callback(__priv, mac, sarc_configure, __args) 453#define stmmac_config_l3_filter(__priv, __args...) \ 454 stmmac_do_callback(__priv, mac, config_l3_filter, __args) 455#define stmmac_config_l4_filter(__priv, __args...) \ 456 stmmac_do_callback(__priv, mac, config_l4_filter, __args) |
|
400 401/* PTP and HW Timer helpers */ 402struct stmmac_hwtimestamp { 403 void (*config_hw_tstamping) (void __iomem *ioaddr, u32 data); 404 void (*config_sub_second_increment)(void __iomem *ioaddr, u32 ptp_clock, 405 int gmac4, u32 *ssinc); 406 int (*init_systime) (void __iomem *ioaddr, u32 sec, u32 nsec); 407 int (*config_addend) (void __iomem *ioaddr, u32 addend); --- 40 unchanged lines hidden (view full) --- 448#define stmmac_refill_desc3(__priv, __args...) \ 449 stmmac_do_void_callback(__priv, mode, refill_desc3, __args) 450#define stmmac_clean_desc3(__priv, __args...) \ 451 stmmac_do_void_callback(__priv, mode, clean_desc3, __args) 452 453struct stmmac_priv; 454struct tc_cls_u32_offload; 455struct tc_cbs_qopt_offload; | 457 458/* PTP and HW Timer helpers */ 459struct stmmac_hwtimestamp { 460 void (*config_hw_tstamping) (void __iomem *ioaddr, u32 data); 461 void (*config_sub_second_increment)(void __iomem *ioaddr, u32 ptp_clock, 462 int gmac4, u32 *ssinc); 463 int (*init_systime) (void __iomem *ioaddr, u32 sec, u32 nsec); 464 int (*config_addend) (void __iomem *ioaddr, u32 addend); --- 40 unchanged lines hidden (view full) --- 505#define stmmac_refill_desc3(__priv, __args...) \ 506 stmmac_do_void_callback(__priv, mode, refill_desc3, __args) 507#define stmmac_clean_desc3(__priv, __args...) \ 508 stmmac_do_void_callback(__priv, mode, clean_desc3, __args) 509 510struct stmmac_priv; 511struct tc_cls_u32_offload; 512struct tc_cbs_qopt_offload; |
513struct flow_cls_offload; |
|
456 457struct stmmac_tc_ops { 458 int (*init)(struct stmmac_priv *priv); 459 int (*setup_cls_u32)(struct stmmac_priv *priv, 460 struct tc_cls_u32_offload *cls); 461 int (*setup_cbs)(struct stmmac_priv *priv, 462 struct tc_cbs_qopt_offload *qopt); | 514 515struct stmmac_tc_ops { 516 int (*init)(struct stmmac_priv *priv); 517 int (*setup_cls_u32)(struct stmmac_priv *priv, 518 struct tc_cls_u32_offload *cls); 519 int (*setup_cbs)(struct stmmac_priv *priv, 520 struct tc_cbs_qopt_offload *qopt); |
521 int (*setup_cls)(struct stmmac_priv *priv, 522 struct flow_cls_offload *cls); |
|
463}; 464 465#define stmmac_tc_init(__priv, __args...) \ 466 stmmac_do_callback(__priv, tc, init, __args) 467#define stmmac_tc_setup_cls_u32(__priv, __args...) \ 468 stmmac_do_callback(__priv, tc, setup_cls_u32, __args) 469#define stmmac_tc_setup_cbs(__priv, __args...) \ 470 stmmac_do_callback(__priv, tc, setup_cbs, __args) | 523}; 524 525#define stmmac_tc_init(__priv, __args...) \ 526 stmmac_do_callback(__priv, tc, init, __args) 527#define stmmac_tc_setup_cls_u32(__priv, __args...) \ 528 stmmac_do_callback(__priv, tc, setup_cls_u32, __args) 529#define stmmac_tc_setup_cbs(__priv, __args...) \ 530 stmmac_do_callback(__priv, tc, setup_cbs, __args) |
531#define stmmac_tc_setup_cls(__priv, __args...) \ 532 stmmac_do_callback(__priv, tc, setup_cls, __args) |
|
471 472struct stmmac_counters; 473 474struct stmmac_mmc_ops { 475 void (*ctrl)(void __iomem *ioaddr, unsigned int mode); 476 void (*intr_all_mask)(void __iomem *ioaddr); 477 void (*read)(void __iomem *ioaddr, struct stmmac_counters *mmc); 478}; --- 19 unchanged lines hidden (view full) --- 498extern const struct stmmac_ops dwmac410_ops; 499extern const struct stmmac_dma_ops dwmac410_dma_ops; 500extern const struct stmmac_ops dwmac510_ops; 501extern const struct stmmac_tc_ops dwmac510_tc_ops; 502extern const struct stmmac_ops dwxgmac210_ops; 503extern const struct stmmac_dma_ops dwxgmac210_dma_ops; 504extern const struct stmmac_desc_ops dwxgmac210_desc_ops; 505extern const struct stmmac_mmc_ops dwmac_mmc_ops; | 533 534struct stmmac_counters; 535 536struct stmmac_mmc_ops { 537 void (*ctrl)(void __iomem *ioaddr, unsigned int mode); 538 void (*intr_all_mask)(void __iomem *ioaddr); 539 void (*read)(void __iomem *ioaddr, struct stmmac_counters *mmc); 540}; --- 19 unchanged lines hidden (view full) --- 560extern const struct stmmac_ops dwmac410_ops; 561extern const struct stmmac_dma_ops dwmac410_dma_ops; 562extern const struct stmmac_ops dwmac510_ops; 563extern const struct stmmac_tc_ops dwmac510_tc_ops; 564extern const struct stmmac_ops dwxgmac210_ops; 565extern const struct stmmac_dma_ops dwxgmac210_dma_ops; 566extern const struct stmmac_desc_ops dwxgmac210_desc_ops; 567extern const struct stmmac_mmc_ops dwmac_mmc_ops; |
568extern const struct stmmac_mmc_ops dwxgmac_mmc_ops; |
|
506 507#define GMAC_VERSION 0x00000020 /* GMAC CORE Version */ 508#define GMAC4_VERSION 0x00000110 /* GMAC4+ CORE Version */ 509 510int stmmac_hwif_init(struct stmmac_priv *priv); 511 512#endif /* __STMMAC_HWIF_H__ */ | 569 570#define GMAC_VERSION 0x00000020 /* GMAC CORE Version */ 571#define GMAC4_VERSION 0x00000110 /* GMAC4+ CORE Version */ 572 573int stmmac_hwif_init(struct stmmac_priv *priv); 574 575#endif /* __STMMAC_HWIF_H__ */ |