arch/x86: Provide readXp/writeXp helpers in arch/mmio.h
These p-suffixed helpers allow dropping pointer casts in call-sites, which is particularly useful when accessing registers at an offset from a base address. Move existing helpers in chipset code to arch/mmio.h and create the rest accordingly. Change-Id: I36a015456f7b0af1f1bf2fdff9e1ccd1e3b11747 Signed-off-by: Angel Pons <th3fanbus@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/51862 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Patrick Rudolph <siro@das-labor.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
		
				
					committed by
					
						
						Patrick Georgi
					
				
			
			
				
	
			
			
			
						parent
						
							e22c597bf6
						
					
				
				
					commit
					b324df6a54
				
			@@ -45,4 +45,44 @@ static __always_inline void write64(volatile void *addr, uint64_t value)
 | 
				
			|||||||
	*((volatile uint64_t *)(addr)) = value;
 | 
						*((volatile uint64_t *)(addr)) = value;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static __always_inline uint8_t read8p(const uintptr_t addr)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return read8((void *)addr);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static __always_inline uint16_t read16p(const uintptr_t addr)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return read16((void *)addr);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static __always_inline uint32_t read32p(const uintptr_t addr)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return read32((void *)addr);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static __always_inline uint64_t read64p(const uintptr_t addr)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return read64((void *)addr);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static __always_inline void write8p(const uintptr_t addr, const uint8_t value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						write8((void *)addr, value);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static __always_inline void write16p(const uintptr_t addr, const uint16_t value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						write16((void *)addr, value);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static __always_inline void write32p(const uintptr_t addr, const uint32_t value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						write32((void *)addr, value);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static __always_inline void write64p(const uintptr_t addr, const uint64_t value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						write64((void *)addr, value);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* __ARCH_MMIO_H__ */
 | 
					#endif /* __ARCH_MMIO_H__ */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -115,16 +115,6 @@ static u16 read_1d0(u16 addr, int split)
 | 
				
			|||||||
	return val;
 | 
						return val;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void write32p(uintptr_t addr, uint32_t val)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	write32((void *)addr, val);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static uint32_t read32p(uintptr_t addr)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return read32((void *)addr);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void sfence(void)
 | 
					static void sfence(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	asm volatile ("sfence");
 | 
						asm volatile ("sfence");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,21 +6,6 @@
 | 
				
			|||||||
#include "cpu/intel/model_206ax/model_206ax.h"
 | 
					#include "cpu/intel/model_206ax/model_206ax.h"
 | 
				
			||||||
#include <cpu/x86/msr.h>
 | 
					#include <cpu/x86/msr.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void write8p(uintptr_t addr, uint8_t val)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	write8((uint8_t *)addr, val);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void write16p(uintptr_t addr, uint16_t val)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	write16((uint16_t *)addr, val);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static uint16_t read16p(uintptr_t addr)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return read16((uint16_t *)addr);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Temporary address for the thermal BAR */
 | 
					/* Temporary address for the thermal BAR */
 | 
				
			||||||
#define TBARB_TEMP 0x40000000
 | 
					#define TBARB_TEMP 0x40000000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user