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