mirror of
https://git.freebsd.org/ports.git
synced 2025-05-25 15:36:35 -04:00
Bump PORTREVISION. PR: ports/84948 Submitted by: Rudolf Cejka <cejkar@fit.vutbr.cz> Approved by: martines@rochester.rr.com (maintainer, timeout 5 weeks)
265 lines
6 KiB
C
265 lines
6 KiB
C
--- os_freebsd.h.orig Sun Sep 5 09:16:07 2004
|
|
+++ os_freebsd.h Sat Aug 6 21:08:54 2005
|
|
@@ -261,6 +261,262 @@
|
|
|
|
#endif
|
|
|
|
+#ifdef HAVE_SYS_TW_OSL_IOCTL_H
|
|
+#include <sys/tw_osl_ioctl.h>
|
|
+#else
|
|
+/*
|
|
+ * Following cut out of tw_osl_types.h
|
|
+ *
|
|
+ */
|
|
+
|
|
+typedef void TW_VOID;
|
|
+typedef char TW_INT8;
|
|
+typedef unsigned char TW_UINT8;
|
|
+typedef short TW_INT16;
|
|
+typedef unsigned short TW_UINT16;
|
|
+typedef int TW_INT32;
|
|
+typedef unsigned int TW_UINT32;
|
|
+typedef long long TW_INT64;
|
|
+typedef unsigned long long TW_UINT64;
|
|
+
|
|
+/*
|
|
+ * Following cut out of tw_cl_share.h
|
|
+ *
|
|
+ */
|
|
+
|
|
+#pragma pack(1)
|
|
+
|
|
+struct tw_cl_event_packet {
|
|
+ TW_UINT32 sequence_id;
|
|
+ TW_UINT32 time_stamp_sec;
|
|
+ TW_UINT16 aen_code;
|
|
+ TW_UINT8 severity;
|
|
+ TW_UINT8 retrieved;
|
|
+ TW_UINT8 repeat_count;
|
|
+ TW_UINT8 parameter_len;
|
|
+ TW_UINT8 parameter_data[98];
|
|
+ TW_UINT32 event_src;
|
|
+ TW_UINT8 severity_str[20];
|
|
+};
|
|
+
|
|
+#pragma pack()
|
|
+
|
|
+/*
|
|
+ * Following cut out of tw_cl_fwif.h
|
|
+ *
|
|
+ */
|
|
+
|
|
+#define TWA_FW_CMD_ATA_PASSTHROUGH 0x11
|
|
+
|
|
+#define TWA_SENSE_DATA_LENGTH 18
|
|
+
|
|
+#pragma pack(1)
|
|
+/* 7000 structures. */
|
|
+struct tw_cl_command_init_connect {
|
|
+ TW_UINT8 res1__opcode; /* 3:5 */
|
|
+ TW_UINT8 size;
|
|
+ TW_UINT8 request_id;
|
|
+ TW_UINT8 res2;
|
|
+ TW_UINT8 status;
|
|
+ TW_UINT8 flags;
|
|
+ TW_UINT16 message_credits;
|
|
+ TW_UINT32 features;
|
|
+ TW_UINT16 fw_srl;
|
|
+ TW_UINT16 fw_arch_id;
|
|
+ TW_UINT16 fw_branch;
|
|
+ TW_UINT16 fw_build;
|
|
+ TW_UINT32 result;
|
|
+};
|
|
+
|
|
+
|
|
+/* Structure for downloading firmware onto the controller. */
|
|
+struct tw_cl_command_download_firmware {
|
|
+ TW_UINT8 sgl_off__opcode;/* 3:5 */
|
|
+ TW_UINT8 size;
|
|
+ TW_UINT8 request_id;
|
|
+ TW_UINT8 unit;
|
|
+ TW_UINT8 status;
|
|
+ TW_UINT8 flags;
|
|
+ TW_UINT16 param;
|
|
+ TW_UINT8 sgl[1];
|
|
+};
|
|
+
|
|
+
|
|
+/* Structure for hard resetting the controller. */
|
|
+struct tw_cl_command_reset_firmware {
|
|
+ TW_UINT8 res1__opcode; /* 3:5 */
|
|
+ TW_UINT8 size;
|
|
+ TW_UINT8 request_id;
|
|
+ TW_UINT8 unit;
|
|
+ TW_UINT8 status;
|
|
+ TW_UINT8 flags;
|
|
+ TW_UINT8 res2;
|
|
+ TW_UINT8 param;
|
|
+};
|
|
+
|
|
+
|
|
+/* Structure for sending get/set param commands. */
|
|
+struct tw_cl_command_param {
|
|
+ TW_UINT8 sgl_off__opcode;/* 3:5 */
|
|
+ TW_UINT8 size;
|
|
+ TW_UINT8 request_id;
|
|
+ TW_UINT8 host_id__unit; /* 4:4 */
|
|
+ TW_UINT8 status;
|
|
+ TW_UINT8 flags;
|
|
+ TW_UINT16 param_count;
|
|
+ TW_UINT8 sgl[1];
|
|
+};
|
|
+
|
|
+
|
|
+/* Generic command packet. */
|
|
+struct tw_cl_command_generic {
|
|
+ TW_UINT8 sgl_off__opcode;/* 3:5 */
|
|
+ TW_UINT8 size;
|
|
+ TW_UINT8 request_id;
|
|
+ TW_UINT8 host_id__unit; /* 4:4 */
|
|
+ TW_UINT8 status;
|
|
+ TW_UINT8 flags;
|
|
+ TW_UINT16 count; /* block cnt, parameter cnt, message credits */
|
|
+};
|
|
+
|
|
+
|
|
+/* Command packet header. */
|
|
+struct tw_cl_command_header {
|
|
+ TW_UINT8 sense_data[TWA_SENSE_DATA_LENGTH];
|
|
+ struct {
|
|
+ TW_INT8 reserved[4];
|
|
+ TW_UINT16 error;
|
|
+ TW_UINT8 padding;
|
|
+ TW_UINT8 res__severity; /* 5:3 */
|
|
+ } status_block;
|
|
+ TW_UINT8 err_specific_desc[98];
|
|
+ struct {
|
|
+ TW_UINT8 size_header;
|
|
+ TW_UINT16 reserved;
|
|
+ TW_UINT8 size_sense;
|
|
+ } header_desc;
|
|
+};
|
|
+
|
|
+
|
|
+/* 7000 Command packet. */
|
|
+union tw_cl_command_7k {
|
|
+ struct tw_cl_command_init_connect init_connect;
|
|
+ struct tw_cl_command_download_firmware download_fw;
|
|
+ struct tw_cl_command_reset_firmware reset_fw;
|
|
+ struct tw_cl_command_param param;
|
|
+ struct tw_cl_command_generic generic;
|
|
+ TW_UINT8 padding[1024 - sizeof(struct tw_cl_command_header)];
|
|
+};
|
|
+
|
|
+
|
|
+/* 9000 Command Packet. */
|
|
+struct tw_cl_command_9k {
|
|
+ TW_UINT8 res__opcode; /* 3:5 */
|
|
+ TW_UINT8 unit;
|
|
+ TW_UINT16 lun_l4__req_id; /* 4:12 */
|
|
+ TW_UINT8 status;
|
|
+ TW_UINT8 sgl_offset; /* offset (in bytes) to sg_list, from the
|
|
+ end of sgl_entries */
|
|
+ TW_UINT16 lun_h4__sgl_entries;
|
|
+ TW_UINT8 cdb[16];
|
|
+ TW_UINT8 sg_list[872];/* total struct size =
|
|
+ 1024-sizeof(cmd_hdr) */
|
|
+};
|
|
+
|
|
+
|
|
+/* Full command packet. */
|
|
+struct tw_cl_command_packet {
|
|
+ struct tw_cl_command_header cmd_hdr;
|
|
+ union {
|
|
+ union tw_cl_command_7k cmd_pkt_7k;
|
|
+ struct tw_cl_command_9k cmd_pkt_9k;
|
|
+ } command;
|
|
+};
|
|
+
|
|
+#pragma pack()
|
|
+
|
|
+/*
|
|
+ * Following cut out of tw_cl_ioctl.h
|
|
+ *
|
|
+ */
|
|
+
|
|
+#pragma pack(1)
|
|
+
|
|
+/* Structure used to handle GET/RELEASE LOCK ioctls. */
|
|
+struct tw_cl_lock_packet {
|
|
+ TW_UINT32 timeout_msec;
|
|
+ TW_UINT32 time_remaining_msec;
|
|
+ TW_UINT32 force_flag;
|
|
+};
|
|
+
|
|
+
|
|
+/* Structure used to handle GET COMPATIBILITY INFO ioctl. */
|
|
+struct tw_cl_compatibility_packet {
|
|
+ TW_UINT8 driver_version[32];/* driver version */
|
|
+ TW_UINT16 working_srl; /* driver & firmware negotiated srl */
|
|
+ TW_UINT16 working_branch; /* branch # of the firmware that the
|
|
+ driver is compatible with */
|
|
+ TW_UINT16 working_build; /* build # of the firmware that the
|
|
+ driver is compatible with */
|
|
+};
|
|
+
|
|
+
|
|
+/* Driver understandable part of the ioctl packet built by the API. */
|
|
+struct tw_cl_driver_packet {
|
|
+ TW_UINT32 control_code;
|
|
+ TW_UINT32 status;
|
|
+ TW_UINT32 unique_id;
|
|
+ TW_UINT32 sequence_id;
|
|
+ TW_UINT32 os_status;
|
|
+ TW_UINT32 buffer_length;
|
|
+};
|
|
+
|
|
+#pragma pack()
|
|
+
|
|
+/*
|
|
+ * Following cut out of tw_osl_ioctl.h
|
|
+ *
|
|
+ */
|
|
+
|
|
+#pragma pack(1)
|
|
+/*
|
|
+ * We need the structure below to ensure that the first byte of
|
|
+ * data_buf is not overwritten by the kernel, after we return
|
|
+ * from the ioctl call. Note that cmd_pkt has been reduced
|
|
+ * to an array of 1024 bytes even though it's actually 2048 bytes
|
|
+ * in size. This is because, we don't expect requests from user
|
|
+ * land requiring 2048 (273 sg elements) byte cmd pkts.
|
|
+ */
|
|
+typedef struct tw_osli_ioctl_no_data_buf {
|
|
+ struct tw_cl_driver_packet driver_pkt;
|
|
+ TW_VOID *pdata; /* points to data_buf */
|
|
+ TW_INT8 padding[488 - sizeof(TW_VOID *)];
|
|
+ struct tw_cl_command_packet cmd_pkt;
|
|
+} TW_OSLI_IOCTL_NO_DATA_BUF;
|
|
+
|
|
+#pragma pack()
|
|
+
|
|
+#define TW_OSL_IOCTL_FIRMWARE_PASS_THROUGH \
|
|
+ _IOWR('T', 202, TW_OSLI_IOCTL_NO_DATA_BUF)
|
|
+
|
|
+#pragma pack(1)
|
|
+
|
|
+typedef struct tw_osli_ioctl_with_payload {
|
|
+ struct tw_cl_driver_packet driver_pkt;
|
|
+ TW_INT8 padding[488];
|
|
+ struct tw_cl_command_packet cmd_pkt;
|
|
+ union {
|
|
+ struct tw_cl_event_packet event_pkt;
|
|
+ struct tw_cl_lock_packet lock_pkt;
|
|
+ struct tw_cl_compatibility_packet compat_pkt;
|
|
+ TW_INT8 data_buf[1];
|
|
+ } payload;
|
|
+} TW_OSLI_IOCTL_WITH_PAYLOAD;
|
|
+
|
|
+#pragma pack()
|
|
+
|
|
+#endif
|
|
+
|
|
/*
|
|
The following definitions/macros/prototypes are used for three
|
|
different interfaces, referred to as "the three cases" below.
|