1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2425f3740SAlan #ifndef __LINUX_GOLDFISH_H
3425f3740SAlan #define __LINUX_GOLDFISH_H
4425f3740SAlan
568275680SRoman Kiryanov #include <linux/kernel.h>
672755eedSRoman Kiryanov #include <linux/types.h>
772755eedSRoman Kiryanov #include <linux/io.h>
872755eedSRoman Kiryanov
9425f3740SAlan /* Helpers for Goldfish virtual platform */
10425f3740SAlan
11*2e2ac4a3SLaurent Vivier #ifndef gf_ioread32
12*2e2ac4a3SLaurent Vivier #define gf_ioread32 ioread32
13*2e2ac4a3SLaurent Vivier #endif
14*2e2ac4a3SLaurent Vivier #ifndef gf_iowrite32
15*2e2ac4a3SLaurent Vivier #define gf_iowrite32 iowrite32
16*2e2ac4a3SLaurent Vivier #endif
17*2e2ac4a3SLaurent Vivier
gf_write_ptr(const void * ptr,void __iomem * portl,void __iomem * porth)1807d783fdSPeter Senna Tschudin static inline void gf_write_ptr(const void *ptr, void __iomem *portl,
1907d783fdSPeter Senna Tschudin void __iomem *porth)
20425f3740SAlan {
2168275680SRoman Kiryanov const unsigned long addr = (unsigned long)ptr;
2268275680SRoman Kiryanov
23*2e2ac4a3SLaurent Vivier gf_iowrite32(lower_32_bits(addr), portl);
248d9e9857SAlan Cox #ifdef CONFIG_64BIT
25*2e2ac4a3SLaurent Vivier gf_iowrite32(upper_32_bits(addr), porth);
26425f3740SAlan #endif
27425f3740SAlan }
28425f3740SAlan
gf_write_dma_addr(const dma_addr_t addr,void __iomem * portl,void __iomem * porth)2907d783fdSPeter Senna Tschudin static inline void gf_write_dma_addr(const dma_addr_t addr,
3007d783fdSPeter Senna Tschudin void __iomem *portl,
3107d783fdSPeter Senna Tschudin void __iomem *porth)
3207d783fdSPeter Senna Tschudin {
33*2e2ac4a3SLaurent Vivier gf_iowrite32(lower_32_bits(addr), portl);
3407d783fdSPeter Senna Tschudin #ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
35*2e2ac4a3SLaurent Vivier gf_iowrite32(upper_32_bits(addr), porth);
3607d783fdSPeter Senna Tschudin #endif
3707d783fdSPeter Senna Tschudin }
3807d783fdSPeter Senna Tschudin
3907d783fdSPeter Senna Tschudin
40425f3740SAlan #endif /* __LINUX_GOLDFISH_H */
41