xref: /OK3568_Linux_fs/kernel/include/linux/goldfish.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #ifndef __LINUX_GOLDFISH_H
3*4882a593Smuzhiyun #define __LINUX_GOLDFISH_H
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #include <linux/kernel.h>
6*4882a593Smuzhiyun #include <linux/types.h>
7*4882a593Smuzhiyun #include <linux/io.h>
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun /* Helpers for Goldfish virtual platform */
10*4882a593Smuzhiyun 
gf_write_ptr(const void * ptr,void __iomem * portl,void __iomem * porth)11*4882a593Smuzhiyun static inline void gf_write_ptr(const void *ptr, void __iomem *portl,
12*4882a593Smuzhiyun 				void __iomem *porth)
13*4882a593Smuzhiyun {
14*4882a593Smuzhiyun 	const unsigned long addr = (unsigned long)ptr;
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun 	writel(lower_32_bits(addr), portl);
17*4882a593Smuzhiyun #ifdef CONFIG_64BIT
18*4882a593Smuzhiyun 	writel(upper_32_bits(addr), porth);
19*4882a593Smuzhiyun #endif
20*4882a593Smuzhiyun }
21*4882a593Smuzhiyun 
gf_write_dma_addr(const dma_addr_t addr,void __iomem * portl,void __iomem * porth)22*4882a593Smuzhiyun static inline void gf_write_dma_addr(const dma_addr_t addr,
23*4882a593Smuzhiyun 				     void __iomem *portl,
24*4882a593Smuzhiyun 				     void __iomem *porth)
25*4882a593Smuzhiyun {
26*4882a593Smuzhiyun 	writel(lower_32_bits(addr), portl);
27*4882a593Smuzhiyun #ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
28*4882a593Smuzhiyun 	writel(upper_32_bits(addr), porth);
29*4882a593Smuzhiyun #endif
30*4882a593Smuzhiyun }
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun 
33*4882a593Smuzhiyun #endif /* __LINUX_GOLDFISH_H */
34