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