diff --git a/packages/linux-driver-addons/dvb/depends/media_tree/package.mk b/packages/linux-driver-addons/dvb/depends/media_tree/package.mk index a6f3198ac9..8f82e1ce30 100644 --- a/packages/linux-driver-addons/dvb/depends/media_tree/package.mk +++ b/packages/linux-driver-addons/dvb/depends/media_tree/package.mk @@ -2,8 +2,8 @@ # Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv) PKG_NAME="media_tree" -PKG_VERSION="2018-10-09-8caec72e8cbf" -PKG_SHA256="39f579c936ac78dec82825840142d5f856203e8133aa238aca5fe95c7a70e8ae" +PKG_VERSION="2018-11-23-708d75fe1c7c" +PKG_SHA256="57ed46bdc5905b093c578c69252564be80343ceeefab92c0b081f99b9463a3b8" PKG_LICENSE="GPL" PKG_SITE="https://git.linuxtv.org/media_tree.git" PKG_URL="http://linuxtv.org/downloads/drivers/linux-media-${PKG_VERSION}.tar.bz2" diff --git a/packages/linux-driver-addons/dvb/depends/media_tree/patches/media_tree-01-hauppauge.patch b/packages/linux-driver-addons/dvb/depends/media_tree/patches/media_tree-01-hauppauge.patch index 44327c7c63..21294e3191 100644 --- a/packages/linux-driver-addons/dvb/depends/media_tree/patches/media_tree-01-hauppauge.patch +++ b/packages/linux-driver-addons/dvb/depends/media_tree/patches/media_tree-01-hauppauge.patch @@ -589,7 +589,7 @@ index ed3210d..9598b99 100644 .vmux = CX25840_VIN7_CH3 | CX25840_VIN4_CH2 | diff --git a/drivers/media/pci/cx23885/cx23885-dvb.c b/drivers/media/pci/cx23885/cx23885-dvb.c -index 7d52173..9e61f23 100644 +index 0d0929c..0366c4d 100644 --- a/drivers/media/pci/cx23885/cx23885-dvb.c +++ b/drivers/media/pci/cx23885/cx23885-dvb.c @@ -2382,6 +2382,16 @@ static int dvb_register(struct cx23885_tsport *port) @@ -639,7 +639,7 @@ index 7d52173..9e61f23 100644 } break; diff --git a/drivers/media/pci/cx23885/cx23885-video.c b/drivers/media/pci/cx23885/cx23885-video.c -index f8a3dea..594bdcf 100644 +index 168178c..6d6e7fb 100644 --- a/drivers/media/pci/cx23885/cx23885-video.c +++ b/drivers/media/pci/cx23885/cx23885-video.c @@ -264,6 +264,8 @@ static int cx23885_video_mux(struct cx23885_dev *dev, unsigned int input) @@ -670,7 +670,7 @@ index f8a3dea..594bdcf 100644 if (vdev->vfl_type == VFL_TYPE_VBI) cap->device_caps |= V4L2_CAP_VBI_CAPTURE; else -@@ -882,8 +893,16 @@ static int vidioc_g_tuner(struct file *file, void *priv, +@@ -899,8 +910,16 @@ static int vidioc_g_tuner(struct file *file, void *priv, { struct cx23885_dev *dev = video_drvdata(file); @@ -689,7 +689,7 @@ index f8a3dea..594bdcf 100644 if (0 != t->index) return -EINVAL; -@@ -898,8 +917,16 @@ static int vidioc_s_tuner(struct file *file, void *priv, +@@ -915,8 +934,16 @@ static int vidioc_s_tuner(struct file *file, void *priv, { struct cx23885_dev *dev = video_drvdata(file); @@ -708,7 +708,7 @@ index f8a3dea..594bdcf 100644 if (0 != t->index) return -EINVAL; /* Update the A/V core */ -@@ -913,9 +940,16 @@ static int vidioc_g_frequency(struct file *file, void *priv, +@@ -930,9 +957,16 @@ static int vidioc_g_frequency(struct file *file, void *priv, { struct cx23885_dev *dev = video_drvdata(file); @@ -728,7 +728,7 @@ index f8a3dea..594bdcf 100644 f->type = V4L2_TUNER_ANALOG_TV; f->frequency = dev->freq; -@@ -929,8 +963,16 @@ static int cx23885_set_freq(struct cx23885_dev *dev, const struct v4l2_frequency +@@ -946,8 +980,16 @@ static int cx23885_set_freq(struct cx23885_dev *dev, const struct v4l2_frequency struct v4l2_ctrl *mute; int old_mute_val = 1; @@ -747,7 +747,7 @@ index f8a3dea..594bdcf 100644 if (unlikely(f->tuner != 0)) return -EINVAL; -@@ -995,7 +1037,9 @@ static int cx23885_set_freq_via_ops(struct cx23885_dev *dev, +@@ -1012,7 +1054,9 @@ static int cx23885_set_freq_via_ops(struct cx23885_dev *dev, if ((dev->board == CX23885_BOARD_HAUPPAUGE_HVR1850) || (dev->board == CX23885_BOARD_HAUPPAUGE_HVR1255) || (dev->board == CX23885_BOARD_HAUPPAUGE_HVR1255_22111) || @@ -758,7 +758,7 @@ index f8a3dea..594bdcf 100644 fe = &dev->ts1.analog_fe; if (fe && fe->ops.tuner_ops.set_analog_params) { -@@ -1026,6 +1070,8 @@ int cx23885_set_frequency(struct file *file, void *priv, +@@ -1043,6 +1087,8 @@ int cx23885_set_frequency(struct file *file, void *priv, case CX23885_BOARD_HAUPPAUGE_HVR1255_22111: case CX23885_BOARD_HAUPPAUGE_HVR1265_K4: case CX23885_BOARD_HAUPPAUGE_HVR1850: @@ -768,9 +768,16 @@ index f8a3dea..594bdcf 100644 break; default: diff --git a/drivers/media/tuners/si2157.c b/drivers/media/tuners/si2157.c -index a08d8fe..26b1c3d 100644 +index d389f1f..b93f333 100644 --- a/drivers/media/tuners/si2157.c +++ b/drivers/media/tuners/si2157.c +@@ -1,5 +1,5 @@ + /* +- * Silicon Labs Si2146/2147/2148/2157/2158 silicon tuner driver ++ * Silicon Labs Si2141/2146/2147/2148/2157/2158 silicon tuner driver + * + * Copyright (C) 2014 Antti Palosaari + * @@ -56,14 +56,20 @@ static int si2157_cmd_execute(struct i2c_client *client, struct si2157_cmd *cmd) break; } @@ -826,11 +833,28 @@ index a08d8fe..26b1c3d 100644 /* power up */ if (dev->chiptype == SI2157_CHIPTYPE_SI2146) { memcpy(cmd.args, "\xc0\x05\x01\x00\x00\x0b\x00\x00\x01", 9); -@@ -230,6 +235,28 @@ skip_fw_download: +@@ -230,6 +235,45 @@ skip_fw_download: dev_info(&client->dev, "firmware version: %c.%c.%d\n", cmd.args[6], cmd.args[7], cmd.args[8]); + ++ if (dev->chiptype == SI2157_CHIPTYPE_SI2141) { ++ /* set clock */ ++ memcpy(cmd.args, "\xc0\x00\x0d", 3); ++ cmd.wlen = 3; ++ cmd.rlen = 1; ++ ret = si2157_cmd_execute(client, &cmd); ++ if (ret) ++ goto err; ++ /* setup PIN */ ++ memcpy(cmd.args, "\x12\x80\x80\x85\x00\x81\x00", 7); ++ cmd.wlen = 7; ++ cmd.rlen = 7; ++ ret = si2157_cmd_execute(client, &cmd); ++ if (ret) ++ goto err; ++ } ++ + /* enable tuner status flags */ + memcpy(cmd.args, "\x14\x00\x01\x05\x01\x00", 6); + cmd.wlen = 6; @@ -855,7 +879,7 @@ index a08d8fe..26b1c3d 100644 warm: /* init statistics in order signal app which are supported */ c->strength.len = 1; -@@ -274,6 +301,84 @@ err: +@@ -274,6 +318,84 @@ err: return ret; } @@ -940,7 +964,7 @@ index a08d8fe..26b1c3d 100644 static int si2157_set_params(struct dvb_frontend *fe) { struct i2c_client *client = fe->tuner_priv; -@@ -344,7 +449,7 @@ static int si2157_set_params(struct dvb_frontend *fe) +@@ -344,7 +466,7 @@ static int si2157_set_params(struct dvb_frontend *fe) if (ret) goto err; @@ -949,7 +973,7 @@ index a08d8fe..26b1c3d 100644 if (if_frequency != dev->if_frequency) { memcpy(cmd.args, "\x14\x00\x06\x07", 4); cmd.args[4] = (if_frequency / 1000) & 0xff; -@@ -358,7 +463,7 @@ static int si2157_set_params(struct dvb_frontend *fe) +@@ -358,7 +480,7 @@ static int si2157_set_params(struct dvb_frontend *fe) dev->if_frequency = if_frequency; } @@ -958,7 +982,7 @@ index a08d8fe..26b1c3d 100644 memcpy(cmd.args, "\x41\x00\x00\x00\x00\x00\x00\x00", 8); cmd.args[4] = (c->frequency >> 0) & 0xff; cmd.args[5] = (c->frequency >> 8) & 0xff; -@@ -370,19 +475,293 @@ static int si2157_set_params(struct dvb_frontend *fe) +@@ -370,24 +492,298 @@ static int si2157_set_params(struct dvb_frontend *fe) if (ret) goto err; @@ -967,15 +991,15 @@ index a08d8fe..26b1c3d 100644 + + si2157_tune_wait(client, 1); /* wait to complete, ignore any errors */ + - return 0; - err: ++ return 0; ++err: + dev->bandwidth = 0; + dev->frequency = 0; + dev->if_frequency = 0; - dev_dbg(&client->dev, "failed=%d\n", ret); - return ret; - } - ++ dev_dbg(&client->dev, "failed=%d\n", ret); ++ return ret; ++} ++ +static int si2157_set_analog_params(struct dvb_frontend *fe, + struct analog_parameters *params) +{ @@ -1178,15 +1202,15 @@ index a08d8fe..26b1c3d 100644 + + si2157_tune_wait(client, 0); /* wait to complete, ignore any errors */ + -+ return 0; -+err: + return 0; + err: + dev->bandwidth = 0; + dev->frequency = 0; + dev->if_frequency = 0; -+ dev_dbg(&client->dev, "failed=%d\n", ret); -+ return ret; -+} -+ + dev_dbg(&client->dev, "failed=%d\n", ret); + return ret; + } + +static int si2157_get_frequency(struct dvb_frontend *fe, u32 *frequency) +{ + struct i2c_client *client = fe->tuner_priv; @@ -1215,9 +1239,9 @@ index a08d8fe..26b1c3d 100644 - *frequency = dev->if_frequency; + *frequency = dev->if_frequency & ~1; /* strip analog IF indicator bit */ + dev_info(&client->dev, "%s: if_frequency=%u\n", __func__, *frequency); -+ return 0; -+} -+ + return 0; + } + +static int si2157_get_rf_strength(struct dvb_frontend *fe, u16 *rssi) +{ + struct i2c_client *client = fe->tuner_priv; @@ -1246,14 +1270,20 @@ index a08d8fe..26b1c3d 100644 + dev_dbg(&client->dev, "%s: strength=%d rssi=%u\n", + __func__, (s8)cmd.args[3], *rssi); + - return 0; ++ return 0; +err: + dev_dbg(&client->dev, "failed=%d\n", ret); + return ret; - } - ++} ++ static const struct dvb_tuner_ops si2157_ops = { -@@ -395,7 +774,12 @@ static const struct dvb_tuner_ops si2157_ops = { + .info = { +- .name = "Silicon Labs Si2141/Si2146/2147/2148/2157/2158", ++ .name = "Silicon Labs Si2141/2146/2147/2148/2157/2158", + .frequency_min_hz = 42 * MHz, + .frequency_max_hz = 870 * MHz, + }, +@@ -395,7 +791,12 @@ static const struct dvb_tuner_ops si2157_ops = { .init = si2157_init, .sleep = si2157_sleep, .set_params = si2157_set_params, @@ -1267,7 +1297,7 @@ index a08d8fe..26b1c3d 100644 }; static void si2157_stat_work(struct work_struct *work) -@@ -455,7 +839,7 @@ static int si2157_probe(struct i2c_client *client, +@@ -455,7 +856,7 @@ static int si2157_probe(struct i2c_client *client, cmd.wlen = 0; cmd.rlen = 1; ret = si2157_cmd_execute(client, &cmd); @@ -1277,10 +1307,10 @@ index a08d8fe..26b1c3d 100644 memcpy(&fe->ops.tuner_ops, &si2157_ops, sizeof(struct dvb_tuner_ops)); diff --git a/drivers/media/tuners/si2157_priv.h b/drivers/media/tuners/si2157_priv.h -index e6436f7..2a67c1b 100644 +index 50f8630..1e5ce5b 100644 --- a/drivers/media/tuners/si2157_priv.h +++ b/drivers/media/tuners/si2157_priv.h -@@ -30,6 +30,8 @@ struct si2157_dev { +@@ -37,6 +37,8 @@ struct si2157_dev { u8 chiptype; u8 if_port; u32 if_frequency; @@ -1351,7 +1381,7 @@ index fdd3c22..25aa7bb 100644 break; diff --git a/drivers/media/usb/cx231xx/cx231xx-video.c b/drivers/media/usb/cx231xx/cx231xx-video.c -index f7fcd73..c09b6d7 100644 +index 0d451c4..d5e51a5 100644 --- a/drivers/media/usb/cx231xx/cx231xx-video.c +++ b/drivers/media/usb/cx231xx/cx231xx-video.c @@ -1293,7 +1293,7 @@ int cx231xx_s_frequency(struct file *file, void *priv, @@ -1398,7 +1428,7 @@ index f7fcd73..c09b6d7 100644 if (dev->norm & (V4L2_STD_MN | V4L2_STD_NTSC_443)) if_frequency = 5400000; /*5.4MHz */ else if (dev->norm & V4L2_STD_B) -@@ -1566,8 +1582,19 @@ int cx231xx_querycap(struct file *file, void *priv, +@@ -1584,8 +1600,19 @@ int cx231xx_querycap(struct file *file, void *priv, else cap->device_caps |= V4L2_CAP_VIDEO_CAPTURE; } @@ -1419,7 +1449,7 @@ index f7fcd73..c09b6d7 100644 cap->capabilities = cap->device_caps | V4L2_CAP_READWRITE | V4L2_CAP_VBI_CAPTURE | V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING | V4L2_CAP_DEVICE_CAPS; -@@ -2172,10 +2199,20 @@ static void cx231xx_vdev_init(struct cx231xx *dev, +@@ -2191,10 +2218,20 @@ static void cx231xx_vdev_init(struct cx231xx *dev, video_set_drvdata(vfd, dev); if (dev->tuner_type == TUNER_ABSENT) { diff --git a/packages/linux-driver-addons/dvb/depends/media_tree/patches/media_tree-02-add-t230c2.patch b/packages/linux-driver-addons/dvb/depends/media_tree/patches/media_tree-02-add-t230c2.patch new file mode 100644 index 0000000000..c67b37845a --- /dev/null +++ b/packages/linux-driver-addons/dvb/depends/media_tree/patches/media_tree-02-add-t230c2.patch @@ -0,0 +1,217 @@ +From: Thomas Hollstegge +[v3] media: dvbsky: Add support for MyGica T230C v2 +https://lore.kernel.org/patchwork/cover/904817/ + +diff --git a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c +index 4d43424..3402b96 100644 +--- a/drivers/media/dvb-frontends/si2168.c ++++ b/drivers/media/dvb-frontends/si2168.c +@@ -96,13 +96,15 @@ static int si2168_ts_bus_ctrl(struct dvb_frontend *fe, int acquire) + dev_dbg(&client->dev, "%s acquire: %d\n", __func__, acquire); + + /* set TS_MODE property */ +- memcpy(cmd.args, "\x14\x00\x01\x10\x10\x00", 6); ++ memcpy(cmd.args, "\x14\x00\x01\x10\x00\x00", 6); + if (acquire) + cmd.args[4] |= dev->ts_mode; + else + cmd.args[4] |= SI2168_TS_TRISTATE; + if (dev->ts_clock_gapped) + cmd.args[4] |= 0x40; ++ cmd.args[4] |= (dev->ts_clock_mode & 0x03) << 4; ++ + cmd.wlen = 6; + cmd.rlen = 4; + ret = si2168_cmd_execute(client, &cmd); +@@ -644,6 +646,18 @@ static int si2168_set_frontend(struct dvb_frontend *fe) + if (ret) + goto err; + ++ /* set TS frequency */ ++ if (dev->ts_clock_freq) { ++ memcpy(cmd.args, "\x14\x00\x0d\x10", 4); ++ cmd.args[4] = ((dev->ts_clock_freq / 10000) >> 0) & 0xff; ++ cmd.args[5] = ((dev->ts_clock_freq / 10000) >> 8) & 0xff; ++ cmd.wlen = 6; ++ cmd.rlen = 4; ++ ret = si2168_cmd_execute(client, &cmd); ++ if (ret) ++ goto err; ++ } ++ + memcpy(cmd.args, "\x14\x00\x08\x10\xd7\x05", 6); + cmd.args[5] |= dev->ts_clock_inv ? 0x00 : 0x10; + cmd.wlen = 6; +@@ -1057,6 +1071,10 @@ static int si2168_probe(struct i2c_client *client, + dev->ts_mode = config->ts_mode; + dev->ts_clock_inv = config->ts_clock_inv; + dev->ts_clock_gapped = config->ts_clock_gapped; ++ dev->ts_clock_mode = config->ts_clock_mode; ++ if (dev->ts_clock_mode == 0) ++ dev->ts_clock_mode = SI2168_TS_CLOCK_MODE_AUTO_ADAPT; ++ dev->ts_clock_freq = config->ts_clock_freq; + dev->spectral_inversion = config->spectral_inversion; + + dev_info(&client->dev, "Silicon Labs Si2168-%c%d%d successfully identified\n", +diff --git a/drivers/media/dvb-frontends/si2168.h b/drivers/media/dvb-frontends/si2168.h +index d519edd..3f52ee8 100644 +--- a/drivers/media/dvb-frontends/si2168.h ++++ b/drivers/media/dvb-frontends/si2168.h +@@ -47,6 +47,14 @@ struct si2168_config { + /* TS clock gapped */ + bool ts_clock_gapped; + ++ /* TS clock mode */ ++#define SI2168_TS_CLOCK_MODE_AUTO_ADAPT 0x01 ++#define SI2168_TS_CLOCK_MODE_MANUAL 0x02 ++ u8 ts_clock_mode; ++ ++ /* TS clock frequency (for manual mode) */ ++ u32 ts_clock_freq; ++ + /* Inverted spectrum */ + bool spectral_inversion; + }; +diff --git a/drivers/media/dvb-frontends/si2168_priv.h b/drivers/media/dvb-frontends/si2168_priv.h +index 2d362e1..8173d6c 100644 +--- a/drivers/media/dvb-frontends/si2168_priv.h ++++ b/drivers/media/dvb-frontends/si2168_priv.h +@@ -48,6 +48,8 @@ struct si2168_dev { + u8 ts_mode; + bool ts_clock_inv; + bool ts_clock_gapped; ++ u8 ts_clock_mode; ++ u32 ts_clock_freq; + bool spectral_inversion; + }; + +diff --git a/drivers/media/usb/dvb-usb-v2/dvbsky.c b/drivers/media/usb/dvb-usb-v2/dvbsky.c +index e28bd88..4a4c6ae 100644 +--- a/drivers/media/usb/dvb-usb-v2/dvbsky.c ++++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c +@@ -583,6 +583,66 @@ static int dvbsky_mygica_t230c_attach(struct dvb_usb_adapter *adap) + return 0; + } + ++static int dvbsky_mygica_t230c_v2_attach(struct dvb_usb_adapter *adap) ++{ ++ struct dvbsky_state *state = adap_to_priv(adap); ++ struct dvb_usb_device *d = adap_to_d(adap); ++ struct i2c_adapter *i2c_adapter; ++ struct i2c_client *client_demod, *client_tuner; ++ struct i2c_board_info info; ++ struct si2168_config si2168_config; ++ struct si2157_config si2157_config; ++ ++ /* attach demod */ ++ memset(&si2168_config, 0, sizeof(si2168_config)); ++ si2168_config.i2c_adapter = &i2c_adapter; ++ si2168_config.fe = &adap->fe[0]; ++ si2168_config.ts_mode = SI2168_TS_PARALLEL; ++ si2168_config.ts_clock_inv = 1; ++ si2168_config.ts_clock_mode = SI2168_TS_CLOCK_MODE_MANUAL; ++ si2168_config.ts_clock_freq = 10000000; ++ memset(&info, 0, sizeof(struct i2c_board_info)); ++ strlcpy(info.type, "si2168", sizeof(info.type)); ++ info.addr = 0x64; ++ info.platform_data = &si2168_config; ++ ++ request_module("si2168"); ++ client_demod = i2c_new_device(&d->i2c_adap, &info); ++ if (!client_demod || !client_demod->dev.driver) ++ goto fail_demod_device; ++ if (!try_module_get(client_demod->dev.driver->owner)) ++ goto fail_demod_module; ++ ++ /* attach tuner */ ++ memset(&si2157_config, 0, sizeof(si2157_config)); ++ si2157_config.fe = adap->fe[0]; ++ si2157_config.if_port = 0; ++ memset(&info, 0, sizeof(struct i2c_board_info)); ++ strlcpy(info.type, "si2141", sizeof(info.type)); ++ info.addr = 0x60; ++ info.platform_data = &si2157_config; ++ ++ request_module("si2157"); ++ client_tuner = i2c_new_device(i2c_adapter, &info); ++ if (!client_tuner || !client_tuner->dev.driver) ++ goto fail_tuner_device; ++ if (!try_module_get(client_tuner->dev.driver->owner)) ++ goto fail_tuner_module; ++ ++ state->i2c_client_demod = client_demod; ++ state->i2c_client_tuner = client_tuner; ++ return 0; ++ ++fail_tuner_module: ++ i2c_unregister_device(client_tuner); ++fail_tuner_device: ++ module_put(client_demod->dev.driver->owner); ++fail_demod_module: ++ i2c_unregister_device(client_demod); ++fail_demod_device: ++ return -ENODEV; ++} ++ + + static int dvbsky_identify_state(struct dvb_usb_device *d, const char **name) + { +@@ -762,6 +822,33 @@ static struct dvb_usb_device_properties mygica_t230c_props = { + } + }; + ++static struct dvb_usb_device_properties mygica_t230c_v2_props = { ++ .driver_name = KBUILD_MODNAME, ++ .owner = THIS_MODULE, ++ .adapter_nr = adapter_nr, ++ .size_of_priv = sizeof(struct dvbsky_state), ++ ++ .generic_bulk_ctrl_endpoint = 0x01, ++ .generic_bulk_ctrl_endpoint_response = 0x81, ++ .generic_bulk_ctrl_delay = DVBSKY_MSG_DELAY, ++ ++ .i2c_algo = &dvbsky_i2c_algo, ++ .frontend_attach = dvbsky_mygica_t230c_v2_attach, ++ .init = dvbsky_init, ++ .get_rc_config = dvbsky_get_rc_config, ++ .streaming_ctrl = dvbsky_streaming_ctrl, ++ .identify_state = dvbsky_identify_state, ++ .exit = dvbsky_exit, ++ ++ .num_adapters = 1, ++ .adapter = { ++ { ++ .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096), ++ } ++ } ++}; ++ ++ + static const struct usb_device_id dvbsky_id_table[] = { + { DVB_USB_DEVICE(0x0572, 0x6831, + &dvbsky_s960_props, "DVBSky S960/S860", RC_MAP_DVBSKY) }, +@@ -797,6 +884,9 @@ static const struct usb_device_id dvbsky_id_table[] = { + { DVB_USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230C, + &mygica_t230c_props, "MyGica Mini DVB-T2 USB Stick T230C", + RC_MAP_TOTAL_MEDIA_IN_HAND_02) }, ++ { DVB_USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230C_V2, ++ &mygica_t230c_v2_props, "MyGica Mini DVB-T2 USB Stick T230C v2", ++ RC_MAP_TOTAL_MEDIA_IN_HAND_02) }, + { } + }; + MODULE_DEVICE_TABLE(usb, dvbsky_id_table); +diff --git a/include/media/dvb-usb-ids.h b/include/media/dvb-usb-ids.h +index f9e73b4..d606248 100644 +--- a/include/media/dvb-usb-ids.h ++++ b/include/media/dvb-usb-ids.h +@@ -387,6 +387,7 @@ + #define USB_PID_MYGICA_D689 0xd811 + #define USB_PID_MYGICA_T230 0xc688 + #define USB_PID_MYGICA_T230C 0xc689 ++#define USB_PID_MYGICA_T230C_V2 0xc68a + #define USB_PID_ELGATO_EYETV_DIVERSITY 0x0011 + #define USB_PID_ELGATO_EYETV_DTT 0x0021 + #define USB_PID_ELGATO_EYETV_DTT_2 0x003f +-- +2.17.1 + diff --git a/packages/linux-driver-addons/dvb/dvb-latest/package.mk b/packages/linux-driver-addons/dvb/dvb-latest/package.mk index 711265f2f5..43d3279621 100644 --- a/packages/linux-driver-addons/dvb/dvb-latest/package.mk +++ b/packages/linux-driver-addons/dvb/dvb-latest/package.mk @@ -2,8 +2,8 @@ # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) PKG_NAME="dvb-latest" -PKG_VERSION="9f419c414672676f63e85a61ea99df0ddcd6e9a7" -PKG_SHA256="284026f37db8880247f94e8fb763107c47ac44460d1b7819e076c61ccec9b86c" +PKG_VERSION="a8aef9cea0a4a2f3ea86c0b37bd6a1378018c0c1" +PKG_SHA256="a26566b1f8ad52f2a1b3c60f0ee8862702e51e2a7bc9e5385999137db0da3fe3" PKG_LICENSE="GPL" PKG_SITE="http://git.linuxtv.org/media_build.git" PKG_URL="https://git.linuxtv.org/media_build.git/snapshot/${PKG_VERSION}.tar.gz" @@ -30,6 +30,10 @@ make_target() { # make config all kernel_make VER=$KERNEL_VER SRCDIR=$(kernel_path) allyesconfig + if [ "$PROJECT" = Rockchip ]; then + sed -e 's/CONFIG_VIDEO_ADV7604=m/# CONFIG_VIDEO_ADV7604 is not set/g' -i v4l/.config + fi + kernel_make VER=$KERNEL_VER SRCDIR=$(kernel_path) }