1/* PCMCIA/Cardbus */
2
3#ifndef _HW_PCMCIA_H
4#define _HW_PCMCIA_H
5
6#include "qemu-common.h"
7
8typedef struct {
9    qemu_irq irq;
10    int attached;
11    const char *slot_string;
12    const char *card_string;
13} PCMCIASocket;
14
15void pcmcia_socket_register(PCMCIASocket *socket);
16void pcmcia_socket_unregister(PCMCIASocket *socket);
17void pcmcia_info(Monitor *mon);
18
19struct PCMCIACardState {
20    void *state;
21    PCMCIASocket *slot;
22    int (*attach)(void *state);
23    int (*detach)(void *state);
24    const uint8_t *cis;
25    int cis_len;
26
27    /* Only valid if attached */
28    uint8_t (*attr_read)(void *state, uint32_t address);
29    void (*attr_write)(void *state, uint32_t address, uint8_t value);
30    uint16_t (*common_read)(void *state, uint32_t address);
31    void (*common_write)(void *state, uint32_t address, uint16_t value);
32    uint16_t (*io_read)(void *state, uint32_t address);
33    void (*io_write)(void *state, uint32_t address, uint16_t value);
34};
35
36#define CISTPL_DEVICE		0x01	/* 5V Device Information Tuple */
37#define CISTPL_NO_LINK		0x14	/* No Link Tuple */
38#define CISTPL_VERS_1		0x15	/* Level 1 Version Tuple */
39#define CISTPL_JEDEC_C		0x18	/* JEDEC ID Tuple */
40#define CISTPL_JEDEC_A		0x19	/* JEDEC ID Tuple */
41#define CISTPL_CONFIG		0x1a	/* Configuration Tuple */
42#define CISTPL_CFTABLE_ENTRY	0x1b	/* 16-bit PCCard Configuration */
43#define CISTPL_DEVICE_OC	0x1c	/* Additional Device Information */
44#define CISTPL_DEVICE_OA	0x1d	/* Additional Device Information */
45#define CISTPL_DEVICE_GEO	0x1e	/* Additional Device Information */
46#define CISTPL_DEVICE_GEO_A	0x1f	/* Additional Device Information */
47#define CISTPL_MANFID		0x20	/* Manufacture ID Tuple */
48#define CISTPL_FUNCID		0x21	/* Function ID Tuple */
49#define CISTPL_FUNCE		0x22	/* Function Extension Tuple */
50#define CISTPL_END		0xff	/* Tuple End */
51#define CISTPL_ENDMARK		0xff
52
53/* dscm1xxxx.c */
54PCMCIACardState *dscm1xxxx_init(BlockDriverState *bdrv);
55
56#endif /* _HW_PCMCIA_H */
57