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:501
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:515
static void metal_linux_dev_irq_ack(struct metal_bus *bus, struct metal_device *device, int irq)
Definition: device.c:491
static int metal_linux_dev_open(struct metal_bus *bus, const char *dev_name, struct metal_device **device)
Definition: device.c:413
static void metal_linux_bus_close(struct metal_bus *bus)
Definition: device.c:476
static void metal_linux_dev_close(struct metal_bus *bus, struct metal_device *device)
Definition: device.c:465