Hi Arnd,

I love your patch! Perhaps something to improve:

[auto build test WARNING on v4.17-rc2]
[cannot apply to sound/for-next asoc/for-next arm-soc/for-next next-20180426]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Baolin-Wang/Fix-year-2038-issue-for-sound-subsystem/20180426-010145
reproduce:
        # apt-get install sparse
        make ARCH=x86_64 allmodconfig
        make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)

   sound/firewire/motu/motu-pcm.c:35:29: sparse: expression using sizeof(void)
   sound/firewire/motu/motu-pcm.c:35:29: sparse: expression using sizeof(void)
   sound/firewire/motu/motu-pcm.c:36:29: sparse: expression using sizeof(void)
   sound/firewire/motu/motu-pcm.c:36:29: sparse: expression using sizeof(void)
   sound/firewire/motu/motu-pcm.c:65:32: sparse: expression using sizeof(void)
   sound/firewire/motu/motu-pcm.c:65:32: sparse: expression using sizeof(void)
   sound/firewire/motu/motu-pcm.c:66:32: sparse: expression using sizeof(void)
   sound/firewire/motu/motu-pcm.c:66:32: sparse: expression using sizeof(void)
   sound/firewire/motu/motu-pcm.c:92:36: sparse: expression using sizeof(void)
   sound/firewire/motu/motu-pcm.c:92:36: sparse: expression using sizeof(void)
   sound/firewire/motu/motu-pcm.c:93:36: sparse: expression using sizeof(void)
   sound/firewire/motu/motu-pcm.c:93:36: sparse: expression using sizeof(void)
>> sound/firewire/motu/motu-pcm.c:204:50: sparse: restricted snd_pcm_state_t 
>> degrades to integer
   sound/firewire/motu/motu-pcm.c:223:50: sparse: restricted snd_pcm_state_t 
degrades to integer
   sound/firewire/motu/motu-pcm.c:238:50: sparse: restricted snd_pcm_state_t 
degrades to integer
   sound/firewire/motu/motu-pcm.c:254:50: sparse: restricted snd_pcm_state_t 
degrades to integer
--
   include/sound/pcm.h:676:54: sparse: restricted snd_pcm_state_t degrades to 
integer
   include/sound/pcm.h:677:55: sparse: restricted snd_pcm_state_t degrades to 
integer
>> sound/core/pcm.c:1169:67: sparse: incorrect type in assignment (different 
>> base types) @@    expected signed int [signed] [usertype] 
>> [explicitly-signed] state @@    got igned] [usertype] [explicitly-signed] 
>> state @@
   sound/core/pcm.c:1169:67:    expected signed int [signed] [usertype] 
[explicitly-signed] state
   sound/core/pcm.c:1169:67:    got restricted snd_pcm_state_t [usertype] 
<noident>
>> sound/core/pcm.c:401:39: sparse: restricted snd_pcm_state_t degrades to 
>> integer
   sound/core/pcm.c:438:39: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm.c:499:50: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm.c:1032:32: sparse: incorrect type in assignment (different 
base types) @@    expected signed int [signed] [usertype] [explicitly-signed] 
state @@    got igned] [usertype] [explicitly-signed] state @@
   sound/core/pcm.c:1032:32:    expected signed int [signed] [usertype] 
[explicitly-signed] state
   sound/core/pcm.c:1032:32:    got restricted snd_pcm_state_t [usertype] 
<noident>
   sound/core/pcm.c:1064:9: sparse: context imbalance in 
'snd_pcm_detach_substream' - different lock contexts for basic block
--
   sound/core/pcm_native.c:561:50: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:653:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:654:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:655:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:727:38: sparse: incorrect type in argument 2 
(different base types) @@    expected int [signed] state @@    got restricted 
snd_pcm_state_int [signed] state @@
   sound/core/pcm_native.c:727:38:    expected int [signed] state
   sound/core/pcm_native.c:727:38:    got restricted snd_pcm_state_t [usertype] 
<noident>
   sound/core/pcm_native.c:739:38: sparse: incorrect type in argument 2 
(different base types) @@    expected int [signed] state @@    got restricted 
snd_pcm_state_int [signed] state @@
   sound/core/pcm_native.c:739:38:    expected int [signed] state
   sound/core/pcm_native.c:739:38:    got restricted snd_pcm_state_t [usertype] 
<noident>
   sound/core/pcm_native.c:776:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:777:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:788:38: sparse: incorrect type in argument 2 
(different base types) @@    expected int [signed] state @@    got restricted 
snd_pcm_state_int [signed] state @@
   sound/core/pcm_native.c:788:38:    expected int [signed] state
   sound/core/pcm_native.c:788:38:    got restricted snd_pcm_state_t [usertype] 
<noident>
   sound/core/pcm_native.c:803:39: sparse: restricted snd_pcm_state_t degrades 
to integer
   include/sound/pcm.h:676:54: sparse: restricted snd_pcm_state_t degrades to 
integer
   include/sound/pcm.h:677:55: sparse: restricted snd_pcm_state_t degrades to 
integer
>> sound/core/pcm_native.c:884:23: sparse: incorrect type in assignment 
>> (different base types) @@    expected restricted snd_pcm_state_t [usertype] 
>> state @@    got signed int [srestricted snd_pcm_state_t [usertype] state @@
   sound/core/pcm_native.c:884:23:    expected restricted snd_pcm_state_t 
[usertype] state
   sound/core/pcm_native.c:884:23:    got signed int [signed] [usertype] 
[explicitly-signed] state
>> sound/core/pcm_native.c:885:33: sparse: incorrect type in assignment 
>> (different base types) @@    expected restricted snd_pcm_state_t [usertype] 
>> suspended_state @@    got signed int [srestricted snd_pcm_state_t [usertype] 
>> suspended_state @@
   sound/core/pcm_native.c:885:33:    expected restricted snd_pcm_state_t 
[usertype] suspended_state
   sound/core/pcm_native.c:885:33:    got signed int [signed] [usertype] 
[explicitly-signed] suspended_state
   include/sound/pcm.h:676:54: sparse: restricted snd_pcm_state_t degrades to 
integer
   include/sound/pcm.h:677:55: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_native.c:927:47: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:928:47: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:935:47: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:996:34: sparse: incorrect type in initializer 
(different base types) @@    expected signed int [signed] [usertype] 
[explicitly-signed] state @@    got restricted ssigned int [signed] [usertype] 
[explicitly-signed] state @@
   sound/core/pcm_native.c:996:34:    expected signed int [signed] [usertype] 
[explicitly-signed] state
   sound/core/pcm_native.c:996:34:    got restricted snd_pcm_state_t 
[addressable] [assigned] [usertype] state
   sound/core/pcm_native.c:1007:44: sparse: incorrect type in initializer 
(different base types) @@    expected signed int [signed] [usertype] 
[explicitly-signed] suspended_state @@    got restricted ssigned int [signed] 
[usertype] [explicitly-signed] suspended_state @@
   sound/core/pcm_native.c:1007:44:    expected signed int [signed] [usertype] 
[explicitly-signed] suspended_state
   sound/core/pcm_native.c:1007:44:    got restricted snd_pcm_state_t 
[addressable] [assigned] [usertype] suspended_state
   sound/core/pcm_native.c:1031:39: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1230:39: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1284:31: sparse: incorrect type in argument 3 
(different base types) @@    expected int [signed] state @@    got restricted 
snd_pcm_state_int [signed] state @@
   sound/core/pcm_native.c:1284:31:    expected int [signed] state
   sound/core/pcm_native.c:1284:31:    got restricted snd_pcm_state_t 
[usertype] <noident>
   sound/core/pcm_native.c:1291:40: sparse: incorrect type in argument 3 
(different base types) @@    expected int [signed] state @@    got restricted 
snd_pcm_state_int [signed] state @@
   sound/core/pcm_native.c:1291:40:    expected int [signed] state
   sound/core/pcm_native.c:1291:40:    got restricted snd_pcm_state_t 
[usertype] <noident>
   sound/core/pcm_native.c:1300:39: sparse: restricted snd_pcm_state_t degrades 
to integer
   include/sound/pcm.h:676:54: sparse: restricted snd_pcm_state_t degrades to 
integer
   include/sound/pcm.h:677:55: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_native.c:1343:64: sparse: incorrect type in argument 3 
(different base types) @@    expected int [signed] state @@    got restricted 
snd_pcm_state_int [signed] state @@
   sound/core/pcm_native.c:1343:64:    expected int [signed] state
   sound/core/pcm_native.c:1343:64:    got restricted snd_pcm_state_t 
[usertype] state
   sound/core/pcm_native.c:1359:38: sparse: incorrect type in argument 3 
(different base types) @@    expected int [signed] state @@    got restricted 
snd_pcm_state_int [signed] state @@
   sound/core/pcm_native.c:1359:38:    expected int [signed] state
   sound/core/pcm_native.c:1359:38:    got restricted snd_pcm_state_t 
[usertype] <noident>
   include/sound/pcm.h:676:54: sparse: restricted snd_pcm_state_t degrades to 
integer
   include/sound/pcm.h:677:55: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_native.c:1393:47: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1395:46: sparse: restricted snd_pcm_state_t degrades 
to integer
>> sound/core/pcm_native.c:1432:40: sparse: incorrect type in assignment 
>> (different base types) @@    expected signed int [signed] [usertype] 
>> [explicitly-signed] state @@    got igned] [usertype] [explicitly-signed] 
>> state @@
   sound/core/pcm_native.c:1432:40:    expected signed int [signed] [usertype] 
[explicitly-signed] state
   sound/core/pcm_native.c:1432:40:    got restricted snd_pcm_state_t 
[usertype] <noident>
   sound/core/pcm_native.c:1437:40: sparse: incorrect type in assignment 
(different base types) @@    expected signed int [signed] [usertype] 
[explicitly-signed] state @@    got igned] [usertype] [explicitly-signed] state 
@@
   sound/core/pcm_native.c:1437:40:    expected signed int [signed] [usertype] 
[explicitly-signed] state
   sound/core/pcm_native.c:1437:40:    got restricted snd_pcm_state_t 
[usertype] <noident>
   sound/core/pcm_native.c:1463:39: sparse: restricted snd_pcm_state_t degrades 
to integer
   include/sound/pcm.h:676:54: sparse: restricted snd_pcm_state_t degrades to 
integer
   include/sound/pcm.h:677:55: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_native.c:1485:32: sparse: incorrect type in assignment 
(different base types) @@    expected signed int [signed] [usertype] 
[explicitly-signed] state @@    got igned] [usertype] [explicitly-signed] state 
@@
   sound/core/pcm_native.c:1485:32:    expected signed int [signed] [usertype] 
[explicitly-signed] state
   sound/core/pcm_native.c:1485:32:    got restricted snd_pcm_state_t 
[usertype] <noident>
   sound/core/pcm_native.c:1569:49: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1570:50: sparse: restricted snd_pcm_state_t degrades 
to integer
   include/sound/pcm.h:676:54: sparse: restricted snd_pcm_state_t degrades to 
integer
   include/sound/pcm.h:677:55: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_native.c:1624:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1627:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1644:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1645:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1646:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1647:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1696:39: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1697:39: sparse: restricted snd_pcm_state_t degrades 
to integer
   include/sound/pcm.h:676:54: sparse: restricted snd_pcm_state_t degrades to 
integer
   include/sound/pcm.h:677:55: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_native.c:1718:38: sparse: incorrect type in argument 2 
(different base types) @@    expected int [signed] state @@    got restricted 
snd_pcm_state_int [signed] state @@
   sound/core/pcm_native.c:1718:38:    expected int [signed] state
   sound/core/pcm_native.c:1718:38:    got restricted snd_pcm_state_t 
[usertype] <noident>
   sound/core/pcm_native.c:1746:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1749:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1767:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1768:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1769:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1784:61: sparse: incorrect type in argument 2 
(different base types) @@    expected int [signed] state @@    got restricted 
snd_pcm_state_int [signed] state @@
   sound/core/pcm_native.c:1784:61:    expected int [signed] state
   sound/core/pcm_native.c:1784:61:    got restricted snd_pcm_state_t 
[usertype] <noident>
   sound/core/pcm_native.c:1785:63: sparse: incorrect type in argument 2 
(different base types) @@    expected int [signed] state @@    got restricted 
snd_pcm_state_int [signed] state @@
   sound/core/pcm_native.c:1785:63:    expected int [signed] state
   sound/core/pcm_native.c:1785:63:    got restricted snd_pcm_state_t 
[usertype] <noident>
   sound/core/pcm_native.c:1787:56: sparse: incorrect type in assignment 
(different base types) @@    expected signed int [signed] [usertype] 
[explicitly-signed] state @@    got igned] [usertype] [explicitly-signed] state 
@@
   sound/core/pcm_native.c:1787:56:    expected signed int [signed] [usertype] 
[explicitly-signed] state
   sound/core/pcm_native.c:1787:56:    got restricted snd_pcm_state_t 
[usertype] <noident>
   sound/core/pcm_native.c:1791:48: sparse: incorrect type in assignment 
(different base types) @@    expected signed int [signed] [usertype] 
[explicitly-signed] state @@    got igned] [usertype] [explicitly-signed] state 
@@
   sound/core/pcm_native.c:1791:48:    expected signed int [signed] [usertype] 
[explicitly-signed] state
   sound/core/pcm_native.c:1791:48:    got restricted snd_pcm_state_t 
[usertype] <noident>
   sound/core/pcm_native.c:1794:48: sparse: incorrect type in assignment 
(different base types) @@    expected signed int [signed] [usertype] 
[explicitly-signed] state @@    got igned] [usertype] [explicitly-signed] state 
@@
   sound/core/pcm_native.c:1794:48:    expected signed int [signed] [usertype] 
[explicitly-signed] state
   sound/core/pcm_native.c:1794:48:    got restricted snd_pcm_state_t 
[usertype] <noident>
   sound/core/pcm_native.c:1781:22: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1790:22: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1793:22: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1801:47: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1802:76: sparse: incorrect type in initializer 
(different base types) @@    expected int [signed] new_state @@    got 
restricted snint [signed] new_state @@
   sound/core/pcm_native.c:1802:76:    expected int [signed] new_state
   sound/core/pcm_native.c:1802:76:    got restricted snd_pcm_state_t
   sound/core/pcm_native.c:1809:39: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1951:39: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1952:39: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1957:39: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1850:39: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1862:39: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1888:55: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:1905:40: sparse: expression using sizeof(void)
   sound/core/pcm_native.c:1905:40: sparse: expression using sizeof(void)
   sound/core/pcm_native.c:1918:66: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:2006:50: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:2123:26: sparse: restricted snd_pcm_format_t 
degrades to integer
   sound/core/pcm_native.c:2127:54: sparse: incorrect type in argument 1 
(different base types) @@    expected restricted snd_pcm_format_t [usertype] 
format @@    got ricted snd_pcm_format_t [usertype] format @@
   sound/core/pcm_native.c:2127:54:    expected restricted snd_pcm_format_t 
[usertype] format
   sound/core/pcm_native.c:2127:54:    got unsigned int [unsigned] [assigned] k
   sound/core/pcm_native.c:2145:26: sparse: restricted snd_pcm_format_t 
degrades to integer
   sound/core/pcm_native.c:2149:54: sparse: incorrect type in argument 1 
(different base types) @@    expected restricted snd_pcm_format_t [usertype] 
format @@    got ricted snd_pcm_format_t [usertype] format @@
   sound/core/pcm_native.c:2149:54:    expected restricted snd_pcm_format_t 
[usertype] format
   sound/core/pcm_native.c:2149:54:    got unsigned int [unsigned] [assigned] k
   sound/core/pcm_native.c:2329:30: sparse: restricted snd_pcm_access_t 
degrades to integer
   sound/core/pcm_native.c:2331:30: sparse: restricted snd_pcm_access_t 
degrades to integer
   sound/core/pcm_native.c:2334:38: sparse: restricted snd_pcm_access_t 
degrades to integer
   sound/core/pcm_native.c:2336:38: sparse: restricted snd_pcm_access_t 
degrades to integer
   sound/core/pcm_native.c:2338:38: sparse: restricted snd_pcm_access_t 
degrades to integer
   sound/core/pcm_native.c:2348:86: sparse: restricted snd_pcm_subformat_t 
degrades to integer
   sound/core/pcm_native.c:2418:58: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:2613:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:2617:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:2619:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:2620:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:2622:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:2624:14: sparse: restricted snd_pcm_state_t degrades 
to integer
   sound/core/pcm_native.c:2942:39: sparse: restricted snd_pcm_state_t degrades 
to integer
>> include/sound/pcm.h:1093:47: sparse: too many warnings
   In file included from sound/core/pcm_native.c:3728:0:
   sound/core/pcm_compat.c: In function 'snd_pcm_ioctl_compat':
   sound/core/pcm_compat.c:580:2: error: duplicate case value
     case SNDRV_PCM_IOCTL_SYNC_PTR_X32:
     ^~~~
   sound/core/pcm_compat.c:547:2: note: previously used here
     case __SNDRV_PCM_IOCTL_SYNC_PTR64:
     ^~~~
--
>> sound/core/pcm_lib.c:205:39: sparse: restricted snd_pcm_state_t degrades to 
>> integer
   sound/core/pcm_lib.c:1032:34: sparse: expression using sizeof(void)
   sound/core/pcm_lib.c:1032:34: sparse: expression using sizeof(void)
   sound/core/pcm_lib.c:1033:34: sparse: expression using sizeof(void)
   sound/core/pcm_lib.c:1033:34: sparse: expression using sizeof(void)
   sound/core/pcm_lib.c:1405:34: sparse: expression using sizeof(void)
   sound/core/pcm_lib.c:1405:34: sparse: expression using sizeof(void)
   include/sound/pcm.h:676:54: sparse: restricted snd_pcm_state_t degrades to 
integer
   include/sound/pcm.h:677:55: sparse: restricted snd_pcm_state_t degrades to 
integer
   include/sound/pcm.h:676:54: sparse: restricted snd_pcm_state_t degrades to 
integer
   include/sound/pcm.h:677:55: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_lib.c:1851:37: sparse: expression using sizeof(void)
   sound/core/pcm_lib.c:1851:37: sparse: expression using sizeof(void)
   sound/core/pcm_lib.c:1882:22: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_lib.c:1885:22: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_lib.c:1888:22: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_lib.c:1894:22: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_lib.c:1895:22: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_lib.c:1896:22: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_lib.c:1899:22: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_lib.c:2069:39: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_lib.c:2077:14: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_lib.c:2078:14: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_lib.c:2079:14: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_lib.c:2081:14: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_lib.c:2083:14: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_lib.c:2178:39: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_lib.c:2186:39: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_lib.c:2197:55: sparse: restricted snd_pcm_state_t degrades to 
integer
   sound/core/pcm_lib.c:2205:42: sparse: expression using sizeof(void)
   sound/core/pcm_lib.c:2205:42: sparse: expression using sizeof(void)
   sound/core/pcm_lib.c:2245:47: sparse: restricted snd_pcm_state_t degrades to 
integer
--
   sound/firewire/oxfw/oxfw-pcm.c:34:25: sparse: expression using sizeof(void)
   sound/firewire/oxfw/oxfw-pcm.c:34:25: sparse: expression using sizeof(void)
   sound/firewire/oxfw/oxfw-pcm.c:35:25: sparse: expression using sizeof(void)
   sound/firewire/oxfw/oxfw-pcm.c:35:25: sparse: expression using sizeof(void)
   sound/firewire/oxfw/oxfw-pcm.c:100:36: sparse: expression using sizeof(void)
   sound/firewire/oxfw/oxfw-pcm.c:100:36: sparse: expression using sizeof(void)
   sound/firewire/oxfw/oxfw-pcm.c:101:36: sparse: expression using sizeof(void)
   sound/firewire/oxfw/oxfw-pcm.c:101:36: sparse: expression using sizeof(void)
   sound/firewire/oxfw/oxfw-pcm.c:103:32: sparse: expression using sizeof(void)
   sound/firewire/oxfw/oxfw-pcm.c:103:32: sparse: expression using sizeof(void)
   sound/firewire/oxfw/oxfw-pcm.c:104:32: sparse: expression using sizeof(void)
   sound/firewire/oxfw/oxfw-pcm.c:104:32: sparse: expression using sizeof(void)
>> sound/firewire/oxfw/oxfw-pcm.c:221:50: sparse: restricted snd_pcm_state_t 
>> degrades to integer
   sound/firewire/oxfw/oxfw-pcm.c:240:50: sparse: restricted snd_pcm_state_t 
degrades to integer
   sound/firewire/oxfw/oxfw-pcm.c:255:50: sparse: restricted snd_pcm_state_t 
degrades to integer
   sound/firewire/oxfw/oxfw-pcm.c:270:50: sparse: restricted snd_pcm_state_t 
degrades to integer
--
>> sound/firewire/tascam/tascam-pcm.c:98:50: sparse: restricted snd_pcm_state_t 
>> degrades to integer
   sound/firewire/tascam/tascam-pcm.c:118:50: sparse: restricted 
snd_pcm_state_t degrades to integer
   sound/firewire/tascam/tascam-pcm.c:133:50: sparse: restricted 
snd_pcm_state_t degrades to integer
   sound/firewire/tascam/tascam-pcm.c:149:50: sparse: restricted 
snd_pcm_state_t degrades to integer
--
   drivers/usb/gadget/function/u_uac1_legacy.c:104:21: sparse: incorrect type 
in assignment (different base types) @@    expected int [signed] access @@    
got restricted snd_pcm_access_int [signed] access @@
   drivers/usb/gadget/function/u_uac1_legacy.c:104:21:    expected int [signed] 
access
   drivers/usb/gadget/function/u_uac1_legacy.c:104:21:    got restricted 
snd_pcm_access_t [usertype] <noident>
   drivers/usb/gadget/function/u_uac1_legacy.c:105:21: sparse: incorrect type 
in assignment (different base types) @@    expected int [signed] format @@    
got restricted snd_pcm_format_int [signed] format @@
   drivers/usb/gadget/function/u_uac1_legacy.c:105:21:    expected int [signed] 
format
   drivers/usb/gadget/function/u_uac1_legacy.c:105:21:    got restricted 
snd_pcm_format_t [usertype] <noident>
   drivers/usb/gadget/function/u_uac1_legacy.c:135:21: sparse: incorrect type 
in assignment (different base types) @@    expected int [signed] access @@    
got restricted sndint [signed] access @@
   drivers/usb/gadget/function/u_uac1_legacy.c:135:21:    expected int [signed] 
access
   drivers/usb/gadget/function/u_uac1_legacy.c:135:21:    got restricted 
snd_pcm_access_t
   drivers/usb/gadget/function/u_uac1_legacy.c:136:21: sparse: incorrect type 
in assignment (different base types) @@    expected int [signed] format @@    
got restricted sndint [signed] format @@
   drivers/usb/gadget/function/u_uac1_legacy.c:136:21:    expected int [signed] 
format
   drivers/usb/gadget/function/u_uac1_legacy.c:136:21:    got restricted 
snd_pcm_format_t
>> drivers/usb/gadget/function/u_uac1_legacy.c:161:39: sparse: restricted 
>> snd_pcm_state_t degrades to integer
   drivers/usb/gadget/function/u_uac1_legacy.c:162:43: sparse: restricted 
snd_pcm_state_t degrades to integer
--
   sound/soc/intel/skylake/skl-pcm.c:159:43: sparse: incorrect type in argument 
3 (different base types) @@    expected unsigned int [unsigned] format @@    
got restricted snd_unsigned int [unsigned] format @@
   sound/soc/intel/skylake/skl-pcm.c:159:43:    expected unsigned int 
[unsigned] format
   sound/soc/intel/skylake/skl-pcm.c:159:43:    got restricted snd_pcm_format_t 
[usertype] format
   sound/soc/intel/skylake/skl-pcm.c:195:47: sparse: incorrect type in argument 
3 (different base types) @@    expected unsigned int [unsigned] format @@    
got restricted snd_unsigned int [unsigned] format @@
   sound/soc/intel/skylake/skl-pcm.c:195:47:    expected unsigned int 
[unsigned] format
   sound/soc/intel/skylake/skl-pcm.c:195:47:    got restricted snd_pcm_format_t 
[usertype] format
>> sound/soc/intel/skylake/skl-pcm.c:278:41: sparse: restricted snd_pcm_state_t 
>> degrades to integer
   sound/soc/intel/skylake/skl-pcm.c:574:55: sparse: restricted snd_pcm_state_t 
degrades to integer
--
   sound/pci/asihpi/asihpi.c:315:9: sparse: incorrect type in initializer 
(different base types) @@    expected restricted snd_pcm_format_t @@    got t_t 
@@
   sound/pci/asihpi/asihpi.c:315:9:    expected restricted snd_pcm_format_t
   sound/pci/asihpi/asihpi.c:315:9:    got int
   sound/pci/asihpi/asihpi.c:318:9: sparse: incorrect type in initializer 
(different base types) @@    expected restricted snd_pcm_format_t @@    got t_t 
@@
   sound/pci/asihpi/asihpi.c:318:9:    expected restricted snd_pcm_format_t
   sound/pci/asihpi/asihpi.c:318:9:    got int
   sound/pci/asihpi/asihpi.c:321:9: sparse: incorrect type in initializer 
(different base types) @@    expected restricted snd_pcm_format_t @@    got t_t 
@@
   sound/pci/asihpi/asihpi.c:321:9:    expected restricted snd_pcm_format_t
   sound/pci/asihpi/asihpi.c:321:9:    got int
   sound/pci/asihpi/asihpi.c:322:9: sparse: incorrect type in initializer 
(different base types) @@    expected restricted snd_pcm_format_t @@    got t_t 
@@
   sound/pci/asihpi/asihpi.c:322:9:    expected restricted snd_pcm_format_t
   sound/pci/asihpi/asihpi.c:322:9:    got int
   sound/pci/asihpi/asihpi.c:324:9: sparse: incorrect type in initializer 
(different base types) @@    expected restricted snd_pcm_format_t @@    got t_t 
@@
   sound/pci/asihpi/asihpi.c:324:9:    expected restricted snd_pcm_format_t
   sound/pci/asihpi/asihpi.c:324:9:    got int
   sound/pci/asihpi/asihpi.c:325:9: sparse: incorrect type in initializer 
(different base types) @@    expected restricted snd_pcm_format_t @@    got t_t 
@@
   sound/pci/asihpi/asihpi.c:325:9:    expected restricted snd_pcm_format_t
   sound/pci/asihpi/asihpi.c:325:9:    got int
   sound/pci/asihpi/asihpi.c:327:9: sparse: incorrect type in initializer 
(different base types) @@    expected restricted snd_pcm_format_t @@    got t_t 
@@
   sound/pci/asihpi/asihpi.c:327:9:    expected restricted snd_pcm_format_t
   sound/pci/asihpi/asihpi.c:327:9:    got int
   sound/pci/asihpi/asihpi.c:328:9: sparse: incorrect type in initializer 
(different base types) @@    expected restricted snd_pcm_format_t @@    got t_t 
@@
   sound/pci/asihpi/asihpi.c:328:9:    expected restricted snd_pcm_format_t
   sound/pci/asihpi/asihpi.c:328:9:    got int
   sound/pci/asihpi/asihpi.c:334:9: sparse: incorrect type in initializer 
(different base types) @@    expected restricted snd_pcm_format_t @@    got t_t 
@@
   sound/pci/asihpi/asihpi.c:334:9:    expected restricted snd_pcm_format_t
   sound/pci/asihpi/asihpi.c:334:9:    got int
   sound/pci/asihpi/asihpi.c:397:36: sparse: expression using sizeof(void)
   sound/pci/asihpi/asihpi.c:397:36: sparse: expression using sizeof(void)
   sound/pci/asihpi/asihpi.c:398:36: sparse: expression using sizeof(void)
   sound/pci/asihpi/asihpi.c:398:36: sparse: expression using sizeof(void)
   sound/pci/asihpi/asihpi.c:542:18: sparse: expression using sizeof(void)
>> sound/pci/asihpi/asihpi.c:668:51: sparse: incorrect type in assignment 
>> (different base types) @@    expected signed int [signed] [usertype] 
>> [explicitly-signed] state @@    got igned] [usertype] [explicitly-signed] 
>> state @@
   sound/pci/asihpi/asihpi.c:668:51:    expected signed int [signed] [usertype] 
[explicitly-signed] state
   sound/pci/asihpi/asihpi.c:668:51:    got restricted snd_pcm_state_t 
[usertype] <noident>
   sound/pci/asihpi/asihpi.c:822:35: sparse: expression using sizeof(void)
   sound/pci/asihpi/asihpi.c:822:35: sparse: expression using sizeof(void)
   sound/pci/asihpi/asihpi.c:857:24: sparse: expression using sizeof(void)
   sound/pci/asihpi/asihpi.c:887:41: sparse: expression using sizeof(void)
   sound/pci/asihpi/asihpi.c:887:41: sparse: expression using sizeof(void)
   sound/pci/asihpi/asihpi.c:1026:49: sparse: restricted snd_pcm_format_t 
degrades to integer
   sound/pci/asihpi/asihpi.c:1208:49: sparse: restricted snd_pcm_format_t 
degrades to integer
--
   sound/firewire/fireface/ff-pcm.c:34:25: sparse: expression using sizeof(void)
   sound/firewire/fireface/ff-pcm.c:34:25: sparse: expression using sizeof(void)
   sound/firewire/fireface/ff-pcm.c:35:25: sparse: expression using sizeof(void)
   sound/firewire/fireface/ff-pcm.c:35:25: sparse: expression using sizeof(void)
   sound/firewire/fireface/ff-pcm.c:59:25: sparse: expression using sizeof(void)
   sound/firewire/fireface/ff-pcm.c:59:25: sparse: expression using sizeof(void)
   sound/firewire/fireface/ff-pcm.c:60:25: sparse: expression using sizeof(void)
   sound/firewire/fireface/ff-pcm.c:60:25: sparse: expression using sizeof(void)
   sound/firewire/fireface/ff-pcm.c:84:36: sparse: expression using sizeof(void)
   sound/firewire/fireface/ff-pcm.c:84:36: sparse: expression using sizeof(void)
   sound/firewire/fireface/ff-pcm.c:85:36: sparse: expression using sizeof(void)
   sound/firewire/fireface/ff-pcm.c:85:36: sparse: expression using sizeof(void)
   sound/firewire/fireface/ff-pcm.c:89:32: sparse: expression using sizeof(void)
   sound/firewire/fireface/ff-pcm.c:89:32: sparse: expression using sizeof(void)
   sound/firewire/fireface/ff-pcm.c:90:32: sparse: expression using sizeof(void)
   sound/firewire/fireface/ff-pcm.c:90:32: sparse: expression using sizeof(void)
>> sound/firewire/fireface/ff-pcm.c:202:50: sparse: restricted snd_pcm_state_t 
>> degrades to integer
   sound/firewire/fireface/ff-pcm.c:222:50: sparse: restricted snd_pcm_state_t 
degrades to integer
   sound/firewire/fireface/ff-pcm.c:237:50: sparse: restricted snd_pcm_state_t 
degrades to integer
   sound/firewire/fireface/ff-pcm.c:253:50: sparse: restricted snd_pcm_state_t 
degrades to integer
--
   sound/firewire/fireworks/fireworks_pcm.c:82:25: sparse: expression using 
sizeof(void)
   sound/firewire/fireworks/fireworks_pcm.c:82:25: sparse: expression using 
sizeof(void)
   sound/firewire/fireworks/fireworks_pcm.c:83:25: sparse: expression using 
sizeof(void)
   sound/firewire/fireworks/fireworks_pcm.c:83:25: sparse: expression using 
sizeof(void)
   sound/firewire/fireworks/fireworks_pcm.c:107:25: sparse: expression using 
sizeof(void)
   sound/firewire/fireworks/fireworks_pcm.c:107:25: sparse: expression using 
sizeof(void)
   sound/firewire/fireworks/fireworks_pcm.c:108:25: sparse: expression using 
sizeof(void)
   sound/firewire/fireworks/fireworks_pcm.c:108:25: sparse: expression using 
sizeof(void)
   sound/firewire/fireworks/fireworks_pcm.c:127:36: sparse: expression using 
sizeof(void)
   sound/firewire/fireworks/fireworks_pcm.c:127:36: sparse: expression using 
sizeof(void)
   sound/firewire/fireworks/fireworks_pcm.c:128:36: sparse: expression using 
sizeof(void)
   sound/firewire/fireworks/fireworks_pcm.c:128:36: sparse: expression using 
sizeof(void)
>> sound/firewire/fireworks/fireworks_pcm.c:233:50: sparse: restricted 
>> snd_pcm_state_t degrades to integer
   sound/firewire/fireworks/fireworks_pcm.c:252:50: sparse: restricted 
snd_pcm_state_t degrades to integer
   sound/firewire/fireworks/fireworks_pcm.c:265:50: sparse: restricted 
snd_pcm_state_t degrades to integer
   sound/firewire/fireworks/fireworks_pcm.c:279:50: sparse: restricted 
snd_pcm_state_t degrades to integer

vim +884 sound/core/pcm_native.c

60f96aae Takashi Sakamoto     2017-06-09  639  
877211f5 Takashi Iwai         2005-11-17  640  static int 
snd_pcm_hw_params(struct snd_pcm_substream *substream,
877211f5 Takashi Iwai         2005-11-17  641                        struct 
snd_pcm_hw_params *params)
^1da177e Linus Torvalds       2005-04-16  642  {
877211f5 Takashi Iwai         2005-11-17  643   struct snd_pcm_runtime *runtime;
9442e691 Takashi Iwai         2006-09-30  644   int err, usecs;
^1da177e Linus Torvalds       2005-04-16  645   unsigned int bits;
^1da177e Linus Torvalds       2005-04-16  646   snd_pcm_uframes_t frames;
^1da177e Linus Torvalds       2005-04-16  647  
7eaa943c Takashi Iwai         2008-08-08  648   if 
(PCM_RUNTIME_CHECK(substream))
7eaa943c Takashi Iwai         2008-08-08  649           return -ENXIO;
^1da177e Linus Torvalds       2005-04-16  650   runtime = substream->runtime;
^1da177e Linus Torvalds       2005-04-16  651   
snd_pcm_stream_lock_irq(substream);
^1da177e Linus Torvalds       2005-04-16  652   switch (runtime->status->state) 
{
^1da177e Linus Torvalds       2005-04-16  653   case SNDRV_PCM_STATE_OPEN:
^1da177e Linus Torvalds       2005-04-16  654   case SNDRV_PCM_STATE_SETUP:
^1da177e Linus Torvalds       2005-04-16  655   case SNDRV_PCM_STATE_PREPARED:
^1da177e Linus Torvalds       2005-04-16  656           break;
^1da177e Linus Torvalds       2005-04-16  657   default:
^1da177e Linus Torvalds       2005-04-16  658           
snd_pcm_stream_unlock_irq(substream);
^1da177e Linus Torvalds       2005-04-16  659           return -EBADFD;
^1da177e Linus Torvalds       2005-04-16  660   }
^1da177e Linus Torvalds       2005-04-16  661   
snd_pcm_stream_unlock_irq(substream);
8eeaa2f9 Takashi Iwai         2014-02-10  662  #if 
IS_ENABLED(CONFIG_SND_PCM_OSS)
^1da177e Linus Torvalds       2005-04-16  663   if (!substream->oss.oss)
^1da177e Linus Torvalds       2005-04-16  664  #endif
9c323fcb Takashi Iwai         2006-04-28  665           if 
(atomic_read(&substream->mmap_count))
^1da177e Linus Torvalds       2005-04-16  666                   return -EBADFD;
^1da177e Linus Torvalds       2005-04-16  667  
^1da177e Linus Torvalds       2005-04-16  668   params->rmask = ~0U;
^1da177e Linus Torvalds       2005-04-16  669   err = 
snd_pcm_hw_refine(substream, params);
^1da177e Linus Torvalds       2005-04-16  670   if (err < 0)
^1da177e Linus Torvalds       2005-04-16  671           goto _error;
^1da177e Linus Torvalds       2005-04-16  672  
^1da177e Linus Torvalds       2005-04-16  673   err = 
snd_pcm_hw_params_choose(substream, params);
^1da177e Linus Torvalds       2005-04-16  674   if (err < 0)
^1da177e Linus Torvalds       2005-04-16  675           goto _error;
^1da177e Linus Torvalds       2005-04-16  676  
f9a076bf Takashi Sakamoto     2017-06-09  677   err = 
fixup_unreferenced_params(substream, params);
f9a076bf Takashi Sakamoto     2017-06-09  678   if (err < 0)
f9a076bf Takashi Sakamoto     2017-06-09  679           goto _error;
f9a076bf Takashi Sakamoto     2017-06-09  680  
^1da177e Linus Torvalds       2005-04-16  681   if (substream->ops->hw_params 
!= NULL) {
^1da177e Linus Torvalds       2005-04-16  682           err = 
substream->ops->hw_params(substream, params);
^1da177e Linus Torvalds       2005-04-16  683           if (err < 0)
^1da177e Linus Torvalds       2005-04-16  684                   goto _error;
^1da177e Linus Torvalds       2005-04-16  685   }
^1da177e Linus Torvalds       2005-04-16  686  
^1da177e Linus Torvalds       2005-04-16  687   runtime->access = 
params_access(params);
^1da177e Linus Torvalds       2005-04-16  688   runtime->format = 
params_format(params);
^1da177e Linus Torvalds       2005-04-16  689   runtime->subformat = 
params_subformat(params);
^1da177e Linus Torvalds       2005-04-16  690   runtime->channels = 
params_channels(params);
^1da177e Linus Torvalds       2005-04-16  691   runtime->rate = 
params_rate(params);
^1da177e Linus Torvalds       2005-04-16  692   runtime->period_size = 
params_period_size(params);
^1da177e Linus Torvalds       2005-04-16  693   runtime->periods = 
params_periods(params);
^1da177e Linus Torvalds       2005-04-16  694   runtime->buffer_size = 
params_buffer_size(params);
^1da177e Linus Torvalds       2005-04-16  695   runtime->info = params->info;
^1da177e Linus Torvalds       2005-04-16  696   runtime->rate_num = 
params->rate_num;
^1da177e Linus Torvalds       2005-04-16  697   runtime->rate_den = 
params->rate_den;
ab69a490 Clemens Ladisch      2010-11-15  698   runtime->no_period_wakeup =
ab69a490 Clemens Ladisch      2010-11-15  699                   (params->info & 
SNDRV_PCM_INFO_NO_PERIOD_WAKEUP) &&
ab69a490 Clemens Ladisch      2010-11-15  700                   (params->flags 
& SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP);
^1da177e Linus Torvalds       2005-04-16  701  
^1da177e Linus Torvalds       2005-04-16  702   bits = 
snd_pcm_format_physical_width(runtime->format);
^1da177e Linus Torvalds       2005-04-16  703   runtime->sample_bits = bits;
^1da177e Linus Torvalds       2005-04-16  704   bits *= runtime->channels;
^1da177e Linus Torvalds       2005-04-16  705   runtime->frame_bits = bits;
^1da177e Linus Torvalds       2005-04-16  706   frames = 1;
^1da177e Linus Torvalds       2005-04-16  707   while (bits % 8 != 0) {
^1da177e Linus Torvalds       2005-04-16  708           bits *= 2;
^1da177e Linus Torvalds       2005-04-16  709           frames *= 2;
^1da177e Linus Torvalds       2005-04-16  710   }
^1da177e Linus Torvalds       2005-04-16  711   runtime->byte_align = bits / 8;
^1da177e Linus Torvalds       2005-04-16  712   runtime->min_align = frames;
^1da177e Linus Torvalds       2005-04-16  713  
^1da177e Linus Torvalds       2005-04-16  714   /* Default sw params */
^1da177e Linus Torvalds       2005-04-16  715   runtime->tstamp_mode = 
SNDRV_PCM_TSTAMP_NONE;
^1da177e Linus Torvalds       2005-04-16  716   runtime->period_step = 1;
^1da177e Linus Torvalds       2005-04-16  717   runtime->control->avail_min = 
runtime->period_size;
^1da177e Linus Torvalds       2005-04-16  718   runtime->start_threshold = 1;
^1da177e Linus Torvalds       2005-04-16  719   runtime->stop_threshold = 
runtime->buffer_size;
^1da177e Linus Torvalds       2005-04-16  720   runtime->silence_threshold = 0;
^1da177e Linus Torvalds       2005-04-16  721   runtime->silence_size = 0;
ead4046b Clemens Ladisch      2010-05-21  722   runtime->boundary = 
runtime->buffer_size;
ead4046b Clemens Ladisch      2010-05-21  723   while (runtime->boundary * 2 <= 
LONG_MAX - runtime->buffer_size)
ead4046b Clemens Ladisch      2010-05-21  724           runtime->boundary *= 2;
^1da177e Linus Torvalds       2005-04-16  725  
^1da177e Linus Torvalds       2005-04-16  726   
snd_pcm_timer_resolution_change(substream);
9b0573c0 Takashi Iwai         2012-10-12  727   snd_pcm_set_state(substream, 
SNDRV_PCM_STATE_SETUP);
9442e691 Takashi Iwai         2006-09-30  728  
82f68251 James Bottomley      2010-07-05  729   if 
(pm_qos_request_active(&substream->latency_pm_qos_req))
82f68251 James Bottomley      2010-07-05  730           
pm_qos_remove_request(&substream->latency_pm_qos_req);
9442e691 Takashi Iwai         2006-09-30  731   if ((usecs = 
period_to_usecs(runtime)) >= 0)
82f68251 James Bottomley      2010-07-05  732           
pm_qos_add_request(&substream->latency_pm_qos_req,
ed77134b Mark Gross           2010-05-06  733                              
PM_QOS_CPU_DMA_LATENCY, usecs);
^1da177e Linus Torvalds       2005-04-16  734   return 0;
^1da177e Linus Torvalds       2005-04-16  735   _error:
25985edc Lucas De Marchi      2011-03-30  736   /* hardware might be unusable 
from this time,
^1da177e Linus Torvalds       2005-04-16  737      so we force application to 
retry to set
^1da177e Linus Torvalds       2005-04-16  738      the correct hardware 
parameter settings */
9b0573c0 Takashi Iwai         2012-10-12 @739   snd_pcm_set_state(substream, 
SNDRV_PCM_STATE_OPEN);
^1da177e Linus Torvalds       2005-04-16  740   if (substream->ops->hw_free != 
NULL)
^1da177e Linus Torvalds       2005-04-16  741           
substream->ops->hw_free(substream);
^1da177e Linus Torvalds       2005-04-16  742   return err;
^1da177e Linus Torvalds       2005-04-16  743  }
^1da177e Linus Torvalds       2005-04-16  744  
877211f5 Takashi Iwai         2005-11-17  745  static int 
snd_pcm_hw_params_user(struct snd_pcm_substream *substream,
877211f5 Takashi Iwai         2005-11-17  746                             
struct snd_pcm_hw_params __user * _params)
^1da177e Linus Torvalds       2005-04-16  747  {
877211f5 Takashi Iwai         2005-11-17  748   struct snd_pcm_hw_params 
*params;
^1da177e Linus Torvalds       2005-04-16  749   int err;
^1da177e Linus Torvalds       2005-04-16  750  
ef44a1ec Li Zefan             2009-04-10  751   params = memdup_user(_params, 
sizeof(*params));
ef44a1ec Li Zefan             2009-04-10  752   if (IS_ERR(params))
ef44a1ec Li Zefan             2009-04-10  753           return PTR_ERR(params);
ef44a1ec Li Zefan             2009-04-10  754  
^1da177e Linus Torvalds       2005-04-16  755   err = 
snd_pcm_hw_params(substream, params);
f74ae15f Takashi Sakamoto     2017-06-11  756   if (err < 0)
f74ae15f Takashi Sakamoto     2017-06-11  757           goto end;
ef44a1ec Li Zefan             2009-04-10  758  
f74ae15f Takashi Sakamoto     2017-06-11  759   if (copy_to_user(_params, 
params, sizeof(*params)))
f74ae15f Takashi Sakamoto     2017-06-11  760           err = -EFAULT;
f74ae15f Takashi Sakamoto     2017-06-11  761  end:
^1da177e Linus Torvalds       2005-04-16  762   kfree(params);
^1da177e Linus Torvalds       2005-04-16  763   return err;
^1da177e Linus Torvalds       2005-04-16  764  }
^1da177e Linus Torvalds       2005-04-16  765  
877211f5 Takashi Iwai         2005-11-17  766  static int 
snd_pcm_hw_free(struct snd_pcm_substream *substream)
^1da177e Linus Torvalds       2005-04-16  767  {
877211f5 Takashi Iwai         2005-11-17  768   struct snd_pcm_runtime *runtime;
^1da177e Linus Torvalds       2005-04-16  769   int result = 0;
^1da177e Linus Torvalds       2005-04-16  770  
7eaa943c Takashi Iwai         2008-08-08  771   if 
(PCM_RUNTIME_CHECK(substream))
7eaa943c Takashi Iwai         2008-08-08  772           return -ENXIO;
^1da177e Linus Torvalds       2005-04-16  773   runtime = substream->runtime;
^1da177e Linus Torvalds       2005-04-16  774   
snd_pcm_stream_lock_irq(substream);
^1da177e Linus Torvalds       2005-04-16  775   switch (runtime->status->state) 
{
^1da177e Linus Torvalds       2005-04-16  776   case SNDRV_PCM_STATE_SETUP:
^1da177e Linus Torvalds       2005-04-16  777   case SNDRV_PCM_STATE_PREPARED:
^1da177e Linus Torvalds       2005-04-16  778           break;
^1da177e Linus Torvalds       2005-04-16  779   default:
^1da177e Linus Torvalds       2005-04-16  780           
snd_pcm_stream_unlock_irq(substream);
^1da177e Linus Torvalds       2005-04-16  781           return -EBADFD;
^1da177e Linus Torvalds       2005-04-16  782   }
^1da177e Linus Torvalds       2005-04-16  783   
snd_pcm_stream_unlock_irq(substream);
9c323fcb Takashi Iwai         2006-04-28  784   if 
(atomic_read(&substream->mmap_count))
^1da177e Linus Torvalds       2005-04-16  785           return -EBADFD;
^1da177e Linus Torvalds       2005-04-16  786   if (substream->ops->hw_free)
^1da177e Linus Torvalds       2005-04-16  787           result = 
substream->ops->hw_free(substream);
9b0573c0 Takashi Iwai         2012-10-12 @788   snd_pcm_set_state(substream, 
SNDRV_PCM_STATE_OPEN);
82f68251 James Bottomley      2010-07-05  789   
pm_qos_remove_request(&substream->latency_pm_qos_req);
^1da177e Linus Torvalds       2005-04-16  790   return result;
^1da177e Linus Torvalds       2005-04-16  791  }
^1da177e Linus Torvalds       2005-04-16  792  
877211f5 Takashi Iwai         2005-11-17  793  static int 
snd_pcm_sw_params(struct snd_pcm_substream *substream,
877211f5 Takashi Iwai         2005-11-17  794                        struct 
snd_pcm_sw_params *params)
^1da177e Linus Torvalds       2005-04-16  795  {
877211f5 Takashi Iwai         2005-11-17  796   struct snd_pcm_runtime *runtime;
1250932e Jaroslav Kysela      2010-01-07  797   int err;
^1da177e Linus Torvalds       2005-04-16  798  
7eaa943c Takashi Iwai         2008-08-08  799   if 
(PCM_RUNTIME_CHECK(substream))
7eaa943c Takashi Iwai         2008-08-08  800           return -ENXIO;
^1da177e Linus Torvalds       2005-04-16  801   runtime = substream->runtime;
^1da177e Linus Torvalds       2005-04-16  802   
snd_pcm_stream_lock_irq(substream);
^1da177e Linus Torvalds       2005-04-16  803   if (runtime->status->state == 
SNDRV_PCM_STATE_OPEN) {
^1da177e Linus Torvalds       2005-04-16  804           
snd_pcm_stream_unlock_irq(substream);
^1da177e Linus Torvalds       2005-04-16  805           return -EBADFD;
^1da177e Linus Torvalds       2005-04-16  806   }
^1da177e Linus Torvalds       2005-04-16  807   
snd_pcm_stream_unlock_irq(substream);
^1da177e Linus Torvalds       2005-04-16  808  
145d92e7 Dan Carpenter        2015-09-23  809   if (params->tstamp_mode < 0 ||
145d92e7 Dan Carpenter        2015-09-23  810       params->tstamp_mode > 
SNDRV_PCM_TSTAMP_LAST)
^1da177e Linus Torvalds       2005-04-16  811           return -EINVAL;
58900810 Takashi Iwai         2014-07-16  812   if (params->proto >= 
SNDRV_PROTOCOL_VERSION(2, 0, 12) &&
58900810 Takashi Iwai         2014-07-16  813       params->tstamp_type > 
SNDRV_PCM_TSTAMP_TYPE_LAST)
5646eda5 Takashi Iwai         2014-07-10  814           return -EINVAL;
^1da177e Linus Torvalds       2005-04-16  815   if (params->avail_min == 0)
^1da177e Linus Torvalds       2005-04-16  816           return -EINVAL;
^1da177e Linus Torvalds       2005-04-16  817   if (params->silence_size >= 
runtime->boundary) {
^1da177e Linus Torvalds       2005-04-16  818           if 
(params->silence_threshold != 0)
^1da177e Linus Torvalds       2005-04-16  819                   return -EINVAL;
^1da177e Linus Torvalds       2005-04-16  820   } else {
^1da177e Linus Torvalds       2005-04-16  821           if 
(params->silence_size > params->silence_threshold)
^1da177e Linus Torvalds       2005-04-16  822                   return -EINVAL;
^1da177e Linus Torvalds       2005-04-16  823           if 
(params->silence_threshold > runtime->buffer_size)
^1da177e Linus Torvalds       2005-04-16  824                   return -EINVAL;
^1da177e Linus Torvalds       2005-04-16  825   }
1250932e Jaroslav Kysela      2010-01-07  826   err = 0;
^1da177e Linus Torvalds       2005-04-16  827   
snd_pcm_stream_lock_irq(substream);
^1da177e Linus Torvalds       2005-04-16  828   runtime->tstamp_mode = 
params->tstamp_mode;
58900810 Takashi Iwai         2014-07-16  829   if (params->proto >= 
SNDRV_PROTOCOL_VERSION(2, 0, 12))
5646eda5 Takashi Iwai         2014-07-10  830           runtime->tstamp_type = 
params->tstamp_type;
^1da177e Linus Torvalds       2005-04-16  831   runtime->period_step = 
params->period_step;
^1da177e Linus Torvalds       2005-04-16  832   runtime->control->avail_min = 
params->avail_min;
^1da177e Linus Torvalds       2005-04-16  833   runtime->start_threshold = 
params->start_threshold;
^1da177e Linus Torvalds       2005-04-16  834   runtime->stop_threshold = 
params->stop_threshold;
^1da177e Linus Torvalds       2005-04-16  835   runtime->silence_threshold = 
params->silence_threshold;
^1da177e Linus Torvalds       2005-04-16  836   runtime->silence_size = 
params->silence_size;
^1da177e Linus Torvalds       2005-04-16  837          params->boundary = 
runtime->boundary;
^1da177e Linus Torvalds       2005-04-16  838   if (snd_pcm_running(substream)) 
{
^1da177e Linus Torvalds       2005-04-16  839           if (substream->stream 
== SNDRV_PCM_STREAM_PLAYBACK &&
^1da177e Linus Torvalds       2005-04-16  840               
runtime->silence_size > 0)
^1da177e Linus Torvalds       2005-04-16  841                   
snd_pcm_playback_silence(substream, ULONG_MAX);
1250932e Jaroslav Kysela      2010-01-07  842           err = 
snd_pcm_update_state(substream, runtime);
^1da177e Linus Torvalds       2005-04-16  843   }
^1da177e Linus Torvalds       2005-04-16  844   
snd_pcm_stream_unlock_irq(substream);
1250932e Jaroslav Kysela      2010-01-07  845   return err;
^1da177e Linus Torvalds       2005-04-16  846  }
^1da177e Linus Torvalds       2005-04-16  847  
877211f5 Takashi Iwai         2005-11-17  848  static int 
snd_pcm_sw_params_user(struct snd_pcm_substream *substream,
877211f5 Takashi Iwai         2005-11-17  849                             
struct snd_pcm_sw_params __user * _params)
^1da177e Linus Torvalds       2005-04-16  850  {
877211f5 Takashi Iwai         2005-11-17  851   struct snd_pcm_sw_params params;
^1da177e Linus Torvalds       2005-04-16  852   int err;
^1da177e Linus Torvalds       2005-04-16  853   if (copy_from_user(&params, 
_params, sizeof(params)))
^1da177e Linus Torvalds       2005-04-16  854           return -EFAULT;
^1da177e Linus Torvalds       2005-04-16  855   err = 
snd_pcm_sw_params(substream, &params);
^1da177e Linus Torvalds       2005-04-16  856   if (copy_to_user(_params, 
&params, sizeof(params)))
^1da177e Linus Torvalds       2005-04-16  857           return -EFAULT;
^1da177e Linus Torvalds       2005-04-16  858   return err;
^1da177e Linus Torvalds       2005-04-16  859  }
^1da177e Linus Torvalds       2005-04-16  860  
de41e437 Baolin Wang          2018-04-24  861  int snd_pcm_status64(struct 
snd_pcm_substream *substream,
de41e437 Baolin Wang          2018-04-24  862                struct 
snd_pcm_status64 *status)
^1da177e Linus Torvalds       2005-04-16  863  {
877211f5 Takashi Iwai         2005-11-17  864   struct snd_pcm_runtime *runtime 
= substream->runtime;
^1da177e Linus Torvalds       2005-04-16  865  
^1da177e Linus Torvalds       2005-04-16  866   
snd_pcm_stream_lock_irq(substream);
3179f620 Pierre-Louis Bossart 2015-02-13  867  
3179f620 Pierre-Louis Bossart 2015-02-13  868   
snd_pcm_unpack_audio_tstamp_config(status->audio_tstamp_data,
3179f620 Pierre-Louis Bossart 2015-02-13  869                                   
&runtime->audio_tstamp_config);
3179f620 Pierre-Louis Bossart 2015-02-13  870  
3179f620 Pierre-Louis Bossart 2015-02-13  871   /* backwards compatible 
behavior */
3179f620 Pierre-Louis Bossart 2015-02-13  872   if 
(runtime->audio_tstamp_config.type_requested ==
3179f620 Pierre-Louis Bossart 2015-02-13  873           
SNDRV_PCM_AUDIO_TSTAMP_TYPE_COMPAT) {
3179f620 Pierre-Louis Bossart 2015-02-13  874           if (runtime->hw.info & 
SNDRV_PCM_INFO_HAS_WALL_CLOCK)
3179f620 Pierre-Louis Bossart 2015-02-13  875                   
runtime->audio_tstamp_config.type_requested =
3179f620 Pierre-Louis Bossart 2015-02-13  876                           
SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK;
3179f620 Pierre-Louis Bossart 2015-02-13  877           else
3179f620 Pierre-Louis Bossart 2015-02-13  878                   
runtime->audio_tstamp_config.type_requested =
3179f620 Pierre-Louis Bossart 2015-02-13  879                           
SNDRV_PCM_AUDIO_TSTAMP_TYPE_DEFAULT;
3179f620 Pierre-Louis Bossart 2015-02-13  880           
runtime->audio_tstamp_report.valid = 0;
3179f620 Pierre-Louis Bossart 2015-02-13  881   } else
3179f620 Pierre-Louis Bossart 2015-02-13  882           
runtime->audio_tstamp_report.valid = 1;
3179f620 Pierre-Louis Bossart 2015-02-13  883  
^1da177e Linus Torvalds       2005-04-16 @884   status->state = 
runtime->status->state;
^1da177e Linus Torvalds       2005-04-16 @885   status->suspended_state = 
runtime->status->suspended_state;
^1da177e Linus Torvalds       2005-04-16  886   if (status->state == 
SNDRV_PCM_STATE_OPEN)
^1da177e Linus Torvalds       2005-04-16  887           goto _end;
de41e437 Baolin Wang          2018-04-24  888   status->trigger_tstamp_sec = 
runtime->trigger_tstamp.tv_sec;
de41e437 Baolin Wang          2018-04-24  889   status->trigger_tstamp_nsec = 
runtime->trigger_tstamp.tv_nsec;
8c121586 Jaroslav Kysela      2008-01-11  890   if (snd_pcm_running(substream)) 
{
^1da177e Linus Torvalds       2005-04-16  891           
snd_pcm_update_hw_ptr(substream);
8c121586 Jaroslav Kysela      2008-01-11  892           if 
(runtime->tstamp_mode == SNDRV_PCM_TSTAMP_ENABLE) {
de41e437 Baolin Wang          2018-04-24  893                   
status->tstamp_sec = runtime->status->tstamp.tv_sec;
de41e437 Baolin Wang          2018-04-24  894                   
status->tstamp_nsec =
de41e437 Baolin Wang          2018-04-24  895                           
runtime->status->tstamp.tv_nsec;
de41e437 Baolin Wang          2018-04-24  896                   
status->driver_tstamp_sec =
de41e437 Baolin Wang          2018-04-24  897                           
runtime->driver_tstamp.tv_sec;
de41e437 Baolin Wang          2018-04-24  898                   
status->driver_tstamp_nsec =
de41e437 Baolin Wang          2018-04-24  899                           
runtime->driver_tstamp.tv_nsec;
de41e437 Baolin Wang          2018-04-24  900                   
status->audio_tstamp_sec =
de41e437 Baolin Wang          2018-04-24  901                           
runtime->status->audio_tstamp.tv_sec;
de41e437 Baolin Wang          2018-04-24  902                   
status->audio_tstamp_nsec =
de41e437 Baolin Wang          2018-04-24  903                           
runtime->status->audio_tstamp.tv_nsec;
3179f620 Pierre-Louis Bossart 2015-02-13  904                   if 
(runtime->audio_tstamp_report.valid == 1)
3179f620 Pierre-Louis Bossart 2015-02-13  905                           /* 
backwards compatibility, no report provided in COMPAT mode */
3179f620 Pierre-Louis Bossart 2015-02-13  906                           
snd_pcm_pack_audio_tstamp_report(&status->audio_tstamp_data,
3179f620 Pierre-Louis Bossart 2015-02-13  907                                   
                        &status->audio_tstamp_accuracy,
3179f620 Pierre-Louis Bossart 2015-02-13  908                                   
                        &runtime->audio_tstamp_report);
3179f620 Pierre-Louis Bossart 2015-02-13  909  
8c121586 Jaroslav Kysela      2008-01-11  910                   goto 
_tstamp_end;
8c121586 Jaroslav Kysela      2008-01-11  911           }
0d59b814 Pierre-Louis Bossart 2015-02-06  912   } else {
0d59b814 Pierre-Louis Bossart 2015-02-06  913           /* get tstamp only in 
fallback mode and only if enabled */
ac8bbfea Baolin Wang          2018-04-24  914           if 
(runtime->tstamp_mode == SNDRV_PCM_TSTAMP_ENABLE) {
ac8bbfea Baolin Wang          2018-04-24  915                   struct 
timespec64 tstamp;
ac8bbfea Baolin Wang          2018-04-24  916  
ac8bbfea Baolin Wang          2018-04-24  917                   
snd_pcm_gettime(runtime, &tstamp);
de41e437 Baolin Wang          2018-04-24  918                   
status->tstamp_sec = tstamp.tv_sec;
de41e437 Baolin Wang          2018-04-24  919                   
status->tstamp_nsec = tstamp.tv_nsec;
ac8bbfea Baolin Wang          2018-04-24  920           }
0d59b814 Pierre-Louis Bossart 2015-02-06  921   }
8c121586 Jaroslav Kysela      2008-01-11  922   _tstamp_end:
^1da177e Linus Torvalds       2005-04-16  923   status->appl_ptr = 
runtime->control->appl_ptr;
^1da177e Linus Torvalds       2005-04-16  924   status->hw_ptr = 
runtime->status->hw_ptr;
^1da177e Linus Torvalds       2005-04-16  925   if (substream->stream == 
SNDRV_PCM_STREAM_PLAYBACK) {
^1da177e Linus Torvalds       2005-04-16  926           status->avail = 
snd_pcm_playback_avail(runtime);
^1da177e Linus Torvalds       2005-04-16  927           if 
(runtime->status->state == SNDRV_PCM_STATE_RUNNING ||
4bbe1ddf Takashi Iwai         2008-10-13  928               
runtime->status->state == SNDRV_PCM_STATE_DRAINING) {
^1da177e Linus Torvalds       2005-04-16  929                   status->delay = 
runtime->buffer_size - status->avail;
4bbe1ddf Takashi Iwai         2008-10-13  930                   status->delay 
+= runtime->delay;
4bbe1ddf Takashi Iwai         2008-10-13  931           } else
^1da177e Linus Torvalds       2005-04-16  932                   status->delay = 
0;
^1da177e Linus Torvalds       2005-04-16  933   } else {
^1da177e Linus Torvalds       2005-04-16  934           status->avail = 
snd_pcm_capture_avail(runtime);
^1da177e Linus Torvalds       2005-04-16  935           if 
(runtime->status->state == SNDRV_PCM_STATE_RUNNING)
4bbe1ddf Takashi Iwai         2008-10-13  936                   status->delay = 
status->avail + runtime->delay;
^1da177e Linus Torvalds       2005-04-16  937           else
^1da177e Linus Torvalds       2005-04-16  938                   status->delay = 
0;
^1da177e Linus Torvalds       2005-04-16  939   }
^1da177e Linus Torvalds       2005-04-16  940   status->avail_max = 
runtime->avail_max;
^1da177e Linus Torvalds       2005-04-16  941   status->overrange = 
runtime->overrange;
^1da177e Linus Torvalds       2005-04-16  942   runtime->avail_max = 0;
^1da177e Linus Torvalds       2005-04-16  943   runtime->overrange = 0;
^1da177e Linus Torvalds       2005-04-16  944   _end:
^1da177e Linus Torvalds       2005-04-16  945           
snd_pcm_stream_unlock_irq(substream);
^1da177e Linus Torvalds       2005-04-16  946   return 0;
^1da177e Linus Torvalds       2005-04-16  947  }
^1da177e Linus Torvalds       2005-04-16  948  

:::::: The code at line 884 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:::::: TO: Linus Torvalds <torva...@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torva...@ppc970.osdl.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Reply via email to