bcm-sf2-eth.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. * Copyright 2014 Broadcom Corporation.
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. */
  6. #ifndef _BCM_SF2_ETH_H_
  7. #define _BCM_SF2_ETH_H_
  8. #include <phy.h>
  9. #define RX_BUF_SIZE 2048
  10. /* RX_BUF_NUM must be power of 2 */
  11. #define RX_BUF_NUM 32
  12. #define TX_BUF_SIZE 2048
  13. /* TX_BUF_NUM must be power of 2 */
  14. #define TX_BUF_NUM 2
  15. /* Support 2 Ethernet ports now */
  16. #define BCM_ETH_MAX_PORT_NUM 2
  17. #define CONFIG_BCM_SF2_ETH_DEFAULT_PORT 0
  18. enum {
  19. MAC_DMA_TX = 1,
  20. MAC_DMA_RX = 2
  21. };
  22. struct eth_dma {
  23. void *tx_desc_aligned;
  24. void *rx_desc_aligned;
  25. void *tx_desc;
  26. void *rx_desc;
  27. uint8_t *tx_buf;
  28. uint8_t *rx_buf;
  29. int cur_tx_index;
  30. int cur_rx_index;
  31. int (*tx_packet)(struct eth_dma *dma, void *packet, int length);
  32. bool (*check_tx_done)(struct eth_dma *dma);
  33. int (*check_rx_done)(struct eth_dma *dma, uint8_t *buf);
  34. int (*enable_dma)(struct eth_dma *dma, int dir);
  35. int (*disable_dma)(struct eth_dma *dma, int dir);
  36. };
  37. struct eth_info {
  38. struct eth_dma dma;
  39. phy_interface_t phy_interface;
  40. struct phy_device *port[BCM_ETH_MAX_PORT_NUM];
  41. int port_num;
  42. int (*miiphy_read)(struct mii_dev *bus, int phyaddr, int devad,
  43. int reg);
  44. int (*miiphy_write)(struct mii_dev *bus, int phyaddr, int devad,
  45. int reg, u16 value);
  46. int (*mac_init)(struct eth_device *dev);
  47. int (*enable_mac)(void);
  48. int (*disable_mac)(void);
  49. int (*set_mac_addr)(unsigned char *mac);
  50. int (*set_mac_speed)(int speed, int duplex);
  51. };
  52. #endif /* _BCM_SF2_ETH_H_ */