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 Hepushpull_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 Luceronfp_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