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