| /* SPDX-License-Identifier: GPL-2.0 */ | 
 | #ifndef BOOT_IO_H | 
 | #define BOOT_IO_H | 
 |  | 
 | #include <asm/shared/io.h> | 
 |  | 
 | #undef inb | 
 | #undef inw | 
 | #undef inl | 
 | #undef outb | 
 | #undef outw | 
 | #undef outl | 
 |  | 
 | struct port_io_ops { | 
 | 	u8	(*f_inb)(u16 port); | 
 | 	void	(*f_outb)(u8 v, u16 port); | 
 | 	void	(*f_outw)(u16 v, u16 port); | 
 | }; | 
 |  | 
 | extern struct port_io_ops pio_ops; | 
 |  | 
 | /* | 
 |  * Use the normal I/O instructions by default. | 
 |  * TDX guests override these to use hypercalls. | 
 |  */ | 
 | static inline void init_default_io_ops(void) | 
 | { | 
 | 	pio_ops.f_inb  = __inb; | 
 | 	pio_ops.f_outb = __outb; | 
 | 	pio_ops.f_outw = __outw; | 
 | } | 
 |  | 
 | /* | 
 |  * Redirect port I/O operations via pio_ops callbacks. | 
 |  * TDX guests override these callbacks with TDX-specific helpers. | 
 |  */ | 
 | #define inb  pio_ops.f_inb | 
 | #define outb pio_ops.f_outb | 
 | #define outw pio_ops.f_outw | 
 |  | 
 | #endif |