162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/* Altera TSE SGDMA and MSGDMA Linux driver
362306a36Sopenharmony_ci * Copyright (C) 2014 Altera Corporation. All rights reserved
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#include "altera_tse.h"
762306a36Sopenharmony_ci#include "altera_utils.h"
862306a36Sopenharmony_ci
962306a36Sopenharmony_civoid tse_set_bit(void __iomem *ioaddr, size_t offs, u32 bit_mask)
1062306a36Sopenharmony_ci{
1162306a36Sopenharmony_ci	u32 value = csrrd32(ioaddr, offs);
1262306a36Sopenharmony_ci	value |= bit_mask;
1362306a36Sopenharmony_ci	csrwr32(value, ioaddr, offs);
1462306a36Sopenharmony_ci}
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_civoid tse_clear_bit(void __iomem *ioaddr, size_t offs, u32 bit_mask)
1762306a36Sopenharmony_ci{
1862306a36Sopenharmony_ci	u32 value = csrrd32(ioaddr, offs);
1962306a36Sopenharmony_ci	value &= ~bit_mask;
2062306a36Sopenharmony_ci	csrwr32(value, ioaddr, offs);
2162306a36Sopenharmony_ci}
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ciint tse_bit_is_set(void __iomem *ioaddr, size_t offs, u32 bit_mask)
2462306a36Sopenharmony_ci{
2562306a36Sopenharmony_ci	u32 value = csrrd32(ioaddr, offs);
2662306a36Sopenharmony_ci	return (value & bit_mask) ? 1 : 0;
2762306a36Sopenharmony_ci}
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ciint tse_bit_is_clear(void __iomem *ioaddr, size_t offs, u32 bit_mask)
3062306a36Sopenharmony_ci{
3162306a36Sopenharmony_ci	u32 value = csrrd32(ioaddr, offs);
3262306a36Sopenharmony_ci	return (value & bit_mask) ? 0 : 1;
3362306a36Sopenharmony_ci}
34