18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef SCSI_DISK_H
28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define SCSI_DISK_H
38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* scsi-disk.c */
58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectenum scsi_reason {
68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    SCSI_REASON_DONE, /* Command complete.  */
78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    SCSI_REASON_DATA  /* Transfer complete, more data required.  */
88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct SCSIDeviceState SCSIDeviceState;
118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct SCSIDevice SCSIDevice;
128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef void (*scsi_completionfn)(void *opaque, int reason, uint32_t tag,
138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                                  uint32_t arg);
148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct SCSIDevice
168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{
178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    SCSIDeviceState *state;
188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    void (*destroy)(SCSIDevice *s);
198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int32_t (*send_command)(SCSIDevice *s, uint32_t tag, uint8_t *buf,
208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                            int lun);
218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    void (*read_data)(SCSIDevice *s, uint32_t tag);
228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int (*write_data)(SCSIDevice *s, uint32_t tag);
238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    void (*cancel_io)(SCSIDevice *s, uint32_t tag);
248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint8_t *(*get_buf)(SCSIDevice *s, uint32_t tag);
258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectSCSIDevice *scsi_disk_init(BlockDriverState *bdrv, int tcq,
288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                           scsi_completionfn completion, void *opaque);
298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectSCSIDevice *scsi_generic_init(BlockDriverState *bdrv, int tcq,
308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                           scsi_completionfn completion, void *opaque);
318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* cdrom.c */
338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint cdrom_read_toc(int nb_sectors, uint8_t *buf, int msf, int start_track);
348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint cdrom_read_toc_raw(int nb_sectors, uint8_t *buf, int msf, int session_num);
358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif
37