diff options
| author | Antti Palosaari <crope@iki.fi> | 2012-06-19 23:32:53 -0400 |
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-08-04 06:56:37 -0400 |
| commit | 831511bdeee8b956fc9399f61fc9b25bd808429f (patch) | |
| tree | 35313549cfb3b1dc7888a7f9f5f87b40beedb4b5 /drivers/media/dvb/dvb-usb | |
| parent | 9f6f82ee61b23f0234fc83be363483bc4a65d99c (diff) | |
[media] dvb_usb_v2: multiple small tweaks around the code
Naming, small code changes, debug writings, etc.
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/dvb-usb')
| -rw-r--r-- | drivers/media/dvb/dvb-usb/anysee.c | 4 | ||||
| -rw-r--r-- | drivers/media/dvb/dvb-usb/dvb_usb.h | 111 | ||||
| -rw-r--r-- | drivers/media/dvb/dvb-usb/dvb_usb_core.c | 91 | ||||
| -rw-r--r-- | drivers/media/dvb/dvb-usb/usb_urb.c | 36 |
4 files changed, 109 insertions, 133 deletions
diff --git a/drivers/media/dvb/dvb-usb/anysee.c b/drivers/media/dvb/dvb-usb/anysee.c index 2655034b86a..9de0004c06d 100644 --- a/drivers/media/dvb/dvb-usb/anysee.c +++ b/drivers/media/dvb/dvb-usb/anysee.c | |||
| @@ -1264,7 +1264,7 @@ static int anysee_init(struct dvb_usb_device *d) | |||
| 1264 | return 0; | 1264 | return 0; |
| 1265 | } | 1265 | } |
| 1266 | 1266 | ||
| 1267 | static void anysee_disconnect(struct dvb_usb_device *d) | 1267 | static void anysee_exit(struct dvb_usb_device *d) |
| 1268 | { | 1268 | { |
| 1269 | return anysee_ci_release(d); | 1269 | return anysee_ci_release(d); |
| 1270 | } | 1270 | } |
| @@ -1287,7 +1287,7 @@ static struct dvb_usb_device_properties anysee_props = { | |||
| 1287 | .get_rc_config = anysee_get_rc_config, | 1287 | .get_rc_config = anysee_get_rc_config, |
| 1288 | .frontend_ctrl = anysee_frontend_ctrl, | 1288 | .frontend_ctrl = anysee_frontend_ctrl, |
| 1289 | .streaming_ctrl = anysee_streaming_ctrl, | 1289 | .streaming_ctrl = anysee_streaming_ctrl, |
| 1290 | .disconnect = anysee_disconnect, | 1290 | .exit = anysee_exit, |
| 1291 | 1291 | ||
| 1292 | .num_adapters = 1, | 1292 | .num_adapters = 1, |
| 1293 | .adapter = { | 1293 | .adapter = { |
diff --git a/drivers/media/dvb/dvb-usb/dvb_usb.h b/drivers/media/dvb/dvb-usb/dvb_usb.h index a87a9ff579c..56bf3a7f085 100644 --- a/drivers/media/dvb/dvb-usb/dvb_usb.h +++ b/drivers/media/dvb/dvb-usb/dvb_usb.h | |||
| @@ -10,10 +10,8 @@ | |||
| 10 | #ifndef DVB_USB_H | 10 | #ifndef DVB_USB_H |
| 11 | #define DVB_USB_H | 11 | #define DVB_USB_H |
| 12 | 12 | ||
| 13 | #include <linux/input.h> | 13 | #include <linux/usb/input.h> |
| 14 | #include <linux/usb.h> | ||
| 15 | #include <linux/firmware.h> | 14 | #include <linux/firmware.h> |
| 16 | #include <linux/mutex.h> | ||
| 17 | #include <media/rc-core.h> | 15 | #include <media/rc-core.h> |
| 18 | 16 | ||
| 19 | #include "dvb_frontend.h" | 17 | #include "dvb_frontend.h" |
| @@ -65,15 +63,35 @@ | |||
| 65 | .rc_map = (rc), \ | 63 | .rc_map = (rc), \ |
| 66 | }) | 64 | }) |
| 67 | 65 | ||
| 66 | struct dvb_usb_device; | ||
| 67 | struct dvb_usb_adapter; | ||
| 68 | |||
| 68 | struct dvb_usb_driver_info { | 69 | struct dvb_usb_driver_info { |
| 69 | const char *name; | 70 | const char *name; |
| 70 | const char *rc_map; | 71 | const char *rc_map; |
| 71 | const struct dvb_usb_device_properties *props; | 72 | const struct dvb_usb_device_properties *props; |
| 72 | }; | 73 | }; |
| 73 | 74 | ||
| 74 | struct dvb_usb_device; | 75 | /** |
| 75 | struct dvb_usb_adapter; | 76 | * struct dvb_rc properties of remote controller, using rc-core |
| 76 | struct usb_data_stream; | 77 | * @rc_codes: name of rc codes table |
| 78 | * @protocol: type of protocol(s) currently used by the driver | ||
| 79 | * @allowed_protos: protocol(s) supported by the driver | ||
| 80 | * @driver_type: Used to point if a device supports raw mode | ||
| 81 | * @change_protocol: callback to change protocol | ||
| 82 | * @rc_query: called to query an event event. | ||
| 83 | * @rc_interval: time in ms between two queries. | ||
| 84 | * @bulk_mode: device supports bulk mode for RC (disable polling mode) | ||
| 85 | */ | ||
| 86 | struct dvb_usb_rc { | ||
| 87 | char *map_name; | ||
| 88 | u64 allowed_protos; | ||
| 89 | int (*change_protocol)(struct rc_dev *dev, u64 rc_type); | ||
| 90 | int (*query) (struct dvb_usb_device *d); | ||
| 91 | unsigned int interval; | ||
| 92 | const enum rc_driver_type driver_type; | ||
| 93 | bool bulk_mode; | ||
| 94 | }; | ||
| 77 | 95 | ||
| 78 | /** | 96 | /** |
| 79 | * Properties of USB streaming - TODO this structure should be somewhere else | 97 | * Properties of USB streaming - TODO this structure should be somewhere else |
| @@ -83,13 +101,13 @@ struct usb_data_stream; | |||
| 83 | struct usb_data_stream_properties { | 101 | struct usb_data_stream_properties { |
| 84 | #define USB_BULK 1 | 102 | #define USB_BULK 1 |
| 85 | #define USB_ISOC 2 | 103 | #define USB_ISOC 2 |
| 86 | int type; | 104 | u8 type; |
| 87 | int count; | 105 | u8 count; |
| 88 | int endpoint; | 106 | u8 endpoint; |
| 89 | 107 | ||
| 90 | union { | 108 | union { |
| 91 | struct { | 109 | struct { |
| 92 | int buffersize; /* per URB */ | 110 | unsigned int buffersize; /* per URB */ |
| 93 | } bulk; | 111 | } bulk; |
| 94 | struct { | 112 | struct { |
| 95 | int framesperurb; | 113 | int framesperurb; |
| @@ -124,10 +142,9 @@ struct dvb_usb_adapter_properties { | |||
| 124 | #define DVB_USB_ADAP_HAS_PID_FILTER 0x01 | 142 | #define DVB_USB_ADAP_HAS_PID_FILTER 0x01 |
| 125 | #define DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF 0x02 | 143 | #define DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF 0x02 |
| 126 | #define DVB_USB_ADAP_NEED_PID_FILTERING 0x04 | 144 | #define DVB_USB_ADAP_NEED_PID_FILTERING 0x04 |
| 127 | int caps; | 145 | u8 caps; |
| 128 | int size_of_priv; | ||
| 129 | 146 | ||
| 130 | int pid_filter_count; | 147 | u8 pid_filter_count; |
| 131 | int (*pid_filter_ctrl) (struct dvb_usb_adapter *, int); | 148 | int (*pid_filter_ctrl) (struct dvb_usb_adapter *, int); |
| 132 | int (*pid_filter) (struct dvb_usb_adapter *, int, u16, int); | 149 | int (*pid_filter) (struct dvb_usb_adapter *, int, u16, int); |
| 133 | 150 | ||
| @@ -135,27 +152,6 @@ struct dvb_usb_adapter_properties { | |||
| 135 | }; | 152 | }; |
| 136 | 153 | ||
| 137 | /** | 154 | /** |
| 138 | * struct dvb_rc properties of remote controller, using rc-core | ||
| 139 | * @rc_codes: name of rc codes table | ||
| 140 | * @protocol: type of protocol(s) currently used by the driver | ||
| 141 | * @allowed_protos: protocol(s) supported by the driver | ||
| 142 | * @driver_type: Used to point if a device supports raw mode | ||
| 143 | * @change_protocol: callback to change protocol | ||
| 144 | * @rc_query: called to query an event event. | ||
| 145 | * @rc_interval: time in ms between two queries. | ||
| 146 | * @bulk_mode: device supports bulk mode for RC (disable polling mode) | ||
| 147 | */ | ||
| 148 | struct dvb_usb_rc { | ||
| 149 | char *map_name; | ||
| 150 | u64 allowed_protos; | ||
| 151 | int (*change_protocol)(struct rc_dev *dev, u64 rc_type); | ||
| 152 | int (*query) (struct dvb_usb_device *d); | ||
| 153 | int interval; | ||
| 154 | const enum rc_driver_type driver_type; | ||
| 155 | bool bulk_mode; | ||
| 156 | }; | ||
| 157 | |||
| 158 | /** | ||
| 159 | * struct dvb_usb_device_properties - properties of a dvb-usb-device | 155 | * struct dvb_usb_device_properties - properties of a dvb-usb-device |
| 160 | * @owner: owner of the dvb_adapter | 156 | * @owner: owner of the dvb_adapter |
| 161 | * @usb_ctrl: which USB device-side controller is in use. Needed for firmware | 157 | * @usb_ctrl: which USB device-side controller is in use. Needed for firmware |
| @@ -196,8 +192,11 @@ struct dvb_usb_device_properties { | |||
| 196 | const char *driver_name; | 192 | const char *driver_name; |
| 197 | struct module *owner; | 193 | struct module *owner; |
| 198 | short *adapter_nr; | 194 | short *adapter_nr; |
| 195 | |||
| 199 | u8 bInterfaceNumber; | 196 | u8 bInterfaceNumber; |
| 200 | int size_of_priv; | 197 | unsigned int size_of_priv; |
| 198 | u8 generic_bulk_ctrl_endpoint; | ||
| 199 | u8 generic_bulk_ctrl_endpoint_response; | ||
| 201 | 200 | ||
| 202 | #define WARM 0 | 201 | #define WARM 0 |
| 203 | #define COLD 1 | 202 | #define COLD 1 |
| @@ -207,11 +206,12 @@ struct dvb_usb_device_properties { | |||
| 207 | int (*download_firmware) (struct dvb_usb_device *, | 206 | int (*download_firmware) (struct dvb_usb_device *, |
| 208 | const struct firmware *); | 207 | const struct firmware *); |
| 209 | 208 | ||
| 210 | int num_adapters; | 209 | struct i2c_algorithm *i2c_algo; |
| 211 | int (*get_adapter_count) (struct dvb_usb_device *); | ||
| 212 | struct dvb_usb_adapter_properties adapter[MAX_NO_OF_ADAPTER_PER_DEVICE]; | ||
| 213 | 210 | ||
| 214 | int (*power_ctrl) (struct dvb_usb_device *, int); | 211 | unsigned int num_adapters; |
| 212 | struct dvb_usb_adapter_properties adapter[MAX_NO_OF_ADAPTER_PER_DEVICE]; | ||
| 213 | int (*get_adapter_count) (struct dvb_usb_device *); | ||
| 214 | int (*power_ctrl) (struct dvb_usb_device *, int); | ||
| 215 | int (*read_config) (struct dvb_usb_device *d); | 215 | int (*read_config) (struct dvb_usb_device *d); |
| 216 | int (*read_mac_address) (struct dvb_usb_adapter *, u8 []); | 216 | int (*read_mac_address) (struct dvb_usb_adapter *, u8 []); |
| 217 | int (*frontend_attach) (struct dvb_usb_adapter *); | 217 | int (*frontend_attach) (struct dvb_usb_adapter *); |
| @@ -221,18 +221,13 @@ struct dvb_usb_device_properties { | |||
| 221 | int (*fe_ioctl_override) (struct dvb_frontend *, | 221 | int (*fe_ioctl_override) (struct dvb_frontend *, |
| 222 | unsigned int, void *, unsigned int); | 222 | unsigned int, void *, unsigned int); |
| 223 | int (*init) (struct dvb_usb_device *); | 223 | int (*init) (struct dvb_usb_device *); |
| 224 | void (*disconnect) (struct dvb_usb_device *); | 224 | void (*exit) (struct dvb_usb_device *); |
| 225 | int (*get_rc_config) (struct dvb_usb_device *, struct dvb_usb_rc *); | 225 | int (*get_rc_config) (struct dvb_usb_device *, struct dvb_usb_rc *); |
| 226 | #define DVB_USB_FE_TS_TYPE_188 0 | 226 | #define DVB_USB_FE_TS_TYPE_188 0 |
| 227 | #define DVB_USB_FE_TS_TYPE_204 1 | 227 | #define DVB_USB_FE_TS_TYPE_204 1 |
| 228 | #define DVB_USB_FE_TS_TYPE_RAW 2 | 228 | #define DVB_USB_FE_TS_TYPE_RAW 2 |
| 229 | int (*get_stream_config) (struct dvb_frontend *, u8 *, | 229 | int (*get_stream_config) (struct dvb_frontend *, u8 *, |
| 230 | struct usb_data_stream_properties *); | 230 | struct usb_data_stream_properties *); |
| 231 | |||
| 232 | struct i2c_algorithm *i2c_algo; | ||
| 233 | |||
| 234 | int generic_bulk_ctrl_endpoint; | ||
| 235 | int generic_bulk_ctrl_endpoint_response; | ||
| 236 | }; | 231 | }; |
| 237 | 232 | ||
| 238 | /** | 233 | /** |
| @@ -247,12 +242,12 @@ struct dvb_usb_device_properties { | |||
| 247 | */ | 242 | */ |
| 248 | #define MAX_NO_URBS_FOR_DATA_STREAM 10 | 243 | #define MAX_NO_URBS_FOR_DATA_STREAM 10 |
| 249 | struct usb_data_stream { | 244 | struct usb_data_stream { |
| 250 | struct usb_device *udev; | 245 | struct usb_device *udev; |
| 251 | struct usb_data_stream_properties props; | 246 | struct usb_data_stream_properties props; |
| 252 | 247 | ||
| 253 | #define USB_STATE_INIT 0x00 | 248 | #define USB_STATE_INIT 0x00 |
| 254 | #define USB_STATE_URB_BUF 0x01 | 249 | #define USB_STATE_URB_BUF 0x01 |
| 255 | int state; | 250 | u8 state; |
| 256 | 251 | ||
| 257 | void (*complete) (struct usb_data_stream *, u8 *, size_t); | 252 | void (*complete) (struct usb_data_stream *, u8 *, size_t); |
| 258 | 253 | ||
| @@ -297,26 +292,23 @@ struct usb_data_stream { | |||
| 297 | struct dvb_usb_adapter { | 292 | struct dvb_usb_adapter { |
| 298 | const struct dvb_usb_adapter_properties *props; | 293 | const struct dvb_usb_adapter_properties *props; |
| 299 | struct usb_data_stream stream; | 294 | struct usb_data_stream stream; |
| 300 | u8 id; | 295 | u8 id; |
| 301 | u8 ts_type; | 296 | u8 ts_type; |
| 302 | int pid_filtering; | 297 | bool pid_filtering; |
| 303 | int feed_count; | 298 | u8 feed_count; |
| 304 | int max_feed_count; | 299 | u8 max_feed_count; |
| 305 | 300 | s8 active_fe; | |
| 306 | /* sync frontend and streaming as those are different tasks */ | ||
| 307 | struct mutex sync_mutex; | ||
| 308 | 301 | ||
| 309 | /* dvb */ | 302 | /* dvb */ |
| 310 | struct dvb_adapter dvb_adap; | 303 | struct dvb_adapter dvb_adap; |
| 311 | struct dmxdev dmxdev; | 304 | struct dmxdev dmxdev; |
| 312 | struct dvb_demux demux; | 305 | struct dvb_demux demux; |
| 313 | struct dvb_net dvb_net; | 306 | struct dvb_net dvb_net; |
| 307 | struct mutex sync_mutex; | ||
| 314 | 308 | ||
| 315 | struct dvb_frontend *fe[MAX_NO_OF_FE_PER_ADAP]; | 309 | struct dvb_frontend *fe[MAX_NO_OF_FE_PER_ADAP]; |
| 316 | int (*fe_init[MAX_NO_OF_FE_PER_ADAP]) (struct dvb_frontend *); | 310 | int (*fe_init[MAX_NO_OF_FE_PER_ADAP]) (struct dvb_frontend *); |
| 317 | int (*fe_sleep[MAX_NO_OF_FE_PER_ADAP]) (struct dvb_frontend *); | 311 | int (*fe_sleep[MAX_NO_OF_FE_PER_ADAP]) (struct dvb_frontend *); |
| 318 | |||
| 319 | int active_fe; | ||
| 320 | }; | 312 | }; |
| 321 | 313 | ||
| 322 | /** | 314 | /** |
| @@ -346,11 +338,12 @@ struct dvb_usb_device { | |||
| 346 | const struct dvb_usb_device_properties *props; | 338 | const struct dvb_usb_device_properties *props; |
| 347 | const char *name; | 339 | const char *name; |
| 348 | const char *rc_map; | 340 | const char *rc_map; |
| 349 | struct dvb_usb_rc rc; | 341 | |
| 350 | struct usb_device *udev; | 342 | struct usb_device *udev; |
| 343 | struct usb_interface *intf; | ||
| 344 | struct dvb_usb_rc rc; | ||
| 351 | struct work_struct probe_work; | 345 | struct work_struct probe_work; |
| 352 | pid_t work_pid; | 346 | pid_t work_pid; |
| 353 | struct usb_interface *intf; | ||
| 354 | int powered; | 347 | int powered; |
| 355 | 348 | ||
| 356 | /* locking */ | 349 | /* locking */ |
diff --git a/drivers/media/dvb/dvb-usb/dvb_usb_core.c b/drivers/media/dvb/dvb-usb/dvb_usb_core.c index f3e1ec2c473..42473e1dbac 100644 --- a/drivers/media/dvb/dvb-usb/dvb_usb_core.c +++ b/drivers/media/dvb/dvb-usb/dvb_usb_core.c | |||
| @@ -12,22 +12,22 @@ | |||
| 12 | * see Documentation/dvb/README.dvb-usb for more information | 12 | * see Documentation/dvb/README.dvb-usb for more information |
| 13 | */ | 13 | */ |
| 14 | #include "dvb_usb_common.h" | 14 | #include "dvb_usb_common.h" |
| 15 | #include <linux/usb/input.h> | ||
| 16 | 15 | ||
| 17 | int dvb_usbv2_disable_rc_polling; | 16 | int dvb_usbv2_disable_rc_polling; |
| 18 | module_param_named(disable_rc_polling, dvb_usbv2_disable_rc_polling, int, 0644); | 17 | module_param_named(disable_rc_polling, dvb_usbv2_disable_rc_polling, int, 0644); |
| 19 | MODULE_PARM_DESC(disable_rc_polling, | 18 | MODULE_PARM_DESC(disable_rc_polling, |
| 20 | "disable remote control polling (default: 0)."); | 19 | "disable remote control polling (default: 0)"); |
| 21 | static int dvb_usb_force_pid_filter_usage; | 20 | static int dvb_usb_force_pid_filter_usage; |
| 22 | module_param_named(force_pid_filter_usage, dvb_usb_force_pid_filter_usage, | 21 | module_param_named(force_pid_filter_usage, dvb_usb_force_pid_filter_usage, |
| 23 | int, 0444); | 22 | int, 0444); |
| 24 | MODULE_PARM_DESC(force_pid_filter_usage, "force all dvb-usb-devices to use a" \ | 23 | MODULE_PARM_DESC(force_pid_filter_usage, "force all DVB USB devices to use a " \ |
| 25 | " PID filter, if any (default: 0)."); | 24 | "PID filter, if any (default: 0)"); |
| 26 | 25 | ||
| 27 | static int dvb_usbv2_download_firmware(struct dvb_usb_device *d, const char *name) | 26 | static int dvb_usbv2_download_firmware(struct dvb_usb_device *d, const char *name) |
| 28 | { | 27 | { |
| 29 | int ret; | 28 | int ret; |
| 30 | const struct firmware *fw; | 29 | const struct firmware *fw; |
| 30 | pr_debug("%s:\n", __func__); | ||
| 31 | 31 | ||
| 32 | if (!d->props->download_firmware) { | 32 | if (!d->props->download_firmware) { |
| 33 | ret = -EINVAL; | 33 | ret = -EINVAL; |
| @@ -36,10 +36,10 @@ static int dvb_usbv2_download_firmware(struct dvb_usb_device *d, const char *nam | |||
| 36 | 36 | ||
| 37 | ret = request_firmware(&fw, name, &d->udev->dev); | 37 | ret = request_firmware(&fw, name, &d->udev->dev); |
| 38 | if (ret < 0) { | 38 | if (ret < 0) { |
| 39 | pr_err("%s: did not find the firmware file. (%s) " \ | 39 | pr_err("%s: Did not find the firmware file '%s'. " \ |
| 40 | "Please see linux/Documentation/dvb/ for " \ | 40 | "Please see linux/Documentation/dvb/ for " \ |
| 41 | "more details on firmware-problems. (%d)\n", | 41 | "more details on firmware-problems. Status " \ |
| 42 | KBUILD_MODNAME, name, ret); | 42 | "%d\n", KBUILD_MODNAME, name, ret); |
| 43 | goto err; | 43 | goto err; |
| 44 | } | 44 | } |
| 45 | 45 | ||
| @@ -47,9 +47,7 @@ static int dvb_usbv2_download_firmware(struct dvb_usb_device *d, const char *nam | |||
| 47 | name); | 47 | name); |
| 48 | 48 | ||
| 49 | ret = d->props->download_firmware(d, fw); | 49 | ret = d->props->download_firmware(d, fw); |
| 50 | |||
| 51 | release_firmware(fw); | 50 | release_firmware(fw); |
| 52 | |||
| 53 | if (ret < 0) | 51 | if (ret < 0) |
| 54 | goto err; | 52 | goto err; |
| 55 | 53 | ||
| @@ -62,7 +60,6 @@ err: | |||
| 62 | static int dvb_usbv2_i2c_init(struct dvb_usb_device *d) | 60 | static int dvb_usbv2_i2c_init(struct dvb_usb_device *d) |
| 63 | { | 61 | { |
| 64 | int ret; | 62 | int ret; |
| 65 | |||
| 66 | pr_debug("%s:\n", __func__); | 63 | pr_debug("%s:\n", __func__); |
| 67 | 64 | ||
| 68 | if (!d->props->i2c_algo) | 65 | if (!d->props->i2c_algo) |
| @@ -103,29 +100,27 @@ static void dvb_usb_read_remote_control(struct work_struct *work) | |||
| 103 | struct dvb_usb_device, rc_query_work.work); | 100 | struct dvb_usb_device, rc_query_work.work); |
| 104 | int ret; | 101 | int ret; |
| 105 | 102 | ||
| 106 | /* TODO: need a lock here. We can simply skip checking for the remote | 103 | /* |
| 107 | control if we're busy. */ | 104 | * When the parameter has been set to 1 via sysfs while the |
| 108 | 105 | * driver was running, or when bulk mode is enabled after IR init. | |
| 109 | /* when the parameter has been set to 1 via sysfs while the | ||
| 110 | * driver was running, or when bulk mode is enabled after IR init | ||
| 111 | */ | 106 | */ |
| 112 | if (dvb_usbv2_disable_rc_polling || d->rc.bulk_mode) | 107 | if (dvb_usbv2_disable_rc_polling || d->rc.bulk_mode) |
| 113 | return; | 108 | return; |
| 114 | 109 | ||
| 115 | ret = d->rc.query(d); | 110 | ret = d->rc.query(d); |
| 116 | if (ret < 0) | 111 | if (ret < 0) { |
| 117 | pr_err("%s: error %d while querying for an remote control " \ | 112 | pr_err("%s: rc.query() failed=%d\n", KBUILD_MODNAME, ret); |
| 118 | "event\n", KBUILD_MODNAME, ret); | 113 | return; /* stop polling */ |
| 114 | } | ||
| 119 | 115 | ||
| 120 | schedule_delayed_work(&d->rc_query_work, | 116 | schedule_delayed_work(&d->rc_query_work, |
| 121 | msecs_to_jiffies(d->rc.interval)); | 117 | msecs_to_jiffies(d->rc.interval)); |
| 122 | } | 118 | } |
| 123 | 119 | ||
| 124 | static int dvb_usbv2_remote_init(struct dvb_usb_device *d) | 120 | static int dvb_usbv2_remote_init(struct dvb_usb_device *d) |
| 125 | { | 121 | { |
| 126 | int ret; | 122 | int ret; |
| 127 | struct rc_dev *dev; | 123 | struct rc_dev *dev; |
| 128 | |||
| 129 | pr_debug("%s:\n", __func__); | 124 | pr_debug("%s:\n", __func__); |
| 130 | 125 | ||
| 131 | if (dvb_usbv2_disable_rc_polling || !d->props->get_rc_config) | 126 | if (dvb_usbv2_disable_rc_polling || !d->props->get_rc_config) |
| @@ -142,7 +137,7 @@ static int dvb_usbv2_remote_init(struct dvb_usb_device *d) | |||
| 142 | } | 137 | } |
| 143 | 138 | ||
| 144 | dev->dev.parent = &d->udev->dev; | 139 | dev->dev.parent = &d->udev->dev; |
| 145 | dev->input_name = "IR-receiver inside an USB DVB receiver"; | 140 | dev->input_name = d->name; |
| 146 | usb_make_path(d->udev, d->rc_phys, sizeof(d->rc_phys)); | 141 | usb_make_path(d->udev, d->rc_phys, sizeof(d->rc_phys)); |
| 147 | strlcat(d->rc_phys, "/ir0", sizeof(d->rc_phys)); | 142 | strlcat(d->rc_phys, "/ir0", sizeof(d->rc_phys)); |
| 148 | dev->input_phys = d->rc_phys; | 143 | dev->input_phys = d->rc_phys; |
| @@ -153,13 +148,10 @@ static int dvb_usbv2_remote_init(struct dvb_usb_device *d) | |||
| 153 | dev->allowed_protos = d->rc.allowed_protos; | 148 | dev->allowed_protos = d->rc.allowed_protos; |
| 154 | dev->change_protocol = d->rc.change_protocol; | 149 | dev->change_protocol = d->rc.change_protocol; |
| 155 | dev->priv = d; | 150 | dev->priv = d; |
| 156 | /* select used keymap */ | ||
| 157 | if (d->rc.map_name) | 151 | if (d->rc.map_name) |
| 158 | dev->map_name = d->rc.map_name; | 152 | dev->map_name = d->rc.map_name; |
| 159 | else if (d->rc_map) | ||
| 160 | dev->map_name = d->rc_map; | ||
| 161 | else | 153 | else |
| 162 | dev->map_name = RC_MAP_EMPTY; /* keep rc enabled */ | 154 | dev->map_name = d->rc_map; |
| 163 | 155 | ||
| 164 | ret = rc_register_device(dev); | 156 | ret = rc_register_device(dev); |
| 165 | if (ret < 0) { | 157 | if (ret < 0) { |
| @@ -235,9 +227,8 @@ int dvb_usbv2_adapter_stream_init(struct dvb_usb_adapter *adap) | |||
| 235 | int dvb_usbv2_adapter_stream_exit(struct dvb_usb_adapter *adap) | 227 | int dvb_usbv2_adapter_stream_exit(struct dvb_usb_adapter *adap) |
| 236 | { | 228 | { |
| 237 | pr_debug("%s: adap=%d\n", __func__, adap->id); | 229 | pr_debug("%s: adap=%d\n", __func__, adap->id); |
| 238 | usb_urb_exitv2(&adap->stream); | ||
| 239 | 230 | ||
| 240 | return 0; | 231 | return usb_urb_exitv2(&adap->stream); |
| 241 | } | 232 | } |
| 242 | 233 | ||
| 243 | static inline int dvb_usb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed, | 234 | static inline int dvb_usb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed, |
| @@ -369,7 +360,7 @@ int dvb_usbv2_adapter_dvb_init(struct dvb_usb_adapter *adap) | |||
| 369 | if (ret < 0) { | 360 | if (ret < 0) { |
| 370 | pr_debug("%s: dvb_register_adapter() failed=%d\n", __func__, | 361 | pr_debug("%s: dvb_register_adapter() failed=%d\n", __func__, |
| 371 | ret); | 362 | ret); |
| 372 | goto err; | 363 | goto err_dvb_register_adapter; |
| 373 | } | 364 | } |
| 374 | 365 | ||
| 375 | adap->dvb_adap.priv = adap; | 366 | adap->dvb_adap.priv = adap; |
| @@ -378,7 +369,7 @@ int dvb_usbv2_adapter_dvb_init(struct dvb_usb_adapter *adap) | |||
| 378 | ret = d->props->read_mac_address(adap, | 369 | ret = d->props->read_mac_address(adap, |
| 379 | adap->dvb_adap.proposed_mac); | 370 | adap->dvb_adap.proposed_mac); |
| 380 | if (ret < 0) | 371 | if (ret < 0) |
| 381 | goto err_dmx; | 372 | goto err_dvb_dmx_init; |
| 382 | 373 | ||
| 383 | pr_info("%s: MAC address: %pM\n", KBUILD_MODNAME, | 374 | pr_info("%s: MAC address: %pM\n", KBUILD_MODNAME, |
| 384 | adap->dvb_adap.proposed_mac); | 375 | adap->dvb_adap.proposed_mac); |
| @@ -387,8 +378,7 @@ int dvb_usbv2_adapter_dvb_init(struct dvb_usb_adapter *adap) | |||
| 387 | adap->demux.dmx.capabilities = DMX_TS_FILTERING | DMX_SECTION_FILTERING; | 378 | adap->demux.dmx.capabilities = DMX_TS_FILTERING | DMX_SECTION_FILTERING; |
| 388 | adap->demux.priv = adap; | 379 | adap->demux.priv = adap; |
| 389 | adap->demux.filternum = 0; | 380 | adap->demux.filternum = 0; |
| 390 | if (adap->demux.filternum < adap->max_feed_count) | 381 | adap->demux.filternum = adap->max_feed_count; |
| 391 | adap->demux.filternum = adap->max_feed_count; | ||
| 392 | adap->demux.feednum = adap->demux.filternum; | 382 | adap->demux.feednum = adap->demux.filternum; |
| 393 | adap->demux.start_feed = dvb_usb_start_feed; | 383 | adap->demux.start_feed = dvb_usb_start_feed; |
| 394 | adap->demux.stop_feed = dvb_usb_stop_feed; | 384 | adap->demux.stop_feed = dvb_usb_stop_feed; |
| @@ -396,7 +386,7 @@ int dvb_usbv2_adapter_dvb_init(struct dvb_usb_adapter *adap) | |||
| 396 | ret = dvb_dmx_init(&adap->demux); | 386 | ret = dvb_dmx_init(&adap->demux); |
| 397 | if (ret < 0) { | 387 | if (ret < 0) { |
| 398 | pr_err("%s: dvb_dmx_init() failed=%d\n", KBUILD_MODNAME, ret); | 388 | pr_err("%s: dvb_dmx_init() failed=%d\n", KBUILD_MODNAME, ret); |
| 399 | goto err_dmx; | 389 | goto err_dvb_dmx_init; |
| 400 | } | 390 | } |
| 401 | 391 | ||
| 402 | adap->dmxdev.filternum = adap->demux.filternum; | 392 | adap->dmxdev.filternum = adap->demux.filternum; |
| @@ -406,25 +396,25 @@ int dvb_usbv2_adapter_dvb_init(struct dvb_usb_adapter *adap) | |||
| 406 | if (ret < 0) { | 396 | if (ret < 0) { |
| 407 | pr_err("%s: dvb_dmxdev_init() failed=%d\n", KBUILD_MODNAME, | 397 | pr_err("%s: dvb_dmxdev_init() failed=%d\n", KBUILD_MODNAME, |
| 408 | ret); | 398 | ret); |
| 409 | goto err_dmx_dev; | 399 | goto err_dvb_dmxdev_init; |
| 410 | } | 400 | } |
| 411 | 401 | ||
| 412 | ret = dvb_net_init(&adap->dvb_adap, &adap->dvb_net, &adap->demux.dmx); | 402 | ret = dvb_net_init(&adap->dvb_adap, &adap->dvb_net, &adap->demux.dmx); |
| 413 | if (ret < 0) { | 403 | if (ret < 0) { |
| 414 | pr_err("%s: dvb_net_init() failed=%d\n", KBUILD_MODNAME, ret); | 404 | pr_err("%s: dvb_net_init() failed=%d\n", KBUILD_MODNAME, ret); |
| 415 | goto err_net_init; | 405 | goto err_dvb_net_init; |
| 416 | } | 406 | } |
| 417 | 407 | ||
| 418 | mutex_init(&adap->sync_mutex); | 408 | mutex_init(&adap->sync_mutex); |
| 419 | 409 | ||
| 420 | return 0; | 410 | return 0; |
| 421 | err_net_init: | 411 | err_dvb_net_init: |
| 422 | dvb_dmxdev_release(&adap->dmxdev); | 412 | dvb_dmxdev_release(&adap->dmxdev); |
| 423 | err_dmx_dev: | 413 | err_dvb_dmxdev_init: |
| 424 | dvb_dmx_release(&adap->demux); | 414 | dvb_dmx_release(&adap->demux); |
| 425 | err_dmx: | 415 | err_dvb_dmx_init: |
| 426 | dvb_unregister_adapter(&adap->dvb_adap); | 416 | dvb_unregister_adapter(&adap->dvb_adap); |
| 427 | err: | 417 | err_dvb_register_adapter: |
| 428 | adap->dvb_adap.priv = NULL; | 418 | adap->dvb_adap.priv = NULL; |
| 429 | return ret; | 419 | return ret; |
| 430 | } | 420 | } |
| @@ -468,7 +458,7 @@ err: | |||
| 468 | return ret; | 458 | return ret; |
| 469 | } | 459 | } |
| 470 | 460 | ||
| 471 | static int dvb_usb_fe_wakeup(struct dvb_frontend *fe) | 461 | static int dvb_usb_fe_init(struct dvb_frontend *fe) |
| 472 | { | 462 | { |
| 473 | int ret; | 463 | int ret; |
| 474 | struct dvb_usb_adapter *adap = fe->dvb->priv; | 464 | struct dvb_usb_adapter *adap = fe->dvb->priv; |
| @@ -560,10 +550,9 @@ int dvb_usbv2_adapter_frontend_init(struct dvb_usb_adapter *adap) | |||
| 560 | 550 | ||
| 561 | for (i = 0; i < MAX_NO_OF_FE_PER_ADAP && adap->fe[i]; i++) { | 551 | for (i = 0; i < MAX_NO_OF_FE_PER_ADAP && adap->fe[i]; i++) { |
| 562 | adap->fe[i]->id = i; | 552 | adap->fe[i]->id = i; |
| 563 | |||
| 564 | /* re-assign sleep and wakeup functions */ | 553 | /* re-assign sleep and wakeup functions */ |
| 565 | adap->fe_init[i] = adap->fe[i]->ops.init; | 554 | adap->fe_init[i] = adap->fe[i]->ops.init; |
| 566 | adap->fe[i]->ops.init = dvb_usb_fe_wakeup; | 555 | adap->fe[i]->ops.init = dvb_usb_fe_init; |
| 567 | adap->fe_sleep[i] = adap->fe[i]->ops.sleep; | 556 | adap->fe_sleep[i] = adap->fe[i]->ops.sleep; |
| 568 | adap->fe[i]->ops.sleep = dvb_usb_fe_sleep; | 557 | adap->fe[i]->ops.sleep = dvb_usb_fe_sleep; |
| 569 | 558 | ||
| @@ -699,7 +688,6 @@ err: | |||
| 699 | static int dvb_usbv2_adapter_exit(struct dvb_usb_device *d) | 688 | static int dvb_usbv2_adapter_exit(struct dvb_usb_device *d) |
| 700 | { | 689 | { |
| 701 | int i; | 690 | int i; |
| 702 | |||
| 703 | pr_debug("%s:\n", __func__); | 691 | pr_debug("%s:\n", __func__); |
| 704 | 692 | ||
| 705 | for (i = MAX_NO_OF_ADAPTER_PER_DEVICE - 1; i >= 0; i--) { | 693 | for (i = MAX_NO_OF_ADAPTER_PER_DEVICE - 1; i >= 0; i--) { |
| @@ -727,7 +715,8 @@ static int dvb_usbv2_exit(struct dvb_usb_device *d) | |||
| 727 | 715 | ||
| 728 | static int dvb_usbv2_init(struct dvb_usb_device *d) | 716 | static int dvb_usbv2_init(struct dvb_usb_device *d) |
| 729 | { | 717 | { |
| 730 | int ret = 0; | 718 | int ret; |
| 719 | pr_debug("%s:\n", __func__); | ||
| 731 | 720 | ||
| 732 | dvb_usbv2_device_power_ctrl(d, 1); | 721 | dvb_usbv2_device_power_ctrl(d, 1); |
| 733 | 722 | ||
| @@ -770,7 +759,6 @@ err: | |||
| 770 | * is this routine. Due to that we delay actual operation using workqueue | 759 | * is this routine. Due to that we delay actual operation using workqueue |
| 771 | * and return always success here. | 760 | * and return always success here. |
| 772 | */ | 761 | */ |
| 773 | |||
| 774 | static void dvb_usbv2_init_work(struct work_struct *work) | 762 | static void dvb_usbv2_init_work(struct work_struct *work) |
| 775 | { | 763 | { |
| 776 | int ret; | 764 | int ret; |
| @@ -778,7 +766,6 @@ static void dvb_usbv2_init_work(struct work_struct *work) | |||
| 778 | container_of(work, struct dvb_usb_device, probe_work); | 766 | container_of(work, struct dvb_usb_device, probe_work); |
| 779 | 767 | ||
| 780 | d->work_pid = current->pid; | 768 | d->work_pid = current->pid; |
| 781 | |||
| 782 | pr_debug("%s: work_pid=%d\n", __func__, d->work_pid); | 769 | pr_debug("%s: work_pid=%d\n", __func__, d->work_pid); |
| 783 | 770 | ||
| 784 | if (d->props->size_of_priv) { | 771 | if (d->props->size_of_priv) { |
| @@ -817,7 +804,8 @@ static void dvb_usbv2_init_work(struct work_struct *work) | |||
| 817 | */ | 804 | */ |
| 818 | return; | 805 | return; |
| 819 | } else { | 806 | } else { |
| 820 | /* Unexpected error. We must unregister driver | 807 | /* |
| 808 | * Unexpected error. We must unregister driver | ||
| 821 | * manually from the device, because device is | 809 | * manually from the device, because device is |
| 822 | * already register by returning from probe() | 810 | * already register by returning from probe() |
| 823 | * with success. usb_driver_release_interface() | 811 | * with success. usb_driver_release_interface() |
| @@ -844,7 +832,6 @@ static void dvb_usbv2_init_work(struct work_struct *work) | |||
| 844 | err_usb_driver_release_interface: | 832 | err_usb_driver_release_interface: |
| 845 | pr_info("%s: '%s' error while loading driver (%d)\n", KBUILD_MODNAME, | 833 | pr_info("%s: '%s' error while loading driver (%d)\n", KBUILD_MODNAME, |
| 846 | d->name, ret); | 834 | d->name, ret); |
| 847 | /* it finally calls disconnect() which frees mem */ | ||
| 848 | usb_driver_release_interface(to_usb_driver(d->intf->dev.driver), | 835 | usb_driver_release_interface(to_usb_driver(d->intf->dev.driver), |
| 849 | d->intf); | 836 | d->intf); |
| 850 | pr_debug("%s: failed=%d\n", __func__, ret); | 837 | pr_debug("%s: failed=%d\n", __func__, ret); |
| @@ -909,8 +896,7 @@ EXPORT_SYMBOL(dvb_usbv2_probe); | |||
| 909 | void dvb_usbv2_disconnect(struct usb_interface *intf) | 896 | void dvb_usbv2_disconnect(struct usb_interface *intf) |
| 910 | { | 897 | { |
| 911 | struct dvb_usb_device *d = usb_get_intfdata(intf); | 898 | struct dvb_usb_device *d = usb_get_intfdata(intf); |
| 912 | const char *name; | 899 | const char *name = d->name; |
| 913 | |||
| 914 | pr_debug("%s: pid=%d work_pid=%d\n", __func__, current->pid, | 900 | pr_debug("%s: pid=%d work_pid=%d\n", __func__, current->pid, |
| 915 | d->work_pid); | 901 | d->work_pid); |
| 916 | 902 | ||
| @@ -918,10 +904,9 @@ void dvb_usbv2_disconnect(struct usb_interface *intf) | |||
| 918 | if (d->work_pid != current->pid) | 904 | if (d->work_pid != current->pid) |
| 919 | cancel_work_sync(&d->probe_work); | 905 | cancel_work_sync(&d->probe_work); |
| 920 | 906 | ||
| 921 | if (d->props->disconnect) | 907 | if (d->props->exit) |
| 922 | d->props->disconnect(d); | 908 | d->props->exit(d); |
| 923 | 909 | ||
| 924 | name = d->name; | ||
| 925 | dvb_usbv2_exit(d); | 910 | dvb_usbv2_exit(d); |
| 926 | 911 | ||
| 927 | pr_info("%s: '%s' successfully deinitialized and disconnected\n", | 912 | pr_info("%s: '%s' successfully deinitialized and disconnected\n", |
| @@ -933,7 +918,6 @@ int dvb_usbv2_suspend(struct usb_interface *intf, pm_message_t msg) | |||
| 933 | { | 918 | { |
| 934 | struct dvb_usb_device *d = usb_get_intfdata(intf); | 919 | struct dvb_usb_device *d = usb_get_intfdata(intf); |
| 935 | int i; | 920 | int i; |
| 936 | |||
| 937 | pr_debug("%s:\n", __func__); | 921 | pr_debug("%s:\n", __func__); |
| 938 | 922 | ||
| 939 | /* stop remote controller poll */ | 923 | /* stop remote controller poll */ |
| @@ -955,7 +939,6 @@ int dvb_usbv2_resume(struct usb_interface *intf) | |||
| 955 | { | 939 | { |
| 956 | struct dvb_usb_device *d = usb_get_intfdata(intf); | 940 | struct dvb_usb_device *d = usb_get_intfdata(intf); |
| 957 | int i; | 941 | int i; |
| 958 | |||
| 959 | pr_debug("%s:\n", __func__); | 942 | pr_debug("%s:\n", __func__); |
| 960 | 943 | ||
| 961 | /* start streaming */ | 944 | /* start streaming */ |
diff --git a/drivers/media/dvb/dvb-usb/usb_urb.c b/drivers/media/dvb/dvb-usb/usb_urb.c index 32e80be2168..d860dac2a83 100644 --- a/drivers/media/dvb/dvb-usb/usb_urb.c +++ b/drivers/media/dvb/dvb-usb/usb_urb.c | |||
| @@ -38,7 +38,7 @@ static void usb_urb_complete(struct urb *urb) | |||
| 38 | case -ESHUTDOWN: | 38 | case -ESHUTDOWN: |
| 39 | return; | 39 | return; |
| 40 | default: /* error */ | 40 | default: /* error */ |
| 41 | pr_debug("%s: URB completition failed=%d\n", __func__, | 41 | pr_debug("%s: urb completition failed=%d\n", __func__, |
| 42 | urb->status); | 42 | urb->status); |
| 43 | break; | 43 | break; |
| 44 | } | 44 | } |
| @@ -76,7 +76,7 @@ int usb_urb_killv2(struct usb_data_stream *stream) | |||
| 76 | { | 76 | { |
| 77 | int i; | 77 | int i; |
| 78 | for (i = 0; i < stream->urbs_submitted; i++) { | 78 | for (i = 0; i < stream->urbs_submitted; i++) { |
| 79 | pr_debug("%s: kill URB=%d\n", __func__, i); | 79 | pr_debug("%s: kill urb=%d\n", __func__, i); |
| 80 | /* stop the URB */ | 80 | /* stop the URB */ |
| 81 | usb_kill_urb(stream->urb_list[i]); | 81 | usb_kill_urb(stream->urb_list[i]); |
| 82 | } | 82 | } |
| @@ -96,10 +96,10 @@ int usb_urb_submitv2(struct usb_data_stream *stream, | |||
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | for (i = 0; i < stream->urbs_initialized; i++) { | 98 | for (i = 0; i < stream->urbs_initialized; i++) { |
| 99 | pr_debug("%s: submit URB=%d\n", __func__, i); | 99 | pr_debug("%s: submit urb=%d\n", __func__, i); |
| 100 | ret = usb_submit_urb(stream->urb_list[i], GFP_ATOMIC); | 100 | ret = usb_submit_urb(stream->urb_list[i], GFP_ATOMIC); |
| 101 | if (ret) { | 101 | if (ret) { |
| 102 | pr_err("%s: could not submit URB no. %d - get them " \ | 102 | pr_err("%s: could not submit urb no. %d - get them " \ |
| 103 | "all back\n", KBUILD_MODNAME, i); | 103 | "all back\n", KBUILD_MODNAME, i); |
| 104 | usb_urb_killv2(stream); | 104 | usb_urb_killv2(stream); |
| 105 | return ret; | 105 | return ret; |
| @@ -115,9 +115,9 @@ int usb_urb_free_urbs(struct usb_data_stream *stream) | |||
| 115 | 115 | ||
| 116 | usb_urb_killv2(stream); | 116 | usb_urb_killv2(stream); |
| 117 | 117 | ||
| 118 | for (i = 0; i < stream->urbs_initialized; i++) { | 118 | for (i = stream->urbs_initialized - 1; i >= 0; i--) { |
| 119 | if (stream->urb_list[i] != NULL) { | 119 | if (stream->urb_list[i]) { |
| 120 | pr_debug("%s: free URB=%d\n", __func__, i); | 120 | pr_debug("%s: free urb=%d\n", __func__, i); |
| 121 | /* free the URBs */ | 121 | /* free the URBs */ |
| 122 | usb_free_urb(stream->urb_list[i]); | 122 | usb_free_urb(stream->urb_list[i]); |
| 123 | } | 123 | } |
| @@ -133,7 +133,7 @@ static int usb_urb_alloc_bulk_urbs(struct usb_data_stream *stream) | |||
| 133 | 133 | ||
| 134 | /* allocate the URBs */ | 134 | /* allocate the URBs */ |
| 135 | for (i = 0; i < stream->props.count; i++) { | 135 | for (i = 0; i < stream->props.count; i++) { |
| 136 | pr_debug("%s: alloc URB=%d\n", __func__, i); | 136 | pr_debug("%s: alloc urb=%d\n", __func__, i); |
| 137 | stream->urb_list[i] = usb_alloc_urb(0, GFP_ATOMIC); | 137 | stream->urb_list[i] = usb_alloc_urb(0, GFP_ATOMIC); |
| 138 | if (!stream->urb_list[i]) { | 138 | if (!stream->urb_list[i]) { |
| 139 | pr_debug("%s: failed\n", __func__); | 139 | pr_debug("%s: failed\n", __func__); |
| @@ -164,7 +164,7 @@ static int usb_urb_alloc_isoc_urbs(struct usb_data_stream *stream) | |||
| 164 | for (i = 0; i < stream->props.count; i++) { | 164 | for (i = 0; i < stream->props.count; i++) { |
| 165 | struct urb *urb; | 165 | struct urb *urb; |
| 166 | int frame_offset = 0; | 166 | int frame_offset = 0; |
| 167 | pr_debug("%s: alloc URB=%d\n", __func__, i); | 167 | pr_debug("%s: alloc urb=%d\n", __func__, i); |
| 168 | stream->urb_list[i] = usb_alloc_urb( | 168 | stream->urb_list[i] = usb_alloc_urb( |
| 169 | stream->props.u.isoc.framesperurb, GFP_ATOMIC); | 169 | stream->props.u.isoc.framesperurb, GFP_ATOMIC); |
| 170 | if (!stream->urb_list[i]) { | 170 | if (!stream->urb_list[i]) { |
| @@ -229,17 +229,17 @@ int usb_alloc_stream_buffers(struct usb_data_stream *stream, int num, | |||
| 229 | __func__, num * size); | 229 | __func__, num * size); |
| 230 | 230 | ||
| 231 | for (stream->buf_num = 0; stream->buf_num < num; stream->buf_num++) { | 231 | for (stream->buf_num = 0; stream->buf_num < num; stream->buf_num++) { |
| 232 | pr_debug("%s: alloc buf=%d\n", __func__, stream->buf_num); | ||
| 233 | stream->buf_list[stream->buf_num] = usb_alloc_coherent( | 232 | stream->buf_list[stream->buf_num] = usb_alloc_coherent( |
| 234 | stream->udev, size, GFP_ATOMIC, | 233 | stream->udev, size, GFP_ATOMIC, |
| 235 | &stream->dma_addr[stream->buf_num]); | 234 | &stream->dma_addr[stream->buf_num]); |
| 236 | if (stream->buf_list[stream->buf_num] == NULL) { | 235 | if (!stream->buf_list[stream->buf_num]) { |
| 237 | pr_debug("%s: failed\n", __func__); | 236 | pr_debug("%s: alloc buf=%d failed\n", __func__, |
| 237 | stream->buf_num); | ||
| 238 | usb_free_stream_buffers(stream); | 238 | usb_free_stream_buffers(stream); |
| 239 | return -ENOMEM; | 239 | return -ENOMEM; |
| 240 | } | 240 | } |
| 241 | 241 | ||
| 242 | pr_debug("%s: buf %d: %p (dma %llu)\n", __func__, | 242 | pr_debug("%s: alloc buf=%d %p (dma %llu)\n", __func__, |
| 243 | stream->buf_num, | 243 | stream->buf_num, |
| 244 | stream->buf_list[stream->buf_num], | 244 | stream->buf_list[stream->buf_num], |
| 245 | (long long)stream->dma_addr[stream->buf_num]); | 245 | (long long)stream->dma_addr[stream->buf_num]); |
| @@ -255,7 +255,7 @@ int usb_urb_reconfig(struct usb_data_stream *stream, | |||
| 255 | { | 255 | { |
| 256 | int buf_size; | 256 | int buf_size; |
| 257 | 257 | ||
| 258 | if (props == NULL) | 258 | if (!props) |
| 259 | return 0; | 259 | return 0; |
| 260 | 260 | ||
| 261 | /* check allocated buffers are large enough for the request */ | 261 | /* check allocated buffers are large enough for the request */ |
| @@ -293,7 +293,7 @@ int usb_urb_reconfig(struct usb_data_stream *stream, | |||
| 293 | return 0; | 293 | return 0; |
| 294 | } | 294 | } |
| 295 | 295 | ||
| 296 | pr_debug("%s: re-alloc URBs\n", __func__); | 296 | pr_debug("%s: re-alloc urbs\n", __func__); |
| 297 | 297 | ||
| 298 | usb_urb_free_urbs(stream); | 298 | usb_urb_free_urbs(stream); |
| 299 | memcpy(&stream->props, props, sizeof(*props)); | 299 | memcpy(&stream->props, props, sizeof(*props)); |
| @@ -310,7 +310,7 @@ int usb_urb_initv2(struct usb_data_stream *stream, | |||
| 310 | { | 310 | { |
| 311 | int ret; | 311 | int ret; |
| 312 | 312 | ||
| 313 | if (stream == NULL || props == NULL) | 313 | if (!stream || !props) |
| 314 | return -EINVAL; | 314 | return -EINVAL; |
| 315 | 315 | ||
| 316 | memcpy(&stream->props, props, sizeof(*props)); | 316 | memcpy(&stream->props, props, sizeof(*props)); |
| @@ -318,7 +318,7 @@ int usb_urb_initv2(struct usb_data_stream *stream, | |||
| 318 | usb_clear_halt(stream->udev, usb_rcvbulkpipe(stream->udev, | 318 | usb_clear_halt(stream->udev, usb_rcvbulkpipe(stream->udev, |
| 319 | stream->props.endpoint)); | 319 | stream->props.endpoint)); |
| 320 | 320 | ||
| 321 | if (stream->complete == NULL) { | 321 | if (!stream->complete) { |
| 322 | pr_err("%s: there is no data callback - this doesn't make " \ | 322 | pr_err("%s: there is no data callback - this doesn't make " \ |
| 323 | "sense\n", KBUILD_MODNAME); | 323 | "sense\n", KBUILD_MODNAME); |
| 324 | return -EINVAL; | 324 | return -EINVAL; |
| @@ -341,7 +341,7 @@ int usb_urb_initv2(struct usb_data_stream *stream, | |||
| 341 | 341 | ||
| 342 | return usb_urb_alloc_isoc_urbs(stream); | 342 | return usb_urb_alloc_isoc_urbs(stream); |
| 343 | default: | 343 | default: |
| 344 | pr_err("%s: unknown URB-type for data transfer\n", | 344 | pr_err("%s: unknown urb-type for data transfer\n", |
| 345 | KBUILD_MODNAME); | 345 | KBUILD_MODNAME); |
| 346 | return -EINVAL; | 346 | return -EINVAL; |
| 347 | } | 347 | } |
