|
3 | 3 | ** OO_Copyright_BEGIN |
4 | 4 | ** |
5 | 5 | ** |
6 | | -** Copyright 2010, 2020 IBM Corp. All rights reserved. |
| 6 | +** Copyright 2010, 2023 IBM Corp. All rights reserved. |
7 | 7 | ** |
8 | 8 | ** Redistribution and use in source and binary forms, with or without |
9 | 9 | ** modification, are permitted provided that the following conditions |
|
64 | 64 | #include "libltfs/ltfs_endian.h" |
65 | 65 |
|
66 | 66 | DRIVE_DENSITY_SUPPORT_MAP jaguar_drive_density[] = { |
| 67 | + /* TS1170 */ |
| 68 | + { DRIVE_GEN_JAG7, TC_MP_JF, TC_DC_JAG7, MEDIUM_PERFECT_MATCH }, |
| 69 | + { DRIVE_GEN_JAG7, TC_MP_JF, TC_DC_UNKNOWN, MEDIUM_PROBABLY_WRITABLE }, |
| 70 | + { DRIVE_GEN_JAG7, TC_MP_JE, TC_DC_JAG6, MEDIUM_WRITABLE }, |
| 71 | + { DRIVE_GEN_JAG7, TC_MP_JE, TC_DC_UNKNOWN, MEDIUM_WRITABLE }, |
| 72 | + { DRIVE_GEN_JAG7, TC_MP_JV, TC_DC_JAG6, MEDIUM_WRITABLE }, |
| 73 | + { DRIVE_GEN_JAG7, TC_MP_JV, TC_DC_UNKNOWN, MEDIUM_WRITABLE }, |
| 74 | + { DRIVE_GEN_JAG7, TC_MP_JM, TC_DC_JAG6, MEDIUM_WRITABLE }, |
| 75 | + { DRIVE_GEN_JAG7, TC_MP_JM, TC_DC_UNKNOWN, MEDIUM_WRITABLE }, |
| 76 | + |
67 | 77 | /* TS1160 */ |
68 | 78 | { DRIVE_GEN_JAG6, TC_MP_JE, TC_DC_JAG6, MEDIUM_PERFECT_MATCH }, |
69 | 79 | { DRIVE_GEN_JAG6, TC_MP_JE, TC_DC_UNKNOWN, MEDIUM_PROBABLY_WRITABLE }, |
@@ -141,6 +151,10 @@ DRIVE_DENSITY_SUPPORT_MAP jaguar_drive_density[] = { |
141 | 151 | }; |
142 | 152 |
|
143 | 153 | DRIVE_DENSITY_SUPPORT_MAP jaguar_drive_density_strict[] = { |
| 154 | + /* TS1170 */ |
| 155 | + { DRIVE_GEN_JAG7, TC_MP_JF, TC_DC_JAG7, MEDIUM_PERFECT_MATCH }, |
| 156 | + { DRIVE_GEN_JAG7, TC_MP_JF, TC_DC_UNKNOWN, MEDIUM_PROBABLY_WRITABLE }, |
| 157 | + |
144 | 158 | /* TS1160 */ |
145 | 159 | { DRIVE_GEN_JAG6, TC_MP_JE, TC_DC_JAG6, MEDIUM_PERFECT_MATCH }, |
146 | 160 | { DRIVE_GEN_JAG6, TC_MP_JE, TC_DC_UNKNOWN, MEDIUM_PROBABLY_WRITABLE }, |
@@ -256,13 +270,16 @@ const unsigned char supported_cart[] = { |
256 | 270 | TC_MP_JE, |
257 | 271 | TC_MP_JV, |
258 | 272 | TC_MP_JM, |
| 273 | + TC_MP_JF, |
259 | 274 | }; |
260 | 275 |
|
261 | 276 | const unsigned char supported_density[] = { |
| 277 | + TC_DC_JAG7E, |
262 | 278 | TC_DC_JAG6E, |
263 | 279 | TC_DC_JAG5AE, |
264 | 280 | TC_DC_JAG5E, |
265 | 281 | TC_DC_JAG4E, |
| 282 | + TC_DC_JAG7, |
266 | 283 | TC_DC_JAG6, |
267 | 284 | TC_DC_JAG5A, |
268 | 285 | TC_DC_JAG5, |
@@ -315,6 +332,8 @@ struct supported_device *ibm_supported_drives[] = { |
315 | 332 | TAPEDRIVE( IBM_VENDOR_ID, "0359260F", DRIVE_TS1160, "[0359260F]" ), /* IBM TS1160 */ |
316 | 333 | TAPEDRIVE( IBM_VENDOR_ID, "0359260E", DRIVE_TS1160, "[0359260E]" ), /* IBM TS1160 */ |
317 | 334 | TAPEDRIVE( IBM_VENDOR_ID, "0359260S", DRIVE_TS1160, "[0359260S]" ), /* IBM TS1160 */ |
| 335 | + TAPEDRIVE( IBM_VENDOR_ID, "0359270F", DRIVE_TS1170, "[0359270F]" ), /* IBM TS1170 */ |
| 336 | + TAPEDRIVE( IBM_VENDOR_ID, "0359270S", DRIVE_TS1170, "[0359270S]" ), /* IBM TS1170 */ |
318 | 337 | /* End of supported_devices */ |
319 | 338 | NULL |
320 | 339 | }; |
@@ -794,6 +813,26 @@ static struct _timeout_tape timeout_1160[] = { |
794 | 813 | {-1, -1} |
795 | 814 | }; |
796 | 815 |
|
| 816 | +static struct _timeout_tape timeout_1170[] = { |
| 817 | + { XCOPY, 176820 }, |
| 818 | + { ERASE, 175900 }, |
| 819 | + { FORMAT_MEDIUM, 3120 }, |
| 820 | + { LOAD_UNLOAD, 900 }, |
| 821 | + { LOCATE10, 2280 }, |
| 822 | + { LOCATE16, 2240 }, |
| 823 | + { READ, 2340 }, |
| 824 | + { READ_BUFFER, 480 }, |
| 825 | + { REWIND, 600 }, |
| 826 | + { SEND_DIAGNOSTIC, 2280 }, |
| 827 | + { SPACE6, 2280 }, |
| 828 | + { SPACE16, 2240 }, |
| 829 | + { VERIFY, 176820 }, |
| 830 | + { WRITE, 1440 }, |
| 831 | + { WRITE_BUFFER, 540 }, |
| 832 | + { WRITE_FILEMARKS6, 1380 }, |
| 833 | + {-1, -1} |
| 834 | +}; |
| 835 | + |
797 | 836 | static int _create_table_tape(struct timeout_tape **result, |
798 | 837 | struct _timeout_tape* base, |
799 | 838 | struct _timeout_tape* override) |
@@ -882,6 +921,9 @@ int ibm_tape_init_timeout(struct timeout_tape** table, int type) |
882 | 921 | case DRIVE_TS1160: |
883 | 922 | ret = _create_table_tape(table, timeout_11x0, timeout_1160); |
884 | 923 | break; |
| 924 | + case DRIVE_TS1170: |
| 925 | + ret = _create_table_tape(table, timeout_11x0, timeout_1170); |
| 926 | + break; |
885 | 927 | default: |
886 | 928 | ret = _create_table_tape(table, timeout_lto, timeout_lto7_hh); |
887 | 929 | break; |
@@ -930,6 +972,9 @@ static inline unsigned char _assume_cartridge_type(char product, char btype) |
930 | 972 | case 'M': |
931 | 973 | ctype = TC_MP_JM; |
932 | 974 | break; |
| 975 | + case 'F': |
| 976 | + ctype = TC_MP_JF; |
| 977 | + break; |
933 | 978 | default: |
934 | 979 | break; |
935 | 980 | } |
@@ -1033,6 +1078,9 @@ char* ibm_tape_assume_cart_name(unsigned char type) |
1033 | 1078 | case TC_MP_JM: |
1034 | 1079 | name = "JM"; |
1035 | 1080 | break; |
| 1081 | + case TC_MP_JF: |
| 1082 | + name = "JF"; |
| 1083 | + break; |
1036 | 1084 | default: |
1037 | 1085 | name = "L5"; |
1038 | 1086 | break; |
@@ -1295,6 +1343,7 @@ bool ibm_tape_is_supported_firmware(int drive_type, const unsigned char * const |
1295 | 1343 | case DRIVE_LTO7_HH: |
1296 | 1344 | case DRIVE_TS1150: |
1297 | 1345 | case DRIVE_TS1160: |
| 1346 | + case DRIVE_TS1170: |
1298 | 1347 | default: |
1299 | 1348 | break; |
1300 | 1349 | } |
|
0 commit comments