32
32
33
33
struct pcmidi_snd ;
34
34
35
- struct pk_device {
36
- unsigned long quirks ;
37
-
38
- struct hid_device * hdev ;
39
- struct pcmidi_snd * pm ; /* pcmidi device context */
40
- };
41
-
42
35
struct pcmidi_sustain {
43
36
unsigned long in_use ;
44
37
struct pcmidi_snd * pm ;
@@ -50,7 +43,7 @@ struct pcmidi_sustain {
50
43
51
44
#define PCMIDI_SUSTAINED_MAX 32
52
45
struct pcmidi_snd {
53
- struct pk_device * pk ;
46
+ struct hid_device * hdev ;
54
47
unsigned short ifnum ;
55
48
struct hid_report * pcmidi_report6 ;
56
49
struct input_dev * input_ep82 ;
@@ -66,9 +59,7 @@ struct pcmidi_snd {
66
59
struct snd_card * card ;
67
60
struct snd_rawmidi * rwmidi ;
68
61
struct snd_rawmidi_substream * in_substream ;
69
- struct snd_rawmidi_substream * out_substream ;
70
62
unsigned long in_triggered ;
71
- unsigned long out_active ;
72
63
};
73
64
74
65
#define PK_QUIRK_NOGET 0x00010000
@@ -100,11 +91,11 @@ static ssize_t show_channel(struct device *dev,
100
91
struct device_attribute * attr , char * buf )
101
92
{
102
93
struct hid_device * hdev = to_hid_device (dev );
103
- struct pk_device * pk = hid_get_drvdata (hdev );
94
+ struct pcmidi_snd * pm = hid_get_drvdata (hdev );
104
95
105
- dbg_hid ("pcmidi sysfs read channel=%u\n" , pk -> pm -> midi_channel );
96
+ dbg_hid ("pcmidi sysfs read channel=%u\n" , pm -> midi_channel );
106
97
107
- return sprintf (buf , "%u (min:%u, max:%u)\n" , pk -> pm -> midi_channel ,
98
+ return sprintf (buf , "%u (min:%u, max:%u)\n" , pm -> midi_channel ,
108
99
PCMIDI_CHANNEL_MIN , PCMIDI_CHANNEL_MAX );
109
100
}
110
101
@@ -113,13 +104,13 @@ static ssize_t store_channel(struct device *dev,
113
104
struct device_attribute * attr , const char * buf , size_t count )
114
105
{
115
106
struct hid_device * hdev = to_hid_device (dev );
116
- struct pk_device * pk = hid_get_drvdata (hdev );
107
+ struct pcmidi_snd * pm = hid_get_drvdata (hdev );
117
108
118
109
unsigned channel = 0 ;
119
110
120
111
if (sscanf (buf , "%u" , & channel ) > 0 && channel <= PCMIDI_CHANNEL_MAX ) {
121
112
dbg_hid ("pcmidi sysfs write channel=%u\n" , channel );
122
- pk -> pm -> midi_channel = channel ;
113
+ pm -> midi_channel = channel ;
123
114
return strlen (buf );
124
115
}
125
116
return - EINVAL ;
@@ -137,11 +128,11 @@ static ssize_t show_sustain(struct device *dev,
137
128
struct device_attribute * attr , char * buf )
138
129
{
139
130
struct hid_device * hdev = to_hid_device (dev );
140
- struct pk_device * pk = hid_get_drvdata (hdev );
131
+ struct pcmidi_snd * pm = hid_get_drvdata (hdev );
141
132
142
- dbg_hid ("pcmidi sysfs read sustain=%u\n" , pk -> pm -> midi_sustain );
133
+ dbg_hid ("pcmidi sysfs read sustain=%u\n" , pm -> midi_sustain );
143
134
144
- return sprintf (buf , "%u (off:%u, max:%u (ms))\n" , pk -> pm -> midi_sustain ,
135
+ return sprintf (buf , "%u (off:%u, max:%u (ms))\n" , pm -> midi_sustain ,
145
136
PCMIDI_SUSTAIN_MIN , PCMIDI_SUSTAIN_MAX );
146
137
}
147
138
@@ -150,15 +141,14 @@ static ssize_t store_sustain(struct device *dev,
150
141
struct device_attribute * attr , const char * buf , size_t count )
151
142
{
152
143
struct hid_device * hdev = to_hid_device (dev );
153
- struct pk_device * pk = hid_get_drvdata (hdev );
144
+ struct pcmidi_snd * pm = hid_get_drvdata (hdev );
154
145
155
146
unsigned sustain = 0 ;
156
147
157
148
if (sscanf (buf , "%u" , & sustain ) > 0 && sustain <= PCMIDI_SUSTAIN_MAX ) {
158
149
dbg_hid ("pcmidi sysfs write sustain=%u\n" , sustain );
159
- pk -> pm -> midi_sustain = sustain ;
160
- pk -> pm -> midi_sustain_mode =
161
- (0 == sustain || !pk -> pm -> midi_mode ) ? 0 : 1 ;
150
+ pm -> midi_sustain = sustain ;
151
+ pm -> midi_sustain_mode = (0 == sustain || !pm -> midi_mode ) ? 0 : 1 ;
162
152
return strlen (buf );
163
153
}
164
154
return - EINVAL ;
@@ -176,11 +166,11 @@ static ssize_t show_octave(struct device *dev,
176
166
struct device_attribute * attr , char * buf )
177
167
{
178
168
struct hid_device * hdev = to_hid_device (dev );
179
- struct pk_device * pk = hid_get_drvdata (hdev );
169
+ struct pcmidi_snd * pm = hid_get_drvdata (hdev );
180
170
181
- dbg_hid ("pcmidi sysfs read octave=%d\n" , pk -> pm -> midi_octave );
171
+ dbg_hid ("pcmidi sysfs read octave=%d\n" , pm -> midi_octave );
182
172
183
- return sprintf (buf , "%d (min:%d, max:%d)\n" , pk -> pm -> midi_octave ,
173
+ return sprintf (buf , "%d (min:%d, max:%d)\n" , pm -> midi_octave ,
184
174
PCMIDI_OCTAVE_MIN , PCMIDI_OCTAVE_MAX );
185
175
}
186
176
@@ -189,14 +179,14 @@ static ssize_t store_octave(struct device *dev,
189
179
struct device_attribute * attr , const char * buf , size_t count )
190
180
{
191
181
struct hid_device * hdev = to_hid_device (dev );
192
- struct pk_device * pk = hid_get_drvdata (hdev );
182
+ struct pcmidi_snd * pm = hid_get_drvdata (hdev );
193
183
194
184
int octave = 0 ;
195
185
196
186
if (sscanf (buf , "%d" , & octave ) > 0 &&
197
187
octave >= PCMIDI_OCTAVE_MIN && octave <= PCMIDI_OCTAVE_MAX ) {
198
188
dbg_hid ("pcmidi sysfs write octave=%d\n" , octave );
199
- pk -> pm -> midi_octave = octave ;
189
+ pm -> midi_octave = octave ;
200
190
return strlen (buf );
201
191
}
202
192
return - EINVAL ;
@@ -270,7 +260,7 @@ static void stop_sustain_timers(struct pcmidi_snd *pm)
270
260
271
261
static int pcmidi_get_output_report (struct pcmidi_snd * pm )
272
262
{
273
- struct hid_device * hdev = pm -> pk -> hdev ;
263
+ struct hid_device * hdev = pm -> hdev ;
274
264
struct hid_report * report ;
275
265
276
266
list_for_each_entry (report ,
@@ -295,7 +285,7 @@ static int pcmidi_get_output_report(struct pcmidi_snd *pm)
295
285
296
286
static void pcmidi_submit_output_report (struct pcmidi_snd * pm , int state )
297
287
{
298
- struct hid_device * hdev = pm -> pk -> hdev ;
288
+ struct hid_device * hdev = pm -> hdev ;
299
289
struct hid_report * report = pm -> pcmidi_report6 ;
300
290
report -> field [0 ]-> value [0 ] = 0x01 ;
301
291
report -> field [0 ]-> value [1 ] = state ;
@@ -622,7 +612,7 @@ static int pcmidi_snd_initialise(struct pcmidi_snd *pm)
622
612
623
613
/* Setup sound card */
624
614
625
- err = snd_card_new (& pm -> pk -> hdev -> dev , index [dev ], id [dev ],
615
+ err = snd_card_new (& pm -> hdev -> dev , index [dev ], id [dev ],
626
616
THIS_MODULE , 0 , & card );
627
617
if (err < 0 ) {
628
618
pk_error ("failed to create pc-midi sound card\n" );
@@ -660,23 +650,23 @@ static int pcmidi_snd_initialise(struct pcmidi_snd *pm)
660
650
& pcmidi_in_ops );
661
651
662
652
/* create sysfs variables */
663
- err = device_create_file (& pm -> pk -> hdev -> dev ,
653
+ err = device_create_file (& pm -> hdev -> dev ,
664
654
sysfs_device_attr_channel );
665
655
if (err < 0 ) {
666
656
pk_error ("failed to create sysfs attribute channel: error %d\n" ,
667
657
err );
668
658
goto fail ;
669
659
}
670
660
671
- err = device_create_file (& pm -> pk -> hdev -> dev ,
661
+ err = device_create_file (& pm -> hdev -> dev ,
672
662
sysfs_device_attr_sustain );
673
663
if (err < 0 ) {
674
664
pk_error ("failed to create sysfs attribute sustain: error %d\n" ,
675
665
err );
676
666
goto fail_attr_sustain ;
677
667
}
678
668
679
- err = device_create_file (& pm -> pk -> hdev -> dev ,
669
+ err = device_create_file (& pm -> hdev -> dev ,
680
670
sysfs_device_attr_octave );
681
671
if (err < 0 ) {
682
672
pk_error ("failed to create sysfs attribute octave: error %d\n" ,
@@ -706,11 +696,11 @@ static int pcmidi_snd_initialise(struct pcmidi_snd *pm)
706
696
707
697
fail_register :
708
698
stop_sustain_timers (pm );
709
- device_remove_file (& pm -> pk -> hdev -> dev , sysfs_device_attr_octave );
699
+ device_remove_file (& pm -> hdev -> dev , sysfs_device_attr_octave );
710
700
fail_attr_octave :
711
- device_remove_file (& pm -> pk -> hdev -> dev , sysfs_device_attr_sustain );
701
+ device_remove_file (& pm -> hdev -> dev , sysfs_device_attr_sustain );
712
702
fail_attr_sustain :
713
- device_remove_file (& pm -> pk -> hdev -> dev , sysfs_device_attr_channel );
703
+ device_remove_file (& pm -> hdev -> dev , sysfs_device_attr_channel );
714
704
fail :
715
705
if (pm -> card ) {
716
706
snd_card_free (pm -> card );
@@ -724,12 +714,9 @@ static int pcmidi_snd_terminate(struct pcmidi_snd *pm)
724
714
if (pm -> card ) {
725
715
stop_sustain_timers (pm );
726
716
727
- device_remove_file (& pm -> pk -> hdev -> dev ,
728
- sysfs_device_attr_channel );
729
- device_remove_file (& pm -> pk -> hdev -> dev ,
730
- sysfs_device_attr_sustain );
731
- device_remove_file (& pm -> pk -> hdev -> dev ,
732
- sysfs_device_attr_octave );
717
+ device_remove_file (& pm -> hdev -> dev , sysfs_device_attr_channel );
718
+ device_remove_file (& pm -> hdev -> dev , sysfs_device_attr_sustain );
719
+ device_remove_file (& pm -> hdev -> dev , sysfs_device_attr_octave );
733
720
734
721
snd_card_disconnect (pm -> card );
735
722
snd_card_free_when_closed (pm -> card );
@@ -759,10 +746,7 @@ static int pk_input_mapping(struct hid_device *hdev, struct hid_input *hi,
759
746
struct hid_field * field , struct hid_usage * usage ,
760
747
unsigned long * * bit , int * max )
761
748
{
762
- struct pk_device * pk = hid_get_drvdata (hdev );
763
- struct pcmidi_snd * pm ;
764
-
765
- pm = pk -> pm ;
749
+ struct pcmidi_snd * pm = hid_get_drvdata (hdev );
766
750
767
751
if (HID_UP_MSVENDOR == (usage -> hid & HID_USAGE_PAGE ) &&
768
752
1 == pm -> ifnum ) {
@@ -777,16 +761,16 @@ static int pk_input_mapping(struct hid_device *hdev, struct hid_input *hi,
777
761
static int pk_raw_event (struct hid_device * hdev , struct hid_report * report ,
778
762
u8 * data , int size )
779
763
{
780
- struct pk_device * pk = hid_get_drvdata (hdev );
764
+ struct pcmidi_snd * pm = hid_get_drvdata (hdev );
781
765
int ret = 0 ;
782
766
783
- if (1 == pk -> pm -> ifnum ) {
767
+ if (1 == pm -> ifnum ) {
784
768
if (report -> id == data [0 ])
785
769
switch (report -> id ) {
786
770
case 0x01 : /* midi keys (qwerty)*/
787
771
case 0x03 : /* midi keyboard (musical)*/
788
772
case 0x04 : /* extra/midi keys (qwerty)*/
789
- ret = pcmidi_handle_report (pk -> pm ,
773
+ ret = pcmidi_handle_report (pm ,
790
774
report -> id , data , size );
791
775
break ;
792
776
}
@@ -801,35 +785,24 @@ static int pk_probe(struct hid_device *hdev, const struct hid_device_id *id)
801
785
struct usb_interface * intf ;
802
786
unsigned short ifnum ;
803
787
unsigned long quirks = id -> driver_data ;
804
- struct pk_device * pk ;
805
- struct pcmidi_snd * pm = NULL ;
788
+ struct pcmidi_snd * pm ;
806
789
807
790
if (!hid_is_usb (hdev ))
808
791
return - EINVAL ;
809
792
810
793
intf = to_usb_interface (hdev -> dev .parent );
811
794
ifnum = intf -> cur_altsetting -> desc .bInterfaceNumber ;
812
795
813
- pk = kzalloc (sizeof (* pk ), GFP_KERNEL );
814
- if (pk == NULL ) {
815
- hid_err (hdev , "can't alloc descriptor\n" );
816
- return - ENOMEM ;
817
- }
818
-
819
- pk -> hdev = hdev ;
820
-
821
796
pm = kzalloc (sizeof (* pm ), GFP_KERNEL );
822
797
if (pm == NULL ) {
823
798
hid_err (hdev , "can't alloc descriptor\n" );
824
- ret = - ENOMEM ;
825
- goto err_free_pk ;
799
+ return - ENOMEM ;
826
800
}
827
801
828
- pm -> pk = pk ;
829
- pk -> pm = pm ;
802
+ pm -> hdev = hdev ;
830
803
pm -> ifnum = ifnum ;
831
804
832
- hid_set_drvdata (hdev , pk );
805
+ hid_set_drvdata (hdev , pm );
833
806
834
807
ret = hid_parse (hdev );
835
808
if (ret ) {
@@ -856,26 +829,18 @@ static int pk_probe(struct hid_device *hdev, const struct hid_device_id *id)
856
829
hid_hw_stop (hdev );
857
830
err_free :
858
831
kfree (pm );
859
- err_free_pk :
860
- kfree (pk );
861
832
862
833
return ret ;
863
834
}
864
835
865
836
static void pk_remove (struct hid_device * hdev )
866
837
{
867
- struct pk_device * pk = hid_get_drvdata (hdev );
868
- struct pcmidi_snd * pm ;
869
-
870
- pm = pk -> pm ;
871
- if (pm ) {
872
- pcmidi_snd_terminate (pm );
873
- kfree (pm );
874
- }
838
+ struct pcmidi_snd * pm = hid_get_drvdata (hdev );
875
839
840
+ pcmidi_snd_terminate (pm );
876
841
hid_hw_stop (hdev );
877
842
878
- kfree (pk );
843
+ kfree (pm );
879
844
}
880
845
881
846
static const struct hid_device_id pk_devices [] = {
0 commit comments