diff options
author | kpfleming <kpfleming@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2006-02-15 02:24:18 +0000 |
---|---|---|
committer | kpfleming <kpfleming@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2006-02-15 02:24:18 +0000 |
commit | 41e0e5c06fead266ce179424b18134aeac2c5762 (patch) | |
tree | 246b5055fddf29d43c4d1a7c195ff3f3e1460ac4 /xpp/slic.h | |
parent | 6aa681528c72a21a011883dcdcd35130bd066eac (diff) |
initial import of Xorcom Astribank driver (issue #6452, with minor mods)
git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.2@949 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'xpp/slic.h')
-rw-r--r-- | xpp/slic.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/xpp/slic.h b/xpp/slic.h new file mode 100644 index 0000000..76f2d6e --- /dev/null +++ b/xpp/slic.h @@ -0,0 +1,65 @@ +#ifndef SLIC_H +#define SLIC_H + +#include "xdefs.h" + +/*------------------------------ SLIC Data Structures ----------------------*/ + +struct slic_reg_d { /* SLIC Register Direct Read/Write */ + byte reg_num:7; + byte read:1; + byte reg_data; +} __attribute__((packed)); + +struct slic_reg_iw { /* SLIC Register Indirect-Write */ + struct slic_reg_d iw_data_low; + struct slic_reg_d iw_data_high; + struct slic_reg_d iw_reg; +} __attribute__((packed)); + +struct slic_reg_ir { /* SLIC Register Indirect-Read */ + struct slic_reg_d ir_reg; +} __attribute__((packed)); + +typedef struct slic_cmd { + xpp_line_t lines; + byte bytes; + union { + struct slic_reg_d direct; + struct slic_reg_iw indirect_write; + struct slic_reg_ir indirect_read; + } content; +} __attribute__((packed)) slic_cmd_t; + +typedef struct slic_reply { + byte size; + byte reg_num:7; + byte indirect:1; + byte data_low; + byte data_high; +} __attribute__((packed)) slic_reply_t; + +#define SLIC_REG_INIT(slic_reg, reading, num, data) \ + do { \ + (slic_reg)->read = reading; \ + (slic_reg)->reg_num = num; \ + (slic_reg)->reg_data = data; \ + } while(0); + +/* OLD SLIC_INIT data */ +typedef struct slic_data { + byte len; + byte data[40]; +} __attribute__((packed)) slic_data_t; + + +/*------------------------------ SLIC Initializers -------------------------*/ + +int slic_cmd_direct_write(slic_cmd_t *sc, xpp_line_t lines, byte reg, byte data); +int slic_cmd_direct_read(slic_cmd_t *sc, xpp_line_t lines, byte reg); +int slic_cmd_indirect_write(slic_cmd_t *sc, xpp_line_t lines, byte reg, byte data_low, byte data_high); +int slic_cmd_indirect_read(slic_cmd_t *sc, xpp_line_t lines, byte reg); +void dump_slic_cmd(const char msg[], slic_cmd_t *sc); + + +#endif /* SLIC_H */ |