8 #include <udi_physio.h>
9 typedef _udi_handle_t udi_pio_handle_t;
10 /* Null handle value for udi_pio_handle_t */
11 #define UDI_NULL_PIO_HANDLE _NULL_HANDLE
13 typedef void udi_pio_map_call_t(udi_cb_t *gcb, udi_pio_handle_t new_pio_handle);
15 typedef const struct {
17 udi_ubit8_t tran_size;
22 * \brief Values for tran_size
33 //! \brief PIO Handle Layout Element Type Code
34 #define UDI_DL_PIO_HANDLE_T 200
37 * \name PIO Handle Allocation and Initialisation
42 * \name Values for pio_attributes of udi_pio_map
45 #define UDI_PIO_STRICTORDER (1U<<0)
46 #define UDI_PIO_UNORDERED_OK (1U<<1)
47 #define UDI_PIO_MERGING_OK (1U<<2)
48 #define UDI_PIO_LOADCACHING_OK (1U<<3)
49 #define UDI_PIO_STORECACHING_OK (1U<<4)
50 #define UDI_PIO_BIG_ENDIAN (1U<<5)
51 #define UDI_PIO_LITTLE_ENDIAN (1U<<6)
52 #define UDI_PIO_NEVERSWAP (1U<<7)
53 #define UDI_PIO_UNALIGNED (1U<<8)
58 extern void udi_pio_map(udi_pio_map_call_t *callback, udi_cb_t *gcb,
59 udi_ubit32_t regset_idx, udi_ubit32_t base_offset, udi_ubit32_t length,
60 udi_pio_trans_t *trans_list, udi_ubit16_t list_length,
61 udi_ubit16_t pio_attributes, udi_ubit32_t pace, udi_index_t serialization_domain);
63 extern void udi_pio_unmap(udi_pio_handle_t pio_handle);
65 extern udi_ubit32_t udi_pio_atmic_sizes(udi_pio_handle_t pio_handle);
67 extern void udi_pio_abort_sequence(udi_pio_handle_t pio_handle, udi_size_t scratch_requirement);
74 * \name PIO Access Service Calls
77 typedef void udi_pio_trans_call_t(udi_cb_t *gcb, udi_buf_t *new_buf, udi_status_t status, udi_ubit16_t result);
79 extern void udi_pio_trans(udi_pio_trans_call_t *callback, udi_cb_t *gcb,
80 udi_pio_handle_t pio_handle, udi_index_t start_label,
81 udi_buf_t *buf, void *mem_ptr);
83 typedef void udi_pio_probe_call_t(udi_cb_t *gcb, udi_status_t status);
86 * \name Values for direction
89 #define UDI_PIO_IN 0x00
90 #define UDI_PIO_OUT 0x20
95 extern void udi_pio_probe(udi_pio_probe_call_t *callback, udi_cb_t *gcb,
96 udi_pio_handle_t pio_handle, void *mem_ptr, udi_ubit32_t pio_offset,
97 udi_ubit8_t tran_size, udi_ubit8_t direction);