root / hw / esp.h @ 03a6b667
History | View | Annotate | Download (3.1 kB)
1 | 1e37607b | Gerd Hoffmann | #ifndef QEMU_HW_ESP_H
|
---|---|---|---|
2 | 1e37607b | Gerd Hoffmann | #define QEMU_HW_ESP_H
|
3 | 1e37607b | Gerd Hoffmann | |
4 | 9c7e23fc | Hervé Poussineau | #include "scsi.h" |
5 | 9c7e23fc | Hervé Poussineau | |
6 | 8b17de88 | blueswir1 | /* esp.c */
|
7 | 8b17de88 | blueswir1 | #define ESP_MAX_DEVS 7 |
8 | ff9868ec | Blue Swirl | typedef void (*ESPDMAMemoryReadWriteFunc)(void *opaque, uint8_t *buf, int len); |
9 | c227f099 | Anthony Liguori | void esp_init(target_phys_addr_t espaddr, int it_shift, |
10 | ff9868ec | Blue Swirl | ESPDMAMemoryReadWriteFunc dma_memory_read, |
11 | ff9868ec | Blue Swirl | ESPDMAMemoryReadWriteFunc dma_memory_write, |
12 | 73d74342 | Blue Swirl | void *dma_opaque, qemu_irq irq, qemu_irq *reset,
|
13 | 73d74342 | Blue Swirl | qemu_irq *dma_enable); |
14 | 1e37607b | Gerd Hoffmann | |
15 | 9c7e23fc | Hervé Poussineau | #define ESP_REGS 16 |
16 | 9c7e23fc | Hervé Poussineau | #define TI_BUFSZ 16 |
17 | 9c7e23fc | Hervé Poussineau | |
18 | 9c7e23fc | Hervé Poussineau | typedef struct ESPState ESPState; |
19 | 9c7e23fc | Hervé Poussineau | |
20 | 9c7e23fc | Hervé Poussineau | struct ESPState {
|
21 | 9c7e23fc | Hervé Poussineau | uint8_t rregs[ESP_REGS]; |
22 | 9c7e23fc | Hervé Poussineau | uint8_t wregs[ESP_REGS]; |
23 | 9c7e23fc | Hervé Poussineau | qemu_irq irq; |
24 | 9c7e23fc | Hervé Poussineau | uint8_t chip_id; |
25 | 9c7e23fc | Hervé Poussineau | int32_t ti_size; |
26 | 9c7e23fc | Hervé Poussineau | uint32_t ti_rptr, ti_wptr; |
27 | 9c7e23fc | Hervé Poussineau | uint32_t status; |
28 | 9c7e23fc | Hervé Poussineau | uint32_t dma; |
29 | 9c7e23fc | Hervé Poussineau | uint8_t ti_buf[TI_BUFSZ]; |
30 | 9c7e23fc | Hervé Poussineau | SCSIBus bus; |
31 | 9c7e23fc | Hervé Poussineau | SCSIDevice *current_dev; |
32 | 9c7e23fc | Hervé Poussineau | SCSIRequest *current_req; |
33 | 9c7e23fc | Hervé Poussineau | uint8_t cmdbuf[TI_BUFSZ]; |
34 | 9c7e23fc | Hervé Poussineau | uint32_t cmdlen; |
35 | 9c7e23fc | Hervé Poussineau | uint32_t do_cmd; |
36 | 9c7e23fc | Hervé Poussineau | |
37 | 9c7e23fc | Hervé Poussineau | /* The amount of data left in the current DMA transfer. */
|
38 | 9c7e23fc | Hervé Poussineau | uint32_t dma_left; |
39 | 9c7e23fc | Hervé Poussineau | /* The size of the current DMA transfer. Zero if no transfer is in
|
40 | 9c7e23fc | Hervé Poussineau | progress. */
|
41 | 9c7e23fc | Hervé Poussineau | uint32_t dma_counter; |
42 | 9c7e23fc | Hervé Poussineau | int dma_enabled;
|
43 | 9c7e23fc | Hervé Poussineau | |
44 | 9c7e23fc | Hervé Poussineau | uint32_t async_len; |
45 | 9c7e23fc | Hervé Poussineau | uint8_t *async_buf; |
46 | 9c7e23fc | Hervé Poussineau | |
47 | 9c7e23fc | Hervé Poussineau | ESPDMAMemoryReadWriteFunc dma_memory_read; |
48 | 9c7e23fc | Hervé Poussineau | ESPDMAMemoryReadWriteFunc dma_memory_write; |
49 | 9c7e23fc | Hervé Poussineau | void *dma_opaque;
|
50 | 9c7e23fc | Hervé Poussineau | void (*dma_cb)(ESPState *s);
|
51 | 9c7e23fc | Hervé Poussineau | }; |
52 | 9c7e23fc | Hervé Poussineau | |
53 | 9c7e23fc | Hervé Poussineau | #define ESP_TCLO 0x0 |
54 | 9c7e23fc | Hervé Poussineau | #define ESP_TCMID 0x1 |
55 | 9c7e23fc | Hervé Poussineau | #define ESP_FIFO 0x2 |
56 | 9c7e23fc | Hervé Poussineau | #define ESP_CMD 0x3 |
57 | 9c7e23fc | Hervé Poussineau | #define ESP_RSTAT 0x4 |
58 | 9c7e23fc | Hervé Poussineau | #define ESP_WBUSID 0x4 |
59 | 9c7e23fc | Hervé Poussineau | #define ESP_RINTR 0x5 |
60 | 9c7e23fc | Hervé Poussineau | #define ESP_WSEL 0x5 |
61 | 9c7e23fc | Hervé Poussineau | #define ESP_RSEQ 0x6 |
62 | 9c7e23fc | Hervé Poussineau | #define ESP_WSYNTP 0x6 |
63 | 9c7e23fc | Hervé Poussineau | #define ESP_RFLAGS 0x7 |
64 | 9c7e23fc | Hervé Poussineau | #define ESP_WSYNO 0x7 |
65 | 9c7e23fc | Hervé Poussineau | #define ESP_CFG1 0x8 |
66 | 9c7e23fc | Hervé Poussineau | #define ESP_RRES1 0x9 |
67 | 9c7e23fc | Hervé Poussineau | #define ESP_WCCF 0x9 |
68 | 9c7e23fc | Hervé Poussineau | #define ESP_RRES2 0xa |
69 | 9c7e23fc | Hervé Poussineau | #define ESP_WTEST 0xa |
70 | 9c7e23fc | Hervé Poussineau | #define ESP_CFG2 0xb |
71 | 9c7e23fc | Hervé Poussineau | #define ESP_CFG3 0xc |
72 | 9c7e23fc | Hervé Poussineau | #define ESP_RES3 0xd |
73 | 9c7e23fc | Hervé Poussineau | #define ESP_TCHI 0xe |
74 | 9c7e23fc | Hervé Poussineau | #define ESP_RES4 0xf |
75 | 9c7e23fc | Hervé Poussineau | |
76 | 9c7e23fc | Hervé Poussineau | #define CMD_DMA 0x80 |
77 | 9c7e23fc | Hervé Poussineau | #define CMD_CMD 0x7f |
78 | 9c7e23fc | Hervé Poussineau | |
79 | 9c7e23fc | Hervé Poussineau | #define CMD_NOP 0x00 |
80 | 9c7e23fc | Hervé Poussineau | #define CMD_FLUSH 0x01 |
81 | 9c7e23fc | Hervé Poussineau | #define CMD_RESET 0x02 |
82 | 9c7e23fc | Hervé Poussineau | #define CMD_BUSRESET 0x03 |
83 | 9c7e23fc | Hervé Poussineau | #define CMD_TI 0x10 |
84 | 9c7e23fc | Hervé Poussineau | #define CMD_ICCS 0x11 |
85 | 9c7e23fc | Hervé Poussineau | #define CMD_MSGACC 0x12 |
86 | 9c7e23fc | Hervé Poussineau | #define CMD_PAD 0x18 |
87 | 9c7e23fc | Hervé Poussineau | #define CMD_SATN 0x1a |
88 | 9c7e23fc | Hervé Poussineau | #define CMD_RSTATN 0x1b |
89 | 9c7e23fc | Hervé Poussineau | #define CMD_SEL 0x41 |
90 | 9c7e23fc | Hervé Poussineau | #define CMD_SELATN 0x42 |
91 | 9c7e23fc | Hervé Poussineau | #define CMD_SELATNS 0x43 |
92 | 9c7e23fc | Hervé Poussineau | #define CMD_ENSEL 0x44 |
93 | 9c7e23fc | Hervé Poussineau | #define CMD_DISSEL 0x45 |
94 | 9c7e23fc | Hervé Poussineau | |
95 | 9c7e23fc | Hervé Poussineau | #define STAT_DO 0x00 |
96 | 9c7e23fc | Hervé Poussineau | #define STAT_DI 0x01 |
97 | 9c7e23fc | Hervé Poussineau | #define STAT_CD 0x02 |
98 | 9c7e23fc | Hervé Poussineau | #define STAT_ST 0x03 |
99 | 9c7e23fc | Hervé Poussineau | #define STAT_MO 0x06 |
100 | 9c7e23fc | Hervé Poussineau | #define STAT_MI 0x07 |
101 | 9c7e23fc | Hervé Poussineau | #define STAT_PIO_MASK 0x06 |
102 | 9c7e23fc | Hervé Poussineau | |
103 | 9c7e23fc | Hervé Poussineau | #define STAT_TC 0x10 |
104 | 9c7e23fc | Hervé Poussineau | #define STAT_PE 0x20 |
105 | 9c7e23fc | Hervé Poussineau | #define STAT_GE 0x40 |
106 | 9c7e23fc | Hervé Poussineau | #define STAT_INT 0x80 |
107 | 9c7e23fc | Hervé Poussineau | |
108 | 9c7e23fc | Hervé Poussineau | #define BUSID_DID 0x07 |
109 | 9c7e23fc | Hervé Poussineau | |
110 | 9c7e23fc | Hervé Poussineau | #define INTR_FC 0x08 |
111 | 9c7e23fc | Hervé Poussineau | #define INTR_BS 0x10 |
112 | 9c7e23fc | Hervé Poussineau | #define INTR_DC 0x20 |
113 | 9c7e23fc | Hervé Poussineau | #define INTR_RST 0x80 |
114 | 9c7e23fc | Hervé Poussineau | |
115 | 9c7e23fc | Hervé Poussineau | #define SEQ_0 0x0 |
116 | 9c7e23fc | Hervé Poussineau | #define SEQ_CD 0x4 |
117 | 9c7e23fc | Hervé Poussineau | |
118 | 9c7e23fc | Hervé Poussineau | #define CFG1_RESREPT 0x40 |
119 | 9c7e23fc | Hervé Poussineau | |
120 | 9c7e23fc | Hervé Poussineau | #define TCHI_FAS100A 0x4 |
121 | 9c7e23fc | Hervé Poussineau | #define TCHI_AM53C974 0x12 |
122 | 9c7e23fc | Hervé Poussineau | |
123 | 9c7e23fc | Hervé Poussineau | void esp_dma_enable(ESPState *s, int irq, int level); |
124 | 9c7e23fc | Hervé Poussineau | void esp_request_cancelled(SCSIRequest *req);
|
125 | 9c7e23fc | Hervé Poussineau | void esp_command_complete(SCSIRequest *req, uint32_t status, size_t resid);
|
126 | 9c7e23fc | Hervé Poussineau | void esp_transfer_data(SCSIRequest *req, uint32_t len);
|
127 | 9c7e23fc | Hervé Poussineau | void esp_hard_reset(ESPState *s);
|
128 | 9c7e23fc | Hervé Poussineau | uint64_t esp_reg_read(ESPState *s, uint32_t saddr); |
129 | 9c7e23fc | Hervé Poussineau | void esp_reg_write(ESPState *s, uint32_t saddr, uint64_t val);
|
130 | 9c7e23fc | Hervé Poussineau | extern const VMStateDescription vmstate_esp; |
131 | 9c7e23fc | Hervé Poussineau | |
132 | 1e37607b | Gerd Hoffmann | #endif |