diff options
Diffstat (limited to 'drivers/media/usb/hdpvr')
| -rw-r--r-- | drivers/media/usb/hdpvr/hdpvr-core.c | 15 | ||||
| -rw-r--r-- | drivers/media/usb/hdpvr/hdpvr-video.c | 6 | 
2 files changed, 11 insertions, 10 deletions
diff --git a/drivers/media/usb/hdpvr/hdpvr-core.c b/drivers/media/usb/hdpvr/hdpvr-core.c index 6e5070774dc..c5638964c3f 100644 --- a/drivers/media/usb/hdpvr/hdpvr-core.c +++ b/drivers/media/usb/hdpvr/hdpvr-core.c @@ -78,7 +78,8 @@ void hdpvr_delete(struct hdpvr_device *dev)  static void challenge(u8 *bytes)  { -	u64 *i64P, tmp64; +	__le64 *i64P; +	u64 tmp64;  	uint i, idx;  	for (idx = 0; idx < 32; ++idx) { @@ -106,10 +107,10 @@ static void challenge(u8 *bytes)  			for (i = 0; i < 3; i++)  				bytes[1] *= bytes[6] + 1;  			for (i = 0; i < 3; i++) { -				i64P = (u64 *)bytes; +				i64P = (__le64 *)bytes;  				tmp64 = le64_to_cpup(i64P); -				tmp64 <<= bytes[7] & 0x0f; -				*i64P += cpu_to_le64(tmp64); +				tmp64 = tmp64 + (tmp64 << (bytes[7] & 0x0f)); +				*i64P = cpu_to_le64(tmp64);  			}  			break;  		} @@ -197,7 +198,6 @@ static int device_authorization(struct hdpvr_device *dev)  	hex_dump_to_buffer(response, 8, 16, 1, print_buf, 5*buf_size+1, 0);  	v4l2_dbg(MSG_INFO, hdpvr_debug, &dev->v4l2_dev, " response: %s\n",  		 print_buf); -	kfree(print_buf);  #endif  	msleep(100); @@ -213,6 +213,9 @@ static int device_authorization(struct hdpvr_device *dev)  	retval = ret != 8;  unlock:  	mutex_unlock(&dev->usbc_mutex); +#ifdef HDPVR_DEBUG +	kfree(print_buf); +#endif  	return retval;  } @@ -301,8 +304,6 @@ static int hdpvr_probe(struct usb_interface *interface,  		goto error;  	} -	dev->workqueue = 0; -  	/* init video transfer queues first of all */  	/* to prevent oops in hdpvr_delete() on error paths */  	INIT_LIST_HEAD(&dev->free_buff_list); diff --git a/drivers/media/usb/hdpvr/hdpvr-video.c b/drivers/media/usb/hdpvr/hdpvr-video.c index 0500c4175d5..6bce01a674f 100644 --- a/drivers/media/usb/hdpvr/hdpvr-video.c +++ b/drivers/media/usb/hdpvr/hdpvr-video.c @@ -82,7 +82,7 @@ static void hdpvr_read_bulk_callback(struct urb *urb)  }  /*=========================================================================*/ -/* bufffer bits */ +/* buffer bits */  /* function expects dev->io_mutex to be hold by caller */  int hdpvr_cancel_queue(struct hdpvr_device *dev) @@ -926,7 +926,7 @@ static int hdpvr_s_ctrl(struct v4l2_ctrl *ctrl)  	case V4L2_CID_MPEG_AUDIO_ENCODING:  		if (dev->flags & HDPVR_FLAG_AC3_CAP) {  			opt->audio_codec = ctrl->val; -			return hdpvr_set_audio(dev, opt->audio_input, +			return hdpvr_set_audio(dev, opt->audio_input + 1,  					      opt->audio_codec);  		}  		return 0; @@ -1198,7 +1198,7 @@ int hdpvr_register_videodev(struct hdpvr_device *dev, struct device *parent,  	v4l2_ctrl_new_std_menu(hdl, &hdpvr_ctrl_ops,  		V4L2_CID_MPEG_AUDIO_ENCODING,  		ac3 ? V4L2_MPEG_AUDIO_ENCODING_AC3 : V4L2_MPEG_AUDIO_ENCODING_AAC, -		0x7, V4L2_MPEG_AUDIO_ENCODING_AAC); +		0x7, ac3 ? dev->options.audio_codec : V4L2_MPEG_AUDIO_ENCODING_AAC);  	v4l2_ctrl_new_std_menu(hdl, &hdpvr_ctrl_ops,  		V4L2_CID_MPEG_VIDEO_ENCODING,  		V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC, 0x3,  | 
