mirror of https://github.com/ipxe/ipxe.git
[pci] Define pci_ioremap() for mapping PCI bus addresses
Define pci_ioremap() as a wrapper around ioremap() that could allow for a non-zero address translation offset. Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/146/head
parent
ccfffc797a
commit
371af4eef2
|
@ -52,3 +52,4 @@ PROVIDE_PCIAPI_INLINE ( direct, pci_read_config_dword );
|
||||||
PROVIDE_PCIAPI_INLINE ( direct, pci_write_config_byte );
|
PROVIDE_PCIAPI_INLINE ( direct, pci_write_config_byte );
|
||||||
PROVIDE_PCIAPI_INLINE ( direct, pci_write_config_word );
|
PROVIDE_PCIAPI_INLINE ( direct, pci_write_config_word );
|
||||||
PROVIDE_PCIAPI_INLINE ( direct, pci_write_config_dword );
|
PROVIDE_PCIAPI_INLINE ( direct, pci_write_config_dword );
|
||||||
|
PROVIDE_PCIAPI_INLINE ( direct, pci_ioremap );
|
||||||
|
|
|
@ -132,4 +132,17 @@ PCIAPI_INLINE ( pcbios, pci_write_config_dword ) ( struct pci_device *pci,
|
||||||
return pcibios_write ( pci, PCIBIOS_WRITE_CONFIG_DWORD | where, value);
|
return pcibios_write ( pci, PCIBIOS_WRITE_CONFIG_DWORD | where, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Map PCI bus address as an I/O address
|
||||||
|
*
|
||||||
|
* @v bus_addr PCI bus address
|
||||||
|
* @v len Length of region
|
||||||
|
* @ret io_addr I/O address, or NULL on error
|
||||||
|
*/
|
||||||
|
static inline __always_inline void *
|
||||||
|
PCIAPI_INLINE ( pcbios, pci_ioremap ) ( struct pci_device *pci __unused,
|
||||||
|
unsigned long bus_addr, size_t len ) {
|
||||||
|
return ioremap ( bus_addr, len );
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* _IPXE_PCIBIOS_H */
|
#endif /* _IPXE_PCIBIOS_H */
|
||||||
|
|
|
@ -138,4 +138,17 @@ PCIAPI_INLINE ( direct, pci_write_config_dword ) ( struct pci_device *pci,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Map PCI bus address as an I/O address
|
||||||
|
*
|
||||||
|
* @v bus_addr PCI bus address
|
||||||
|
* @v len Length of region
|
||||||
|
* @ret io_addr I/O address, or NULL on error
|
||||||
|
*/
|
||||||
|
static inline __always_inline void *
|
||||||
|
PCIAPI_INLINE ( direct, pci_ioremap ) ( struct pci_device *pci __unused,
|
||||||
|
unsigned long bus_addr, size_t len ) {
|
||||||
|
return ioremap ( bus_addr, len );
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* _PCIDIRECT_H */
|
#endif /* _PCIDIRECT_H */
|
||||||
|
|
|
@ -121,3 +121,4 @@ PROVIDE_PCIAPI_INLINE ( pcbios, pci_read_config_dword );
|
||||||
PROVIDE_PCIAPI_INLINE ( pcbios, pci_write_config_byte );
|
PROVIDE_PCIAPI_INLINE ( pcbios, pci_write_config_byte );
|
||||||
PROVIDE_PCIAPI_INLINE ( pcbios, pci_write_config_word );
|
PROVIDE_PCIAPI_INLINE ( pcbios, pci_write_config_word );
|
||||||
PROVIDE_PCIAPI_INLINE ( pcbios, pci_write_config_dword );
|
PROVIDE_PCIAPI_INLINE ( pcbios, pci_write_config_dword );
|
||||||
|
PROVIDE_PCIAPI_INLINE ( pcbios, pci_ioremap );
|
||||||
|
|
|
@ -148,4 +148,17 @@ PCIAPI_INLINE ( efi, pci_write_config_dword ) ( struct pci_device *pci,
|
||||||
value );
|
value );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Map PCI bus address as an I/O address
|
||||||
|
*
|
||||||
|
* @v bus_addr PCI bus address
|
||||||
|
* @v len Length of region
|
||||||
|
* @ret io_addr I/O address, or NULL on error
|
||||||
|
*/
|
||||||
|
static inline __always_inline void *
|
||||||
|
PCIAPI_INLINE ( efi, pci_ioremap ) ( struct pci_device *pci __unused,
|
||||||
|
unsigned long bus_addr, size_t len ) {
|
||||||
|
return ioremap ( bus_addr, len );
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* _IPXE_EFI_PCI_API_H */
|
#endif /* _IPXE_EFI_PCI_API_H */
|
||||||
|
|
|
@ -127,4 +127,17 @@ PCIAPI_INLINE ( linux, pci_write_config_dword ) ( struct pci_device *pci,
|
||||||
return linux_pci_write ( pci, where, value, sizeof ( value ) );
|
return linux_pci_write ( pci, where, value, sizeof ( value ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Map PCI bus address as an I/O address
|
||||||
|
*
|
||||||
|
* @v bus_addr PCI bus address
|
||||||
|
* @v len Length of region
|
||||||
|
* @ret io_addr I/O address, or NULL on error
|
||||||
|
*/
|
||||||
|
static inline __always_inline void *
|
||||||
|
PCIAPI_INLINE ( linux, pci_ioremap ) ( struct pci_device *pci __unused,
|
||||||
|
unsigned long bus_addr, size_t len ) {
|
||||||
|
return ioremap ( bus_addr, len );
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* _IPXE_LINUX_PCI_H */
|
#endif /* _IPXE_LINUX_PCI_H */
|
||||||
|
|
|
@ -11,6 +11,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <ipxe/api.h>
|
#include <ipxe/api.h>
|
||||||
|
#include <ipxe/iomap.h>
|
||||||
#include <config/ioapi.h>
|
#include <config/ioapi.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -122,4 +123,14 @@ int pci_write_config_word ( struct pci_device *pci, unsigned int where,
|
||||||
int pci_write_config_dword ( struct pci_device *pci, unsigned int where,
|
int pci_write_config_dword ( struct pci_device *pci, unsigned int where,
|
||||||
uint32_t value );
|
uint32_t value );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Map PCI bus address as an I/O address
|
||||||
|
*
|
||||||
|
* @v bus_addr PCI bus address
|
||||||
|
* @v len Length of region
|
||||||
|
* @ret io_addr I/O address, or NULL on error
|
||||||
|
*/
|
||||||
|
void * pci_ioremap ( struct pci_device *pci, unsigned long bus_addr,
|
||||||
|
size_t len );
|
||||||
|
|
||||||
#endif /* _IPXE_PCI_IO_H */
|
#endif /* _IPXE_PCI_IO_H */
|
||||||
|
|
|
@ -231,6 +231,7 @@ PROVIDE_PCIAPI_INLINE ( efi, pci_read_config_dword );
|
||||||
PROVIDE_PCIAPI_INLINE ( efi, pci_write_config_byte );
|
PROVIDE_PCIAPI_INLINE ( efi, pci_write_config_byte );
|
||||||
PROVIDE_PCIAPI_INLINE ( efi, pci_write_config_word );
|
PROVIDE_PCIAPI_INLINE ( efi, pci_write_config_word );
|
||||||
PROVIDE_PCIAPI_INLINE ( efi, pci_write_config_dword );
|
PROVIDE_PCIAPI_INLINE ( efi, pci_write_config_dword );
|
||||||
|
PROVIDE_PCIAPI_INLINE ( efi, pci_ioremap );
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue