diff --git a/drivers/media/video/pvrusb2/pvrusb2-ctrl.c b/drivers/media/video/pvrusb2/pvrusb2-ctrl.c
index 2741c7b..203f54c 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-ctrl.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-ctrl.c
@@ -141,10 +141,8 @@
 	LOCK_TAKE(cptr->hdw->big_lock); do {
 		if (cptr->info->type == pvr2_ctl_int) {
 			if (cptr->info->get_def_value) {
-				/* Comment to keep checkpatch.pl quiet */
 				ret = cptr->info->get_def_value(cptr, valptr);
 			} else {
-				/* Comment to keep checkpatch.pl quiet */
 				*valptr = cptr->info->default_value;
 			}
 		}
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 9bb59b2..94265bd 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -408,7 +408,6 @@
 	struct v4l2_cropcap *cap = &cptr->hdw->cropcap_info;
 	int stat = pvr2_hdw_check_cropcap(cptr->hdw);
 	if (stat != 0) {
-		/* Keep checkpatch.pl quiet */
 		return stat;
 	}
 	*left = cap->bounds.left;
@@ -420,13 +419,10 @@
 	struct v4l2_cropcap *cap = &cptr->hdw->cropcap_info;
 	int stat = pvr2_hdw_check_cropcap(cptr->hdw);
 	if (stat != 0) {
-		/* Keep checkpatch.pl quiet */
 		return stat;
 	}
 	*left = cap->bounds.left;
 	if (cap->bounds.width > cptr->hdw->cropw_val) {
-		/* This statement is present purely to shut up
-		   checkpatch.pl */
 		*left += cap->bounds.width - cptr->hdw->cropw_val;
 	}
 	return 0;
@@ -437,7 +433,6 @@
 	struct v4l2_cropcap *cap = &cptr->hdw->cropcap_info;
 	int stat = pvr2_hdw_check_cropcap(cptr->hdw);
 	if (stat != 0) {
-		/* Keep checkpatch.pl quiet */
 		return stat;
 	}
 	*top = cap->bounds.top;
@@ -449,12 +444,10 @@
 	struct v4l2_cropcap *cap = &cptr->hdw->cropcap_info;
 	int stat = pvr2_hdw_check_cropcap(cptr->hdw);
 	if (stat != 0) {
-		/* Keep checkpatch.pl quiet */
 		return stat;
 	}
 	*top = cap->bounds.top;
 	if (cap->bounds.height > cptr->hdw->croph_val) {
-		/* Keep checkpatch.pl quiet */
 		*top += cap->bounds.height - cptr->hdw->croph_val;
 	}
 	return 0;
@@ -465,12 +458,10 @@
 	struct v4l2_cropcap *cap = &cptr->hdw->cropcap_info;
 	int stat = pvr2_hdw_check_cropcap(cptr->hdw);
 	if (stat != 0) {
-		/* Keep checkpatch.pl quiet */
 		return stat;
 	}
 	*val = 0;
 	if (cap->bounds.width > cptr->hdw->cropl_val) {
-		/* Keep checkpatch.pl quiet */
 		*val = cap->bounds.width - cptr->hdw->cropl_val;
 	}
 	return 0;
@@ -481,12 +472,10 @@
 	struct v4l2_cropcap *cap = &cptr->hdw->cropcap_info;
 	int stat = pvr2_hdw_check_cropcap(cptr->hdw);
 	if (stat != 0) {
-		/* Keep checkpatch.pl quiet */
 		return stat;
 	}
 	*val = 0;
 	if (cap->bounds.height > cptr->hdw->cropt_val) {
-		/* Keep checkpatch.pl quiet */
 		*val = cap->bounds.height - cptr->hdw->cropt_val;
 	}
 	return 0;
@@ -497,7 +486,6 @@
 	struct v4l2_cropcap *cap = &cptr->hdw->cropcap_info;
 	int stat = pvr2_hdw_check_cropcap(cptr->hdw);
 	if (stat != 0) {
-		/* Keep checkpatch.pl quiet */
 		return stat;
 	}
 	*val = cap->bounds.left;
@@ -509,7 +497,6 @@
 	struct v4l2_cropcap *cap = &cptr->hdw->cropcap_info;
 	int stat = pvr2_hdw_check_cropcap(cptr->hdw);
 	if (stat != 0) {
-		/* Keep checkpatch.pl quiet */
 		return stat;
 	}
 	*val = cap->bounds.top;
@@ -521,7 +508,6 @@
 	struct v4l2_cropcap *cap = &cptr->hdw->cropcap_info;
 	int stat = pvr2_hdw_check_cropcap(cptr->hdw);
 	if (stat != 0) {
-		/* Keep checkpatch.pl quiet */
 		return stat;
 	}
 	*val = cap->bounds.width;
@@ -533,7 +519,6 @@
 	struct v4l2_cropcap *cap = &cptr->hdw->cropcap_info;
 	int stat = pvr2_hdw_check_cropcap(cptr->hdw);
 	if (stat != 0) {
-		/* Keep checkpatch.pl quiet */
 		return stat;
 	}
 	*val = cap->bounds.height;
@@ -545,7 +530,6 @@
 	struct v4l2_cropcap *cap = &cptr->hdw->cropcap_info;
 	int stat = pvr2_hdw_check_cropcap(cptr->hdw);
 	if (stat != 0) {
-		/* Keep checkpatch.pl quiet */
 		return stat;
 	}
 	*val = cap->defrect.left;
@@ -557,7 +541,6 @@
 	struct v4l2_cropcap *cap = &cptr->hdw->cropcap_info;
 	int stat = pvr2_hdw_check_cropcap(cptr->hdw);
 	if (stat != 0) {
-		/* Keep checkpatch.pl quiet */
 		return stat;
 	}
 	*val = cap->defrect.top;
@@ -569,7 +552,6 @@
 	struct v4l2_cropcap *cap = &cptr->hdw->cropcap_info;
 	int stat = pvr2_hdw_check_cropcap(cptr->hdw);
 	if (stat != 0) {
-		/* Keep checkpatch.pl quiet */
 		return stat;
 	}
 	*val = cap->defrect.width;
@@ -581,7 +563,6 @@
 	struct v4l2_cropcap *cap = &cptr->hdw->cropcap_info;
 	int stat = pvr2_hdw_check_cropcap(cptr->hdw);
 	if (stat != 0) {
-		/* Keep checkpatch.pl quiet */
 		return stat;
 	}
 	*val = cap->defrect.height;
@@ -593,7 +574,6 @@
 	struct v4l2_cropcap *cap = &cptr->hdw->cropcap_info;
 	int stat = pvr2_hdw_check_cropcap(cptr->hdw);
 	if (stat != 0) {
-		/* Keep checkpatch.pl quiet */
 		return stat;
 	}
 	*val = cap->pixelaspect.numerator;
@@ -605,7 +585,6 @@
 	struct v4l2_cropcap *cap = &cptr->hdw->cropcap_info;
 	int stat = pvr2_hdw_check_cropcap(cptr->hdw);
 	if (stat != 0) {
-		/* Keep checkpatch.pl quiet */
 		return stat;
 	}
 	*val = cap->pixelaspect.denominator;
@@ -3008,12 +2987,10 @@
 static int pvr2_hdw_check_cropcap(struct pvr2_hdw *hdw)
 {
 	if (!hdw->cropcap_stale) {
-		/* Keep checkpatch.pl quiet */
 		return 0;
 	}
 	pvr2_i2c_core_status_poll(hdw);
 	if (hdw->cropcap_stale) {
-		/* Keep checkpatch.pl quiet */
 		return -EIO;
 	}
 	return 0;
@@ -3027,7 +3004,6 @@
 	LOCK_TAKE(hdw->big_lock);
 	stat = pvr2_hdw_check_cropcap(hdw);
 	if (!stat) {
-		/* Keep checkpatch.pl quiet */
 		memcpy(pp, &hdw->cropcap_info, sizeof(hdw->cropcap_info));
 	}
 	LOCK_GIVE(hdw->big_lock);
diff --git a/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c b/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c
index 543fa30..16bb119 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c
@@ -254,12 +254,8 @@
 
 static int check_crop(struct pvr2_hdw *hdw)
 {
-	/* The "0 +" stupidity is present only to get checkpatch.pl to
-	   shut up.  I _want_ those parantheses present so that the
-	   two lines automatically line up in my editor.  I despise
-	   checkpatch.pl. */
-	return 0 + (hdw->cropl_dirty || hdw->cropt_dirty ||
-		    hdw->cropw_dirty || hdw->croph_dirty);
+	return (hdw->cropl_dirty || hdw->cropt_dirty ||
+		hdw->cropw_dirty || hdw->croph_dirty);
 }
 
 const struct pvr2_i2c_op pvr2_i2c_op_v4l2_crop = {
diff --git a/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c b/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c
index 72d615a..77289a1 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c
@@ -992,8 +992,6 @@
 		hdw->i2c_func[0x18] = i2c_black_hole;
 	} else if (ir_mode[hdw->unit_number] == 1) {
 		if (hdw->hdw_desc->ir_scheme == PVR2_IR_SCHEME_24XXX) {
-			/* This comment is present PURELY to get
-			   checkpatch.pl to STFU.  Lovely, eh? */
 			hdw->i2c_func[0x18] = i2c_24xxx_ir;
 		}
 	}
diff --git a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c
index ac01b11..733680f 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c
@@ -158,7 +158,6 @@
 	pvr2_sysfs_trace("pvr2_sysfs(%p) show_def(cid=%d) is %d, stat=%d",
 			 cip->chptr, cip->ctl_id, val, ret);
 	if (ret < 0) {
-		/* Keep checkpatch.pl quiet */
 		return ret;
 	}
 	return scnprintf(buf, PAGE_SIZE, "%d\n", val);
