linux/drivers/hid/hid-roccat-arvo.c
<<
" /spatio /formio a " href="../linux+v33.69/drivers/hid/hid-roccat-arvo.c">" img src="../.static/gfx/right.png" alt=">>">" /spatio" spat class="lxr_search">" " input typaluhidden" namalunavtarget" on valu">" input typalutext" namalusearch" idlusearch">" buttptitypalusubmit">Search" Prefso /a>" /spatio /divio form ac/opt="ajax+*" method="post" onsubmit="return false;">" input typaluhidden" namaluajax_lookup" idluajax_lookup" on valu">" /formio" div class="headingbottpm">o div idlufile_contents"i
   1
/a>
spat class="comment">/*
/spatio   2
/a>
spat class="comment"> * Roccat Arvo driver for Linux
/spatio   3
/a>
spat class="comment"> *
/spatio   4
/a>
spat class="comment"> * Copyright (c) 2011 Stefat Achatz <erazor_de@users.sourceforge.net>
/spatio   5
/a>
spat class="comment"> */
/spatio   6
/a>"   7
/a>
spat class="comment">/*
/spatio   8
/a>
spat class="comment"> * This program is free software; you cat redistribute it and/or modify it
/spatio   9
/a>
spat class="comment"> * under the terms of the GNU General Public License as published by the Free
/spatio  8.9
spat class="comment"> * Software Founda/opt; either versopti2 of the License, or (at your 1  11
/a>
spat class="comment"> * any later versopt.
/spatio  12
/a>
spat class="comment"> */
/spatio  13
/a>"  14
/a>
spat class="comment">/*
/spatio  15
/a>
spat class="comment"> * Roccat Arvo is a gamar keyboard with 5 macro keys that cat be configured in
/spatio  16
/a>
spat class="comment"> * 5 profiles.
/spatio  17
/a>
spat class="comment"> */
/spatio  18
/a>"  19
/a>#include <linux/device.h
/a>>o  20
/a>#include <linux/input.h
/a>>o  21
/a>#include <linux/hid.h
/a>>o  22
/a>#include <linux/module.h
/a>>o  23
/a>#include <linux/slab.h
/a>>o  24
/a>#include <linux/hid-roccat.h
/a>>o  25
/a>#include "hid-ids.h
/a>"o  26
/a>#include "hid-roccat-commpt.h
/a>"o  27
/a>#include "hid-roccat-arvo.h
/a>"o  28
/a>"  29
/a>static struct 
a href="+code=class" class="sref">class
/a> *
a href="+code=arvo_class" class="sref">arvo_class
/a>;o  30
/a>"  31
/a>static 
a href="+code=ssize_t" class="sref">ssize_t
/a> 
a href="+code=arvo_sysfs_show_mode_key" class="sref">arvo_sysfs_show_mode_key
/a>(struct 
a href="+code=device" class="sref">device
/a> *
a href="+code=dev" class="sref">dev
/a>,"  32
/a>                struct 
a href="+code=device_attribute" class="sref">device_attribute
/a> *
a href="+code=attr" class="sref">attr
/a>, char *
a href="+code=buf" class="sref">buf
/a>)"  33
/a>{"  34
/a>        struct 
a href="+code=arvo_device" class="sref">arvo_device
/a> *
a href="+code=arvo" class="sref">arvo
/a> ="  35
/a>                        
a href="+code=hid_get_drvda/a" class="sref">hid_get_drvda/a
/a>(
a href="+code=dev_get_drvda/a" class="sref">dev_get_drvda/a
/a>(
a href="+code=dev" class="sref">dev
/a>->
a href="+code=parent" class="sref">parent
/a>->
a href="+code=parent" class="sref">parent
/a>));o  36
/a>        struct 
a href="+code=usb_device" class="sref">usb_device
/a> *
a href="+code=usb_dev" class="sref">usb_dev
/a> ="  37
/a>                        
a href="+code=interface_to_usbdev" class="sref">interface_to_usbdev
/a>(
a href="+code=to_usb_interface" class="sref">to_usb_interface
/a>(
a href="+code=dev" class="sref">dev
/a>->
a href="+code=parent" class="sref">parent
/a>->
a href="+code=parent" class="sref">parent
/a>));o  38
/a>        struct 
a href="+code=arvo_mode_key" class="sref">arvo_mode_key
/a> 
a href="+code=temp_buf" class="sref">temp_buf
/a>;o  39
/a>        int 
a href="+code=retval" class="sref">retval
/a>;o  40
/a>"  41
/a>        
a href="+code=mutex_lock" class="sref">mutex_lock
/a>(&
a href="+code=arvo" class="sref">arvo
/a>->
a href="+code=arvo_lock" class="sref">arvo_lock
/a>);o  42
/a>        
a href="+code=retval" class="sref">retval
/a> = 
a href="+code=roccat_commpt2_receive" class="sref">roccat_commpt2_receive
/a>(
a href="+code=usb_dev" class="sref">usb_dev
/a>, 
a href="+code=ARVO_COMMAND_MODE_KEY" class="sref">ARVO_COMMAND_MODE_KEY
/a>,"  43
/a>                        &
a href="+code=temp_buf" class="sref">temp_buf
/a>, sizeof(struct 
a href="+code=arvo_mode_key" class="sref">arvo_mode_key
/a>));o  44
/a>        
a href="+code=mutex_unlock" class="sref">mutex_unlock
/a>(&
a href="+code=arvo" class="sref">arvo
/a>->
a href="+code=arvo_lock" class="sref">arvo_lock
/a>);o  45
/a>        if (
a href="+code=retval" class="sref">retval
/a>)"  46
/a>                return 
a href="+code=retval" class="sref">retval
/a>;o  47
/a>"  48
/a>        return 
a href="+code=snprintf" class="sref">snprintf
/a>(
a href="+code=buf" class="sref">buf
/a>, 
a href="+code=PAGE_SIZE" class="sref">PAGE_SIZE
/a>, 
spat class="string">"%d\n"temp_buf
/a>.
a href="+code=state" class="sref">state
/a>);o  49
/a>}o  50
/a>"  51
/a>static 
a href="+code=ssize_t" class="sref">ssize_t
/a> 
a href="+code=arvo_sysfs_set_mode_key" class="sref">arvo_sysfs_set_mode_key
/a>(struct 
a href="+code=device" class="sref">device
/a> *
a href="+code=dev" class="sref">dev
/a>,"  52
/a>                struct 
a href="+code=device_attribute" class="sref">device_attribute
/a> *
a href="+code=attr" class="sref">attr
/a>, char const *
a href="+code=buf" class="sref">buf
/a>, 
a href="+code=size_t" class="sref">size_t
/a> 
a href="+code=size" class="sref">size
/a>)"  53
/a>{"  54
/a>        struct 
a href="+code=arvo_device" class="sref">arvo_device
/a> *
a href="+code=arvo" class="sref">arvo
/a> ="  55
/a>                        
a href="+code=hid_get_drvda/a" class="sref">hid_get_drvda/a
/a>(
a href="+code=dev_get_drvda/a" class="sref">dev_get_drvda/a
/a>(
a href="+code=dev" class="sref">dev
/a>->
a href="+code=parent" class="sref">parent
/a>->
a href="+code=parent" class="sref">parent
/a>));o  56
/a>        struct 
a href="+code=usb_device" class="sref">usb_device
/a> *
a href="+code=usb_dev" class="sref">usb_dev
/a> ="  57
/a>                        
a href="+code=interface_to_usbdev" class="sref">interface_to_usbdev
/a>(
a href="+code=to_usb_interface" class="sref">to_usb_interface
/a>(
a href="+code=dev" class="sref">dev
/a>->
a href="+code=parent" class="sref">parent
/a>->
a href="+code=parent" class="sref">parent
/a>));o  58
/a>        struct 
a href="+code=arvo_mode_key" class="sref">arvo_mode_key
/a> 
a href="+code=temp_buf" class="sref">temp_buf
/a>;o  59
/a>        unsigned long 
a href="+code=state" class="sref">state
/a>;o  60
/a>        int 
a href="+code=retval" class="sref">retval
/a>;o  61
/a>"  62
/a>        
a href="+code=retval" class="sref">retval
/a> = 
a href="+code=strict_strtoul" class="sref">strict_strtoul
/a>(
a href="+code=buf" class="sref">buf
/a>, 10, &
a href="+code=state" class="sref">state
/a>);o  63
/a>        if (
a href="+code=retval" class="sref">retval
/a>)"  64
/a>                return 
a href="+code=retval" class="sref">retval
/a>;o  65
/a>"  66
/a>        
a href="+code=temp_buf" class="sref">temp_buf
/a>.
a href="+code=command" class="sref">command
/a> = 
a href="+code=ARVO_COMMAND_MODE_KEY" class="sref">ARVO_COMMAND_MODE_KEY
/a>;o  67
/a>        
a href="+code=temp_buf" class="sref">temp_buf
/a>.
a href="+code=state" class="sref">state
/a> = 
a href="+code=state" class="sref">state
/a>;o  68
/a>"  69
/a>        
a href="+code=mutex_lock" class="sref">mutex_lock
/a>(&
a href="+code=arvo" class="sref">arvo
/a>->
a href="+code=arvo_lock" class="sref">arvo_lock
/a>);o  70
/a>        
a href="+code=retval" class="sref">retval
/a> = 
a href="+code=roccat_commpt2_send" class="sref">roccat_commpt2_send
/a>(
a href="+code=usb_dev" class="sref">usb_dev
/a>, 
a href="+code=ARVO_COMMAND_MODE_KEY" class="sref">ARVO_COMMAND_MODE_KEY
/a>,"  71
/a>                        &
a href="+code=temp_buf" class="sref">temp_buf
/a>, sizeof(struct 
a href="+code=arvo_mode_key" class="sref">arvo_mode_key
/a>));o  72
/a>        
a href="+code=mutex_unlock" class="sref">mutex_unlock
/a>(&
a href="+code=arvo" class="sref">arvo
/a>->
a href="+code=arvo_lock" class="sref">arvo_lock
/a>);o  73
/a>        if (
a href="+code=retval" class="sref">retval
/a>)"  74
/a>                return 
a href="+code=retval" class="sref">retval
/a>;o  75
/a>"  76
/a>        return 
a href="+code=size" class="sref">size
/a>;o  77
/a>}o  78
/a>"  79
/a>static 
a href="+code=ssize_t" class="sref">ssize_t
/a> 
a href="+code=arvo_sysfs_show_key_mask" class="sref">arvo_sysfs_show_key_mask
/a>(struct 
a href="+code=device" class="sref">device
/a> *
a href="+code=dev" class="sref">dev
/a>,"  80
/a>                struct 
a href="+code=device_attribute" class="sref">device_attribute
/a> *
a href="+code=attr" class="sref">attr
/a>, char *
a href="+code=buf" class="sref">buf
/a>)"  81
/a>{"  82
/a>        struct 
a href="+code=arvo_device" class="sref">arvo_device
/a> *
a href="+code=arvo" class="sref">arvo
/a> ="  83
/a>                        
a href="+code=hid_get_drvda/a" class="sref">hid_get_drvda/a
/a>(
a href="+code=dev_get_drvda/a" class="sref">dev_get_drvda/a
/a>(
a href="+code=dev" class="sref">dev
/a>->
a href="+code=parent" class="sref">parent
/a>->
a href="+code=parent" class="sref">parent
/a>));o  84
/a>        struct 
a href="+code=usb_device" class="sref">usb_device
/a> *
a href="+code=usb_dev" class="sref">usb_dev
/a> ="  85
/a>                        
a href="+code=interface_to_usbdev" class="sref">interface_to_usbdev
/a>(
a href="+code=to_usb_interface" class="sref">to_usb_interface
/a>(
a href="+code=dev" class="sref">dev
/a>->
a href="+code=parent" class="sref">parent
/a>->
a href="+code=parent" class="sref">parent
/a>));o  86
/a>        struct 
a href="+code=arvo_key_mask" class="sref">arvo_key_mask
/a> 
a href="+code=temp_buf" class="sref">temp_buf
/a>;o  87
/a>        int 
a href="+code=retval" class="sref">retval
/a>;o  88
/a>"  89
/a>        
a href="+code=mutex_lock" class="sref">mutex_lock
/a>(&
a href="+code=arvo" class="sref">arvo
/a>->
a href="+code=arvo_lock" class="sref">arvo_lock
/a>);o  90
/a>        
a href="+code=retval" class="sref">retval
/a> = 
a href="+code=roccat_commpt2_receive" class="sref">roccat_commpt2_receive
/a>(
a href="+code=usb_dev" class="sref">usb_dev
/a>, 
a href="+code=ARVO_COMMAND_KEY_MASK" class="sref">ARVO_COMMAND_KEY_MASK
/a>,"  91
/a>                        &
a href="+code=temp_buf" class="sref">temp_buf
/a>, sizeof(struct 
a href="+code=arvo_key_mask" class="sref">arvo_key_mask
/a>));o  92
/a>        
a href="+code=mutex_unlock" class="sref">mutex_unlock
/a>(&
a href="+code=arvo" class="sref">arvo
/a>->
a href="+code=arvo_lock" class="sref">arvo_lock
/a>);o  93
/a>        if (
a href="+code=retval" class="sref">retval
/a>)"  94
/a>                return 
a href="+code=retval" class="sref">retval
/a>;o  95
/a>"  96
/a>        return 
a href="+code=snprintf" class="sref">snprintf
/a>(
a href="+code=buf" class="sref">buf
/a>, 
a href="+code=PAGE_SIZE" class="sref">PAGE_SIZE
/a>, 
spat class="string">"%d\n"temp_buf
/a>.
a href="+code=key_mask" class="sref">key_mask
/a>);o  97
/a>}o  98
/a>"  99
/a>static 
a href="+code=ssize_t" class="sref">ssize_t
/a> 
a href="+code=arvo_sysfs_set_key_mask" class="sref">arvo_sysfs_set_key_mask
/a>(struct 
a href="+code=device" class="sref">device
/a> *
a href="+code=dev" class="sref">dev
/a>," 100
/a>                struct 
a href="+code=device_attribute" class="sref">device_attribute
/a> *
a href="+code=attr" class="sref">attr
/a>, char const *
a href="+code=buf" class="sref">buf
/a>, 
a href="+code=size_t" class="sref">size_t
/a> 
a href="+code=size" class="sref">size
/a>)" 101
/a>{" 102
/a>        struct 
a href="+code=arvo_device" class="sref">arvo_device
/a> *
a href="+code=arvo" class="sref">arvo
/a> =" 103
/a>                        
a href="+code=hid_get_drvda/a" class="sref">hid_get_drvda/a
/a>(
a href="+code=dev_get_drvda/a" class="sref">dev_get_drvda/a
/a>(
a href="+code=dev" class="sref">dev
/a>->
a href="+code=parent" class="sref">parent
/a>->
a href="+code=parent" class="sref">parent
/a>));o 104
/a>        struct 
a href="+code=usb_device" class="sref">usb_device
/a> *
a href="+code=usb_dev" class="sref">usb_dev
/a> =" 105
/a>                        
a href="+code=interface_to_usbdev" class="sref">interface_to_usbdev
/a>(
a href="+code=to_usb_interface" class="sref">to_usb_interface
/a>(
a href="+code=dev" class="sref">dev
/a>->
a href="+code=parent" class="sref">parent
/a>->
a href="+code=parent" class="sref">parent
/a>));o 106
/a>        struct 
a href="+code=arvo_key_mask" class="sref">arvo_key_mask
/a> 
a href="+code=temp_buf" class="sref">temp_buf
/a>;o 107
/a>        unsigned long 
a href="+code=key_mask" class="sref">key_mask
/a>;o 108
/a>        int 
a href="+code=retval" class="sref">retval
/a>;o 109
/a>" 110
/a>        
a href="+code=retval" class="sref">retval
/a> = 
a href="+code=strict_strtoul" class="sref">strict_strtoul
/a>(
a href="+code=buf" class="sref">buf
/a>, 10, &
a href="+code=key_mask" class="sref">key_mask
/a>);o 111
/a>        if (
a href="+code=retval" class="sref">retval
/a>)" 112
/a>                return 
a href="+code=retval" class="sref">retval
/a>;o 113
/a>" 114
/a>        
a href="+code=temp_buf" class="sref">temp_buf
/a>.
a href="+code=command" class="sref">command
/a> = 
a href="+code=ARVO_COMMAND_KEY_MASK" class="sref">ARVO_COMMAND_KEY_MASK
/a>;o 115
/a>        
a href="+code=temp_buf" class="sref">temp_buf
/a>.
a href="+code=key_mask" class="sref">key_mask
/a> = 
a href="+code=key_mask" class="sref">key_mask
/a>;o 116
/a>" 117
/a>        
a href="+code=mutex_lock" class="sref">mutex_lock
/a>(&
a href="+code=arvo" class="sref">arvo
/a>->
a href="+code=arvo_lock" class="sref">arvo_lock
/a>);o 118
/a>        
a href="+code=retval" class="sref">retval
/a> = 
a href="+code=roccat_commpt2_send" class="sref">roccat_commpt2_send
/a>(
a href="+code=usb_dev" class="sref">usb_dev
/a>, 
a href="+code=ARVO_COMMAND_KEY_MASK" class="sref">ARVO_COMMAND_KEY_MASK
/a>," 119
/a>                        &
a href="+code=temp_buf" class="sref">temp_buf
/a>, sizeof(struct 
a href="+code=arvo_key_mask" class="sref">arvo_key_mask
/a>));o 120
/a>        
a href="+code=mutex_unlock" class="sref">mutex_unlock
/a>(&
a href="+code=arvo" class="sref">arvo
/a>->
a href="+code=arvo_lock" class="sref">arvo_lock
/a>);o 121
/a>        if (
a href="+code=retval" class="sref">retval
/a>)" 122
/a>                return 
a href="+code=retval" class="sref">retval
/a>;o 123
/a>" 124
/a>        return 
a href="+code=size" class="sref">size
/a>;o 125
/a>}o 126
/a>" 127
/a>
spat class="comment">/* retval is 1-5 on success, < 0 on error */
/spatio 128
/a>static int 
a href="+code=arvo_get_actual_profile" class="sref">arvo_get_actual_profile
/a>(struct 
a href="+code=usb_device" class="sref">usb_device
/a> *
a href="+code=usb_dev" class="sref">usb_dev
/a>)" 129
/a>{" 130
/a>        struct 
a href="+code=arvo_actual_profile" class="sref">arvo_actual_profile
/a> 
a href="+code=temp_buf" class="sref">temp_buf
/a>;o 131
/a>        int 
a href="+code=retval" class="sref">retval
/a>;o 132
/a>o 133
/a>        
a href="+code=retval" class="sref">retval
/a> = 
a href="+code=roccat_commpt2_receive" class="sref">roccat_commpt2_receive
/a>(
a href="+code=usb_dev" class="sref">usb_dev
/a>, 
a href="+code=ARVO_COMMAND_ACTUAL_PROFILE" class="sref">ARVO_COMMAND_ACTUAL_PROFILE
/a>," 134
/a>                        &
a href="+code=temp_buf" class="sref">temp_buf
/a>, sizeof(struct 
a href="+code=arvo_actual_profile" class="sref">arvo_actual_profile
/a>));o 135
/a>" 136
/a>        if (
a href="+code=retval" class="sref">retval
/a>)" 137
/a>                return 
a href="+code=retval" class="sref">retval
/a>;o 138
/a>" 139
/a>        return 
a href="+code=temp_buf" class="sref">temp_buf
/a>.
a href="+code=actual_profile" class="sref">actual_profile
/a>;o 140
/a>}o 141
/a>" 142
/a>static 
a href="+code=ssize_t" class="sref">ssize_t
/a> 
a href="+code=arvo_sysfs_show_actual_profile" class="sref">arvo_sysfs_show_actual_profile
/a>(struct 
a href="+code=device" class="sref">device
/a> *
a href="+code=dev" class="sref">dev
/a>," 143
/a>                struct 
a href="+code=device_attribute" class="sref">device_attribute
/a> *
a href="+code=attr" class="sref">attr
/a>, char *
a href="+code=buf" class="sref">buf
/a>)" 144
/a>{" 145
/a>        struct 
a href="+code=arvo_device" class="sref">arvo_device
/a> *
a href="+code=arvo" class="sref">arvo
/a> =" 146
/a>                        
a href="+code=hid_get_drvda/a" class="sref">hid_get_drvda/a
/a>(
a href="+code=dev_get_drvda/a" class="sref">dev_get_drvda/a
/a>(
a href="+code=dev" class="sref">dev
/a>->
a href="+code=parent" class="sref">parent
/a>->
a href="+code=parent" class="sref">parent
/a>));o 147
/a>" 148
/a>        return 
a href="+code=snprintf" class="sref">snprintf
/a>(
a href="+code=buf" class="sref">buf
/a>, 
a href="+code=PAGE_SIZE" class="sref">PAGE_SIZE
/a>, 
spat class="string">"%d\n"arvo
/a>->
a href="+code=actual_profile" class="sref">actual_profile
/a>);o 149
/a>}o 150
/a>" 151
/a>static 
a href="+code=ssize_t" class="sref">ssize_t
/a> 
a href="+code=arvo_sysfs_set_actual_profile" class="sref">arvo_sysfs_set_actual_profile
/a>(struct 
a href="+code=device" class="sref">device
/a> *
a href="+code=dev" class="sref">dev
/a>," 152
/a>                struct 
a href="+code=device_attribute" class="sref">device_attribute
/a> *
a href="+code=attr" class="sref">attr
/a>, char const *
a href="+code=buf" class="sref">buf
/a>, 
a href="+code=size_t" class="sref">size_t
/a> 
a href="+code=size" class="sref">size
/a>)" 153
/a>{" 154
/a>        struct 
a href="+code=arvo_device" class="sref">arvo_device
/a> *
a href="+code=arvo" class="sref">arvo
/a> =" 155
/a>                        
a href="+code=hid_get_drvda/a" class="sref">hid_get_drvda/a
/a>(
a href="+code=dev_get_drvda/a" class="sref">dev_get_drvda/a
/a>(
a href="+code=dev" class="sref">dev
/a>->
a href="+code=parent" class="sref">parent
/a>->
a href="+code=parent" class="sref">parent
/a>));o 156
/a>        struct 
a href="+code=usb_device" class="sref">usb_device
/a> *
a href="+code=usb_dev" class="sref">usb_dev
/a> =" 157
/a>                        
a href="+code=interface_to_usbdev" class="sref">interface_to_usbdev
/a>(
a href="+code=to_usb_interface" class="sref">to_usb_interface
/a>(
a href="+code=dev" class="sref">dev
/a>->
a href="+code=parent" class="sref">parent
/a>->
a href="+code=parent" class="sref">parent
/a>));o 158
/a>        struct 
a href="+code=arvo_actual_profile" class="sref">arvo_actual_profile
/a> 
a href="+code=temp_buf" class="sref">temp_buf
/a>;o 159
/a>        unsigned long 
a href="+code=profile" class="sref">profile
/a>;o 160
/a>        int 
a href="+code=retval" class="sref">retval
/a>;o 161
/a>" 162
/a>        
a href="+code=retval" class="sref">retval
/a> = 
a href="+code=strict_strtoul" class="sref">strict_strtoul
/a>(
a href="+code=buf" class="sref">buf
/a>, 10, &
a href="+code=profile" class="sref">profile
/a>);o 163
/a>        if (
a href="+code=retval" class="sref">retval
/a>)" 164
/a>                return 
a href="+code=retval" class="sref">retval
/a>;o 165
/a>" 166
/a>        if (
a href="+code=profile" class="sref">profile
/a> < 1 || 
a href="+code=profile" class="sref">profile
/a> > 5)" 167
/a>                return -
a href="+code=EINVAL" class="sref">EINVAL
/a>;o 168
/a>" 169
/a>        
a href="+code=temp_buf" class="sref">temp_buf
/a>.
a href="+code=command" class="sref">command
/a> = 
a href="+code=ARVO_COMMAND_ACTUAL_PROFILE" class="sref">ARVO_COMMAND_ACTUAL_PROFILE
/a>;o 170
/a>        
a href="+code=temp_buf" class="sref">temp_buf
/a>.
a href="+code=actual_profile" class="sref">actual_profile
/a> = 
a href="+code=profile" class="sref">profile
/a>;o 171
/a>" 172
/a>        
a href="+code=mutex_lock" class="sref">mutex_lock
/a>(&
a href="+code=arvo" class="sref">arvo
/a>->
a href="+code=arvo_lock" class="sref">arvo_lock
/a>);o 173
/a>        
a href="+code=retval" class="sref">retval
/a> = 
a href="+code=roccat_commpt2_send" class="sref">roccat_commpt2_send
/a>(
a href="+code=usb_dev" class="sref">usb_dev
/a>, 
a href="+code=ARVO_COMMAND_ACTUAL_PROFILE" class="sref">ARVO_COMMAND_ACTUAL_PROFILE
/a>," 174
/a>                        &
a href="+code=temp_buf" class="sref">temp_buf
/a>, sizeof(struct 
a href="+code=arvo_actual_profile" class="sref">arvo_actual_profile
/a>));o 175
/a>        if (!
a href="+code=retval" class="sref">retval
/a>) {" 176
/a>                
a href="+code=arvo" class="sref">arvo
/a>->
a href="+code=actual_profile" class="sref">actual_profile
/a> = 
a href="+code=profile" class="sref">profile
/a>;o 177
/a>                
a href="+code=retval" class="sref">retval
/a> = 
a href="+code=size" class="sref">size
/a>;o 178
/a>        }o 179
/a>        
a href="+code=mutex_unlock" class="sref">mutex_unlock
/a>(&
a href="+code=arvo" class="sref">arvo
/a>->
a href="+code=arvo_lock" class="sref">arvo_lock
/a>);o 180
/a>        return 
a href="+code=retval" class="sref">retval
/a>;o 181
/a>}o 182
/a>o 183
/a>static 
a href="+code=ssize_t" class="sref">ssize_t
/a> 
a href="+code=arvo_sysfs_write" class="sref">arvo_sysfs_write
/a>(struct 
a href="+code=file" class="sref">file
/a> *
a href="+code=fp" class="sref">fp
/a>," 184
/a>                struct 
a href="+code=kobject" class="sref">kobject
/a> *
a href="+code=kobj" class="sref">kobj
/a>, void const *
a href="+code=buf" class="sref">buf
/a>," 185
/a>                
a href="+code=loff_t" class="sref">loff_t
/a> 
a href="+code=off" class="sref">off
/a>, 
a href="+code=size_t" class="sref">size_t
/a> 
a href="+code=count" class="sref">count
/a>, 
a href="+code=size_t" class="sref">size_t
/a> 
a href="+code=real_size" class="sref">real_size
/a>, 
a href="+code=uint" class="sref">uint
/a> 
a href="+code=command" class="sref">command
/a>)" 186
/a>{" 187
/a>        struct 
a href="+code=device" class="sref">device
/a> *
a href="+code=dev" class="sref">dev
/a> =" 188
/a>                        
a href="+code=container_of" class="sref">container_of
/a>(
a href="+code=kobj" class="sref">kobj
/a>, struct 
a href="+code=device" class="sref">device
/a>, 
a href="+code=kobj" class="sref">kobj
/a>)->
a href="+code=parent" class="sref">parent
/a>->
a href="+code=parent" class="sref">parent
/a>;o 189
/a>        struct 
a href="+code=arvo_device" class="sref">arvo_device
/a> *
a href="+code=arvo" class="sref">arvo
/a> = 
a href="+code=hid_get_drvda/a" class="sref">hid_get_drvda/a
/a>(
a href="+code=dev_get_drvda/a" class="sref">dev_get_drvda/a
/a>(
a href="+code=dev" class="sref">dev
/a>));o 190
/a>        struct 
a href="+code=usb_device" class="sref">usb_device
/a> *
a href="+code=usb_dev" class="sref">usb_dev
/a> = 
a href="+code=interface_to_usbdev" class="sref">interface_to_usbdev
/a>(
a href="+code=to_usb_interface" class="sref">to_usb_interface
/a>(
a href="+code=dev" class="sref">dev
/a>));o 191
/a>        int 
a href="+code=retval" class="sref">retval
/a>;o 192
/a>o 193
/a>        if (
a href="+code=off" class="sref">off
/a> != 0 || 
a href="+code=count" class="sref">count
/a> != 
a href="+code=real_size" class="sref">real_size
/a>)" 194
/a>                return -
a href="+code=EINVAL" class="sref">EINVAL
/a>;o 195
/a>" 196
/a>        
a href="+code=mutex_lock" class="sref">mutex_lock
/a>(&
a href="+code=arvo" class="sref">arvo
/a>->
a href="+code=arvo_lock" class="sref">arvo_lock
/a>);o 197
/a>        
a href="+code=retval" class="sref">retval
/a> = 
a href="+code=roccat_commpt2_send" class="sref">roccat_commpt2_send
/a>(
a href="+code=usb_dev" class="sref">usb_dev
/a>, 
a href="+code=command" class="sref">command
/a>, 
a href="+code=buf" class="sref">buf
/a>, 
a href="+code=real_size" class="sref">real_size
/a>);o 198
/a>        
a href="+code=mutex_unlock" class="sref">mutex_unlock
/a>(&
a href="+code=arvo" class="sref">arvo
/a>->
a href="+code=arvo_lock" class="sref">arvo_lock
/a>);o 199
/a>" 200
/a>        return (
a href="+code=retval" class="sref">retval
/a> ? 
a href="+code=retval" class="sref">retval
/a> : 
a href="+code=real_size" class="sref">real_size
/a>);o 201
/a>}o 202
/a>o 203
/a>static 
a href="+code=ssize_t" class="sref">ssize_t
/a> 
a href="+code=arvo_sysfs_read" class="sref">arvo_sysfs_read
/a>(struct 
a href="+code=file" class="sref">file
/a> *
a href="+code=fp" class="sref">fp
/a>," 204
/a>                struct 
a href="+code=kobject" class="sref">kobject
/a> *
a href="+code=kobj" class="sref">kobj
/a>, void *
a href="+code=buf" class="sref">buf
/a>, 
a href="+code=loff_t" class="sref">loff_t
/a> 
a href="+code=off" class="sref">off
/a>," 205
/a>                
a href="+code=size_t" class="sref">size_t
/a> 
a href="+code=count" class="sref">count
/a>, 
a href="+code=size_t" class="sref">size_t
/a> 
a href="+code=real_size" class="sref">real_size
/a>, 
a href="+code=uint" class="sref">uint
/a> 
a href="+code=command" class="sref">command
/a>)" 206
/a>{" 207
/a>        struct 
a href="+code=device" class="sref">device
/a> *
a href="+code=dev" class="sref">dev
/a> =" 208
/a>                        
a href="+code=container_of" class="sref">container_of
/a>(
a href="+code=kobj" class="sref">kobj
/a>, struct 
a href="+code=device" class="sref">device
/a>, 
a href="+code=kobj" class="sref">kobj
/a>)->
a href="+code=parent" class="sref">parent
/a>->
a href="+code=parent" class="sref">parent
/a>;o 209
/a>        struct 
a href="+code=arvo_device" class="sref">arvo_device
/a> *
a href="+code=arvo" class="sref">arvo
/a> = 
a href="+code=hid_get_drvda/a" class="sref">hid_get_drvda/a
/a>(
a href="+code=dev_get_drvda/a" class="sref">dev_get_drvda/a
/a>(
a href="+code=dev" class="sref">dev
/a>));o 210
/a>        struct 
a href="+code=usb_device" class="sref">usb_device
/a> *
a href="+code=usb_dev" class="sref">usb_dev
/a> = 
a href="+code=interface_to_usbdev" class="sref">interface_to_usbdev
/a>(
a href="+code=to_usb_interface" class="sref">to_usb_interface
/a>(
a href="+code=dev" class="sref">dev
/a>));o 211
/a>        int 
a href="+code=retval" class="sref">retval
/a>;o 212
/a>o 213
/a>        if (
a href="+code=off" class="sref">off
/a> >= 
a href="+code=real_size" class="sref">real_size
/a>)" 214
/a>                return 0;o 215
/a>" 216
/a>        if (
a href="+code=off" class="sref">off
/a> != 0 || 
a href="+code=count" class="sref">count
/a> != 
a href="+code=real_size" class="sref">real_size
/a>)" 217
/a>                return -
a href="+code=EINVAL" class="sref">EINVAL
/a>;o 218
/a>" 219
/a>        
a href="+code=mutex_lock" class="sref">mutex_lock
/a>(&
a href="+code=arvo" class="sref">arvo
/a>->
a href="+code=arvo_lock" class="sref">arvo_lock
/a>);o 220
/a>        
a href="+code=retval" class="sref">retval
/a> = 
a href="+code=roccat_commpt2_receive" class="sref">roccat_commpt2_receive
/a>(
a href="+code=usb_dev" class="sref">usb_dev
/a>, 
a href="+code=command" class="sref">command
/a>, 
a href="+code=buf" class="sref">buf
/a>, 
a href="+code=real_size" class="sref">real_size
/a>);o 221
/a>        
a href="+code=mutex_unlock" class="sref">mutex_unlock
/a>(&
a href="+code=arvo" class="sref">arvo
/a>->
a href="+code=arvo_lock" class="sref">arvo_lock
/a>);o 222
/a>o 223
/a>        return (
a href="+code=retval" class="sref">retval
/a> ? 
a href="+code=retval" class="sref">retval
/a> : 
a href="+code=real_size" class="sref">real_size
/a>);o 224
/a>}o 225
/a>" 226
/a>static 
a href="+code=ssize_t" class="sref">ssize_t
/a> 
a href="+code=arvo_sysfs_write_button" class="sref">arvo_sysfs_write_button
/a>(struct 
a href="+code=file" class="sref">file
/a> *
a href="+code=fp" class="sref">fp
/a>," 227
/a>                struct 
a href="+code=kobject" class="sref">kobject
/a> *
a href="+code=kobj" class="sref">kobj
/a>, struct 
a href="+code=bin_attribute" class="sref">bin_attribute
/a> *
a href="+code=attr" class="sref">attr
/a>, char *
a href="+code=buf" class="sref">buf
/a>," 228
/a>                
a href="+code=loff_t" class="sref">loff_t
/a> 
a href="+code=off" class="sref">off
/a>, 
a href="+code=size_t" class="sref">size_t
/a> 
a href="+code=count" class="sref">count
/a>)" 229
/a>{" 230
/a>        return 
a href="+code=arvo_sysfs_write" class="sref">arvo_sysfs_write
/a>(
a href="+code=fp" class="sref">fp
/a>, 
a href="+code=kobj" class="sref">kobj
/a>, 
a href="+code=buf" class="sref">buf
/a>, 
a href="+code=off" class="sref">off
/a>, 
a href="+code=count" class="sref">count
/a>," 231
/a>                        sizeof(struct 
a href="+code=arvo_button" class="sref">arvo_button
/a>), 
a href="+code=ARVO_COMMAND_BUTTON" class="sref">ARVO_COMMAND_BUTTON
/a>);o 232
/a>}o 233
/a>" 234
/a>static 
a href="+code=ssize_t" class="sref">ssize_t
/a> 
a href="+code=arvo_sysfs_read_info" class="sref">arvo_sysfs_read_info
/a>(struct 
a href="+code=file" class="sref">file
/a> *
a href="+code=fp" class="sref">fp
/a>," 235
/a>                struct 
a href="+code=kobject" class="sref">kobject
/a> *
a href="+code=kobj" class="sref">kobj
/a>, struct 
a href="+code=bin_attribute" class="sref">bin_attribute
/a> *
a href="+code=attr" class="sref">attr
/a>, char *
a href="+code=buf" class="sref">buf
/a>," 236
/a>                
a href="+code=loff_t" class="sref">loff_t
/a> 
a href="+code=off" class="sref">off
/a>, 
a href="+code=size_t" class="sref">size_t
/a> 
a href="+code=count" class="sref">count
/a>)" 237
/a>{" 238
/a>        return 
a href="+code=arvo_sysfs_read" class="sref">arvo_sysfs_read
/a>(
a href="+code=fp" class="sref">fp
/a>, 
a href="+code=kobj" class="sref">kobj
/a>, 
a href="+code=buf" class="sref">buf
/a>, 
a href="+code=off" class="sref">off
/a>, 
a href="+code=count" class="sref">count
/a>," 239
/a>                        sizeof(struct 
a href="+code=arvo_info" class="sref">arvo_info
/a>), 
a href="+code=ARVO_COMMAND_INFO" class="sref">ARVO_COMMAND_INFO
/a>);o 240
/a>}o 241
/a>" 242
/a>o 243
/a>static struct 
a href="+code=device_attribute" class="sref">device_attribute
/a> 
a href="+code=arvo_attributes" class="sref">arvo_attributes
/a>[] = {" 244
/a>        
a href="+code=__ATTR" class="sref">__ATTR
/a>(
a href="+code=mode_key" class="sref">mode_key
/a>, 0660," 245
/a>                        
a href="+code=arvo_sysfs_show_mode_key" class="sref">arvo_sysfs_show_mode_key
/a>, 
a href="+code=arvo_sysfs_set_mode_key" class="sref">arvo_sysfs_set_mode_key
/a>)," 246
/a>        
a href="+code=__ATTR" class="sref">__ATTR
/a>(
a href="+code=key_mask" class="sref">key_mask
/a>, 0660," 247
/a>                        
a href="+code=arvo_sysfs_show_key_mask" class="sref">arvo_sysfs_show_key_mask
/a>, 
a href="+code=arvo_sysfs_set_key_mask" class="sref">arvo_sysfs_set_key_mask
/a>)," 248
/a>        
a href="+code=__ATTR" class="sref">__ATTR
/a>(
a href="+code=actual_profile" class="sref">actual_profile
/a>, 0660," 249
/a>                        
a href="+code=arvo_sysfs_show_actual_profile" class="sref">arvo_sysfs_show_actual_profile
/a>," 250
/a>                        
a href="+code=arvo_sysfs_set_actual_profile" class="sref">arvo_sysfs_set_actual_profile
/a>)," 251
/a>        
a href="+code=__ATTR_NULL" class="sref">__ATTR_NULL
/a>o 252
/a>};o 253
/a>" 254
/a>static struct 
a href="+code=bin_attribute" class="sref">bin_attribute
/a> 
a href="+code=arvo_bin_attributes" class="sref">arvo_bin_attributes
/a>[] = {" 255
/a>        {" 256
/a>                .
a href="+code=attr" class="sref">attr
/a> = { .
a href="+code=nama" class="sref">nama
/a> = 
spat class="string">"button"mode
/a> = 0220 }," 257
/a>                .
a href="+code=size" class="sref">size
/a> = sizeof(struct 
a href="+code=arvo_button" class="sref">arvo_button
/a>)," 258
/a>                .
a href="+code=write" class="sref">write
/a> = 
a href="+code=arvo_sysfs_write_button" class="sref">arvo_sysfs_write_button
/a>" 259
/a>        }," 260
/a>        {" 261
/a>                .
a href="+code=attr" class="sref">attr
/a> = { .
a href="+code=nama" class="sref">nama
/a> = 
spat class="string">"info"mode
/a> = 0440 }," 262
/a>                .
a href="+code=size" class="sref">size
/a> = sizeof(struct 
a href="+code=arvo_info" class="sref">arvo_info
/a>)," 263
/a>                .
a href="+code=read" class="sref">read
/a> = 
a href="+code=arvo_sysfs_read_info" class="sref">arvo_sysfs_read_info
/a>" 264
/a>        }," 265
/a>        
a href="+code=__ATTR_NULL" class="sref">__ATTR_NULL
/a>o 266
/a>};o 267
/a>" 268
/a>static int 
a href="+code=arvo_init_arvo_device_struct" class="sref">arvo_init_arvo_device_struct
/a>(struct 
a href="+code=usb_device" class="sref">usb_device
/a> *
a href="+code=usb_dev" class="sref">usb_dev
/a>," 269
/a>                struct 
a href="+code=arvo_device" class="sref">arvo_device
/a> *
a href="+code=arvo" class="sref">arvo
/a>)" 270
/a>{" 271
/a>        int 
a href="+code=retval" class="sref">retval
/a>;o 272
/a>o 273
/a>        
a href="+code=mutex_init" class="sref">mutex_init
/a>(&
a href="+code=arvo" class="sref">arvo
/a>->
a href="+code=arvo_lock" class="sref">arvo_lock
/a>);o 274
/a>o 275
/a>        
a href="+code=retval" class="sref">retval
/a> = 
a href="+code=arvo_get_actual_profile" class="sref">arvo_get_actual_profile
/a>(
a href="+code=usb_dev" class="sref">usb_dev
/a>);o 276
/a>        if (
a href="+code=retval" class="sref">retval
/a> < 0)" 277
/a>                return 
a href="+code=retval" class="sref">retval
/a>;o 278
/a>        
a href="+code=arvo" class="sref">arvo
/a>->
a href="+code=actual_profile" class="sref">actual_profile
/a> = 
a href="+code=retval" class="sref">retval
/a>;o 279
/a>" 280
/a>        return 0;o 281
/a>}o 282
/a>o 283
/a>static int 
a href="+code=arvo_init_specials" class="sref">arvo_init_specials
/a>(struct 
a href="+code=hid_device" class="sref">hid_device
/a> *
a href="+code=hdev" class="sref">hdev
/a>)" 284
/a>{" 285
/a>        struct 
a href="+code=usb_interface" class="sref">usb_interface
/a> *
a href="+code=intf" class="sref">intf
/a> = 
a href="+code=to_usb_interface" class="sref">to_usb_interface
/a>(
a href="+code=hdev" class="sref">hdev
/a>->
a href="+code=dev" class="sref">dev
/a>.
a href="+code=parent" class="sref">parent
/a>);o 286
/a>        struct 
a href="+code=usb_device" class="sref">usb_device
/a> *
a href="+code=usb_dev" class="sref">usb_dev
/a> = 
a href="+code=interface_to_usbdev" class="sref">interface_to_usbdev
/a>(
a href="+code=intf" class="sref">intf
/a>);o 287
/a>        struct 
a href="+code=arvo_device" class="sref">arvo_device
/a> *
a href="+code=arvo" class="sref">arvo
/a>;o 288
/a>        int 
a href="+code=retval" class="sref">retval
/a>;o 289
/a>" 290
/a>        if (
a href="+code=intf" class="sref">intf
/a>->
a href="+code=cur_altsetting" class="sref">cur_altsetting
/a>->
a href="+code=desc" class="sref">desc
/a>.
a href="+code=bInterfaceProtocol" class="sref">bInterfaceProtocol
/a>"(
a href="+code=mode_key" class="srx4vice" class="sref">uef="+code=retval" class="sref">retval
/a>9pB_INTERFACEat-aTOCOL_KEYBOARDef="drivers/hid9pB_INTERFACEat-aTOCOL_KEYBOARD.c#L2261" idluL261" class="line" namaluL261"> 261
/a>osize
/a>_device
/a> *
a hres>(
a href="+code=dev_get_drvdsref">dev
/a>));odev
/lass="sref">arvo_"drivers/hid/hid-rovo.c#L26287" idluL287" class="line" namaluL287"> 287
/a>     2  if (
a href="+code=off2 clas29class="sref">read
/a>rvo.c#L281" idluL281" class="line" namaluL281"> 281
/a>     2          return -
a hre2="+co2e=EINVAL" clas82" idluL282" class="line" namaluL282"> 282
/a>" 192
/a>     2  
a href="+code=mutex_l2ck" c2ass="sref">mutex_lock
/a>(&amrs/hid/hid-roccat-arvo.c#L2s="sref">interfacekzalloterfaceProtocol"kzallots="sres="sre)"arvo_GFP_KERNEivers/hid/hid-roGFP_KERNEi#L26287" idluL287" class="line" namaluL287"> 287
/a>        
a href="+code=retval"2class2"sref">retval
tval
/a>) {" 261
/a>        
a href="+code=mutex_u2lock"29 class="sref">loff_t
/a> 
a href="+cdrvdere=nama" class="sdrvderea>));odev
/las, .
a href="+code=mode" clcan't allot f">arv  clariptor="sref">arvo
/a287" idluL287" class="line" namaluL287"> 287
/a>" 283
/a>     3  return (
a href="+code3retva3" class="sref"82" idluL282" class="line" namaluL282"> 283
/a>}o__ATTR_NULL
/a>o< hres>(
a href="+code=dev_get_drvdsref">dev
/a>));odev
/lass="sref">arvo_rs/hid/hid-roccat-arvo.c#L2789" idluL289" class="line" namaluL289"> 283
2a>}o 203
/a>stati3 
a href="+code=ssize_t"3class30sref">retval
/a> = 
a href="+code=roccat_commpt2_send" class="sref">roccat_coarvo_init_arvo_device_struct
/a>(struct 
a href="+code=usb_device" class="srv
/a>,"arvo_rs/hid/hid-roccat-arvo.c#L2789" idluL289" class="line" namaluL289"> 283
4a>stati3          return -
a hre3"+cod3=kobject" clasval
/a>)" 263
/a>     3          
a href="+code3size_3" class="sref">size_t
/a> 
a href="+cdrvdere=nama" class="sdrvderea>));odev
/las, .
a href="+code=mode" clcouldn't "+cosref">are=usb_devic="sref">arvo
/a287" idluL287" class="line" namaluL287"> 283
/a>{"attr
/a>garv
/a> 
a href="+cexcodfrecode=arvo" classexcodfrecc#L289" idluL289" class="line" namaluL289"> 283
7a>{"82" idluL282" class="line" namaluL282"> 283
8a>{" 213
/a>     3  struct 
a href="+code=3rvo_d30ss="sref">mutex_lock
/a>(&am+code=roccat_commpt2_receive" class="sref">roccat_commpt2nnam+code=roccat_com
a href="/hid-roc1 amaluL28dtde=pa1302  
a href="+code=mutex_l2ck" c2ass="sref">mutex_lock
/a>(&amrs/hid/hid-roccat-arvo.c#L2s="sref">interfacekzallot9f">read
/a>rvo.c#L281" idluLmroccat-arvo.c#L206" idluL206" class="line" namaluL=dem_l2ck" c2ass="sref">mutex_lock
/a>(&amrs/hid/h4rs/hid/hid-roc86"> 'ref"82" idluL28norlass="srv
/a>," 283
/a>{"retval
/a>;o 27263
/a>     3          
a href="+code3size_3.c#L213" 3dluL213" class="line" na3aluL231>(
a href="+code=dev_get_drvdsref">dev
/riveode=dev" class="sref">dev
/las, .
a href="+code=mode" clcouldn't "+cosref">are=usb_devic="sref">arvo
/a287" idl.c#L2n&#" namaluL287"> 283
/a>{"o3f
/a> >= 
a href="+co3e=rea3_size" class="} else263
/a>     3          
a href="+code3size_3.kobject" hid-roccat-arvo.c#L215" 3dluL235" class="line" namalu"sref">actual_profile
/a> = 
a href="+code=retval" class="srefchr/hidminoveode=dev" classchr/hidminovat-arvo.c#L279" idluL279" class="line" namaluL279"> 279
/a>", 
a href="+code=comlaime
at-arvo179
/a>" != 0 || 
a href="+3ode=c3unt" class="sr83
8a>{"EINVAL
/a>;3 268
/a>static int 
a href="+code=arvo_init_3.c#L219" 3dluL219" class="line" na3aluL231(
a href="+code=fp" 281
/a>     2          return -
a hre2="+co3ass="sref3>mutex_lock
/a>(&
a 3ref="3code=acodfrecc#L289" idluL289" class="line" namaluL289"> 2:1
/a>     2          return -
a hre2="+co3"sref">re3val
/a> = 
a href="+code3rocca3_commpt2_receive" class="srefk289" class="line" nkL289"> 2_l2ck" c2ass="sref">ss="line" namaluL289"> 283
4a>stati3          return -
a hre3"+cod3class="sr3f">mutex_unlock
/a>(&3
a hr3f="+code=arvo"at-arvo.c#L278" idluL278" class="line" namaluL278"> 278
/a>        
a href="+code=arvo" class="3.c#L223" 3dluL223" class="line" na3aluL2323"> 233
/a>"retval
/a> ? 
a hre3="+co32"> 254
/a>static struct 
a href="+code=bin_att3o.c#L225"3idluL225" class="line" n3maluL32ref="+code=aloff_/hid-roc86"> 'ref"82"emovess="sref">hid_device
/a> *
a "emovess="sref"dev" class="sref">hdev
/a>)" 284
/a>{" 2263
/a>     3          
a href="+code3size_3"sref">ss3ze_t
/a> 
a href="+code=3rvo_s32"+code=usb_dev" class="sref">usb_dev
/a> = 
a href="+code=to_usb_interface" class="sref">to_usb_interface
/a>(
a href="+code=hdev" class="sref">hdev
/a>->
a href="+code=dev" class="sref">dev
/a>.
a href="+code=parent" class="sref">parent
/a>);o 286
/a>        struct 
a href="+code=usb_de3=kobject"3class="sref">kobject
/a>3*
a h32f="+code=arvo" class="sref">arvo
/a>;o 288
/a>        int 
a href="+code=retval" c3" class="3ref">loff_t
/a> 
a href=3+code32"> 213
/a>     3  struct 
a href="+code=3rvo_d3o.c#L230"3idluL230" class="line" n3maluL32commpt2_receiass="sref">cur_altsetting
/a>->
a href="+code=desc" class="sref">desc
/a>.
a href="+code=bInterfaceProtocol" class="sref">bInterfaceProtocol
/a>"(
a href="+code=mode_key" class="sr="+code=3rvo_d3sfs_write3 class="sref">arvo_sysfs3write33ss="sref">mutex_lock
/a>(&amrKEYBOARDef="drivers/hid9pB_INTERFACEat-aTOCOL_KEYBOARD.c#L2261" idluL261" class="line" namaluL261"> ="+code=mode_key" class="sr="+code=3rvo_d3slass="sr3+code=arvo_button" class3"sref3>arvo_button
/a>), 
a at-arv88
/a>        int 
a href="+code=retval" c3o.c#L233"3idluL233" class="line" n3maluL33"> 203
/a>stati3 
a href="+code=ssize_t"3class3.c#L234" 3dluL234" class="line" na3aluL233commpt2_send" class="sref">rfacekzalloterfaceProtocol"kzallots="sres="srehss="sref">dev_get_drvda/a
/a>(
a href="+code=dev" class="sref">dclass="line" namaluL284"> 2888
/a>        int 
a href="+code=retval" c3o.c#L225"3ze_t
/a> 
a href="+code=3rvo_s33d/hid-roccat-arvo.c#L16261" idlurofile
/a> = 
a href="+code=retval" class="sref href="+laime
/a>, 
a href="+code=comlaime
at-a ="+code=mode_key" class="sr="+code=3rvo_d3sc#L226" 3class="sref">kobject
/a>3*
a h3ef="+code=kobj" class=al" class="sref href="dismaluL28dtde=pa1302  
a href="dismaluL28"> 2_l2ck" c2ass="sref">ss="line" namaluL289"> =retval" class="srefchr/hidminoveode=dev" classchr/hidminovat-a888
/a>        int 
a href="+code=retval" c3osref">ss3ref">loff_t
/a> 
a href=3+code33ccat-arvo.c#L2s="sref">interk289" class="line" nkL289"> 2_l2ck" c2ass="sref">ss="line" namaluL289"> 283
4a>stati3          return -
a hre3"+cod3o.c#L238"3idluL238" class="line" n3maluL338"> 233
/a>"arvo_sysfs_3ead
/33"> 213
/a>     3  struct 
a href="+code=3rvo_d3 
a href=3+code=arvo_info" class="3ref">3rvo_inruct 
a href="+code=hid_device"prob="drivers/hid/hid-rocprob=dev" class="sref">hdev
/a>)" 2/a>rvo.c#L281" idluLmroccat-arvo.c#L206" ido.c#L241"3idluL241" class="line" n3maluL34ss="sref">mutex_lock
o.c#L1class="sref">hdev
/a>)"to_usb_in
/a>, 
a href="+i
at-a ="+code=mode_key" class="sr="+code=3rvo_d3.c#L242" 3dluL242" class="line" na3aluL232"> 2463
/a>     3          
a href="+code3size_3.c#L243" 3dluL243" class="line" na3aluL234>(
a href="+carvo.c#L289" idluL289" class="line" namaluL289"> 289
/a>"device_attr3bute
34"> 254
/a>static struct 
a href="+code=bin_att3"sref">__3TTR
/a>(
a href="+code=m3de_ke3" class="sref">mode_key
/a>, ">roccat_commpt2nnam+code=roccat_com
a href="/hid"dclass="line" namaluL284"> 2888
/a>        int 
a href="+code=retval" c3e=arvo_sy3fs_show_mode_key" class=3sref"3arvo_sysfs_shoarvo.c#L16261" idluL261" class="line" namaluL261"> 263
/a>     3          
a href="+code3size_3"sref">__3TTR
/a>(
a href="+code=k3y_mas34excodfrecode=arvo" clget_drvdsref">dev
/riveode=dev" class="sref">dev
/las, .
a href="+code=mode" clcouldn't "+cosref">are=usb_devic="srealus" failed" namaluL287"> 283
/a>{" 289
/a>"(
a href="+code=a3tual_3rofile" class=33
/a>" 290
/a>        if (
a href="+code=intf" cla3e=arvo_sy3fs_set_actual_profile" c3ass="35commpt2_receive" class="sref">roccat_commpt2_receive
/a>(
a href="+code=usb_d="srhw_rucrlass="srv
/a>,"<="srhw_rucrl>dev
/lass="sref">arvo_rs/hid/hid-roccat-arvo.c#L2789" idluL289"HID_CONNECT_DEFAULTs/hid/hid-roccaHID_CONNECT_DEFAULT"> 2888
/a>        int 
a href="+code=retval" c3lass="sre3">__ATTR_NULL
/a>o     3          
a href="+code3size_3vo.c#L2533 idluL253" class="line" 3amalu35>(
a href="+code=dev_get_drvdsref">dev
/riveode=dev" class="sref">dev
/las, .
a href="+code=mode" clcouldn't "+cosref">are=usb_devic="srehw rucrl failed" namaluL287"> 283
/a>{" 289
/a>"bin_attribute
3a> 
a35amaluL282"> 282
/a>" 192
/a>     2  
a href="+code=mutex_l2ck" c3 class="s3ef">attr
/a> = { .
a hre3="+co35ccat-arvo.c#L2s="sref">interoccat_coarvo_init_arvo_device_struct
/a>(struct 
a href="+cs="sref">hid_device
/a> *
a href="+code=hdev"  class="sref">dclass="line" namaluL284"> 2888
/a>        int 
a href="+code=retval" c3 class="s3ef">size
/a> = sizeof(st3uct 
35id-roccat-arvo.c#at-arvo.c#L277" idluL277" class="line" namaluL 263
/a>     3          
a href="+code3size_3vfs_read"3ref">write
/a> = 
a href3"+cod3=arvo_sysfs_write_buttget_drvdsref">dev
/riveode=dev" class="sref">dev
/las, .
a href="+code=mode" clcouldn't "+cosref">are=usb_devic="sref">arvo
/a287" rucll keyboard" namaluL287"> 283
/a>{" 289
/a>" 283
/a>}oattr
/a> = { .
a hre3="+co36"> 242
/a>osize
/a> = sizeof(st3uct 
3 href="+code=ade=fp" 281
/a>     2          return -
a hre2="+co3 class="s3ef">read
/a> = 
a href="3code=36"> 254
/a>static struct 
a href="+code=bin_att3occat-arv3.c#L265" idluL265" class3"line3 namalcodfrecc#L289" idluLstouf" class="sref"idluLstou"> 2:1
/a>     2          return -
a hre2="+co3lass="sre3">__ATTR_NULL
/a>odclass="line" namaluL284"> 2888
/a>        int 
a href="+code=retval" c3vo.c#L2673 idluL267" class="line" 3amalu3267"> codfrecc#L289" idlu class="line" namal"> 2:1
/a>     2          return -
a hre2="+co3lclass="s3dluL268" class="line" na3aluL2367ref="+code=ade=fp" .c#L289" idluL289" class="line" namaluL289"> 289
/a>"ar3o_ini3_arvo_83
/a>}oarvo_de3ice
/36"> 290
/a>        if (
a href="+code=intf" cla3o.c#L271"3idluL271" class="line" n3maluL371"> 2+code=aloff_/hid-roc86"> 'ref"82"emove>hid_device
/a> *
a "emovedev" class="sref">hdev
/a>)" 284
/a>{"retval
/a>;o 2463
/a>     3          
a href="+code3size_3.c#L273" 3dluL273" class="line" na3aluL2372s/hid/hid-roccat-arvo.c#L26ef"82"emovess="sref">hid_device
/a> *
a "emovess="sref"dev"  class="sref">dclass="line" namaluL284"> 2888
/a>        int 
a href="+code=retval" c3ass="sref3>mutex_init
/a>(&
a 3ref="3code=arvo" class="sref">arvo
="srhw_ruouf" class="sref"="srhw_ruoudev"  class="sref">dclass="line" namaluL284"> 2888
/a>        int 
a href="+code=retval" c3.c#L275" 3dluL275" class="line" na3aluL2375"> 225
/a>"re3val
/a> = 
a href="+code3arvo_37"> 192
/a>     2  
a href="+code=mutex_l2ck" c3ass="sref3>retval
/a> < 0)" 2+code=aloff_/hid-roc86"> 'ref"82"enorl-rocchr/hi>hid_device
/a> *
a "enorl-rocchr/hidev" class="sref">hdev
/a>)>;o 2/a>rvo.c#L281" idluLmroccat-arvo.c#L206" id=retval" 3lass="sref">retval
/a>;o3a hre3="drivers/hid/hid-roccs="sref">usb_dev8s="line" namaluu8vo.c#o.c#L1L288" idluL288" a href="drivers/hid/ode=dev84
/a>{"     3          
a href="+code3size_3.=arvo_sy3dluL280" class="line" na3aluL237f="+code=arvo" class="sref">arvo
/a> = 
s="srefL28norlass="srv
/a>,","        int 
a href="+code=retval" c3d/hid-roc3at-arvo.c#L281" idluL2813 clas38"+code=usb_dev" class="sref">usb_deef"82" idluL28norlass="srv
/a>,"=al" class="sref href="28norlass="srv
/a>,"<" idluL28norl61">88
/a>        int 
a href="+code=retval" c3dss="sref3idluL282" class="line" n3maluL38"> 242
/a>o,"hdev
/a>)>;o,"arvo_init_sp3cials38"> 254
/a>static struct 
a href="+code=bin_att3o.c#L285"3idluL285" class="line" n3maluL38 class="sref">mode_key
/a>, "href="28norlass="srv
/a>,"<" idluL28norl61">vo.c#L286" idluL2
/a>;oss="line" namaluL289"> =retval" class="sref">retval
/a>;ore3ass="sref">usb_interface3/a> *38rs/hid/hid-roccat-arvo.c#L26"href="28norlass="srv
/a>,"<" idluL28norl61">vo.c#L286" idluLo.c#L259" idluL259" cuL259"> 25rvo.c#L279" idluL2s="srefL28norlass="srv
/a>," 25r"sref8
/a>        int 
a href="+code=retval" c3dss="sref3="sref">usb_device
/a> *3a hre38excodfrecode=arvo" cld/hid-roccat-arvo.c#L26="linSPECIAL_REPORT_EVENT_MASK.c#L232" idluL232" class="lSPECIAL_REPORT_EVENT_MASK.c#L232at-a88
/a>        int 
a href="+code=retval" c3dretval" 3s="sref">arvo_device
/a>3*
a h38id-roccat-arvo.c#  class="sref">ds="srefL28norlass="srv
/a>," 25r"srefoccat-arvo.c#L26="linSPECIAL_REPORT_EVENT_MASK.ACTI32" idluL232" class="lSPECIAL_REPORT_EVENT_MASK.ACTI32aluL 2==8
/a>        int 
a href="+code=retval" c3dvo_devic3>retval
/a>;o,"<" idluL28norl61">vo.c#L286" idluLs/hiL259" idluL259" cl/hiL2> 25rvo.c#L279" idluL2ss="lROCCAT_REPORT_ACTI32_PRESS" idluL232" class="lROCCAT_REPORT_ACTI32_PRESSat-a88
/a>        int 
a href="+code=retval" c3s="sref">3ntf
/a>->
a href="+co3e=cur3altsetting" clelse8
/a>        int 
a href="+code=retval" c3sss="sref3"+code=retval" class="sr3f">re3val
/a>9pB_INTERFACEatccat-arvo.c#L26"href="28norlass="srv
/a>,"<" idluL28norl61">vo.c#L286" idluLs/hiL259" idluL259" cl/hiL2> 25rvo.c#L279" idluL2ss="lROCCAT_REPORT_ACTI32_RELEASE" idluL232" class="lROCCAT_REPORT_ACTI32_RELEASEat-a88
/a>        int 
a href="+code=retval" c3sc#L283" 3ef">size
/a>_device
/a> 3
a hr39"> 203
/a>stati3 
a href="+code=ssize_t"3class39class="s3ef">read
/a>rvo.c#L281" 3dluL239commpt2_send" class="sref">ro idluL28norl_ev" class="line" namo idluL28norl_ev" cdev"  class="sref">def">ss="line" namaluL289"> =retval" class="srefchr/hidminoveode=dev" classchr/hidminovat-a/a>rvo.c#L281" idluLmroccat-arvo.c#L206" ide=EINVAL"3clas82" idluL282" class=3line"3namaluL282"> 22222222222222222rvo.c#L26ass="sreint8rivers/hid/hid-roeint8rivo.c#o.c#L1L)"sref">arvo_lock
/a>"href="28norlass="srv
/a>,"<" idluL28norl61">888
/a>        int 
a href="+code=retval" c3.c#L196" 3dluL196" class="line" na3aluL136"> 1925
/a>"mutex_lock
/a>(&amrs/hi3/hid-3occat-5
/a>") {"hdev
/a>)" 2/a>rvo.c#L281" idluLmroccat-arvo.c#L206" idevo_devic3ref">loff_t
/a> 
a href=3+cdrv3ere=nama" class="sdrvdclass="sref">hdev
/a>)")," 230
/a>        return 
a href="+code=arvo_s4" class="4ref"82" idluL282" class=4line"40"+code=usb_dev" class="sref">usb_deef"82 href="drivers/hid/hid-roccat-arvo.c#L288" idluL288" class="line" namaluL288"> 2zallots="sres="srehss="sref">dev_get_drvda/a
/a>(
a href="+code=dev" class="sref">dclass="line" namaluL284"> 2888
/a>        int 
a href="+code=retval" c40ass="sre4">__ATTR_NULL
/a>o< hres4(
a h40"> 242
/a>o(
a href="+ca.c#at-arvo.c#L277"rvo_info
/a>),"re4val
/a> = 
a href="+code4rocca40" class="line" namaluL281"> 281
/a>     2          return -
a hre2="+co4=kobject"4clasval
/a>)" 275
/a>        
a href="+code=retval" class4" class="4ref">size_t
/a> 
a href=4+cdrv40rvo_sysfs_shoarvo.c#L16261" idluclass="line" namaluL288"> 2z"sref"srefoccat-arvo.c#L26rofile
/a> = 
a href="+code=retval" class="sref href="+laime
/a>, 
a href="+code=comlaime
at-a ="+code=mode_key" class="sr="+code=3rvo_d40class="s4ef">attr
/a>garv
/a> 
a 4ref="4cexcodfrecode=arvo" cl/hid-roc86"> 'ref"82"enorl-rocchr/hi>hid_device
/a> *
a "enorl-rocchr/hidev" 288" idluL288" class="line" namaluL288"> 2/rvo_attributes" c href="drivers/hid/ode=dev881
/a>     2          return -
a hre2="+co4=7lass="s4eal
tval
/a>) {" 268
/a>static int 
a href="+code=arvo_init_40c#L219" 4dluL219" class="line" na4aluL240(
a href="+code=fp" 281
/a>     2          return -
a hre2="+co40ss="sref4>mutex_lock
/a>(&am+code4rocca4_commp25
/a>"retval
/a>;ohdev
/a>)"usb_deef"82 href=">hid_device
/a> *
a  href="clas5"> 255
/a>        {"(
a href="+c{L2789" idluL289"HID_idluDEVICE" idluL232" claHID_idluDEVICEdev" 288" idluL288" idluVENDOR_ID_ROCCAT" idluL232" claidluVENDOR_ID_ROCCAT"> 2/rvo_attributes" idluDEVICE_ID_ROCCAT_ss="" idluL232" claidluDEVICE_ID_ROCCAT_ss="aluL 2265
/a>        
a href="+code=__ATTR_NULL" 4="sref">o4f
/a> >= 
a href="+co4e=rea4_size" class="{283
/a>}o" 192
/a>     2  
a href="+code=mutex_l2ck" c4.class="s4f
/a> != 0 || 
a href="+4ode=c4167"> codfrecc#L289" MODULEuDEVICE_TABLE" idluL232" claMODULEuDEVICE_TABLE=dev" class="sref">dci
/a>, 
a href="+" 2/rvo_attributes" ef"82 href=">hid_device
/a> *
a  href="clas881
/a>     2          return -
a hre2="+co4e=EINVAL"4class="sref">EINVAL
/a>;4 268
/a>static int 
a href="+code=arvo_init_4.c#L219" 4dluL219" class="line" na4aluL241arvo_device_class="sref">hdev
/a>)", 
a href="+"usb_deef"82  int /a>, 
a href="+ef"82  int "> 2zal55
/a>        {"mutex_lock
/a>(&
a 4ref="41="drNOMEMdev"/spati, .
a href="+code=mode" class="sref">mode
/a> = 0440 },"re4val
/a> = 
a href="+code4rocca4_commpt2_recei/spati, .
a href2 href=">hid_device
/a> *
a  href="clasc5
/a>        {"mutex_unlock
/a>(&4
a hr4f="+code=arvo"vo.c#L286" idluL2
/b="drivers/hid/hiprob=dev"rvo.c#L279" idluL2ef">2prob="drivers/hid/hid-rocprob=dev"c5
/a>        {"hid_device
/a>"emovedev"rvo.c#L279" idluL2ef">2"emove>hid_device
/a> *
a "emovedev"c5
/a>        {"o4ref">retval
/a> ? 
a hre4="+co423"+code=arvo"vo.c#L286" idluL"aw_ev" class="line" namraw_ev" cdev"rvo.c#L279" idluL2ef">2"aw_ev" class="line" namvice"raw_ev" cdev"5
/a>        {"" 192
/a>     2  
a href="+code=mutex_l2ck" c4"sref">ss4ze_t
/a> 
a href="+code=4rvo_s426"> 2+code=a href="+code=hid_de_gt;
a href="+code=ar_ck" classuct
/a>(struct 
a href="+lass="line" namvice"k" class=loff ="+code=mode_key" class="sr="+code=3rvo_d4=kobject"4class="sref">kobject
/a>4*
a h42f="+c55
/a>        {"loff_t
/a> 
a href=4+code42d/hid-roccat-arvo.c#L289" idluL289" class="line" namaluL289"> 289
/a>" 290
/a>        if (
a href="+code=intf" cla4sfs_write4 class="sref">arvo_sysfs4write43commpt2_receive" class="srefvice"ss="slass="line" namvice"ss="ldev"rvo.c#L279" idluL2ss="l_creavo_sysfs_write_buss="l_creavo=dev" class="sref">dTHIS_MODULE_sysfs_write_buTHIS_MODULE"> 2/rv
/a> = 0440 },", 0660,"(
a href="+code=dev_de=fp" .c#L289" idluL2PTR_ERe
/a>, 0660,"     2          return -
a hre2="+co4s"sref">o4dluL234" class="line" na4aluL243commpt2_send" class="sref">rface"ss="slass="line" namvice"ss="ldev"rent
/a>);o2at-arvo.c#L255" idluL255" clasine" namaluL2581
/a>     2          return -
a hre2="+co4skobject"4ze_t
/a> 
a href="+code=4rvo_s43 class="sref">mode_key
/a>, face"ss="slass="line" namvice"ss="ldev"rent
/a>);o2roccat-arvo.c#L255" idluL255" class="line" namaluL2581
/a>     2          return -
a hre2="+co4sc#L226" 4class="sref">kobject
/a>4*
a h43"> 192
/a>     2  
a href="+code=mutex_l2ck" c4osref">ss4ref">loff_t
/a> 
a href=4+code43ccat-arvo.c#L2s="sref">inter">roccat_commpt2_receive
/a>(
a href="+code=usb_d="srregister h int /a>, 
a href="+"arvo_lock
/a>);o<2  int /a>, 
a href="+ef"82  int "> 2)81
/a>     2          return -
a hre2="+co4skobject"4idluL238" class="line" n4maluL43id-roccat-arvo.c#at-arvo.c#L277" idluL277" class="line" namaluL 1
/a>     2          return -
a hre2="+co4s class="4class="sref">arvo_sysfs_4ead
/43arvo_sysfs_write_buttget_drvdsref">dss="l_de},"oy_sysfs_write_buss="l_de},"oydev" 288" idluL288" clas"ss="slass="line" namvice"ss="ldev")81
/a>     2          return -
a hre2="+co4s.c#L230"4+code=arvo_info" class="4ref">43="drNOMEMdev"de=fp" .c#L289" idluL289" class="line" namaluL289"> 289
/a>" 242
/a>o(
a +code=aloff_/hid-roc86"> 'r__idlu class="line" n__idlulassuct
/a>(struct 
a hreidlu class="line" na hreidlulass=loff ="+code=mode_key" class="sr="+code=3rvo_d4ttribute"4class="sref">device_attr4bute
44"> 2555
/a>        {"__4TTR
/a>(
a href="+code=m4arv
/4oarvo.c#L16261" idluL261" cla /a>unregister h int /a>, 
a href="+"arvo_lock
/a>);o<2  int /a>, 
a href="+ef"82  int "> 2)81
/a>     2          return -
a hre2="+co4e=arvo_sy4fs_show_mode_key" class=4sref"44rs/hid/hid-roccat-arvo.c#L26ss="l_de},"oy_sysfs_write_buss="l_de},"oydev" 288" idluL288" clas"ss="slass="line" namvice"ss="ldev")81
/a>     2          return -
a hre2="+co4"sref">__4TTR
/a>(
a href="+code=k4y_mas44excod83
/a>}o 268
/a>static int 
a href="+code=arvo_init_4tfs_read"4TTR
/a>(
a href="+code=a4tual_4rofile288" idluL288" modulegt;
a href="+code=arvodulegt;
adev" 288" idluL288" clas"f="+lass="line" namvice"k" class)81
/a>     2          return -
a hre2="+co4".c#L230"4fs_show_actual_profile" 4lass=44ode=acodfrecc#L289" vodulegidlu class="line" nvodulegidludev" 288" idluL288" clas"idlu class="line" na hreidlulass)81
/a>     2          return -
a hre2="+co4e=arvo_sy4fs_set_actual_profile" c4ass="45ss="s5
/a>"__ATTR_NULL
/a>o, 0660," = 0440 },"(
a codfrecc#L289" MODULEuDESCRIPTI32" idluL232" claMODULEuDESCRIPTI32dev" 2
/a> = 0440 }," = 0440 },"__4ss="sref">bin_attribute
4a> 
a45amalu


bfooter"> The original LXR software by the /a> http://sourceforge.net/projects/lxr">LXR commu" cy"> 2/rthis experimental ion by /a> mailto:lxr@in_ux.no">lxr@in_ux.no"> 2.
bsubfooter"> lxr.in_ux.no kindly hosted by /a> http://www.redpill-in_pro.no">Redpill Ln_pro AS"> 2/rprovider of Ln_uxao.c#ultoco and operahiL2s serref=" since 1995.