brintos

brintos / linux-shallow public Read only

0
0
Text · 2.4 KiB · 2fd2555 Raw
108 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * Applied Micro X-Gene SoC Ethernet v2 Driver4 *5 * Copyright (c) 2017, Applied Micro Circuits Corporation6 * Author(s): Iyappan Subramanian <isubramanian@apm.com>7 *	      Keyur Chudgar <kchudgar@apm.com>8 */9 10#ifndef __XGENE_ENET_V2_RING_H__11#define __XGENE_ENET_V2_RING_H__12 13#define XGENE_ENET_DESC_SIZE	6414#define XGENE_ENET_NUM_DESC	25615#define NUM_BUFS		816#define SLOT_EMPTY		0xfff17 18#define DMATXCTRL		0xa18019#define DMATXDESCL		0xa18420#define DMATXDESCH		0xa1a021#define DMATXSTATUS		0xa18822#define DMARXCTRL		0xa18c23#define DMARXDESCL		0xa19024#define DMARXDESCH		0xa1a425#define DMARXSTATUS		0xa19426#define DMAINTRMASK		0xa19827#define DMAINTERRUPT		0xa19c28 29#define D_POS			6230#define D_LEN			231#define E_POS			6332#define E_LEN			133#define PKT_ADDRL_POS		034#define PKT_ADDRL_LEN		3235#define PKT_ADDRH_POS		3236#define PKT_ADDRH_LEN		1037#define PKT_SIZE_POS		3238#define PKT_SIZE_LEN		1239#define NEXT_DESC_ADDRL_POS	040#define NEXT_DESC_ADDRL_LEN	3241#define NEXT_DESC_ADDRH_POS	4842#define NEXT_DESC_ADDRH_LEN	1043 44#define TXPKTCOUNT_POS		1645#define TXPKTCOUNT_LEN		846#define RXPKTCOUNT_POS		1647#define RXPKTCOUNT_LEN		848 49#define TX_PKT_SENT		BIT(0)50#define TX_BUS_ERROR		BIT(3)51#define RX_PKT_RCVD		BIT(4)52#define RX_BUS_ERROR		BIT(7)53#define RXSTATUS_RXPKTRCVD	BIT(0)54 55struct xge_raw_desc {56	__le64 m0;57	__le64 m1;58	__le64 m2;59	__le64 m3;60	__le64 m4;61	__le64 m5;62	__le64 m6;63	__le64 m7;64};65 66struct pkt_info {67	struct sk_buff *skb;68	dma_addr_t dma_addr;69	void *pkt_buf;70};71 72/* software context of a descriptor ring */73struct xge_desc_ring {74	struct net_device *ndev;75	dma_addr_t dma_addr;76	u8 head;77	u8 tail;78	union {79		void *desc_addr;80		struct xge_raw_desc *raw_desc;81	};82	struct pkt_info (*pkt_info);83};84 85static inline u64 xge_set_desc_bits(int pos, int len, u64 val)86{87	return (val & ((1ULL << len) - 1)) << pos;88}89 90static inline u64 xge_get_desc_bits(int pos, int len, u64 src)91{92	return (src >> pos) & ((1ULL << len) - 1);93}94 95#define SET_BITS(field, val) \96		xge_set_desc_bits(field ## _POS, field ## _LEN, val)97 98#define GET_BITS(field, src) \99		xge_get_desc_bits(field ## _POS, field ## _LEN, src)100 101void xge_setup_desc(struct xge_desc_ring *ring);102void xge_update_tx_desc_addr(struct xge_pdata *pdata);103void xge_update_rx_desc_addr(struct xge_pdata *pdata);104void xge_intr_enable(struct xge_pdata *pdata);105void xge_intr_disable(struct xge_pdata *pdata);106 107#endif  /* __XGENE_ENET_V2_RING_H__ */108