X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=UDI%2Fdrivers%2Fuart_16c550%2Fuart16c550_common.h;fp=UDI%2Fdrivers%2Fuart_16c550%2Fuart16c550_common.h;h=6f051e2971f7631669dcb736461ee760921a38d2;hb=ad8ed64b7916f20a97d573b29642f567f9e43331;hp=0000000000000000000000000000000000000000;hpb=f99f0ec855b82620c45b4c539ef7d3832680db0d;p=tpg%2Facess2.git diff --git a/UDI/drivers/uart_16c550/uart16c550_common.h b/UDI/drivers/uart_16c550/uart16c550_common.h new file mode 100644 index 00000000..6f051e29 --- /dev/null +++ b/UDI/drivers/uart_16c550/uart16c550_common.h @@ -0,0 +1,64 @@ +#ifndef _UART16C550_COMMON_H_ +#define _UART16C550_COMMON_H_ + +enum { + UART_OPS_DEV = 1, + UART_OPS_IRQ, + UART_OPS_GIO, +}; + +enum { + UART_CB_BUS_BIND = 1, + UART_CB_INTR, + UART_CB_INTR_EVENT, +}; + +enum { + PIO_RESET, + PIO_TX, + PIO_RX, + N_PIO +}; + +typedef struct { + udi_cb_t *active_cb; + struct { + udi_index_t pio_index; + } init; + + udi_pio_handle_t pio_handles[N_PIO]; + udi_channel_t interrupt_channel; +} rdata_t; + +// === MACROS === +/* Copied from http://projectudi.cvs.sourceforge.net/viewvc/projectudi/udiref/driver/udi_dpt/udi_dpt.h */ +#define DPT_SET_ATTR_BOOLEAN(attr, name, val) \ + udi_strcpy((attr)->attr_name, (name)); \ + (attr)->attr_type = UDI_ATTR_BOOLEAN; \ + (attr)->attr_length = sizeof(udi_boolean_t); \ + UDI_ATTR32_SET((attr)->attr_value, (val)) + +#define DPT_SET_ATTR32(attr, name, val) \ + udi_strcpy((attr)->attr_name, (name)); \ + (attr)->attr_type = UDI_ATTR_UBIT32; \ + (attr)->attr_length = sizeof(udi_ubit32_t); \ + UDI_ATTR32_SET((attr)->attr_value, (val)) + +#define DPT_SET_ATTR_ARRAY8(attr, name, val, len) \ + udi_strcpy((attr)->attr_name, (name)); \ + (attr)->attr_type = UDI_ATTR_ARRAY8; \ + (attr)->attr_length = (len); \ + udi_memcpy((attr)->attr_value, (val), (len)) + +#define DPT_SET_ATTR_STRING(attr, name, val, len) \ + udi_strcpy((attr)->attr_name, (name)); \ + (attr)->attr_type = UDI_ATTR_STRING; \ + (attr)->attr_length = (len); \ + udi_strncpy_rtrim((char *)(attr)->attr_value, (val), (len)) +#define NE2K_SET_ATTR_STRFMT(attr, name, maxlen, fmt, v...) \ + udi_strcpy((attr)->attr_name, (name)); \ + (attr)->attr_type = UDI_ATTR_STRING; \ + (attr)->attr_length = udi_snprintf((char *)(attr)->attr_value, (maxlen), (fmt) ,## v ) + + +#endif