1 /* PCMCIA/Cardbus */ 2 3 #ifndef _HW_PCMCIA_H 4 #define _HW_PCMCIA_H 5 6 #include "qemu-common.h" 7 8 typedef struct { 9 qemu_irq irq; 10 int attached; 11 const char *slot_string; 12 const char *card_string; 13 } PCMCIASocket; 14 15 void pcmcia_socket_register(PCMCIASocket *socket); 16 void pcmcia_socket_unregister(PCMCIASocket *socket); 17 void pcmcia_info(Monitor *mon); 18 19 struct 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 */ 54 PCMCIACardState *dscm1xxxx_init(BlockDriverState *bdrv); 55 56 #endif /* _HW_PCMCIA_H */ 57