2 * \file physio/meta_bus.h
4 #ifndef _PHYSIO_META_BUS_H_
5 #define _PHYSIO_META_BUS_H_
8 #include <udi_physio.h>
10 typedef const struct udi_bus_device_ops_s udi_bus_device_ops_t;
11 typedef const struct udi_bus_bridge_ops_s udi_bus_bridge_ops_t;
12 typedef struct udi_bus_bind_cb_s udi_bus_bind_cb_t;
13 typedef void udi_bus_unbind_req_op_t(udi_bus_bind_cb_t *cb);
14 typedef void udi_bus_unbind_ack_op_t(udi_bus_bind_cb_t *cb);
15 typedef void udi_bus_bind_req_op_t(udi_bus_bind_cb_t *cb);
16 typedef void udi_bus_bind_ack_op_t(
17 udi_bus_bind_cb_t *cb,
18 udi_dma_constraints_t dma_constraints,
19 udi_ubit8_t preferred_endianness,
24 struct udi_bus_device_ops_s
26 udi_channel_event_ind_op_t *channel_event_ind_op;
27 udi_bus_bind_ack_op_t *bus_bind_ack_op;
28 udi_bus_unbind_ack_op_t *bus_unbind_ack_op;
29 udi_intr_attach_ack_op_t *intr_attach_ack_op;
30 udi_intr_detach_ack_op_t *intr_detach_ack_op;
32 /* Bus Device Ops Vector Number */
33 #define UDI_BUS_DEVICE_OPS_NUM 1
35 struct udi_bus_bridge_ops_s
37 udi_channel_event_ind_op_t *channel_event_ind_op;
38 udi_bus_bind_req_op_t *bus_bind_req_op;
39 udi_bus_unbind_req_op_t *bus_unbind_req_op;
40 udi_intr_attach_req_op_t *intr_attach_req_op;
41 udi_intr_detach_req_op_t *intr_detach_req_op;
43 /* Bus Bridge Ops Vector Number */
44 #define UDI_BUS_BRIDGE_OPS_NUM 2
46 struct udi_bus_bind_cb_s
50 /* Bus Bind Control Block Group Number */
51 #define UDI_BUS_BIND_CB_NUM 1
54 extern void udi_bus_bind_req(udi_bus_bind_cb_t *cb);
56 extern void udi_bus_bind_ack(
57 udi_bus_bind_cb_t *cb,
58 udi_dma_constraints_t dma_constraints,
59 udi_ubit8_t preferred_endianness,
62 /* Values for preferred_endianness */
63 #define UDI_DMA_BIG_ENDIAN (1U<<5)
64 #define UDI_DMA_LITTLE_ENDIAN (1U<<6)
65 #define UDI_DMA_ANY_ENDIAN (1U<<0)
67 extern void udi_bus_unbind_req(udi_bus_bind_cb_t *cb);
68 extern void udi_bus_unbind_ack(udi_bus_bind_cb_t *cb);