xref: /dpdk/drivers/net/nfp/nfpcore/nfp6000/nfp6000.h (revision 055ccb33f61d00ed5bec0174dd727d3b143963ac)
1c7e9729dSAlejandro Lucero /* SPDX-License-Identifier: BSD-3-Clause
2c7e9729dSAlejandro Lucero  * Copyright(c) 2018 Netronome Systems, Inc.
3c7e9729dSAlejandro Lucero  * All rights reserved.
4c7e9729dSAlejandro Lucero  */
5c7e9729dSAlejandro Lucero 
6c7e9729dSAlejandro Lucero #ifndef __NFP_NFP6000_H__
7c7e9729dSAlejandro Lucero #define __NFP_NFP6000_H__
8c7e9729dSAlejandro Lucero 
9c7e9729dSAlejandro Lucero #define NFP_ISL_EMEM0                   24
10c7e9729dSAlejandro Lucero 
11c7e9729dSAlejandro Lucero #define NFP_MU_ADDR_ACCESS_TYPE_MASK    3ULL
12c7e9729dSAlejandro Lucero #define NFP_MU_ADDR_ACCESS_TYPE_DIRECT  2ULL
13c7e9729dSAlejandro Lucero 
14*e6858e7eSChaoyong He #define PUSHPULL(pull, push)       (((pull) << 4) | ((push) << 0))
15*e6858e7eSChaoyong He #define PUSH_WIDTH(push_pull)      pushpull_width((push_pull) >> 0)
16*e6858e7eSChaoyong He #define PULL_WIDTH(push_pull)      pushpull_width((push_pull) >> 4)
17*e6858e7eSChaoyong He 
18*e6858e7eSChaoyong He static inline int
pushpull_width(int pp)19*e6858e7eSChaoyong He pushpull_width(int pp)
20*e6858e7eSChaoyong He {
21*e6858e7eSChaoyong He 	pp &= 0xf;
22*e6858e7eSChaoyong He 	if (pp == 0)
23*e6858e7eSChaoyong He 		return -EINVAL;
24*e6858e7eSChaoyong He 
25*e6858e7eSChaoyong He 	return 2 << pp;
26*e6858e7eSChaoyong He }
27*e6858e7eSChaoyong He 
28*e6858e7eSChaoyong He 
29c7e9729dSAlejandro Lucero static inline int
nfp_cppat_mu_locality_lsb(int mode,int addr40)30c7e9729dSAlejandro Lucero nfp_cppat_mu_locality_lsb(int mode, int addr40)
31c7e9729dSAlejandro Lucero {
32c7e9729dSAlejandro Lucero 	switch (mode) {
33c7e9729dSAlejandro Lucero 	case 0 ... 3:
34c7e9729dSAlejandro Lucero 		return addr40 ? 38 : 30;
35c7e9729dSAlejandro Lucero 	default:
36c7e9729dSAlejandro Lucero 		return -EINVAL;
37c7e9729dSAlejandro Lucero 	}
38c7e9729dSAlejandro Lucero }
39c7e9729dSAlejandro Lucero 
40c7e9729dSAlejandro Lucero #endif /* NFP_NFP6000_H */
41