mirror of
				https://source.denx.de/u-boot/u-boot.git
				synced 2025-10-31 08:21:36 +01:00 
			
		
		
		
	Sphinx expects Return: and not @return to indicate a return value.
find . -name '*.c' -exec \
sed -i 's/^\(\s\)\*\(\s*\)@return\(\s\)/\1*\2Return:\3/' {} \;
find . -name '*.h' -exec \
sed -i 's/^\(\s\)\*\(\s*\)@return\(\s\)/\1*\2Return:\3/' {} \;
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
		
	
			
		
			
				
	
	
		
			106 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier:    GPL-2.0
 | |
|  *
 | |
|  * Copyright (C) 2018 Marvell International Ltd.
 | |
|  */
 | |
| 
 | |
| #ifndef __CGX_H__
 | |
| #define __CGX_H__
 | |
| 
 | |
| #include "cgx_intf.h"
 | |
| 
 | |
| #define PCI_DEVICE_ID_OCTEONTX2_CGX	0xA059
 | |
| 
 | |
| #define MAX_LMAC_PER_CGX		4
 | |
| #define CGX_PER_NODE			3
 | |
| 
 | |
| enum lmac_type {
 | |
| 	LMAC_MODE_SGMII		= 0,
 | |
| 	LMAC_MODE_XAUI		= 1,
 | |
| 	LMAC_MODE_RXAUI		= 2,
 | |
| 	LMAC_MODE_10G_R		= 3,
 | |
| 	LMAC_MODE_40G_R		= 4,
 | |
| 	LMAC_MODE_QSGMII	= 6,
 | |
| 	LMAC_MODE_25G_R		= 7,
 | |
| 	LMAC_MODE_50G_R		= 8,
 | |
| 	LMAC_MODE_100G_R	= 9,
 | |
| 	LMAC_MODE_USXGMII	= 10,
 | |
| };
 | |
| 
 | |
| extern char lmac_type_to_str[][8];
 | |
| 
 | |
| extern char lmac_speed_to_str[][8];
 | |
| 
 | |
| struct lmac_priv {
 | |
| 	u8 enable:1;
 | |
| 	u8 full_duplex:1;
 | |
| 	u8 speed:4;
 | |
| 	u8 mode:1;
 | |
| 	u8 rsvd:1;
 | |
| 	u8 mac_addr[6];
 | |
| };
 | |
| 
 | |
| struct cgx;
 | |
| struct nix;
 | |
| struct nix_af;
 | |
| 
 | |
| struct lmac {
 | |
| 	struct cgx	*cgx;
 | |
| 	struct nix	*nix;
 | |
| 	char		name[16];
 | |
| 	enum lmac_type	lmac_type;
 | |
| 	bool		init_pend;
 | |
| 	u8		instance;
 | |
| 	u8		lmac_id;
 | |
| 	u8		pknd;
 | |
| 	u8		link_num;
 | |
| 	u32		chan_num;
 | |
| 	u8		mac_addr[6];
 | |
| };
 | |
| 
 | |
| struct cgx {
 | |
| 	struct nix_af		*nix_af;
 | |
| 	void __iomem		*reg_base;
 | |
| 	struct udevice		*dev;
 | |
| 	struct lmac		*lmac[MAX_LMAC_PER_CGX];
 | |
| 	u8			cgx_id;
 | |
| 	u8			lmac_count;
 | |
| };
 | |
| 
 | |
| static inline void cgx_write(struct cgx *cgx, u8 lmac, u64 offset, u64 val)
 | |
| {
 | |
| 	writeq(val, cgx->reg_base + CMR_SHIFT(lmac) + offset);
 | |
| }
 | |
| 
 | |
| static inline u64 cgx_read(struct cgx *cgx, u8 lmac, u64 offset)
 | |
| {
 | |
| 	return readq(cgx->reg_base + CMR_SHIFT(lmac) + offset);
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Given an LMAC/PF instance number, return the lmac
 | |
|  * Per design, each PF has only one LMAC mapped.
 | |
|  *
 | |
|  * @param instance	instance to find
 | |
|  *
 | |
|  * Return:	pointer to lmac data structure or NULL if not found
 | |
|  */
 | |
| struct lmac *nix_get_cgx_lmac(int lmac_instance);
 | |
| 
 | |
| int cgx_lmac_set_pkind(struct lmac *lmac, u8 lmac_id, int pkind);
 | |
| int cgx_lmac_internal_loopback(struct lmac *lmac, int lmac_id, bool enable);
 | |
| int cgx_lmac_rx_tx_enable(struct lmac *lmac, int lmac_id, bool enable);
 | |
| int cgx_lmac_link_enable(struct lmac *lmac, int lmac_id, bool enable,
 | |
| 			 u64 *status);
 | |
| int cgx_lmac_link_status(struct lmac *lmac, int lmac_id, u64 *status);
 | |
| void cgx_lmac_mac_filter_setup(struct lmac *lmac);
 | |
| 
 | |
| int cgx_intf_get_link_sts(u8 cgx, u8 lmac, u64 *lnk_sts);
 | |
| int cgx_intf_link_up_dwn(u8 cgx, u8 lmac, u8 up_dwn, u64 *lnk_sts);
 | |
| int cgx_intf_get_mac_addr(u8 cgx, u8 lmac, u8 *mac);
 | |
| int cgx_intf_set_macaddr(struct udevice *dev);
 | |
| int cgx_intf_prbs(u8 qlm, u8 mode, u32 time, u8 lane);
 | |
| int cgx_intf_display_eye(u8 qlm, u8 lane);
 | |
| int cgx_intf_display_serdes(u8 qlm, u8 lane);
 | |
| 
 | |
| #endif /* __CGX_H__ */
 |