V4L/DVB (7304): pvrusb2: add function pvr2_hdw_cmd_powerdown

Call pvr2_hdw_cmd_powerdown to power down the device

Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mike Isely <isely@pobox.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index ae36948..9408e8db 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -3193,17 +3193,32 @@
 }
 
 
-int pvr2_hdw_cmd_powerup(struct pvr2_hdw *hdw)
+static int pvr2_hdw_cmd_power_ctrl(struct pvr2_hdw *hdw, int onoff)
 {
 	int status;
 	LOCK_TAKE(hdw->ctl_lock); do {
-		pvr2_trace(PVR2_TRACE_INIT,"Requesting powerup");
-		hdw->cmd_buffer[0] = FX2CMD_POWER_ON;
-		status = pvr2_send_request(hdw,hdw->cmd_buffer,1,NULL,0);
+		if (onoff) {
+			pvr2_trace(PVR2_TRACE_INIT, "Requesting powerup");
+			hdw->cmd_buffer[0] = FX2CMD_POWER_ON;
+		} else {
+			pvr2_trace(PVR2_TRACE_INIT, "Requesting powerdown");
+			hdw->cmd_buffer[0] = FX2CMD_POWER_OFF;
+		}
+		status = pvr2_send_request(hdw, hdw->cmd_buffer, 1, NULL, 0);
 	} while (0); LOCK_GIVE(hdw->ctl_lock);
 	return status;
 }
 
+int pvr2_hdw_cmd_powerup(struct pvr2_hdw *hdw)
+{
+	return pvr2_hdw_cmd_power_ctrl(hdw, 1);
+}
+
+int pvr2_hdw_cmd_powerdown(struct pvr2_hdw *hdw)
+{
+	return pvr2_hdw_cmd_power_ctrl(hdw, 0);
+}
+
 
 int pvr2_hdw_cmd_decoder_reset(struct pvr2_hdw *hdw)
 {