/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Mock IO functions.
 *
 * Copyright (C) 2018, Google LLC.
 * Author: Brendan Higgins <brendanhiggins@google.com>
 */

#ifndef _ASM_UM_IO_MOCK_H
#define _ASM_UM_IO_MOCK_H

#include <asm/io.h>
#include <test/mock.h>

DECLARE_FUNCTION_MOCK(kunit_readb,
		      RETURNS(u8), PARAMS(const volatile void __iomem *));

DECLARE_FUNCTION_MOCK(kunit_readw,
		      RETURNS(u16), PARAMS(const volatile void __iomem *));

DECLARE_FUNCTION_MOCK(kunit_readl,
		      RETURNS(u32), PARAMS(const volatile void __iomem *));

#ifdef CONFIG_64BIT
DECLARE_FUNCTION_MOCK(kunit_readq,
		      RETURNS(u64), PARAMS(const volatile void __iomem *));
#endif /* CONFIG_64BIT */

DECLARE_FUNCTION_MOCK_VOID_RETURN(kunit_writeb,
				  PARAMS(u8, const volatile void __iomem *));

DECLARE_FUNCTION_MOCK_VOID_RETURN(kunit_writew,
				  PARAMS(u16, const volatile void __iomem *));

DECLARE_FUNCTION_MOCK_VOID_RETURN(kunit_writel,
				  PARAMS(u32, const volatile void __iomem *));

#ifdef CONFIG_64BIT
DECLARE_FUNCTION_MOCK_VOID_RETURN(kunit_writeq,
				  PARAMS(u64, const volatile void __iomem *));
#endif /* CONFIG_64BIT */



DECLARE_FUNCTION_MOCK(kunit_readb_relaxed,
		      RETURNS(u8), PARAMS(const volatile void __iomem *));

DECLARE_FUNCTION_MOCK(kunit_readw_relaxed,
		      RETURNS(u16), PARAMS(const volatile void __iomem *));

DECLARE_FUNCTION_MOCK(kunit_readl_relaxed,
		      RETURNS(u32), PARAMS(const volatile void __iomem *));

#ifdef CONFIG_64BIT
DECLARE_FUNCTION_MOCK(kunit_readq_relaxed,
		      RETURNS(u64), PARAMS(const volatile void __iomem *));
#endif /* CONFIG_64BIT */

DECLARE_FUNCTION_MOCK_VOID_RETURN(kunit_writeb_relaxed,
				  PARAMS(u8, const volatile void __iomem *));

DECLARE_FUNCTION_MOCK_VOID_RETURN(kunit_writew_relaxed,
				  PARAMS(u16, const volatile void __iomem *));

DECLARE_FUNCTION_MOCK_VOID_RETURN(kunit_writel_relaxed,
				  PARAMS(u32, const volatile void __iomem *));

#ifdef CONFIG_64BIT
DECLARE_FUNCTION_MOCK_VOID_RETURN(kunit_writeq_relaxed,
				  PARAMS(u64, const volatile void __iomem *));
#endif /* CONFIG_64BIT */


#endif /* _ASM_UM_IO_MOCK_H */
