33** OO_Copyright_BEGIN
44**
55**
6- ** Copyright 2010, 2023 IBM Corp. All rights reserved.
6+ ** Copyright 2010, 2025 IBM Corp. All rights reserved.
77**
88** Redistribution and use in source and binary forms, with or without
99** modification, are permitted provided that the following conditions
@@ -193,6 +193,11 @@ DRIVE_DENSITY_SUPPORT_MAP jaguar_drive_density_strict[] = {
193193};
194194
195195DRIVE_DENSITY_SUPPORT_MAP lto_drive_density [] = {
196+ /* LTOA */
197+ { DRIVE_GEN_LTOA , TC_MP_LTOPAD_CART , TC_DC_LTOPA , MEDIUM_PERFECT_MATCH },
198+ { DRIVE_GEN_LTOA , TC_MP_LTOAD_CART , TC_DC_LTOA , MEDIUM_PERFECT_MATCH },
199+ { DRIVE_GEN_LTOA , TC_MP_LTOAD_CART , TC_DC_UNKNOWN , MEDIUM_PERFECT_MATCH },
200+ { DRIVE_GEN_LTOA , TC_MP_LTOPAD_CART , TC_DC_UNKNOWN , MEDIUM_PERFECT_MATCH },
196201 /* LTO9 */
197202 { DRIVE_GEN_LTO9 , TC_MP_LTO9D_CART , TC_DC_LTO9 , MEDIUM_PERFECT_MATCH },
198203 { DRIVE_GEN_LTO9 , TC_MP_LTO9D_CART , TC_DC_UNKNOWN , MEDIUM_PERFECT_MATCH },
@@ -226,6 +231,12 @@ DRIVE_DENSITY_SUPPORT_MAP lto_drive_density[] = {
226231};
227232
228233DRIVE_DENSITY_SUPPORT_MAP lto_drive_density_strict [] = {
234+ /* LTOA */
235+ { DRIVE_GEN_LTOA , TC_MP_LTOPAD_CART , TC_DC_LTOPA , MEDIUM_PERFECT_MATCH },
236+ { DRIVE_GEN_LTOA , TC_MP_LTOAD_CART , TC_DC_LTOA , MEDIUM_PERFECT_MATCH },
237+ { DRIVE_GEN_LTOA , TC_MP_LTOAD_CART , TC_DC_UNKNOWN , MEDIUM_PERFECT_MATCH },
238+ { DRIVE_GEN_LTOA , TC_MP_LTOPAD_CART , TC_DC_UNKNOWN , MEDIUM_PERFECT_MATCH },
239+
229240 /* LTO9 */
230241 { DRIVE_GEN_LTO9 , TC_MP_LTO9D_CART , TC_DC_LTO9 , MEDIUM_PERFECT_MATCH },
231242 { DRIVE_GEN_LTO9 , TC_MP_LTO9D_CART , TC_DC_UNKNOWN , MEDIUM_PERFECT_MATCH },
@@ -249,6 +260,8 @@ DRIVE_DENSITY_SUPPORT_MAP lto_drive_density_strict[] = {
249260};
250261
251262const unsigned char supported_cart [] = {
263+ TC_MP_LTOPAD_CART ,
264+ TC_MP_LTOAD_CART ,
252265 TC_MP_LTO9D_CART ,
253266 TC_MP_LTO8D_CART ,
254267 TC_MP_LTO7D_CART ,
@@ -278,6 +291,8 @@ const unsigned char supported_density[] = {
278291 TC_DC_JAG5A ,
279292 TC_DC_JAG5 ,
280293 TC_DC_JAG4 ,
294+ TC_DC_LTOPA ,
295+ TC_DC_LTOA ,
281296 TC_DC_LTO9 ,
282297 TC_DC_LTO8 ,
283298 TC_DC_LTOM8 ,
@@ -319,6 +334,10 @@ struct supported_device *ibm_supported_drives[] = {
319334 TAPEDRIVE ( IBM_VENDOR_ID , "ULTRIUM-HH9" , DRIVE_LTO9_HH , "[ULTRIUM-HH9]" ), /* IBM Ultrium Gen 9 Half-High */
320335 TAPEDRIVE ( IBM_VENDOR_ID , "ULT3580-HH9" , DRIVE_LTO9_HH , "[ULT3580-HH9]" ), /* IBM Ultrium Gen 9 Half-High */
321336 TAPEDRIVE ( IBM_VENDOR_ID , "HH LTO Gen 9" , DRIVE_LTO9_HH , "[HH LTO Gen 9]" ), /* IBM Ultrium Gen 9 Half-High */
337+ TAPEDRIVE ( IBM_VENDOR_ID , "ULTRIUM-TDA" , DRIVE_LTOA , "[ULTRIUM-TDA]" ), /* IBM Ultrium Gen A */
338+ TAPEDRIVE ( IBM_VENDOR_ID , "ULT3580-TDA" , DRIVE_LTOA , "[ULT3580-TDA]" ), /* IBM Ultrium Gen A */
339+ TAPEDRIVE ( IBM_VENDOR_ID , "ULTRIUM-HHA" , DRIVE_LTOA_HH , "[ULTRIUM-HHA]" ), /* IBM Ultrium Gen A Half-High */
340+ TAPEDRIVE ( IBM_VENDOR_ID , "ULT3580-HHA" , DRIVE_LTOA_HH , "[ULT3580-HHA]" ), /* IBM Ultrium Gen A Half-High */
322341 TAPEDRIVE ( IBM_VENDOR_ID , "03592E07" , DRIVE_TS1140 , "[03592E07]" ), /* IBM TS1140 */
323342 TAPEDRIVE ( IBM_VENDOR_ID , "03592E08" , DRIVE_TS1150 , "[03592E08]" ), /* IBM TS1150 */
324343 TAPEDRIVE ( IBM_VENDOR_ID , "0359255F" , DRIVE_TS1155 , "[0359255F]" ), /* IBM TS1155 */
@@ -348,6 +367,9 @@ struct supported_device *usb_supported_drives[] = {
348367 TAPEDRIVE ( IBM_VENDOR_ID , "ULT3580-TD9" , DRIVE_LTO9 , "[ULT3580-TD9]" ), /* IBM Ultrium Gen 9 */
349368 TAPEDRIVE ( IBM_VENDOR_ID , "ULTRIUM-HH9" , DRIVE_LTO9_HH , "[ULTRIUM-HH9]" ), /* IBM Ultrium Gen 9 Half-High */
350369 TAPEDRIVE ( IBM_VENDOR_ID , "ULT3580-HH9" , DRIVE_LTO9_HH , "[ULT3580-HH9]" ), /* IBM Ultrium Gen 9 Half-High */
370+ TAPEDRIVE ( IBM_VENDOR_ID , "ULT3580-TDA" , DRIVE_LTOA , "[ULT3580-TDA]" ), /* IBM Ultrium Gen A */
371+ TAPEDRIVE ( IBM_VENDOR_ID , "ULTRIUM-HHA" , DRIVE_LTOA_HH , "[ULTRIUM-HHA]" ), /* IBM Ultrium Gen A */
372+ TAPEDRIVE ( IBM_VENDOR_ID , "ULT3580-HHA" , DRIVE_LTOA_HH , "[ULT3580-HHA]" ), /* IBM Ultrium Gen A Half-High */
351373 /* End of supported_devices */
352374 NULL
353375};
@@ -589,6 +611,26 @@ static struct _timeout_tape timeout_lto9[] = {
589611 {-1 , -1 }
590612};
591613
614+ static struct _timeout_tape timeout_ltoA [] = {
615+ { ERASE , 16320 },
616+ { FORMAT_MEDIUM , 3180 },
617+ { LOAD_UNLOAD , 780 },
618+ { LOCATE10 , 2940 },
619+ { LOCATE16 , 2940 },
620+ { READ , 2340 },
621+ { READ_BUFFER , 480 },
622+ { REWIND , 600 },
623+ { SEND_DIAGNOSTIC , 1980 },
624+ { SET_CAPACITY , 780 },
625+ { SPACE6 , 2940 },
626+ { SPACE16 , 2940 },
627+ { VERIFY , 104880 },
628+ { WRITE , 1500 },
629+ { WRITE_BUFFER , 540 },
630+ { WRITE_FILEMARKS6 , 1620 },
631+ {-1 , -1 }
632+ };
633+
592634static struct _timeout_tape timeout_lto5_hh [] = {
593635 { ERASE , 19200 },
594636 { FORMAT_MEDIUM , 1980 },
@@ -689,6 +731,26 @@ static struct _timeout_tape timeout_lto9_hh[] = {
689731 {-1 , -1 }
690732};
691733
734+ static struct _timeout_tape timeout_ltoA_hh [] = {
735+ { ERASE , 166370 },
736+ { FORMAT_MEDIUM , 3240 },
737+ { LOAD_UNLOAD , 960 },
738+ { LOCATE10 , 3940 },
739+ { LOCATE16 , 3940 },
740+ { READ , 2340 },
741+ { READ_BUFFER , 480 },
742+ { REWIND , 600 },
743+ { SEND_DIAGNOSTIC , 2040 },
744+ { SET_CAPACITY , 960 },
745+ { SPACE6 , 3940 },
746+ { SPACE16 , 3940 },
747+ { VERIFY , 63300 },
748+ { WRITE , 1560 },
749+ { WRITE_BUFFER , 540 },
750+ { WRITE_FILEMARKS6 , 1680 },
751+ {-1 , -1 }
752+ };
753+
692754static struct _timeout_tape timeout_11x0 [] = {
693755 { CHANGE_DEFINITION , 30 },
694756 { INQUIRY , 30 },
@@ -903,6 +965,12 @@ int ibm_tape_init_timeout(struct timeout_tape** table, int type)
903965 case DRIVE_LTO9_HH :
904966 ret = _create_table_tape (table , timeout_lto , timeout_lto9_hh );
905967 break ;
968+ case DRIVE_LTOA :
969+ ret = _create_table_tape (table , timeout_lto , timeout_ltoA );
970+ break ;
971+ case DRIVE_LTOA_HH :
972+ ret = _create_table_tape (table , timeout_lto , timeout_ltoA_hh );
973+ break ;
906974 case DRIVE_TS1140 :
907975 ret = _create_table_tape (table , timeout_11x0 , timeout_1140 );
908976 break ;
@@ -989,6 +1057,9 @@ static inline unsigned char _assume_cartridge_type(char product, char btype)
9891057 case '9' :
9901058 ctype = TC_MP_LTO9D_CART ;
9911059 break ;
1060+ case 'A' :
1061+ ctype = TC_MP_LTOAD_CART ;
1062+ break ;
9921063 default :
9931064 break ;
9941065 }
@@ -1001,6 +1072,15 @@ static inline unsigned char _assume_cartridge_type(char product, char btype)
10011072 break ;
10021073 }
10031074 }
1075+ else if (product == 'P' ) {
1076+ switch (btype ) {
1077+ case 'A' :
1078+ ctype = TC_MP_LTOPAD_CART ;
1079+ break ;
1080+ default :
1081+ break ;
1082+ }
1083+ }
10041084
10051085 return ctype ;
10061086}
@@ -1039,6 +1119,12 @@ char* ibm_tape_assume_cart_name(unsigned char type)
10391119 case TC_MP_LTO9D_CART :
10401120 name = "L9" ;
10411121 break ;
1122+ case TC_MP_LTOAD_CART :
1123+ name = "LA" ;
1124+ break ;
1125+ case TC_MP_LTOPAD_CART :
1126+ name = "PA" ;
1127+ break ;
10421128 case TC_MP_JB :
10431129 name = "JB" ;
10441130 break ;
0 commit comments