3333struct card_data {
3434 snd_ctl_t * handle ;
3535 int card ;
36+ snd_ctl_card_info_t * info ;
37+ const char * card_name ;
3638 struct pollfd pollfd ;
3739 int num_ctls ;
3840 snd_ctl_elem_list_t * ctls ;
@@ -91,8 +93,26 @@ static void find_controls(void)
9193 err = snd_card_get_longname (card , & card_longname );
9294 if (err != 0 )
9395 card_longname = "Unknown" ;
94- ksft_print_msg ("Card %d - %s (%s)\n" , card ,
95- card_name , card_longname );
96+
97+ err = snd_ctl_card_info_malloc (& card_data -> info );
98+ if (err != 0 )
99+ ksft_exit_fail_msg ("Failed to allocate card info: %d\n" ,
100+ err );
101+
102+ err = snd_ctl_card_info (card_data -> handle , card_data -> info );
103+ if (err == 0 ) {
104+ card_data -> card_name = snd_ctl_card_info_get_id (card_data -> info );
105+ if (!card_data -> card_name )
106+ ksft_print_msg ("Failed to get card ID\n" );
107+ } else {
108+ ksft_print_msg ("Failed to get card info: %d\n" , err );
109+ }
110+
111+ if (!card_data -> card_name )
112+ card_data -> card_name = "Unknown" ;
113+
114+ ksft_print_msg ("Card %d/%s - %s (%s)\n" , card ,
115+ card_data -> card_name , card_name , card_longname );
96116
97117 /* Count controls */
98118 snd_ctl_elem_list_malloc (& card_data -> ctls );
@@ -389,16 +409,16 @@ static void test_ctl_get_value(struct ctl_data *ctl)
389409 /* If the control is turned off let's be polite */
390410 if (snd_ctl_elem_info_is_inactive (ctl -> info )) {
391411 ksft_print_msg ("%s is inactive\n" , ctl -> name );
392- ksft_test_result_skip ("get_value.%d .%d\n" ,
393- ctl -> card -> card , ctl -> elem );
412+ ksft_test_result_skip ("get_value.%s .%d\n" ,
413+ ctl -> card -> card_name , ctl -> elem );
394414 return ;
395415 }
396416
397417 /* Can't test reading on an unreadable control */
398418 if (!snd_ctl_elem_info_is_readable (ctl -> info )) {
399419 ksft_print_msg ("%s is not readable\n" , ctl -> name );
400- ksft_test_result_skip ("get_value.%d .%d\n" ,
401- ctl -> card -> card , ctl -> elem );
420+ ksft_test_result_skip ("get_value.%s .%d\n" ,
421+ ctl -> card -> card_name , ctl -> elem );
402422 return ;
403423 }
404424
@@ -413,8 +433,8 @@ static void test_ctl_get_value(struct ctl_data *ctl)
413433 err = - EINVAL ;
414434
415435out :
416- ksft_test_result (err >= 0 , "get_value.%d .%d\n" ,
417- ctl -> card -> card , ctl -> elem );
436+ ksft_test_result (err >= 0 , "get_value.%s .%d\n" ,
437+ ctl -> card -> card_name , ctl -> elem );
418438}
419439
420440static bool strend (const char * haystack , const char * needle )
@@ -431,7 +451,7 @@ static void test_ctl_name(struct ctl_data *ctl)
431451{
432452 bool name_ok = true;
433453
434- ksft_print_msg ("%d .%d %s\n" , ctl -> card -> card , ctl -> elem ,
454+ ksft_print_msg ("%s .%d %s\n" , ctl -> card -> card_name , ctl -> elem ,
435455 ctl -> name );
436456
437457 /* Only boolean controls should end in Switch */
@@ -453,8 +473,8 @@ static void test_ctl_name(struct ctl_data *ctl)
453473 }
454474 }
455475
456- ksft_test_result (name_ok , "name.%d .%d\n" ,
457- ctl -> card -> card , ctl -> elem );
476+ ksft_test_result (name_ok , "name.%s .%d\n" ,
477+ ctl -> card -> card_name , ctl -> elem );
458478}
459479
460480static void show_values (struct ctl_data * ctl , snd_ctl_elem_value_t * orig_val ,
@@ -695,30 +715,30 @@ static void test_ctl_write_default(struct ctl_data *ctl)
695715 /* If the control is turned off let's be polite */
696716 if (snd_ctl_elem_info_is_inactive (ctl -> info )) {
697717 ksft_print_msg ("%s is inactive\n" , ctl -> name );
698- ksft_test_result_skip ("write_default.%d .%d\n" ,
699- ctl -> card -> card , ctl -> elem );
718+ ksft_test_result_skip ("write_default.%s .%d\n" ,
719+ ctl -> card -> card_name , ctl -> elem );
700720 return ;
701721 }
702722
703723 if (!snd_ctl_elem_info_is_writable (ctl -> info )) {
704724 ksft_print_msg ("%s is not writeable\n" , ctl -> name );
705- ksft_test_result_skip ("write_default.%d .%d\n" ,
706- ctl -> card -> card , ctl -> elem );
725+ ksft_test_result_skip ("write_default.%s .%d\n" ,
726+ ctl -> card -> card_name , ctl -> elem );
707727 return ;
708728 }
709729
710730 /* No idea what the default was for unreadable controls */
711731 if (!snd_ctl_elem_info_is_readable (ctl -> info )) {
712732 ksft_print_msg ("%s couldn't read default\n" , ctl -> name );
713- ksft_test_result_skip ("write_default.%d .%d\n" ,
714- ctl -> card -> card , ctl -> elem );
733+ ksft_test_result_skip ("write_default.%s .%d\n" ,
734+ ctl -> card -> card_name , ctl -> elem );
715735 return ;
716736 }
717737
718738 err = write_and_verify (ctl , ctl -> def_val , NULL );
719739
720- ksft_test_result (err >= 0 , "write_default.%d .%d\n" ,
721- ctl -> card -> card , ctl -> elem );
740+ ksft_test_result (err >= 0 , "write_default.%s .%d\n" ,
741+ ctl -> card -> card_name , ctl -> elem );
722742}
723743
724744static bool test_ctl_write_valid_boolean (struct ctl_data * ctl )
@@ -828,15 +848,15 @@ static void test_ctl_write_valid(struct ctl_data *ctl)
828848 /* If the control is turned off let's be polite */
829849 if (snd_ctl_elem_info_is_inactive (ctl -> info )) {
830850 ksft_print_msg ("%s is inactive\n" , ctl -> name );
831- ksft_test_result_skip ("write_valid.%d .%d\n" ,
832- ctl -> card -> card , ctl -> elem );
851+ ksft_test_result_skip ("write_valid.%s .%d\n" ,
852+ ctl -> card -> card_name , ctl -> elem );
833853 return ;
834854 }
835855
836856 if (!snd_ctl_elem_info_is_writable (ctl -> info )) {
837857 ksft_print_msg ("%s is not writeable\n" , ctl -> name );
838- ksft_test_result_skip ("write_valid.%d .%d\n" ,
839- ctl -> card -> card , ctl -> elem );
858+ ksft_test_result_skip ("write_valid.%s .%d\n" ,
859+ ctl -> card -> card_name , ctl -> elem );
840860 return ;
841861 }
842862
@@ -859,16 +879,16 @@ static void test_ctl_write_valid(struct ctl_data *ctl)
859879
860880 default :
861881 /* No tests for this yet */
862- ksft_test_result_skip ("write_valid.%d .%d\n" ,
863- ctl -> card -> card , ctl -> elem );
882+ ksft_test_result_skip ("write_valid.%s .%d\n" ,
883+ ctl -> card -> card_name , ctl -> elem );
864884 return ;
865885 }
866886
867887 /* Restore the default value to minimise disruption */
868888 write_and_verify (ctl , ctl -> def_val , NULL );
869889
870- ksft_test_result (pass , "write_valid.%d .%d\n" ,
871- ctl -> card -> card , ctl -> elem );
890+ ksft_test_result (pass , "write_valid.%s .%d\n" ,
891+ ctl -> card -> card_name , ctl -> elem );
872892}
873893
874894static bool test_ctl_write_invalid_value (struct ctl_data * ctl ,
@@ -1040,15 +1060,15 @@ static void test_ctl_write_invalid(struct ctl_data *ctl)
10401060 /* If the control is turned off let's be polite */
10411061 if (snd_ctl_elem_info_is_inactive (ctl -> info )) {
10421062 ksft_print_msg ("%s is inactive\n" , ctl -> name );
1043- ksft_test_result_skip ("write_invalid.%d .%d\n" ,
1044- ctl -> card -> card , ctl -> elem );
1063+ ksft_test_result_skip ("write_invalid.%s .%d\n" ,
1064+ ctl -> card -> card_name , ctl -> elem );
10451065 return ;
10461066 }
10471067
10481068 if (!snd_ctl_elem_info_is_writable (ctl -> info )) {
10491069 ksft_print_msg ("%s is not writeable\n" , ctl -> name );
1050- ksft_test_result_skip ("write_invalid.%d .%d\n" ,
1051- ctl -> card -> card , ctl -> elem );
1070+ ksft_test_result_skip ("write_invalid.%s .%d\n" ,
1071+ ctl -> card -> card_name , ctl -> elem );
10521072 return ;
10531073 }
10541074
@@ -1071,28 +1091,28 @@ static void test_ctl_write_invalid(struct ctl_data *ctl)
10711091
10721092 default :
10731093 /* No tests for this yet */
1074- ksft_test_result_skip ("write_invalid.%d .%d\n" ,
1075- ctl -> card -> card , ctl -> elem );
1094+ ksft_test_result_skip ("write_invalid.%s .%d\n" ,
1095+ ctl -> card -> card_name , ctl -> elem );
10761096 return ;
10771097 }
10781098
10791099 /* Restore the default value to minimise disruption */
10801100 write_and_verify (ctl , ctl -> def_val , NULL );
10811101
1082- ksft_test_result (pass , "write_invalid.%d .%d\n" ,
1083- ctl -> card -> card , ctl -> elem );
1102+ ksft_test_result (pass , "write_invalid.%s .%d\n" ,
1103+ ctl -> card -> card_name , ctl -> elem );
10841104}
10851105
10861106static void test_ctl_event_missing (struct ctl_data * ctl )
10871107{
1088- ksft_test_result (!ctl -> event_missing , "event_missing.%d .%d\n" ,
1089- ctl -> card -> card , ctl -> elem );
1108+ ksft_test_result (!ctl -> event_missing , "event_missing.%s .%d\n" ,
1109+ ctl -> card -> card_name , ctl -> elem );
10901110}
10911111
10921112static void test_ctl_event_spurious (struct ctl_data * ctl )
10931113{
1094- ksft_test_result (!ctl -> event_spurious , "event_spurious.%d .%d\n" ,
1095- ctl -> card -> card , ctl -> elem );
1114+ ksft_test_result (!ctl -> event_spurious , "event_spurious.%s .%d\n" ,
1115+ ctl -> card -> card_name , ctl -> elem );
10961116}
10971117
10981118int main (void )
0 commit comments