18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* PCMCIA/Cardbus */
28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
35d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifndef _HW_PCMCIA_H
45d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define _HW_PCMCIA_H
55d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
65d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include "qemu-common.h"
75d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
85d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct {
98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    qemu_irq irq;
108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int attached;
118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    const char *slot_string;
128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    const char *card_string;
135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner} PCMCIASocket;
148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid pcmcia_socket_register(PCMCIASocket *socket);
165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid pcmcia_socket_unregister(PCMCIASocket *socket);
175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid pcmcia_info(Monitor *mon);
188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstruct PCMCIACardState {
208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    void *state;
215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    PCMCIASocket *slot;
228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int (*attach)(void *state);
238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int (*detach)(void *state);
248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    const uint8_t *cis;
258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int cis_len;
268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    /* Only valid if attached */
288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint8_t (*attr_read)(void *state, uint32_t address);
298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    void (*attr_write)(void *state, uint32_t address, uint8_t value);
308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint16_t (*common_read)(void *state, uint32_t address);
318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    void (*common_write)(void *state, uint32_t address, uint16_t value);
328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint16_t (*io_read)(void *state, uint32_t address);
338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    void (*io_write)(void *state, uint32_t address, uint16_t value);
348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CISTPL_DEVICE		0x01	/* 5V Device Information Tuple */
378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CISTPL_NO_LINK		0x14	/* No Link Tuple */
388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CISTPL_VERS_1		0x15	/* Level 1 Version Tuple */
398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CISTPL_JEDEC_C		0x18	/* JEDEC ID Tuple */
408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CISTPL_JEDEC_A		0x19	/* JEDEC ID Tuple */
418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CISTPL_CONFIG		0x1a	/* Configuration Tuple */
428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CISTPL_CFTABLE_ENTRY	0x1b	/* 16-bit PCCard Configuration */
438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CISTPL_DEVICE_OC	0x1c	/* Additional Device Information */
448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CISTPL_DEVICE_OA	0x1d	/* Additional Device Information */
458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CISTPL_DEVICE_GEO	0x1e	/* Additional Device Information */
468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CISTPL_DEVICE_GEO_A	0x1f	/* Additional Device Information */
478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CISTPL_MANFID		0x20	/* Manufacture ID Tuple */
488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CISTPL_FUNCID		0x21	/* Function ID Tuple */
498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CISTPL_FUNCE		0x22	/* Function Extension Tuple */
508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CISTPL_END		0xff	/* Tuple End */
518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CISTPL_ENDMARK		0xff
528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* dscm1xxxx.c */
545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' TurnerPCMCIACardState *dscm1xxxx_init(BlockDriverState *bdrv);
558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif /* _HW_PCMCIA_H */
57