Browse Source

V4L/DVB (9180): S2API: Added support for DTV_CODE_RATE_HP/LP

Reports from users that using the new API for tuning DTV was failing,
and the cache was missing some essential items.

Signed-off-by: Steven Toth <stoth@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Steven Toth 16 năm trước cách đây
mục cha
commit
a4de91be46
2 tập tin đã thay đổi với 36 bổ sung1 xóa
  1. 32 0
      drivers/media/dvb/dvb-core/dvb_frontend.c
  2. 4 1
      include/linux/dvb/frontend.h

+ 32 - 0
drivers/media/dvb/dvb-core/dvb_frontend.c

@@ -830,6 +830,16 @@ struct dtv_cmds_h dtv_cmds[] = {
 		.cmd	= DTV_DELIVERY_SYSTEM,
 		.set	= 1,
 	},
+	[DTV_CODE_RATE_HP] = {
+		.name	= "DTV_CODE_RATE_HP",
+		.cmd	= DTV_CODE_RATE_HP,
+		.set	= 1,
+	},
+	[DTV_CODE_RATE_LP] = {
+		.name	= "DTV_CODE_RATE_LP",
+		.cmd	= DTV_CODE_RATE_LP,
+		.set	= 1,
+	},
 	/* Get */
 	[DTV_DISEQC_SLAVE_REPLY] = {
 		.name	= "DTV_DISEQC_SLAVE_REPLY",
@@ -842,6 +852,16 @@ struct dtv_cmds_h dtv_cmds[] = {
 		.cmd	= DTV_API_VERSION,
 		.set	= 0,
 	},
+	[DTV_CODE_RATE_HP] = {
+		.name	= "DTV_CODE_RATE_HP",
+		.cmd	= DTV_CODE_RATE_HP,
+		.set	= 0,
+	},
+	[DTV_CODE_RATE_LP] = {
+		.name	= "DTV_CODE_RATE_LP",
+		.cmd	= DTV_CODE_RATE_LP,
+		.set	= 0,
+	},
 };
 
 void dtv_property_dump(struct dtv_property *tvp)
@@ -1121,6 +1141,12 @@ int dtv_property_process_get(struct dvb_frontend *fe, struct dtv_property *tvp,
 	case DTV_API_VERSION:
 		tvp->u.data = (DVB_API_VERSION << 8) | DVB_API_VERSION_MINOR;
 		break;
+	case DTV_CODE_RATE_HP:
+		tvp->u.data = fe->dtv_property_cache.code_rate_HP;
+		break;
+	case DTV_CODE_RATE_LP:
+		tvp->u.data = fe->dtv_property_cache.code_rate_LP;
+		break;
 	default:
 		r = -1;
 	}
@@ -1202,6 +1228,12 @@ int dtv_property_process_set(struct dvb_frontend *fe, struct dtv_property *tvp,
 		r = dvb_frontend_ioctl_legacy(inode, file, FE_SET_TONE,
 			(void *)fe->dtv_property_cache.sectone);
 		break;
+	case DTV_CODE_RATE_HP:
+		fe->dtv_property_cache.code_rate_HP = tvp->u.data;
+		break;
+	case DTV_CODE_RATE_LP:
+		fe->dtv_property_cache.code_rate_LP = tvp->u.data;
+		break;
 	default:
 		r = -1;
 	}

+ 4 - 1
include/linux/dvb/frontend.h

@@ -268,8 +268,11 @@ struct dvb_frontend_event {
 #define DTV_DELIVERY_SYSTEM	17
 
 #define DTV_API_VERSION				35
+#define DTV_API_VERSION				35
+#define DTV_CODE_RATE_HP			36
+#define DTV_CODE_RATE_LP			37
 
-#define DTV_MAX_COMMAND				DTV_API_VERSION
+#define DTV_MAX_COMMAND				DTV_CODE_RATE_LP
 
 typedef enum fe_pilot {
 	PILOT_ON,