xref: /dpdk/drivers/net/r8169/r8169_dash.h (revision b574fb4cc855f4e86659d37ded01e7a218c38865)
17d502791SHoward Wang /* SPDX-License-Identifier: BSD-3-Clause
27d502791SHoward Wang  * Copyright(c) 2024 Realtek Corporation. All rights reserved
37d502791SHoward Wang  */
47d502791SHoward Wang 
57d502791SHoward Wang #ifndef R8169_DASH_H
67d502791SHoward Wang #define R8169_DASH_H
77d502791SHoward Wang 
87d502791SHoward Wang #include <stdint.h>
97d502791SHoward Wang #include <stdbool.h>
107d502791SHoward Wang 
117d502791SHoward Wang #include <rte_ethdev.h>
127d502791SHoward Wang #include <rte_ethdev_core.h>
137d502791SHoward Wang 
147d502791SHoward Wang #include "r8169_compat.h"
157d502791SHoward Wang #include "r8169_hw.h"
167d502791SHoward Wang 
177d502791SHoward Wang #define HW_DASH_SUPPORT_DASH(_M)        ((_M)->HwSuppDashVer > 0)
187d502791SHoward Wang #define HW_DASH_SUPPORT_TYPE_1(_M)      ((_M)->HwSuppDashVer == 1)
197d502791SHoward Wang #define HW_DASH_SUPPORT_TYPE_2(_M)      ((_M)->HwSuppDashVer == 2)
207d502791SHoward Wang #define HW_DASH_SUPPORT_TYPE_3(_M)      ((_M)->HwSuppDashVer == 3)
217d502791SHoward Wang #define HW_DASH_SUPPORT_TYPE_4(_M)      ((_M)->HwSuppDashVer == 4)
22*b574fb4cSHoward Wang #define HW_DASH_SUPPORT_CMAC(_M)        (HW_DASH_SUPPORT_TYPE_2(_M) || HW_DASH_SUPPORT_TYPE_3(_M))
237d502791SHoward Wang #define HW_DASH_SUPPORT_GET_FIRMWARE_VERSION(_M) (HW_DASH_SUPPORT_TYPE_2(_M) || \
247d502791SHoward Wang 						  HW_DASH_SUPPORT_TYPE_3(_M) || \
257d502791SHoward Wang 						  HW_DASH_SUPPORT_TYPE_4(_M))
267d502791SHoward Wang 
27*b574fb4cSHoward Wang #define OOB_CMD_DRIVER_START 0x05
28*b574fb4cSHoward Wang #define OOB_CMD_DRIVER_STOP  0x06
29*b574fb4cSHoward Wang 
307d502791SHoward Wang #define OCP_REG_FIRMWARE_MAJOR_VERSION 0x120
317d502791SHoward Wang 
32*b574fb4cSHoward Wang #define ISRIMR_DASH_TYPE2_TX_DISABLE_IDLE BIT_5
33*b574fb4cSHoward Wang 
34*b574fb4cSHoward Wang /* CMAC write/read MMIO register */
35*b574fb4cSHoward Wang #define RTL_CMAC_REG_ADDR(hw, reg) ((u8 *)(hw)->cmac_ioaddr + (reg))
36*b574fb4cSHoward Wang #define RTL_CMAC_R32(hw, reg) rtl_read32(RTL_CMAC_REG_ADDR(hw, reg))
37*b574fb4cSHoward Wang #define RTL_CMAC_R16(hw, reg) rtl_read16(RTL_CMAC_REG_ADDR(hw, reg))
38*b574fb4cSHoward Wang #define RTL_CMAC_R8(hw, reg) rte_read8(RTL_CMAC_REG_ADDR(hw, reg))
39*b574fb4cSHoward Wang 
40*b574fb4cSHoward Wang #define RTL_CMAC_W32(hw, reg, val) \
41*b574fb4cSHoward Wang 	rte_write32((rte_cpu_to_le_32(val)), RTL_CMAC_REG_ADDR(hw, reg))
42*b574fb4cSHoward Wang 
43*b574fb4cSHoward Wang #define RTL_CMAC_W16(hw, reg, val) \
44*b574fb4cSHoward Wang 	rte_write16((rte_cpu_to_le_16(val)), RTL_CMAC_REG_ADDR(hw, reg))
45*b574fb4cSHoward Wang 
46*b574fb4cSHoward Wang #define RTL_CMAC_W8(hw, reg, val) \
47*b574fb4cSHoward Wang 	rte_write8((val), RTL_CMAC_REG_ADDR(hw, reg))
48*b574fb4cSHoward Wang 
497d502791SHoward Wang bool rtl_is_allow_access_dash_ocp(struct rtl_hw *hw);
507d502791SHoward Wang 
517d502791SHoward Wang int rtl_check_dash(struct rtl_hw *hw);
527d502791SHoward Wang 
53*b574fb4cSHoward Wang void rtl8125_driver_start(struct rtl_hw *hw);
54*b574fb4cSHoward Wang void rtl8125_driver_stop(struct rtl_hw *hw);
55*b574fb4cSHoward Wang void rtl8125_dash2_disable_txrx(struct rtl_hw *hw);
56*b574fb4cSHoward Wang 
577d502791SHoward Wang #endif /* R8169_DASH_H */
58