diff -drupN a/include/linux/sunxi-smc.h b/include/linux/sunxi-smc.h --- a/include/linux/sunxi-smc.h 1970-01-01 03:00:00.000000000 +0300 +++ b/include/linux/sunxi-smc.h 2022-06-12 05:28:14.000000000 +0300 @@ -0,0 +1,46 @@ +/* + * drivers/char/sunxi_sys_info/sunxi-smc.c + * + * Copyright(c) 2015-2016 Allwinnertech Co., Ltd. + * http://www.allwinnertech.com + * + * Author: sunny + * + * allwinner sunxi soc chip version and chip id manager. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#ifndef __SUNXI_SMC_H +#define __SUNXI_SMC_H + +#ifdef CONFIG_SUNXI_SMC +extern int invoke_smc_fn(u32 function_id, u64 arg0, u64 arg1, u64 arg2); +extern u32 sunxi_smc_readl(phys_addr_t addr); +extern int sunxi_smc_writel(u32 value, phys_addr_t addr); +extern int sunxi_smc_probe_secure(void); +extern int sunxi_soc_is_secure(void); +extern int sunxi_smc_copy_arisc_paras(phys_addr_t dest, phys_addr_t src, u32 len); +#else +static inline u32 sunxi_smc_readl(phys_addr_t addr) +{ + void __iomem *vaddr = ioremap(addr, 4); + u32 ret; + ret = readl(vaddr); + iounmap(vaddr); + return ret; + return readl((void __iomem *)addr); +} +static inline int sunxi_smc_writel(u32 val, phys_addr_t addr) +{ + void __iomem *vaddr = ioremap(addr, 4); + writel(val, vaddr); + iounmap(vaddr); + return 0; +} +#endif + +#endif /* __SUNXI_SMC_H */