version 1.1, 2007/10/16 09:41:05 |
version 1.6, 2007/10/16 21:41:35 |
|
|
#include <sys/device.h> |
#include <sys/device.h> |
|
|
/* |
/* |
* Bus operations. |
* Each bus (bus driver instance) has its own bus_handle. |
|
* Device drivers attached to bus aquire bus_handle to perform all bus i/o. |
*/ |
*/ |
struct busops { |
struct bus_handle { |
uint8_t (*bus_read_1)(struct device *devp, uint32_t addr); |
void *bh_ownerdd; /* devdata of device that owns this handler XXX kill that it is ugly */ |
uint16_t (*bus_read_2)(struct device *devp, uint32_t addr); |
uint8_t (*bus_read_1)(void *ddp, uint32_t addr); |
uint32_t (*bus_read_4)(struct device *devp, uint32_t addr); |
uint16_t (*bus_read_2)(void *ddp, uint32_t addr); |
int (*bus_write_1)(struct device *devp, uint32_t addr, uint8_t data); |
uint32_t (*bus_read_4)(void *ddp, uint32_t addr); |
int (*bus_write_2)(struct device *devp, uint32_t addr, uint16_t data); |
int (*bus_write_1)(void *ddp, uint32_t addr, uint8_t data); |
int (*bus_write_4)(struct device *devp, uint32_t addr, uint32_t data); |
int (*bus_write_2)(void *ddp, uint32_t addr, uint16_t data); |
|
int (*bus_write_4)(void *ddp, uint32_t addr, uint32_t data); |
/* XXX DMA related stuff */ |
/* XXX DMA related stuff */ |
}; |
}; |
|
|
#define bus_read_1(dev, addr) ((struct busops *)dev->dv_devdata)->bus_read_1(dev, addr) |
|
|
|
#define bus_write_1(dev, addr, data) ((struct busops *)dev->dv_devdata)->bus_write_1(dev, addr, data) |
uint8_t bus_read_1(struct bus_handle *bhp, uint32_t addr); |
|
uint16_t bus_read_2(struct bus_handle *bhp, uint32_t addr); |
|
uint32_t bus_read_4(struct bus_handle *bhp, uint32_t addr); |
|
int bus_write_1(struct bus_handle *bhp, uint32_t addr, uint8_t data); |
|
int bus_write_2(struct bus_handle *bhp, uint32_t addr, uint16_t data); |
|
int bus_write_4(struct bus_handle *bhp, uint32_t addr, uint32_t data); |
|
|
#endif /* _SYS_BUS_H */ |
#endif /* _SYS_BUS_H */ |