xref: /dpdk/drivers/bus/dpaa/include/dpaa_bits.h (revision d81734caccade4dc17d24d2ffd8b71244d35a69f)
1*d81734caSHemant Agrawal /* SPDX-License-Identifier: BSD-3-Clause
239f373cfSHemant Agrawal  *
3*d81734caSHemant Agrawal  *   Copyright 2017 NXP
439f373cfSHemant Agrawal  *
539f373cfSHemant Agrawal  */
639f373cfSHemant Agrawal 
739f373cfSHemant Agrawal #ifndef __DPAA_BITS_H
839f373cfSHemant Agrawal #define __DPAA_BITS_H
939f373cfSHemant Agrawal 
1039f373cfSHemant Agrawal /* Bitfield stuff. */
1139f373cfSHemant Agrawal #define BITS_PER_ULONG	(sizeof(unsigned long) << 3)
1239f373cfSHemant Agrawal #define SHIFT_PER_ULONG	(((1 << 5) == BITS_PER_ULONG) ? 5 : 6)
1339f373cfSHemant Agrawal #define BITS_MASK(idx)	(1UL << ((idx) & (BITS_PER_ULONG - 1)))
1439f373cfSHemant Agrawal #define BITS_IDX(idx)	((idx) >> SHIFT_PER_ULONG)
1539f373cfSHemant Agrawal 
dpaa_set_bits(unsigned long mask,volatile unsigned long * p)1639f373cfSHemant Agrawal static inline void dpaa_set_bits(unsigned long mask,
1739f373cfSHemant Agrawal 				 volatile unsigned long *p)
1839f373cfSHemant Agrawal {
1939f373cfSHemant Agrawal 	*p |= mask;
2039f373cfSHemant Agrawal }
2139f373cfSHemant Agrawal 
dpaa_set_bit(int idx,volatile unsigned long * bits)2239f373cfSHemant Agrawal static inline void dpaa_set_bit(int idx, volatile unsigned long *bits)
2339f373cfSHemant Agrawal {
2439f373cfSHemant Agrawal 	dpaa_set_bits(BITS_MASK(idx), bits + BITS_IDX(idx));
2539f373cfSHemant Agrawal }
2639f373cfSHemant Agrawal 
dpaa_clear_bits(unsigned long mask,volatile unsigned long * p)2739f373cfSHemant Agrawal static inline void dpaa_clear_bits(unsigned long mask,
2839f373cfSHemant Agrawal 				   volatile unsigned long *p)
2939f373cfSHemant Agrawal {
3039f373cfSHemant Agrawal 	*p &= ~mask;
3139f373cfSHemant Agrawal }
3239f373cfSHemant Agrawal 
dpaa_clear_bit(int idx,volatile unsigned long * bits)3339f373cfSHemant Agrawal static inline void dpaa_clear_bit(int idx,
3439f373cfSHemant Agrawal 				  volatile unsigned long *bits)
3539f373cfSHemant Agrawal {
3639f373cfSHemant Agrawal 	dpaa_clear_bits(BITS_MASK(idx), bits + BITS_IDX(idx));
3739f373cfSHemant Agrawal }
3839f373cfSHemant Agrawal 
3939f373cfSHemant Agrawal #endif /* __DPAA_BITS_H */
40