drv_tsw.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. /*
  2. * Copyright (c) 2025 HPMicro
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #ifndef DRV_TSW_H
  8. #define DRV_TSW_H
  9. #include <netif/ethernetif.h>
  10. #include "hpm_tsw_drv.h"
  11. #include "board.h"
  12. #define TSW_MAC_COUNT (6U)
  13. #define TSW_FRAME_BUFF_COUNT (16U)
  14. typedef enum {
  15. TSW_MAC_ADDR_PARA_ERROR = -1,
  16. TSW_MAC_ADDR_FROM_OTP_MAC,
  17. TSW_MAC_ADDR_FROM_OTP_UUID,
  18. TSW_MAC_ADDR_FROM_MACRO
  19. } tsw_mac_addr_t;
  20. typedef struct {
  21. uint32_t buffer;
  22. uint16_t count;
  23. uint16_t size;
  24. } tsw_buff_config_t;
  25. typedef struct {
  26. uint8_t mac_addr0;
  27. uint8_t mac_addr1;
  28. uint8_t mac_addr2;
  29. uint8_t mac_addr3;
  30. uint8_t mac_addr4;
  31. uint8_t mac_addr5;
  32. } mac_init_t;
  33. typedef struct {
  34. TSW_Type *instance;
  35. uint8_t port;
  36. tsw_buff_config_t *rx_buff_cfg;
  37. tsw_buff_config_t *tx_buff_cfg;
  38. uint8_t mac[TSW_MAC_COUNT];
  39. uint8_t media_interface;
  40. uint32_t irq_number;
  41. bool int_refclk;
  42. uint8_t tx_delay;
  43. uint8_t rx_delay;
  44. } tsw_device;
  45. typedef struct {
  46. const char *name;
  47. TSW_Type *base;
  48. clock_name_t clock_name;
  49. int32_t irq_num;
  50. uint8_t inf;
  51. struct eth_device *eth_dev;
  52. tsw_device *tsw_dev;
  53. uint8_t port;
  54. tsw_buff_config_t *rx_buff_cfg;
  55. tsw_buff_config_t *tx_buff_cfg;
  56. uint8_t tx_delay;
  57. uint8_t rx_delay;
  58. bool int_refclk;
  59. } hpm_tsw_t;
  60. #define IS_UUID_INVALID(UUID) (UUID[0] == 0 && \
  61. UUID[1] == 0 && \
  62. UUID[2] == 0 && \
  63. UUID[3] == 0)
  64. #define IS_MAC_INVALID(MAC) (MAC[0] == 0 && \
  65. MAC[1] == 0 && \
  66. MAC[2] == 0 && \
  67. MAC[3] == 0 && \
  68. MAC[4] == 0 && \
  69. MAC[5] == 0)
  70. #ifndef MAC0_ADDR0
  71. #define MAC0_ADDR0 (0x98U)
  72. #endif
  73. #ifndef MAC0_ADDR1
  74. #define MAC0_ADDR1 (0x2CU)
  75. #endif
  76. #ifndef MAC0_ADDR2
  77. #define MAC0_ADDR2 (0xBCU)
  78. #endif
  79. #ifndef MAC0_ADDR3
  80. #define MAC0_ADDR3 (0xB1U)
  81. #endif
  82. #ifndef MAC0_ADDR4
  83. #define MAC0_ADDR4 (0x9FU)
  84. #endif
  85. #ifndef MAC0_ADDR5
  86. #define MAC0_ADDR5 (0x17U)
  87. #endif
  88. int rt_hw_tsw_init(void);
  89. #endif /* DRV_TSW_H */