Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) #ifndef __ASM_MEMORY_MODEL_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) #define __ASM_MEMORY_MODEL_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) #include <linux/pfn.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) #ifndef __ASSEMBLY__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) #if defined(CONFIG_FLATMEM)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #ifndef ARCH_PFN_OFFSET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define ARCH_PFN_OFFSET		(0UL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #elif defined(CONFIG_DISCONTIGMEM)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #ifndef arch_pfn_to_nid
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #define arch_pfn_to_nid(pfn)	pfn_to_nid(pfn)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #ifndef arch_local_page_offset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define arch_local_page_offset(pfn, nid)	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 	((pfn) - NODE_DATA(nid)->node_start_pfn)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #endif /* CONFIG_DISCONTIGMEM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)  * supports 3 memory models.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #if defined(CONFIG_FLATMEM)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #define __pfn_to_page(pfn)	(mem_map + ((pfn) - ARCH_PFN_OFFSET))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #define __page_to_pfn(page)	((unsigned long)((page) - mem_map) + \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 				 ARCH_PFN_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #elif defined(CONFIG_DISCONTIGMEM)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #define __pfn_to_page(pfn)			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) ({	unsigned long __pfn = (pfn);		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	unsigned long __nid = arch_pfn_to_nid(__pfn);  \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 	NODE_DATA(__nid)->node_mem_map + arch_local_page_offset(__pfn, __nid);\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) #define __page_to_pfn(pg)						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) ({	const struct page *__pg = (pg);					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 	struct pglist_data *__pgdat = NODE_DATA(page_to_nid(__pg));	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 	(unsigned long)(__pg - __pgdat->node_mem_map) +			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 	 __pgdat->node_start_pfn;					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) #elif defined(CONFIG_SPARSEMEM_VMEMMAP)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) /* memmap is virtually contiguous.  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) #define __pfn_to_page(pfn)	(vmemmap + (pfn))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) #define __page_to_pfn(page)	(unsigned long)((page) - vmemmap)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) #elif defined(CONFIG_SPARSEMEM)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)  * Note: section's mem_map is encoded to reflect its start_pfn.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)  * section[i].section_mem_map == mem_map's address - start_pfn;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) #define __page_to_pfn(pg)					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) ({	const struct page *__pg = (pg);				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) 	int __sec = page_to_section(__pg);			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) 	(unsigned long)(__pg - __section_mem_map_addr(__nr_to_section(__sec)));	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) #define __pfn_to_page(pfn)				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) ({	unsigned long __pfn = (pfn);			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) 	struct mem_section *__sec = __pfn_to_section(__pfn);	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) 	__section_mem_map_addr(__sec) + __pfn;		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) })
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) #endif /* CONFIG_FLATMEM/DISCONTIGMEM/SPARSEMEM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)  * Convert a physical address to a Page Frame Number and back
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) #define	__phys_to_pfn(paddr)	PHYS_PFN(paddr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) #define	__pfn_to_phys(pfn)	PFN_PHYS(pfn)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) #define page_to_pfn __page_to_pfn
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) #define pfn_to_page __pfn_to_page
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) #endif /* __ASSEMBLY__ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) #endif