xref: /openbmc/linux/drivers/net/wwan/t7xx/t7xx_netdev.h (revision 7ae9fb1b7ecbb5d85d07857943f677fd1a559b18)
105d19bf5SHaijun Liu /* SPDX-License-Identifier: GPL-2.0-only
205d19bf5SHaijun Liu  *
305d19bf5SHaijun Liu  * Copyright (c) 2021, MediaTek Inc.
405d19bf5SHaijun Liu  * Copyright (c) 2021-2022, Intel Corporation.
505d19bf5SHaijun Liu  *
605d19bf5SHaijun Liu  * Authors:
705d19bf5SHaijun Liu  *  Haijun Liu <haijun.liu@mediatek.com>
805d19bf5SHaijun Liu  *  Moises Veleta <moises.veleta@intel.com>
905d19bf5SHaijun Liu  *
1005d19bf5SHaijun Liu  * Contributors:
1105d19bf5SHaijun Liu  *  Amir Hanania <amir.hanania@intel.com>
1205d19bf5SHaijun Liu  *  Chiranjeevi Rapolu <chiranjeevi.rapolu@intel.com>
1305d19bf5SHaijun Liu  *  Ricardo Martinez <ricardo.martinez@linux.intel.com>
1405d19bf5SHaijun Liu  */
1505d19bf5SHaijun Liu 
1605d19bf5SHaijun Liu #ifndef __T7XX_NETDEV_H__
1705d19bf5SHaijun Liu #define __T7XX_NETDEV_H__
1805d19bf5SHaijun Liu 
1905d19bf5SHaijun Liu #include <linux/bits.h>
2005d19bf5SHaijun Liu #include <linux/netdevice.h>
2105d19bf5SHaijun Liu #include <linux/types.h>
2205d19bf5SHaijun Liu 
2305d19bf5SHaijun Liu #include "t7xx_hif_dpmaif.h"
2405d19bf5SHaijun Liu #include "t7xx_pci.h"
2505d19bf5SHaijun Liu #include "t7xx_state_monitor.h"
2605d19bf5SHaijun Liu 
2705d19bf5SHaijun Liu #define RXQ_NUM				DPMAIF_RXQ_NUM
2805d19bf5SHaijun Liu #define NIC_DEV_MAX			21
2905d19bf5SHaijun Liu #define NIC_DEV_DEFAULT			2
3005d19bf5SHaijun Liu 
3105d19bf5SHaijun Liu #define CCMNI_NETDEV_WDT_TO		(1 * HZ)
3205d19bf5SHaijun Liu #define CCMNI_MTU_MAX			3000
33*5545b7b9SHaijun Liu #define NIC_NAPI_POLL_BUDGET		128
3405d19bf5SHaijun Liu 
3505d19bf5SHaijun Liu struct t7xx_ccmni {
3605d19bf5SHaijun Liu 	u8				index;
3705d19bf5SHaijun Liu 	atomic_t			usage;
3805d19bf5SHaijun Liu 	struct net_device		*dev;
3905d19bf5SHaijun Liu 	struct t7xx_ccmni_ctrl		*ctlb;
4005d19bf5SHaijun Liu };
4105d19bf5SHaijun Liu 
4205d19bf5SHaijun Liu struct t7xx_ccmni_ctrl {
4305d19bf5SHaijun Liu 	struct t7xx_pci_dev		*t7xx_dev;
4405d19bf5SHaijun Liu 	struct dpmaif_ctrl		*hif_ctrl;
4505d19bf5SHaijun Liu 	struct t7xx_ccmni		*ccmni_inst[NIC_DEV_MAX];
4605d19bf5SHaijun Liu 	struct dpmaif_callbacks		callbacks;
4705d19bf5SHaijun Liu 	unsigned int			nic_dev_num;
4805d19bf5SHaijun Liu 	unsigned int			md_sta;
4905d19bf5SHaijun Liu 	struct t7xx_fsm_notifier	md_status_notify;
5005d19bf5SHaijun Liu 	bool				wwan_is_registered;
51*5545b7b9SHaijun Liu 	struct net_device		dummy_dev;
52*5545b7b9SHaijun Liu 	struct napi_struct		*napi[RXQ_NUM];
53*5545b7b9SHaijun Liu 	atomic_t			napi_usr_refcnt;
54*5545b7b9SHaijun Liu 	bool				is_napi_en;
5505d19bf5SHaijun Liu };
5605d19bf5SHaijun Liu 
5705d19bf5SHaijun Liu int t7xx_ccmni_init(struct t7xx_pci_dev *t7xx_dev);
5805d19bf5SHaijun Liu void t7xx_ccmni_exit(struct t7xx_pci_dev *t7xx_dev);
5905d19bf5SHaijun Liu 
6005d19bf5SHaijun Liu #endif /* __T7XX_NETDEV_H__ */
61