[PATCH] [0904_10] Siano: smsdvb - add events mechanism

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



# HG changeset patch
# User Uri Shkolnik <uris@xxxxxxxxxxxx>
# Date 1238742622 -10800
# Node ID ec7ee486fb86d51bdb48e6a637a6ddd52e9e08c2
# Parent  020ba7b31c963bd36d607848198e9e4258a6f80e
[PATCH] [0904_10] Siano: smsdvb - add events mechanism

From: Uri Shkolnik <uris@xxxxxxxxxxxx>

Add events mechanism that will notify the "cards" component
(which represent the specific hardware target) for DVB related
events.

Priority: normal

Signed-off-by: Uri Shkolnik <uris@xxxxxxxxxxxx>

diff -r 020ba7b31c96 -r ec7ee486fb86 linux/drivers/media/dvb/siano/smsdvb.c
--- a/linux/drivers/media/dvb/siano/smsdvb.c	Thu Apr 02 21:33:14 2009 +0300
+++ b/linux/drivers/media/dvb/siano/smsdvb.c	Fri Apr 03 10:10:22 2009 +0300
@@ -66,6 +66,45 @@ static int sms_dbg;
 static int sms_dbg;
 module_param_named(debug, sms_dbg, int, 0644);
 MODULE_PARM_DESC(debug, "set debug level (info=1, adv=2 (or-able))");
+
+/* Events that may come from DVB v3 adapter */
+static void sms_board_dvb3_event(struct smscore_device_t *coredev,
+		enum SMS_DVB3_EVENTS event) {
+	switch (event) {
+	case DVB3_EVENT_INIT:
+		sms_debug("DVB3_EVENT_INIT");
+		/* sms_board_event(coredev, BOARD_EVENT_BIND); */
+		break;
+	case DVB3_EVENT_SLEEP:
+		sms_debug("DVB3_EVENT_SLEEP");
+		/* sms_board_event(coredev, BOARD_EVENT_POWER_SUSPEND); */
+		break;
+	case DVB3_EVENT_HOTPLUG:
+		sms_debug("DVB3_EVENT_HOTPLUG");
+		/* sms_board_event(coredev, BOARD_EVENT_POWER_INIT); */
+		break;
+	case DVB3_EVENT_FE_LOCK:
+		sms_debug("DVB3_EVENT_FE_LOCK");
+		/* sms_board_event(coredev, BOARD_EVENT_FE_LOCK); */
+		break;
+	case DVB3_EVENT_FE_UNLOCK:
+		sms_debug("DVB3_EVENT_FE_UNLOCK");
+		/* sms_board_event(coredev, BOARD_EVENT_FE_UNLOCK); */
+		break;
+	case DVB3_EVENT_UNC_OK:
+		sms_debug("DVB3_EVENT_UNC_OK");
+		/* sms_board_event(coredev, BOARD_EVENT_MULTIPLEX_OK); */
+		break;
+	case DVB3_EVENT_UNC_ERR:
+		sms_debug("DVB3_EVENT_UNC_ERR");
+		/* sms_board_event(coredev, BOARD_EVENT_MULTIPLEX_ERRORS); */
+		break;
+
+	default:
+		sms_err("Unknown dvb3 api event");
+		break;
+	}
+}
 
 static int smsdvb_onresponse(void *context, struct smscore_buffer_t *cb)
 {
@@ -174,17 +213,15 @@ static int smsdvb_onresponse(void *conte
 		client->fe_status = 0;
 	}
 
-	/*
-	 if (client->fe_status & FE_HAS_LOCK)
-	 sms_board_dvb3_event(client->coredev, DVB3_EVENT_FE_LOCK);
-	 else
-	 sms_board_dvb3_event(client->coredev, DVB3_EVENT_FE_UNLOCK);
+	if (client->fe_status & FE_HAS_LOCK)
+		sms_board_dvb3_event(client->coredev, DVB3_EVENT_FE_LOCK);
+	else
+		sms_board_dvb3_event(client->coredev, DVB3_EVENT_FE_UNLOCK);
 
-	 if (client->sms_stat_dvb.ReceptionData.ErrorTSPackets == 0)
-	 sms_board_dvb3_event(client->coredev, DVB3_EVENT_UNC_OK);
-	 else
-	 sms_board_dvb3_event(client->coredev, DVB3_EVENT_UNC_ERR);
-	 */
+	if (client->sms_stat_dvb.ReceptionData.ErrorTSPackets == 0)
+		sms_board_dvb3_event(client->coredev, DVB3_EVENT_UNC_OK);
+	else
+		sms_board_dvb3_event(client->coredev, DVB3_EVENT_UNC_ERR);
 
 	if (client->fe_status & FE_HAS_LOCK)
 		sms_board_led_feedback(client->coredev,
@@ -346,13 +383,12 @@ static int smsdvb_set_frontend(struct dv
 			       struct dvb_frontend_parameters *fep)
 {
 	struct smsdvb_client_t *client =
-	container_of(fe, struct smsdvb_client_t, frontend);
+	    container_of(fe, struct smsdvb_client_t, frontend);
 
 	struct {
 		struct SmsMsgHdr_ST Msg;
 		u32 Data[3];
 	} Msg;
-	int ret;
 
 	Msg.Msg.msgSrcId = DVBT_BDA_CONTROL_MSG_ID;
 	Msg.Msg.msgDstId = HIF_TASK;
@@ -387,7 +423,8 @@ static int smsdvb_set_frontend(struct dv
 	}
 
 	/* Disable LNA, if any. An error is returned if no LNA is present */
-	ret = sms_board_lna_control(client->coredev, 0);
+	{
+	int ret = sms_board_lna_control(client->coredev, 0);
 	if (ret == 0) {
 		fe_status_t status;
 
@@ -403,7 +440,7 @@ static int smsdvb_set_frontend(struct dv
 		/* previous tune didnt lock - enable LNA and tune again */
 		sms_board_lna_control(client->coredev, 1);
 	}
-
+	}
 	return smsdvb_sendrequest_and_wait(client, &Msg, sizeof(Msg),
 					   &client->tune_done);
 }
@@ -428,6 +465,7 @@ static int smsdvb_init(struct dvb_fronte
 	struct smsdvb_client_t *client =
 		container_of(fe, struct smsdvb_client_t, frontend);
 
+	sms_board_dvb3_event(client->coredev, DVB3_EVENT_INIT);
 	sms_board_power(client->coredev, 1);
 
 	return 0;
@@ -438,6 +476,7 @@ static int smsdvb_sleep(struct dvb_front
 	struct smsdvb_client_t *client =
 		container_of(fe, struct smsdvb_client_t, frontend);
 
+	sms_board_dvb3_event(client->coredev, DVB3_EVENT_SLEEP);
 	sms_board_led_feedback(client->coredev, SMS_LED_OFF);
 	sms_board_power(client->coredev, 0);
 
@@ -572,6 +611,7 @@ static int smsdvb_hotplug(struct smscore
 
 	sms_info("success");
 
+	sms_board_dvb3_event(coredev, DVB3_EVENT_HOTPLUG);
 	sms_board_setup(coredev);
 
 	return 0;
@@ -614,8 +654,8 @@ void smsdvb_module_exit(void)
 	kmutex_lock(&g_smsdvb_clientslock);
 
 	while (!list_empty(&g_smsdvb_clients))
-	       smsdvb_unregister_client(
-			(struct smsdvb_client_t *) g_smsdvb_clients.next);
+		smsdvb_unregister_client((struct smsdvb_client_t *)
+					 g_smsdvb_clients.next);
 
 	kmutex_unlock(&g_smsdvb_clientslock);
 }



      
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux