Rtwo/kernel/motorola/sm8550/drivers/net/usb/ax88179a_772d.h

171 lines
5.3 KiB
C
Raw Normal View History

2025-09-30 20:22:48 -04:00
/* SPDX-License-Identifier: GPL-2.0 */
/*******************************************************************************
* Copyright (c) 2022 ASIX Electronic Corporation All rights reserved.
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 2 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <https://www.gnu.org/licenses/>.
******************************************************************************/
#ifndef __ASIX_AX88179A_772D_H
#define __ASIX_AX88179A_772D_H
#define AX88179A_BIN_TIMER_UINT 800 //ns
#define AX88179A_NAPI_WEIGHT 64
#define AX88179A_BUF_RX_SIZE (48 * 1024)
#define AX88179A_PHY_ID 0x03
#define AX88179_GPHY_CTRL 0x0F
#define AX_GPHY_EEE_CTRL 0x01
#define AX88179A_HIGH_QUEUE_POINT 0x60
#define AX88179A_AUTODETACH_DELAY (5UL << 8)
#define AX88179A_PBUS_REG 0x10
#define AX88179A_ACCESS_BL 0x2A
#define AX88179A_PHY_CLAUSE45 0x27
#define AX88179A_PHY_POWER 0x31
#define AX_PHY_POWER 0x02
#define AX88179A_BOOT_TO_ROM 0x9F
#define AX88179A_AUTODETACH 0xC0
#define AX88179A_BFM_DATA 0x0E
#define AX_TX_QUEUE_CFG 0x02
#define AX_TX_QUEUE_SET 0x08
#define AX_TX_Q1_AHB_FC_EN 0x10
#define AX_TX_Q2_AHB_FC_EN 0x20
#define AX_XGMII_EN 0x80
#define AX88179A_ETH_TX_GAP 0x0D
#define AX88179A_FLASH_READ 0x21
#define AX88179A_FLASH_WEN 0x22
#define AX88179A_FLASH_WDIS 0x23
#define AX88179A_FLASH_WRITE 0x24
#define AX88179A_FLASH_EARSE_ALL 0x25
#define AX88179A_VLAN_ID_CONTROL 0x2B
#define AX_VLAN_CONTROL_WE 0x0001
#define AX_VLAN_CONTROL_RD 0x0002
#define AX_VLAN_CONTROL_VSO 0x0010
#define AX_VLAN_CONTROL_VFE 0x0020
#define AX88179A_MAC_BM_INT_MASK 0x41
#define AX88179A_MAC_BM_RX_DMA_CTL 0x43
#define AX88179A_MAC_BM_TX_DMA_CTL 0x46
#define AX88179A_CLK_EN_ARRAY_1 0x4B
#define AX_MAC_MII_TX_25M_EN 0x02
#define AX_MAC_RX_25M_EN 0x08
#define AX88179A_MAC_CLK_SELECT_1 0x4D
#define AX_MAC_PCSCLK_MII_TX 0x01
#define AX88178A_MAC_RX_STATUS_CDC 0x6D
#define AX88179A_MAC_LSOFC_GMIIPF 0x6E
#define AX_GMII_CRC_APPEND 0x10
#define AX_LSOFC_WCNT_1_ACCESS 0x00
#define AX_LSOFC_WCNT_2_ACCESS 0x01
#define AX_LSOFC_WCNT_5_ACCESS 0x02
#define AX_LSOFC_WCNT_7_ACCESS 0x03
#define AX88179A_MAC_RX_FILTER_CTRL 0x6F
#define AX_MAC_RX_FILTER_OFT_EN 0x80
#define AX88179A_MAC_QUEUE_POINT 0x7F
#define AX88179A_MAC_ARC_CTRL 0x9E
#define AX88179A_CDC_ECM_CTRL 0xB0
#define AX88179A_MAC_SWP_CTRL 0xB1
#define AX88179A_MAC_TX_PAUSE_0 0xB2
#define AX88179A_MAC_TX_PAUSE_1 0xB3
#define AX88179A_MAC_TX_PAUSE_2 0xB4
#define AX88179A_MAC_CDC_DELAY_TX 0xB5
#define AX88179A_MAC_PATH 0xB7
#define AX_MAC_RX_PATH_READY 0x01
#define AX_MAC_TX_PATH_READY 0x02
#define AX88179A_NEW_PAUSE_CTRL 0xB8
#define AX_NEW_PAUSE_EN 0x01
#define AX88179A_MAC_BULK_OUT_CTRL 0xB9
#define AX_MAC_EFF_EN 0x02
#define AX88179A_MAC_RX_DATA_CDC_CNT 0xC0
#define AX88179A_MAC_BFM_CTRL 0xC1
#define AX_MAC_STOP_EP5_ACCESS 0x01
#define AX_MAC_STOP_EP3_ACCESS 0x02
#define AX_MAC_LSO_ERR_EN 0x04
#define AX_MAC_MIQFFCTRL_FORMAT 0x10
#define AX_MAC_MIQFFCTRL_DROP_CRC 0x20
#define AX88179A_MAC_LSO_ENHANCE_CTRL 0xC3
#define AX_LSO_ENHANCE_EN 0x01
#define AX88179A_MAC_TX_HDR_CKSUM 0xCC
#define AX_TXHDR_CKSUM_EN 0x01
#define AX_TXRX_INDV_RESET_EN 0x02
#define AX88179A_MAC_CPU_CTRL_MAC_1 0xCE
#define AX_RX_INDV_RESET 0x01
#define AX_TX_INDV_RESET 0x02
#define AX88179A_EP5_EHR 0xF9
#define AX_EP5_DAT_ERROR_HANDLE 0x80
#define AX88179A_HW_EC_VERSION 0xFB
#define AX88179A_SW_REVERSION 0xFC
#define AX88179A_FLASH_MODE 0x80
#define PHY_1000M_STS 0x11
#define LINK_1000M_OK 0x1000
#define PHY_100M_STS 0x10
#define LINK_100M_OK 0x1000
#define PHY_10M_STS 0x16
#define LINK_10M_OK 0x40
struct _179a_rx_pkt_header {
u16 L4_err :1,
L3_err :1,
L4_pkt_type :3,
L3_pkt_type :2,
CE :1,
TCO_match :1,
node_ID_match :1,
vlan_ind :1,
rx_ok :1,
reserved2 :3,
BMC :1;
u16 length :15,
drop :1;
u16 vlan_tag;
u16 WUF_detect :1,
WUF_wake :1,
WUF_ind :6,
PTP_ind :1,
reserved :7;
};
struct _179a_rx_header {
u32 pkt_cnt :13,
hdr_off :19;
u32 rx_throughput;
};
#define AX88179A_RX_HEADER_SIZE sizeof(struct _179a_rx_header)
struct _179a_tx_pkt_header {
u32 length :21,
checksum :7,
padding :1,
vlan_tag :1,
CPHI :1,
DICF :1;
u32 max_seg_size :15,
reserved :1,
vlan_info :16;
};
#define AX88179A_TX_HEADER_SIZE sizeof(struct _179a_tx_pkt_header)
#define AX88179A_TX_HERDER_CHKSUM(len) ((tx_hdr->length + \
(tx_hdr->length >> 8) + \
((tx_hdr->length >> 16) & 0x1F)) & 0x7F)
extern const struct net_device_ops ax88179a_netdev_ops;
extern const struct driver_info ax88179a_info;
extern const struct driver_info ax88772d_info;
int ax88179a_siocdevprivate(struct net_device *netdev, struct ifreq *rq,
void __user *udata, int cmd);
int ax88179a_ioctl(struct net_device *net, struct ifreq *rq, int cmd);
void ax88179a_set_multicast(struct net_device *net);
#endif /* End of __ASIX_AX88179A_772D_H */