diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c
index 3ab8747..78c1b24 100644
--- a/drivers/media/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb-core/dvb_frontend.c
@@ -202,6 +202,7 @@
 		return DVBV3_QAM;
 	case SYS_DVBS:
 	case SYS_DVBS2:
+	case SYS_DVBS2X:
 	case SYS_TURBO:
 	case SYS_ISDBS:
 	case SYS_DSS:
@@ -907,6 +908,7 @@
 	switch (c->delivery_system) {
 	case SYS_DVBS:
 	case SYS_DVBS2:
+	case SYS_DVBS2X:
 	case SYS_TURBO:
 	case SYS_DVBC_ANNEX_A:
 	case SYS_DVBC_ANNEX_C:
@@ -973,6 +975,7 @@
 	switch (c->delivery_system) {
 	case SYS_DVBS:
 	case SYS_DVBS2:
+	case SYS_DVBS2X:
 	case SYS_TURBO:
 		c->modulation = QPSK;   /* implied for DVB-S in legacy API */
 		c->rolloff = ROLLOFF_35;/* implied for DVB-S */
@@ -2091,6 +2094,7 @@
 		rolloff = 135;
 		break;
 	case SYS_DVBS2:
+	case SYS_DVBS2X:
 		switch (c->rolloff) {
 		case ROLLOFF_20:
 			rolloff = 120;
@@ -2131,6 +2135,7 @@
 		switch (c->delivery_system) {
 		case SYS_DVBS:
 		case SYS_DVBS2:
+		case SYS_DVBS2X:
 		case SYS_ISDBS:
 		case SYS_TURBO:
 		case SYS_DVBC_ANNEX_A:
diff --git a/include/uapi/linux/dvb/frontend.h b/include/uapi/linux/dvb/frontend.h
index c56d77c..5aebaa9 100644
--- a/include/uapi/linux/dvb/frontend.h
+++ b/include/uapi/linux/dvb/frontend.h
@@ -156,6 +156,24 @@
 	FEC_3_5,
 	FEC_9_10,
 	FEC_2_5,
+	FEC_13_45=13,
+	FEC_9_20=14,
+	FEC_11_20=15,
+	FEC_23_36=16,
+	FEC_25_36=17,
+	FEC_13_18=18,
+	FEC_26_45=19,
+	FEC_28_45=20,
+	FEC_7_9=21,
+	FEC_77_90=22,
+	FEC_32_45=23,
+	FEC_11_15=24,
+	FEC_1_2_L=25,
+	FEC_8_15_L=26,
+	FEC_3_5_L=27,
+	FEC_2_3_L=28,
+	FEC_5_9_L=29,
+	FEC_26_45_L=30
 };
 
 enum fe_modulation {
@@ -173,6 +191,7 @@
 	APSK_32,
 	DQPSK,
 	QAM_4_NR,
+	APSK_8,
 };
 
 enum fe_transmit_mode {
@@ -342,6 +361,7 @@
 	SYS_DVBT2,
 	SYS_TURBO,
 	SYS_DVBC_ANNEX_C,
+	SYS_DVBS2X = 21,
 };
 
 /* backward compatibility */