libmetal
Loading...
Searching...
No Matches
Data Structures | Macros | Functions | Variables
device.c File Reference
#include <metal/device.h>
#include <metal/sys.h>
#include <metal/utilities.h>
#include <metal/irq.h>

Data Structures

struct  linux_driver
 
struct  linux_bus
 
struct  linux_device
 

Macros

#define MAX_DRIVERS   64
 
#define for_each_linux_bus(lbus)    for ((lbus) = linux_bus; (lbus)->bus_name; (lbus)++)
 
#define for_each_linux_driver(lbus, ldrv)    for ((ldrv) = lbus->drivers; (ldrv)->drv_name; (ldrv)++)
 

Functions

static struct linux_busto_linux_bus (struct metal_bus *bus)
 
static struct linux_deviceto_linux_device (struct metal_device *device)
 
static int metal_uio_read_map_attr (struct linux_device *ldev, unsigned int index, const char *name, unsigned long *value)
 
static int metal_uio_dev_bind (struct linux_device *ldev, struct linux_driver *ldrv)
 
static int metal_uio_dev_open (struct linux_bus *lbus, struct linux_device *ldev)
 
static void metal_uio_dev_close (struct linux_bus *lbus, struct linux_device *ldev)
 
static void metal_uio_dev_irq_ack (struct linux_bus *lbus, struct linux_device *ldev, int irq)
 
static int metal_uio_dev_dma_map (struct linux_bus *lbus, struct linux_device *ldev, uint32_t dir, struct metal_sg *sg_in, int nents_in, struct metal_sg *sg_out)
 
static void metal_uio_dev_dma_unmap (struct linux_bus *lbus, struct linux_device *ldev, uint32_t dir, struct metal_sg *sg, int nents)
 
static int metal_linux_dev_open (struct metal_bus *bus, const char *dev_name, struct metal_device **device)
 
static void metal_linux_dev_close (struct metal_bus *bus, struct metal_device *device)
 
static void metal_linux_bus_close (struct metal_bus *bus)
 
static void metal_linux_dev_irq_ack (struct metal_bus *bus, struct metal_device *device, int irq)
 
static int metal_linux_dev_dma_map (struct metal_bus *bus, struct metal_device *device, uint32_t dir, struct metal_sg *sg_in, int nents_in, struct metal_sg *sg_out)
 
static void metal_linux_dev_dma_unmap (struct metal_bus *bus, struct metal_device *device, uint32_t dir, struct metal_sg *sg, int nents)
 
static int metal_linux_register_bus (struct linux_bus *lbus)
 
static int metal_linux_probe_driver (struct linux_bus *lbus, struct linux_driver *ldrv)
 
static int metal_linux_probe_bus (struct linux_bus *lbus)
 
int metal_linux_bus_init (void)
 
void metal_linux_bus_finish (void)
 
int metal_generic_dev_sys_open (struct metal_device *dev)
 
int metal_linux_get_device_property (struct metal_device *device, const char *property_name, void *output, int len)
 

Variables

static struct linux_bus linux_bus []
 
static const struct metal_bus_ops metal_linux_bus_ops
 

Macro Definition Documentation

◆ for_each_linux_bus

#define for_each_linux_bus ( lbus)     for ((lbus) = linux_bus; (lbus)->bus_name; (lbus)++)

◆ for_each_linux_driver

#define for_each_linux_driver ( lbus,
ldrv )    for ((ldrv) = lbus->drivers; (ldrv)->drv_name; (ldrv)++)

◆ MAX_DRIVERS

#define MAX_DRIVERS   64

Function Documentation

◆ metal_generic_dev_sys_open()

int metal_generic_dev_sys_open ( struct metal_device * dev)

◆ metal_linux_bus_close()

static void metal_linux_bus_close ( struct metal_bus * bus)
static

◆ metal_linux_bus_finish()

void metal_linux_bus_finish ( void )

◆ metal_linux_bus_init()

int metal_linux_bus_init ( void )

◆ metal_linux_dev_close()

static void metal_linux_dev_close ( struct metal_bus * bus,
struct metal_device * device )
static

◆ metal_linux_dev_dma_map()

static int metal_linux_dev_dma_map ( struct metal_bus * bus,
struct metal_device * device,
uint32_t dir,
struct metal_sg * sg_in,
int nents_in,
struct metal_sg * sg_out )
static

◆ metal_linux_dev_dma_unmap()

static void metal_linux_dev_dma_unmap ( struct metal_bus * bus,
struct metal_device * device,
uint32_t dir,
struct metal_sg * sg,
int nents )
static

◆ metal_linux_dev_irq_ack()

static void metal_linux_dev_irq_ack ( struct metal_bus * bus,
struct metal_device * device,
int irq )
static

◆ metal_linux_dev_open()

static int metal_linux_dev_open ( struct metal_bus * bus,
const char * dev_name,
struct metal_device ** device )
static

◆ metal_linux_get_device_property()

int metal_linux_get_device_property ( struct metal_device * device,
const char * property_name,
void * output,
int len )

◆ metal_linux_probe_bus()

static int metal_linux_probe_bus ( struct linux_bus * lbus)
static

◆ metal_linux_probe_driver()

static int metal_linux_probe_driver ( struct linux_bus * lbus,
struct linux_driver * ldrv )
static

◆ metal_linux_register_bus()

static int metal_linux_register_bus ( struct linux_bus * lbus)
static

◆ metal_uio_dev_bind()

static int metal_uio_dev_bind ( struct linux_device * ldev,
struct linux_driver * ldrv )
static

◆ metal_uio_dev_close()

static void metal_uio_dev_close ( struct linux_bus * lbus,
struct linux_device * ldev )
static

◆ metal_uio_dev_dma_map()

static int metal_uio_dev_dma_map ( struct linux_bus * lbus,
struct linux_device * ldev,
uint32_t dir,
struct metal_sg * sg_in,
int nents_in,
struct metal_sg * sg_out )
static

◆ metal_uio_dev_dma_unmap()

static void metal_uio_dev_dma_unmap ( struct linux_bus * lbus,
struct linux_device * ldev,
uint32_t dir,
struct metal_sg * sg,
int nents )
static

◆ metal_uio_dev_irq_ack()

static void metal_uio_dev_irq_ack ( struct linux_bus * lbus,
struct linux_device * ldev,
int irq )
static

◆ metal_uio_dev_open()

static int metal_uio_dev_open ( struct linux_bus * lbus,
struct linux_device * ldev )
static

◆ metal_uio_read_map_attr()

static int metal_uio_read_map_attr ( struct linux_device * ldev,
unsigned int index,
const char * name,
unsigned long * value )
static

◆ to_linux_bus()

static struct linux_bus * to_linux_bus ( struct metal_bus * bus)
static

◆ to_linux_device()

static struct linux_device * to_linux_device ( struct metal_device * device)
static

Variable Documentation

◆ linux_bus

struct linux_bus linux_bus[]
static

◆ metal_linux_bus_ops

const struct metal_bus_ops metal_linux_bus_ops
static
Initial value:
= {
.bus_close = metal_linux_bus_close,
.dev_open = metal_linux_dev_open,
.dev_close = metal_linux_dev_close,
.dev_irq_ack = metal_linux_dev_irq_ack,
.dev_dma_map = metal_linux_dev_dma_map,
.dev_dma_unmap = metal_linux_dev_dma_unmap,
}
static int metal_linux_dev_dma_map(struct metal_bus *bus, struct metal_device *device, uint32_t dir, struct metal_sg *sg_in, int nents_in, struct metal_sg *sg_out)
Definition device.c:510
static void metal_linux_dev_dma_unmap(struct metal_bus *bus, struct metal_device *device, uint32_t dir, struct metal_sg *sg, int nents)
Definition device.c:524
static void metal_linux_dev_irq_ack(struct metal_bus *bus, struct metal_device *device, int irq)
Definition device.c:500
static int metal_linux_dev_open(struct metal_bus *bus, const char *dev_name, struct metal_device **device)
Definition device.c:422
static void metal_linux_bus_close(struct metal_bus *bus)
Definition device.c:485
static void metal_linux_dev_close(struct metal_bus *bus, struct metal_device *device)
Definition device.c:474