1/* 2** Copyright 2002/03, Thomas Kurschel. All rights reserved. 3** Distributed under the terms of the OpenBeOS License. 4*/ 5 6/* 7 Part of Open IDE bus manager 8 9 Interface between ide and scsi bus manager 10*/ 11 12 13#ifndef __IDE_SIM_H__ 14#define __IDE_SIM_H__ 15 16 17#include <sys/cdefs.h> 18 19#include "scsi_cmds.h" 20 21 22extern scsi_for_sim_interface *scsi; 23extern scsi_sim_interface ide_sim_module; 24 25// set sense of current request 26static inline void 27set_sense(ide_device_info *device, int sense_key, int sense_asc) 28{ 29 device->new_combined_sense = (sense_key << 16) | sense_asc; 30} 31 32// retrieve key from combined sense 33static inline uint8 34decode_sense_key(uint32 combined_sense) 35{ 36 return (combined_sense >> 16) & 0xff; 37} 38 39// retrieve asc from combined sense 40static inline uint8 41decode_sense_asc(uint32 combined_sense) 42{ 43 return (combined_sense >> 8) & 0xff; 44} 45 46// retrieve ascq from combined sense 47static inline uint8 48decode_sense_ascq(uint32 combined_sense) 49{ 50 return combined_sense & 0xff; 51} 52 53// retrieve asc and ascq from combined sense 54static inline uint16 55decode_sense_asc_ascq(uint32 combined_sense) 56{ 57 return combined_sense & 0xffff; 58} 59 60void finish_request(ide_qrequest *qrequest, bool resubmit); 61void finish_reset_queue(ide_qrequest *qrequest); 62void finish_retry(ide_qrequest *qrequest); 63void finish_all_requests(ide_device_info *device, ide_qrequest *ignore, 64 int subsys_status, bool resubmit); 65void finish_checksense(ide_qrequest *qrequest); 66 67 68// start request by resetting sense 69static inline void 70start_request(ide_device_info *device, ide_qrequest *qrequest) 71{ 72 device->new_combined_sense = 0; 73 device->subsys_status = SCSI_REQ_CMP; 74 qrequest->request->device_status = SCSI_STATUS_GOOD; 75} 76 77 78__BEGIN_DECLS 79 80void create_sense(ide_device_info *device, scsi_sense *sense); 81 82__END_DECLS 83 84 85#endif 86