[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>
This commit is contained in:
Antti Palosaari 2012-06-20 00:32:53 -03:00 committed by Mauro Carvalho Chehab
parent 9f6f82ee61
commit 831511bdee
4 changed files with 109 additions and 133 deletions

View File

@ -1264,7 +1264,7 @@ static int anysee_init(struct dvb_usb_device *d)
return 0;
}
static void anysee_disconnect(struct dvb_usb_device *d)
static void anysee_exit(struct dvb_usb_device *d)
{
return anysee_ci_release(d);
}
@ -1287,7 +1287,7 @@ static struct dvb_usb_device_properties anysee_props = {
.get_rc_config = anysee_get_rc_config,
.frontend_ctrl = anysee_frontend_ctrl,
.streaming_ctrl = anysee_streaming_ctrl,
.disconnect = anysee_disconnect,
.exit = anysee_exit,
.num_adapters = 1,
.adapter = {

View File

@ -10,10 +10,8 @@
#ifndef DVB_USB_H
#define DVB_USB_H
#include <linux/input.h>
#include <linux/usb.h>
#include <linux/usb/input.h>
#include <linux/firmware.h>
#include <linux/mutex.h>
#include <media/rc-core.h>
#include "dvb_frontend.h"
@ -65,15 +63,35 @@
.rc_map = (rc), \
})
struct dvb_usb_device;
struct dvb_usb_adapter;
struct dvb_usb_driver_info {
const char *name;
const char *rc_map;
const struct dvb_usb_device_properties *props;
};
struct dvb_usb_device;
struct dvb_usb_adapter;
struct usb_data_stream;
/**
* struct dvb_rc properties of remote controller, using rc-core
* @rc_codes: name of rc codes table
* @protocol: type of protocol(s) currently used by the driver
* @allowed_protos: protocol(s) supported by the driver
* @driver_type: Used to point if a device supports raw mode
* @change_protocol: callback to change protocol
* @rc_query: called to query an event event.
* @rc_interval: time in ms between two queries.
* @bulk_mode: device supports bulk mode for RC (disable polling mode)
*/
struct dvb_usb_rc {
char *map_name;
u64 allowed_protos;
int (*change_protocol)(struct rc_dev *dev, u64 rc_type);
int (*query) (struct dvb_usb_device *d);
unsigned int interval;
const enum rc_driver_type driver_type;
bool bulk_mode;
};
/**
* Properties of USB streaming - TODO this structure should be somewhere else
@ -83,13 +101,13 @@ struct usb_data_stream;
struct usb_data_stream_properties {
#define USB_BULK 1
#define USB_ISOC 2
int type;
int count;
int endpoint;
u8 type;
u8 count;
u8 endpoint;
union {
struct {
int buffersize; /* per URB */
unsigned int buffersize; /* per URB */
} bulk;
struct {
int framesperurb;
@ -124,37 +142,15 @@ struct dvb_usb_adapter_properties {
#define DVB_USB_ADAP_HAS_PID_FILTER 0x01
#define DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF 0x02
#define DVB_USB_ADAP_NEED_PID_FILTERING 0x04
int caps;
int size_of_priv;
u8 caps;
int pid_filter_count;
u8 pid_filter_count;
int (*pid_filter_ctrl) (struct dvb_usb_adapter *, int);
int (*pid_filter) (struct dvb_usb_adapter *, int, u16, int);
struct usb_data_stream_properties stream;
};
/**
* struct dvb_rc properties of remote controller, using rc-core
* @rc_codes: name of rc codes table
* @protocol: type of protocol(s) currently used by the driver
* @allowed_protos: protocol(s) supported by the driver
* @driver_type: Used to point if a device supports raw mode
* @change_protocol: callback to change protocol
* @rc_query: called to query an event event.
* @rc_interval: time in ms between two queries.
* @bulk_mode: device supports bulk mode for RC (disable polling mode)
*/
struct dvb_usb_rc {
char *map_name;
u64 allowed_protos;
int (*change_protocol)(struct rc_dev *dev, u64 rc_type);
int (*query) (struct dvb_usb_device *d);
int interval;
const enum rc_driver_type driver_type;
bool bulk_mode;
};
/**
* struct dvb_usb_device_properties - properties of a dvb-usb-device
* @owner: owner of the dvb_adapter
@ -196,8 +192,11 @@ struct dvb_usb_device_properties {
const char *driver_name;
struct module *owner;
short *adapter_nr;
u8 bInterfaceNumber;
int size_of_priv;
unsigned int size_of_priv;
u8 generic_bulk_ctrl_endpoint;
u8 generic_bulk_ctrl_endpoint_response;
#define WARM 0
#define COLD 1
@ -207,11 +206,12 @@ struct dvb_usb_device_properties {
int (*download_firmware) (struct dvb_usb_device *,
const struct firmware *);
int num_adapters;
int (*get_adapter_count) (struct dvb_usb_device *);
struct dvb_usb_adapter_properties adapter[MAX_NO_OF_ADAPTER_PER_DEVICE];
struct i2c_algorithm *i2c_algo;
int (*power_ctrl) (struct dvb_usb_device *, int);
unsigned int num_adapters;
struct dvb_usb_adapter_properties adapter[MAX_NO_OF_ADAPTER_PER_DEVICE];
int (*get_adapter_count) (struct dvb_usb_device *);
int (*power_ctrl) (struct dvb_usb_device *, int);
int (*read_config) (struct dvb_usb_device *d);
int (*read_mac_address) (struct dvb_usb_adapter *, u8 []);
int (*frontend_attach) (struct dvb_usb_adapter *);
@ -221,18 +221,13 @@ struct dvb_usb_device_properties {
int (*fe_ioctl_override) (struct dvb_frontend *,
unsigned int, void *, unsigned int);
int (*init) (struct dvb_usb_device *);
void (*disconnect) (struct dvb_usb_device *);
void (*exit) (struct dvb_usb_device *);
int (*get_rc_config) (struct dvb_usb_device *, struct dvb_usb_rc *);
#define DVB_USB_FE_TS_TYPE_188 0
#define DVB_USB_FE_TS_TYPE_204 1
#define DVB_USB_FE_TS_TYPE_RAW 2
int (*get_stream_config) (struct dvb_frontend *, u8 *,
struct usb_data_stream_properties *);
struct i2c_algorithm *i2c_algo;
int generic_bulk_ctrl_endpoint;
int generic_bulk_ctrl_endpoint_response;
};
/**
@ -247,12 +242,12 @@ struct dvb_usb_device_properties {
*/
#define MAX_NO_URBS_FOR_DATA_STREAM 10
struct usb_data_stream {
struct usb_device *udev;
struct usb_data_stream_properties props;
struct usb_device *udev;
struct usb_data_stream_properties props;
#define USB_STATE_INIT 0x00
#define USB_STATE_URB_BUF 0x01
int state;
u8 state;
void (*complete) (struct usb_data_stream *, u8 *, size_t);
@ -297,26 +292,23 @@ struct usb_data_stream {
struct dvb_usb_adapter {
const struct dvb_usb_adapter_properties *props;
struct usb_data_stream stream;
u8 id;
u8 id;
u8 ts_type;
int pid_filtering;
int feed_count;
int max_feed_count;
/* sync frontend and streaming as those are different tasks */
struct mutex sync_mutex;
bool pid_filtering;
u8 feed_count;
u8 max_feed_count;
s8 active_fe;
/* dvb */
struct dvb_adapter dvb_adap;
struct dmxdev dmxdev;
struct dvb_demux demux;
struct dvb_net dvb_net;
struct mutex sync_mutex;
struct dvb_frontend *fe[MAX_NO_OF_FE_PER_ADAP];
int (*fe_init[MAX_NO_OF_FE_PER_ADAP]) (struct dvb_frontend *);
int (*fe_sleep[MAX_NO_OF_FE_PER_ADAP]) (struct dvb_frontend *);
int active_fe;
};
/**
@ -346,11 +338,12 @@ struct dvb_usb_device {
const struct dvb_usb_device_properties *props;
const char *name;
const char *rc_map;
struct dvb_usb_rc rc;
struct usb_device *udev;
struct usb_interface *intf;
struct dvb_usb_rc rc;
struct work_struct probe_work;
pid_t work_pid;
struct usb_interface *intf;
int powered;
/* locking */

View File

@ -12,22 +12,22 @@
* see Documentation/dvb/README.dvb-usb for more information
*/
#include "dvb_usb_common.h"
#include <linux/usb/input.h>
int dvb_usbv2_disable_rc_polling;
module_param_named(disable_rc_polling, dvb_usbv2_disable_rc_polling, int, 0644);
MODULE_PARM_DESC(disable_rc_polling,
"disable remote control polling (default: 0).");
"disable remote control polling (default: 0)");
static int dvb_usb_force_pid_filter_usage;
module_param_named(force_pid_filter_usage, dvb_usb_force_pid_filter_usage,
int, 0444);
MODULE_PARM_DESC(force_pid_filter_usage, "force all dvb-usb-devices to use a" \
" PID filter, if any (default: 0).");
MODULE_PARM_DESC(force_pid_filter_usage, "force all DVB USB devices to use a " \
"PID filter, if any (default: 0)");
static int dvb_usbv2_download_firmware(struct dvb_usb_device *d, const char *name)
{
int ret;
const struct firmware *fw;
pr_debug("%s:\n", __func__);
if (!d->props->download_firmware) {
ret = -EINVAL;
@ -36,10 +36,10 @@ static int dvb_usbv2_download_firmware(struct dvb_usb_device *d, const char *nam
ret = request_firmware(&fw, name, &d->udev->dev);
if (ret < 0) {
pr_err("%s: did not find the firmware file. (%s) " \
pr_err("%s: Did not find the firmware file '%s'. " \
"Please see linux/Documentation/dvb/ for " \
"more details on firmware-problems. (%d)\n",
KBUILD_MODNAME, name, ret);
"more details on firmware-problems. Status " \
"%d\n", KBUILD_MODNAME, name, ret);
goto err;
}
@ -47,9 +47,7 @@ static int dvb_usbv2_download_firmware(struct dvb_usb_device *d, const char *nam
name);
ret = d->props->download_firmware(d, fw);
release_firmware(fw);
if (ret < 0)
goto err;
@ -62,7 +60,6 @@ err:
static int dvb_usbv2_i2c_init(struct dvb_usb_device *d)
{
int ret;
pr_debug("%s:\n", __func__);
if (!d->props->i2c_algo)
@ -103,29 +100,27 @@ static void dvb_usb_read_remote_control(struct work_struct *work)
struct dvb_usb_device, rc_query_work.work);
int ret;
/* TODO: need a lock here. We can simply skip checking for the remote
control if we're busy. */
/* when the parameter has been set to 1 via sysfs while the
* driver was running, or when bulk mode is enabled after IR init
/*
* When the parameter has been set to 1 via sysfs while the
* driver was running, or when bulk mode is enabled after IR init.
*/
if (dvb_usbv2_disable_rc_polling || d->rc.bulk_mode)
return;
ret = d->rc.query(d);
if (ret < 0)
pr_err("%s: error %d while querying for an remote control " \
"event\n", KBUILD_MODNAME, ret);
if (ret < 0) {
pr_err("%s: rc.query() failed=%d\n", KBUILD_MODNAME, ret);
return; /* stop polling */
}
schedule_delayed_work(&d->rc_query_work,
msecs_to_jiffies(d->rc.interval));
msecs_to_jiffies(d->rc.interval));
}
static int dvb_usbv2_remote_init(struct dvb_usb_device *d)
{
int ret;
struct rc_dev *dev;
pr_debug("%s:\n", __func__);
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)
}
dev->dev.parent = &d->udev->dev;
dev->input_name = "IR-receiver inside an USB DVB receiver";
dev->input_name = d->name;
usb_make_path(d->udev, d->rc_phys, sizeof(d->rc_phys));
strlcat(d->rc_phys, "/ir0", sizeof(d->rc_phys));
dev->input_phys = d->rc_phys;
@ -153,13 +148,10 @@ static int dvb_usbv2_remote_init(struct dvb_usb_device *d)
dev->allowed_protos = d->rc.allowed_protos;
dev->change_protocol = d->rc.change_protocol;
dev->priv = d;
/* select used keymap */
if (d->rc.map_name)
dev->map_name = d->rc.map_name;
else if (d->rc_map)
dev->map_name = d->rc_map;
else
dev->map_name = RC_MAP_EMPTY; /* keep rc enabled */
dev->map_name = d->rc_map;
ret = rc_register_device(dev);
if (ret < 0) {
@ -235,9 +227,8 @@ int dvb_usbv2_adapter_stream_init(struct dvb_usb_adapter *adap)
int dvb_usbv2_adapter_stream_exit(struct dvb_usb_adapter *adap)
{
pr_debug("%s: adap=%d\n", __func__, adap->id);
usb_urb_exitv2(&adap->stream);
return 0;
return usb_urb_exitv2(&adap->stream);
}
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)
if (ret < 0) {
pr_debug("%s: dvb_register_adapter() failed=%d\n", __func__,
ret);
goto err;
goto err_dvb_register_adapter;
}
adap->dvb_adap.priv = adap;
@ -378,7 +369,7 @@ int dvb_usbv2_adapter_dvb_init(struct dvb_usb_adapter *adap)
ret = d->props->read_mac_address(adap,
adap->dvb_adap.proposed_mac);
if (ret < 0)
goto err_dmx;
goto err_dvb_dmx_init;
pr_info("%s: MAC address: %pM\n", KBUILD_MODNAME,
adap->dvb_adap.proposed_mac);
@ -387,8 +378,7 @@ int dvb_usbv2_adapter_dvb_init(struct dvb_usb_adapter *adap)
adap->demux.dmx.capabilities = DMX_TS_FILTERING | DMX_SECTION_FILTERING;
adap->demux.priv = adap;
adap->demux.filternum = 0;
if (adap->demux.filternum < adap->max_feed_count)
adap->demux.filternum = adap->max_feed_count;
adap->demux.filternum = adap->max_feed_count;
adap->demux.feednum = adap->demux.filternum;
adap->demux.start_feed = dvb_usb_start_feed;
adap->demux.stop_feed = dvb_usb_stop_feed;
@ -396,7 +386,7 @@ int dvb_usbv2_adapter_dvb_init(struct dvb_usb_adapter *adap)
ret = dvb_dmx_init(&adap->demux);
if (ret < 0) {
pr_err("%s: dvb_dmx_init() failed=%d\n", KBUILD_MODNAME, ret);
goto err_dmx;
goto err_dvb_dmx_init;
}
adap->dmxdev.filternum = adap->demux.filternum;
@ -406,25 +396,25 @@ int dvb_usbv2_adapter_dvb_init(struct dvb_usb_adapter *adap)
if (ret < 0) {
pr_err("%s: dvb_dmxdev_init() failed=%d\n", KBUILD_MODNAME,
ret);
goto err_dmx_dev;
goto err_dvb_dmxdev_init;
}
ret = dvb_net_init(&adap->dvb_adap, &adap->dvb_net, &adap->demux.dmx);
if (ret < 0) {
pr_err("%s: dvb_net_init() failed=%d\n", KBUILD_MODNAME, ret);
goto err_net_init;
goto err_dvb_net_init;
}
mutex_init(&adap->sync_mutex);
return 0;
err_net_init:
err_dvb_net_init:
dvb_dmxdev_release(&adap->dmxdev);
err_dmx_dev:
err_dvb_dmxdev_init:
dvb_dmx_release(&adap->demux);
err_dmx:
err_dvb_dmx_init:
dvb_unregister_adapter(&adap->dvb_adap);
err:
err_dvb_register_adapter:
adap->dvb_adap.priv = NULL;
return ret;
}
@ -468,7 +458,7 @@ err:
return ret;
}
static int dvb_usb_fe_wakeup(struct dvb_frontend *fe)
static int dvb_usb_fe_init(struct dvb_frontend *fe)
{
int ret;
struct dvb_usb_adapter *adap = fe->dvb->priv;
@ -560,10 +550,9 @@ int dvb_usbv2_adapter_frontend_init(struct dvb_usb_adapter *adap)
for (i = 0; i < MAX_NO_OF_FE_PER_ADAP && adap->fe[i]; i++) {
adap->fe[i]->id = i;
/* re-assign sleep and wakeup functions */
adap->fe_init[i] = adap->fe[i]->ops.init;
adap->fe[i]->ops.init = dvb_usb_fe_wakeup;
adap->fe[i]->ops.init = dvb_usb_fe_init;
adap->fe_sleep[i] = adap->fe[i]->ops.sleep;
adap->fe[i]->ops.sleep = dvb_usb_fe_sleep;
@ -699,7 +688,6 @@ err:
static int dvb_usbv2_adapter_exit(struct dvb_usb_device *d)
{
int i;
pr_debug("%s:\n", __func__);
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)
static int dvb_usbv2_init(struct dvb_usb_device *d)
{
int ret = 0;
int ret;
pr_debug("%s:\n", __func__);
dvb_usbv2_device_power_ctrl(d, 1);
@ -770,7 +759,6 @@ err:
* is this routine. Due to that we delay actual operation using workqueue
* and return always success here.
*/
static void dvb_usbv2_init_work(struct work_struct *work)
{
int ret;
@ -778,7 +766,6 @@ static void dvb_usbv2_init_work(struct work_struct *work)
container_of(work, struct dvb_usb_device, probe_work);
d->work_pid = current->pid;
pr_debug("%s: work_pid=%d\n", __func__, d->work_pid);
if (d->props->size_of_priv) {
@ -817,7 +804,8 @@ static void dvb_usbv2_init_work(struct work_struct *work)
*/
return;
} else {
/* Unexpected error. We must unregister driver
/*
* Unexpected error. We must unregister driver
* manually from the device, because device is
* already register by returning from probe()
* with success. usb_driver_release_interface()
@ -844,7 +832,6 @@ static void dvb_usbv2_init_work(struct work_struct *work)
err_usb_driver_release_interface:
pr_info("%s: '%s' error while loading driver (%d)\n", KBUILD_MODNAME,
d->name, ret);
/* it finally calls disconnect() which frees mem */
usb_driver_release_interface(to_usb_driver(d->intf->dev.driver),
d->intf);
pr_debug("%s: failed=%d\n", __func__, ret);
@ -909,8 +896,7 @@ EXPORT_SYMBOL(dvb_usbv2_probe);
void dvb_usbv2_disconnect(struct usb_interface *intf)
{
struct dvb_usb_device *d = usb_get_intfdata(intf);
const char *name;
const char *name = d->name;
pr_debug("%s: pid=%d work_pid=%d\n", __func__, current->pid,
d->work_pid);
@ -918,10 +904,9 @@ void dvb_usbv2_disconnect(struct usb_interface *intf)
if (d->work_pid != current->pid)
cancel_work_sync(&d->probe_work);
if (d->props->disconnect)
d->props->disconnect(d);
if (d->props->exit)
d->props->exit(d);
name = d->name;
dvb_usbv2_exit(d);
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)
{
struct dvb_usb_device *d = usb_get_intfdata(intf);
int i;
pr_debug("%s:\n", __func__);
/* stop remote controller poll */
@ -955,7 +939,6 @@ int dvb_usbv2_resume(struct usb_interface *intf)
{
struct dvb_usb_device *d = usb_get_intfdata(intf);
int i;
pr_debug("%s:\n", __func__);
/* start streaming */

View File

@ -38,7 +38,7 @@ static void usb_urb_complete(struct urb *urb)
case -ESHUTDOWN:
return;
default: /* error */
pr_debug("%s: URB completition failed=%d\n", __func__,
pr_debug("%s: urb completition failed=%d\n", __func__,
urb->status);
break;
}
@ -76,7 +76,7 @@ int usb_urb_killv2(struct usb_data_stream *stream)
{
int i;
for (i = 0; i < stream->urbs_submitted; i++) {
pr_debug("%s: kill URB=%d\n", __func__, i);
pr_debug("%s: kill urb=%d\n", __func__, i);
/* stop the URB */
usb_kill_urb(stream->urb_list[i]);
}
@ -96,10 +96,10 @@ int usb_urb_submitv2(struct usb_data_stream *stream,
}
for (i = 0; i < stream->urbs_initialized; i++) {
pr_debug("%s: submit URB=%d\n", __func__, i);
pr_debug("%s: submit urb=%d\n", __func__, i);
ret = usb_submit_urb(stream->urb_list[i], GFP_ATOMIC);
if (ret) {
pr_err("%s: could not submit URB no. %d - get them " \
pr_err("%s: could not submit urb no. %d - get them " \
"all back\n", KBUILD_MODNAME, i);
usb_urb_killv2(stream);
return ret;
@ -115,9 +115,9 @@ int usb_urb_free_urbs(struct usb_data_stream *stream)
usb_urb_killv2(stream);
for (i = 0; i < stream->urbs_initialized; i++) {
if (stream->urb_list[i] != NULL) {
pr_debug("%s: free URB=%d\n", __func__, i);
for (i = stream->urbs_initialized - 1; i >= 0; i--) {
if (stream->urb_list[i]) {
pr_debug("%s: free urb=%d\n", __func__, i);
/* free the URBs */
usb_free_urb(stream->urb_list[i]);
}
@ -133,7 +133,7 @@ static int usb_urb_alloc_bulk_urbs(struct usb_data_stream *stream)
/* allocate the URBs */
for (i = 0; i < stream->props.count; i++) {
pr_debug("%s: alloc URB=%d\n", __func__, i);
pr_debug("%s: alloc urb=%d\n", __func__, i);
stream->urb_list[i] = usb_alloc_urb(0, GFP_ATOMIC);
if (!stream->urb_list[i]) {
pr_debug("%s: failed\n", __func__);
@ -164,7 +164,7 @@ static int usb_urb_alloc_isoc_urbs(struct usb_data_stream *stream)
for (i = 0; i < stream->props.count; i++) {
struct urb *urb;
int frame_offset = 0;
pr_debug("%s: alloc URB=%d\n", __func__, i);
pr_debug("%s: alloc urb=%d\n", __func__, i);
stream->urb_list[i] = usb_alloc_urb(
stream->props.u.isoc.framesperurb, GFP_ATOMIC);
if (!stream->urb_list[i]) {
@ -229,17 +229,17 @@ int usb_alloc_stream_buffers(struct usb_data_stream *stream, int num,
__func__, num * size);
for (stream->buf_num = 0; stream->buf_num < num; stream->buf_num++) {
pr_debug("%s: alloc buf=%d\n", __func__, stream->buf_num);
stream->buf_list[stream->buf_num] = usb_alloc_coherent(
stream->udev, size, GFP_ATOMIC,
&stream->dma_addr[stream->buf_num]);
if (stream->buf_list[stream->buf_num] == NULL) {
pr_debug("%s: failed\n", __func__);
if (!stream->buf_list[stream->buf_num]) {
pr_debug("%s: alloc buf=%d failed\n", __func__,
stream->buf_num);
usb_free_stream_buffers(stream);
return -ENOMEM;
}
pr_debug("%s: buf %d: %p (dma %llu)\n", __func__,
pr_debug("%s: alloc buf=%d %p (dma %llu)\n", __func__,
stream->buf_num,
stream->buf_list[stream->buf_num],
(long long)stream->dma_addr[stream->buf_num]);
@ -255,7 +255,7 @@ int usb_urb_reconfig(struct usb_data_stream *stream,
{
int buf_size;
if (props == NULL)
if (!props)
return 0;
/* check allocated buffers are large enough for the request */
@ -293,7 +293,7 @@ int usb_urb_reconfig(struct usb_data_stream *stream,
return 0;
}
pr_debug("%s: re-alloc URBs\n", __func__);
pr_debug("%s: re-alloc urbs\n", __func__);
usb_urb_free_urbs(stream);
memcpy(&stream->props, props, sizeof(*props));
@ -310,7 +310,7 @@ int usb_urb_initv2(struct usb_data_stream *stream,
{
int ret;
if (stream == NULL || props == NULL)
if (!stream || !props)
return -EINVAL;
memcpy(&stream->props, props, sizeof(*props));
@ -318,7 +318,7 @@ int usb_urb_initv2(struct usb_data_stream *stream,
usb_clear_halt(stream->udev, usb_rcvbulkpipe(stream->udev,
stream->props.endpoint));
if (stream->complete == NULL) {
if (!stream->complete) {
pr_err("%s: there is no data callback - this doesn't make " \
"sense\n", KBUILD_MODNAME);
return -EINVAL;
@ -341,7 +341,7 @@ int usb_urb_initv2(struct usb_data_stream *stream,
return usb_urb_alloc_isoc_urbs(stream);
default:
pr_err("%s: unknown URB-type for data transfer\n",
pr_err("%s: unknown urb-type for data transfer\n",
KBUILD_MODNAME);
return -EINVAL;
}