libmetal
Data Structures | Macros | Functions | Variables
Bus Abstraction

Data Structures

struct  metal_bus_ops
 
struct  metal_bus
 
struct  metal_device
 

Macros

#define METAL_MAX_DEVICE_REGIONS   32
 

Functions

int metal_bus_register (struct metal_bus *bus)
 Register a libmetal bus. More...
 
int metal_bus_unregister (struct metal_bus *bus)
 Unregister a libmetal bus. More...
 
int metal_bus_find (const char *name, struct metal_bus **bus)
 Find a libmetal bus by name. More...
 
int metal_register_generic_device (struct metal_device *device)
 Statically register a generic libmetal device. More...
 
int metal_device_open (const char *bus_name, const char *dev_name, struct metal_device **device)
 Open a libmetal device by name. More...
 
void metal_device_close (struct metal_device *device)
 Close a libmetal device. More...
 
static struct metal_io_regionmetal_device_io_region (struct metal_device *device, unsigned index)
 Get an I/O region accessor for a device region. More...
 

Variables

struct metal_bus metal_generic_bus
 

Detailed Description

Macro Definition Documentation

◆ METAL_MAX_DEVICE_REGIONS

#define METAL_MAX_DEVICE_REGIONS   32

Function Documentation

◆ metal_bus_find()

int metal_bus_find ( const char *  name,
struct metal_bus **  bus 
)

Find a libmetal bus by name.

Parameters
[in]nameBus name.
[out]busReturned bus handle.
Returns
0 on success, or -errno on failure.

◆ metal_bus_register()

int metal_bus_register ( struct metal_bus bus)

Register a libmetal bus.

Parameters
[in]busPre-initialized bus structure.
Returns
0 on success, or -errno on failure.

◆ metal_bus_unregister()

int metal_bus_unregister ( struct metal_bus bus)

Unregister a libmetal bus.

Parameters
[in]busPre-registered bus structure.
Returns
0 on success, or -errno on failure.

◆ metal_device_close()

void metal_device_close ( struct metal_device device)

Close a libmetal device.

Parameters
[in]deviceDevice handle.

◆ metal_device_io_region()

static struct metal_io_region* metal_device_io_region ( struct metal_device device,
unsigned  index 
)
inlinestatic

Get an I/O region accessor for a device region.

Parameters
[in]deviceDevice handle.
[in]indexRegion index.
Returns
I/O accessor handle, or NULL on failure.

◆ metal_device_open()

int metal_device_open ( const char *  bus_name,
const char *  dev_name,
struct metal_device **  device 
)

Open a libmetal device by name.

Parameters
[in]bus_nameBus name.
[in]dev_nameDevice name.
[out]deviceReturned device handle.
Returns
0 on success, or -errno on failure.

◆ metal_register_generic_device()

int metal_register_generic_device ( struct metal_device device)

Statically register a generic libmetal device.

In non-Linux systems, devices are always required to be statically registered at application initialization. In Linux system, devices can be dynamically opened via sysfs or libfdt based enumeration at runtime. This interface is used for static registration of devices. Subsequent calls to metal_device_open() look up in this list of pre-registered devices on the "generic" bus. "generic" bus is used on non-Linux system to group the memory mapped devices.

Parameters
[in]deviceGeneric device.
Returns
0 on success, or -errno on failure.

Variable Documentation

◆ metal_generic_bus

struct metal_bus metal_generic_bus

Libmetal generic bus.