mirror of
https://github.com/archr-linux/Arch-R.git
synced 2026-03-31 14:41:55 -07:00
Merge pull request #759 from MilhouseVH/linux480
linux: Update to 4.8.1
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="bcm2835-driver"
|
||||
PKG_VERSION="ec63df1"
|
||||
PKG_VERSION="a021d6e"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="nonfree"
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
diff -Naur a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c
|
||||
--- a/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:43:17.669610692 +0100
|
||||
+++ b/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:45:09.268139751 +0100
|
||||
@@ -1789,7 +1789,14 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)
|
||||
+ struct cfg80211_scan_info info = {
|
||||
+ .aborted = aborted
|
||||
+ };
|
||||
+ cfg80211_scan_done(pwdev_priv->scan_request, &info);
|
||||
+#else
|
||||
cfg80211_scan_done(pwdev_priv->scan_request, aborted);
|
||||
+#endif
|
||||
}
|
||||
|
||||
pwdev_priv->scan_request = NULL;
|
||||
@@ -0,0 +1,18 @@
|
||||
diff -Naur a/os_dep/ioctl_cfg80211.c b/os_dep/ioctl_cfg80211.c
|
||||
--- a/os_dep/ioctl_cfg80211.c 2016-09-11 01:51:12.796375013 +0100
|
||||
+++ b/os_dep/ioctl_cfg80211.c 2016-09-11 01:52:39.942348529 +0100
|
||||
@@ -1425,7 +1425,14 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)
|
||||
+ struct cfg80211_scan_info info = {
|
||||
+ .aborted = aborted
|
||||
+ };
|
||||
+ cfg80211_scan_done(pwdev_priv->scan_request, &info);
|
||||
+#else
|
||||
cfg80211_scan_done(pwdev_priv->scan_request, aborted);
|
||||
+#endif
|
||||
}
|
||||
|
||||
pwdev_priv->scan_request = NULL;
|
||||
@@ -0,0 +1,18 @@
|
||||
diff -Naur a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c
|
||||
--- a/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:54:30.184844740 +0100
|
||||
+++ b/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:55:58.426842518 +0100
|
||||
@@ -1891,7 +1891,14 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)
|
||||
+ struct cfg80211_scan_info info = {
|
||||
+ .aborted = aborted
|
||||
+ };
|
||||
+ cfg80211_scan_done(pwdev_priv->scan_request, &info);
|
||||
+#else
|
||||
cfg80211_scan_done(pwdev_priv->scan_request, aborted);
|
||||
+#endif
|
||||
}
|
||||
|
||||
pwdev_priv->scan_request = NULL;
|
||||
@@ -0,0 +1,18 @@
|
||||
diff -Naur a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c
|
||||
--- a/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:57:03.868327247 +0100
|
||||
+++ b/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:58:00.381610662 +0100
|
||||
@@ -2019,7 +2019,14 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)
|
||||
+ struct cfg80211_scan_info info = {
|
||||
+ .aborted = aborted
|
||||
+ };
|
||||
+ cfg80211_scan_done(pwdev_priv->scan_request, &info);
|
||||
+#else
|
||||
cfg80211_scan_done(pwdev_priv->scan_request, aborted);
|
||||
+#endif
|
||||
}
|
||||
|
||||
pwdev_priv->scan_request = NULL;
|
||||
@@ -0,0 +1,96 @@
|
||||
diff -Naur a/x86-32/src/wl/sys/wl_cfg80211_hybrid.c b/x86-32/src/wl/sys/wl_cfg80211_hybrid.c
|
||||
--- a/x86-32/src/wl/sys/wl_cfg80211_hybrid.c 2016-09-11 01:59:36.987804240 +0100
|
||||
+++ b/x86-32/src/wl/sys/wl_cfg80211_hybrid.c 2016-09-11 02:02:44.876069294 +0100
|
||||
@@ -2387,7 +2387,14 @@
|
||||
|
||||
if (wl->scan_request) {
|
||||
WL_DBG(("%s: Aborting scan\n", __FUNCTION__));
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)
|
||||
+ struct cfg80211_scan_info info = {
|
||||
+ .aborted = true
|
||||
+ };
|
||||
+ cfg80211_scan_done(wl->scan_request, &info);
|
||||
+#else
|
||||
cfg80211_scan_done(wl->scan_request, true);
|
||||
+#endif
|
||||
wl->scan_request = NULL;
|
||||
}
|
||||
|
||||
@@ -2488,7 +2495,14 @@
|
||||
|
||||
scan_done_out:
|
||||
if (wl->scan_request) {
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)
|
||||
+ struct cfg80211_scan_info info = {
|
||||
+ .aborted = false
|
||||
+ };
|
||||
+ cfg80211_scan_done(wl->scan_request, &info);
|
||||
+#else
|
||||
cfg80211_scan_done(wl->scan_request, false);
|
||||
+#endif
|
||||
wl->scan_request = NULL;
|
||||
}
|
||||
rtnl_unlock();
|
||||
@@ -2913,7 +2927,14 @@
|
||||
s32 err = 0;
|
||||
|
||||
if (wl->scan_request) {
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)
|
||||
+ struct cfg80211_scan_info info = {
|
||||
+ .aborted = true
|
||||
+ };
|
||||
+ cfg80211_scan_done(wl->scan_request, &info);
|
||||
+#else
|
||||
cfg80211_scan_done(wl->scan_request, true);
|
||||
+#endif
|
||||
wl->scan_request = NULL;
|
||||
}
|
||||
|
||||
diff -Naur a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c
|
||||
--- a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c 2016-09-11 01:59:50.796117742 +0100
|
||||
+++ b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c 2016-09-11 02:04:12.290053058 +0100
|
||||
@@ -2387,7 +2387,14 @@
|
||||
|
||||
if (wl->scan_request) {
|
||||
WL_DBG(("%s: Aborting scan\n", __FUNCTION__));
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)
|
||||
+ struct cfg80211_scan_info info = {
|
||||
+ .aborted = true
|
||||
+ };
|
||||
+ cfg80211_scan_done(wl->scan_request, &info);
|
||||
+#else
|
||||
cfg80211_scan_done(wl->scan_request, true);
|
||||
+#endif
|
||||
wl->scan_request = NULL;
|
||||
}
|
||||
|
||||
@@ -2488,7 +2495,14 @@
|
||||
|
||||
scan_done_out:
|
||||
if (wl->scan_request) {
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)
|
||||
+ struct cfg80211_scan_info info = {
|
||||
+ .aborted = false
|
||||
+ };
|
||||
+ cfg80211_scan_done(wl->scan_request, &info);
|
||||
+#else
|
||||
cfg80211_scan_done(wl->scan_request, false);
|
||||
+#endif
|
||||
wl->scan_request = NULL;
|
||||
}
|
||||
rtnl_unlock();
|
||||
@@ -2913,7 +2927,14 @@
|
||||
s32 err = 0;
|
||||
|
||||
if (wl->scan_request) {
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)
|
||||
+ struct cfg80211_scan_info info = {
|
||||
+ .aborted = true
|
||||
+ };
|
||||
+ cfg80211_scan_done(wl->scan_request, &info);
|
||||
+#else
|
||||
cfg80211_scan_done(wl->scan_request, true);
|
||||
+#endif
|
||||
wl->scan_request = NULL;
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ case "$LINUX" in
|
||||
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET imx6-status-led imx6-soc-fan irqbalanced"
|
||||
;;
|
||||
*)
|
||||
PKG_VERSION="4.7.6"
|
||||
PKG_VERSION="4.8.1"
|
||||
PKG_URL="http://www.kernel.org/pub/linux/kernel/v4.x/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
From: cvh <namerp@googlemail.com>
|
||||
Date: Sun, 29 May 2016 23:00:40 +0200
|
||||
Subject: [PATCH] [media] Add support for Terratec Cinergy S2 Rev.3
|
||||
|
||||
---
|
||||
drivers/media/usb/dvb-usb/dw2102.c | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/media/usb/dvb-usb/dw2102.c b/drivers/media/usb/dvb-usb/dw2102.c
|
||||
index 49b55d7..961f64e 100644
|
||||
--- a/drivers/media/usb/dvb-usb/dw2102.c
|
||||
+++ b/drivers/media/usb/dvb-usb/dw2102.c
|
||||
@@ -1641,6 +1641,7 @@ enum dw2102_table_entry {
|
||||
TEVII_S421,
|
||||
TEVII_S632,
|
||||
TERRATEC_CINERGY_S2_R2,
|
||||
+ TERRATEC_CINERGY_S2_R3,
|
||||
GOTVIEW_SAT_HD,
|
||||
GENIATECH_T220,
|
||||
TECHNOTREND_S2_4600,
|
||||
@@ -1669,6 +1670,7 @@ static struct usb_device_id dw2102_table[] = {
|
||||
[TEVII_S421] = {USB_DEVICE(0x9022, USB_PID_TEVII_S421)},
|
||||
[TEVII_S632] = {USB_DEVICE(0x9022, USB_PID_TEVII_S632)},
|
||||
[TERRATEC_CINERGY_S2_R2] = {USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_S2_R2)},
|
||||
+ [TERRATEC_CINERGY_S2_R3] = {USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_S2_R3)},
|
||||
[GOTVIEW_SAT_HD] = {USB_DEVICE(0x1FE1, USB_PID_GOTVIEW_SAT_HD)},
|
||||
[GENIATECH_T220] = {USB_DEVICE(0x1f4d, 0xD220)},
|
||||
[TECHNOTREND_S2_4600] = {USB_DEVICE(USB_VID_TECHNOTREND,
|
||||
@@ -2083,7 +2085,7 @@ static struct dvb_usb_device_properties su3000_properties = {
|
||||
}},
|
||||
}
|
||||
},
|
||||
- .num_device_descs = 5,
|
||||
+ .num_device_descs = 6,
|
||||
.devices = {
|
||||
{ "SU3000HD DVB-S USB2.0",
|
||||
{ &dw2102_table[GENIATECH_SU3000], NULL },
|
||||
@@ -2101,6 +2103,10 @@ static struct dvb_usb_device_properties su3000_properties = {
|
||||
{ &dw2102_table[TERRATEC_CINERGY_S2_R2], NULL },
|
||||
{ NULL },
|
||||
},
|
||||
+ { "Terratec Cinergy S2 USB HD Rev.3",
|
||||
+ { &dw2102_table[TERRATEC_CINERGY_S2_R3], NULL },
|
||||
+ { NULL },
|
||||
+ },
|
||||
{ "GOTVIEW Satellite HD",
|
||||
{ &dw2102_table[GOTVIEW_SAT_HD], NULL },
|
||||
{ NULL },
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,51 +1,3 @@
|
||||
drivers/media/dvb-core/Makefile | 2 +-
|
||||
drivers/media/dvb-core/dvb_ca_en50221.c | 128 +-
|
||||
drivers/media/dvb-core/dvb_ca_en50221.h | 7 +
|
||||
drivers/media/dvb-core/dvb_frontend.c | 15 +
|
||||
drivers/media/dvb-core/dvb_frontend.h | 4 +
|
||||
drivers/media/dvb-core/dvb_netstream.c | 259 +
|
||||
drivers/media/dvb-core/dvb_netstream.h | 93 +
|
||||
drivers/media/dvb-core/dvbdev.c | 3 +-
|
||||
drivers/media/dvb-core/dvbdev.h | 4 +
|
||||
drivers/media/dvb-frontends/Kconfig | 41 +
|
||||
drivers/media/dvb-frontends/Makefile | 5 +
|
||||
drivers/media/dvb-frontends/cxd2843.c | 2063 ++++++++
|
||||
drivers/media/dvb-frontends/cxd2843.h | 30 +
|
||||
drivers/media/dvb-frontends/mxl5xx.c | 1738 +++++++
|
||||
drivers/media/dvb-frontends/mxl5xx.h | 39 +
|
||||
drivers/media/dvb-frontends/mxl5xx_defs.h | 818 ++++
|
||||
drivers/media/dvb-frontends/mxl5xx_regs.h | 941 ++++
|
||||
drivers/media/dvb-frontends/stv0367dd.c | 1874 +++++++
|
||||
drivers/media/dvb-frontends/stv0367dd.h | 31 +
|
||||
drivers/media/dvb-frontends/stv0367dd_regs.h | 3429 +++++++++++++
|
||||
drivers/media/dvb-frontends/stv0910.c | 1526 ++++++
|
||||
drivers/media/dvb-frontends/stv0910.h | 31 +
|
||||
drivers/media/dvb-frontends/stv0910_regs.h | 3997 +++++++++++++++
|
||||
drivers/media/dvb-frontends/stv6111.c | 684 +++
|
||||
drivers/media/dvb-frontends/stv6111.h | 20 +
|
||||
drivers/media/pci/ddbridge/Kconfig | 29 +-
|
||||
drivers/media/pci/ddbridge/Makefile | 4 +-
|
||||
drivers/media/pci/ddbridge/ddbridge-core.c | 5105 +++++++++++++++-----
|
||||
drivers/media/pci/ddbridge/ddbridge-i2c.c | 290 ++
|
||||
drivers/media/pci/ddbridge/ddbridge-i2c.h | 116 +
|
||||
drivers/media/pci/ddbridge/ddbridge-mod.c | 1118 +++++
|
||||
drivers/media/pci/ddbridge/ddbridge-ns.c | 491 ++
|
||||
drivers/media/pci/ddbridge/ddbridge-regs.h | 355 +-
|
||||
drivers/media/pci/ddbridge/ddbridge.c | 541 +++
|
||||
drivers/media/pci/ddbridge/ddbridge.h | 579 ++-
|
||||
drivers/media/pci/ddbridge/octonet.c | 262 +
|
||||
.../media/platform/sti/c8sectpfe/c8sectpfe-dvb.c | 1 +
|
||||
drivers/media/tuners/tda18212.c | 5 +
|
||||
drivers/media/tuners/tda18212.h | 7 +
|
||||
drivers/media/usb/dvb-usb-v2/anysee.c | 2 +
|
||||
drivers/media/usb/em28xx/em28xx-dvb.c | 1 +
|
||||
drivers/staging/media/cxd2099/cxd2099.c | 234 +-
|
||||
drivers/staging/media/cxd2099/cxd2099.h | 6 +-
|
||||
include/uapi/linux/dvb/frontend.h | 7 +-
|
||||
include/uapi/linux/dvb/mod.h | 22 +
|
||||
include/uapi/linux/dvb/ns.h | 69 +
|
||||
46 files changed, 25615 insertions(+), 1411 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/dvb-core/Makefile b/drivers/media/dvb-core/Makefile
|
||||
index 8f22bcd..5ff851a 100644
|
||||
--- a/drivers/media/dvb-core/Makefile
|
||||
@@ -59,10 +11,10 @@ index 8f22bcd..5ff851a 100644
|
||||
|
||||
obj-$(CONFIG_DVB_CORE) += dvb-core.o
|
||||
diff --git a/drivers/media/dvb-core/dvb_ca_en50221.c b/drivers/media/dvb-core/dvb_ca_en50221.c
|
||||
index f82cd1f..4849156 100644
|
||||
index b5b5b19..2cb8415 100644
|
||||
--- a/drivers/media/dvb-core/dvb_ca_en50221.c
|
||||
+++ b/drivers/media/dvb-core/dvb_ca_en50221.c
|
||||
@@ -315,7 +315,7 @@ static int dvb_ca_en50221_link_init(struct dvb_ca_private *ca, int slot)
|
||||
@@ -344,7 +344,7 @@ static int dvb_ca_en50221_link_init(struct dvb_ca_private *ca, int slot)
|
||||
/* read the buffer size from the CAM */
|
||||
if ((ret = ca->pub->write_cam_control(ca->pub, slot, CTRLIF_COMMAND, IRQEN | CMDREG_SR)) != 0)
|
||||
return ret;
|
||||
@@ -71,7 +23,7 @@ index f82cd1f..4849156 100644
|
||||
return ret;
|
||||
if ((ret = dvb_ca_en50221_read_data(ca, slot, buf, 2)) != 2)
|
||||
return -EIO;
|
||||
@@ -612,65 +612,78 @@ static int dvb_ca_en50221_read_data(struct dvb_ca_private *ca, int slot, u8 * eb
|
||||
@@ -641,65 +641,78 @@ static int dvb_ca_en50221_read_data(struct dvb_ca_private *ca, int slot, u8 * eb
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,7 +152,7 @@ index f82cd1f..4849156 100644
|
||||
}
|
||||
|
||||
/* OK, add it to the receive buffer, or copy into external buffer if supplied */
|
||||
@@ -722,6 +735,9 @@ static int dvb_ca_en50221_write_data(struct dvb_ca_private *ca, int slot, u8 * b
|
||||
@@ -751,6 +764,9 @@ static int dvb_ca_en50221_write_data(struct dvb_ca_private *ca, int slot, u8 * b
|
||||
if (bytes_write > ca->slot_info[slot].link_buf_size)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -210,7 +162,7 @@ index f82cd1f..4849156 100644
|
||||
/* it is possible we are dealing with a single buffer implementation,
|
||||
thus if there is data available for read or if there is even a read
|
||||
already in progress, we do nothing but awake the kernel thread to
|
||||
@@ -1057,7 +1073,8 @@ static int dvb_ca_en50221_thread(void *data)
|
||||
@@ -1086,7 +1102,8 @@ static int dvb_ca_en50221_thread(void *data)
|
||||
|
||||
printk("dvb_ca adapter %d: Invalid PC card inserted :(\n",
|
||||
ca->dvbdev->adapter->num);
|
||||
@@ -220,7 +172,7 @@ index f82cd1f..4849156 100644
|
||||
dvb_ca_en50221_thread_update_delay(ca);
|
||||
break;
|
||||
}
|
||||
@@ -1087,7 +1104,10 @@ static int dvb_ca_en50221_thread(void *data)
|
||||
@@ -1116,7 +1133,10 @@ static int dvb_ca_en50221_thread(void *data)
|
||||
if (time_after(jiffies, ca->slot_info[slot].timeout)) {
|
||||
printk("dvb_ca adapter %d: DVB CAM did not respond :(\n",
|
||||
ca->dvbdev->adapter->num);
|
||||
@@ -232,7 +184,7 @@ index f82cd1f..4849156 100644
|
||||
dvb_ca_en50221_thread_update_delay(ca);
|
||||
break;
|
||||
}
|
||||
@@ -1113,7 +1133,7 @@ static int dvb_ca_en50221_thread(void *data)
|
||||
@@ -1142,7 +1162,7 @@ static int dvb_ca_en50221_thread(void *data)
|
||||
}
|
||||
|
||||
printk("dvb_ca adapter %d: DVB CAM link initialisation failed :(\n", ca->dvbdev->adapter->num);
|
||||
@@ -267,10 +219,10 @@ index 1e4bbbd..056d10c 100644
|
||||
int (*slot_shutdown)(struct dvb_ca_en50221 *ca, int slot);
|
||||
int (*slot_ts_enable)(struct dvb_ca_en50221 *ca, int slot);
|
||||
diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c
|
||||
index c014261..6047f4f 100644
|
||||
index be99c8d..254f89d 100644
|
||||
--- a/drivers/media/dvb-core/dvb_frontend.c
|
||||
+++ b/drivers/media/dvb-core/dvb_frontend.c
|
||||
@@ -1019,6 +1019,7 @@ static struct dtv_cmds_h dtv_cmds[DTV_MAX_COMMAND + 1] = {
|
||||
@@ -1037,6 +1037,7 @@ static struct dtv_cmds_h dtv_cmds[DTV_MAX_COMMAND + 1] = {
|
||||
_DTV_CMD(DTV_STREAM_ID, 1, 0),
|
||||
_DTV_CMD(DTV_DVBT2_PLP_ID_LEGACY, 1, 0),
|
||||
_DTV_CMD(DTV_LNA, 1, 0),
|
||||
@@ -278,7 +230,7 @@ index c014261..6047f4f 100644
|
||||
|
||||
/* Get */
|
||||
_DTV_CMD(DTV_DISEQC_SLAVE_REPLY, 0, 1),
|
||||
@@ -1449,6 +1450,14 @@ static int dtv_property_process_get(struct dvb_frontend *fe,
|
||||
@@ -1467,6 +1468,14 @@ static int dtv_property_process_get(struct dvb_frontend *fe,
|
||||
tvp->u.data = c->lna;
|
||||
break;
|
||||
|
||||
@@ -293,7 +245,7 @@ index c014261..6047f4f 100644
|
||||
/* Fill quality measures */
|
||||
case DTV_STAT_SIGNAL_STRENGTH:
|
||||
tvp->u.st = c->strength;
|
||||
@@ -1884,6 +1893,12 @@ static int dtv_property_process_set(struct dvb_frontend *fe,
|
||||
@@ -1902,6 +1911,12 @@ static int dtv_property_process_set(struct dvb_frontend *fe,
|
||||
c->lna = LNA_AUTO;
|
||||
break;
|
||||
|
||||
@@ -307,10 +259,10 @@ index c014261..6047f4f 100644
|
||||
return -EINVAL;
|
||||
}
|
||||
diff --git a/drivers/media/dvb-core/dvb_frontend.h b/drivers/media/dvb-core/dvb_frontend.h
|
||||
index 9592573..c93aff5 100644
|
||||
index fb6e848..3efb21b 100644
|
||||
--- a/drivers/media/dvb-core/dvb_frontend.h
|
||||
+++ b/drivers/media/dvb-core/dvb_frontend.h
|
||||
@@ -471,6 +471,7 @@ struct dvb_frontend_ops {
|
||||
@@ -452,6 +452,7 @@ struct dvb_frontend_ops {
|
||||
int (*i2c_gate_ctrl)(struct dvb_frontend* fe, int enable);
|
||||
int (*ts_bus_ctrl)(struct dvb_frontend* fe, int acquire);
|
||||
int (*set_lna)(struct dvb_frontend *);
|
||||
@@ -318,7 +270,7 @@ index 9592573..c93aff5 100644
|
||||
|
||||
/*
|
||||
* These callbacks are for devices that implement their own
|
||||
@@ -483,6 +484,8 @@ struct dvb_frontend_ops {
|
||||
@@ -464,6 +465,8 @@ struct dvb_frontend_ops {
|
||||
|
||||
int (*set_property)(struct dvb_frontend* fe, struct dtv_property* tvp);
|
||||
int (*get_property)(struct dvb_frontend* fe, struct dtv_property* tvp);
|
||||
@@ -327,7 +279,7 @@ index 9592573..c93aff5 100644
|
||||
};
|
||||
|
||||
#ifdef __DVB_CORE__
|
||||
@@ -632,6 +635,7 @@ struct dtv_frontend_properties {
|
||||
@@ -613,6 +616,7 @@ struct dtv_frontend_properties {
|
||||
u8 atscmh_sccc_code_mode_d;
|
||||
|
||||
u32 lna;
|
||||
@@ -712,7 +664,7 @@ index 75a3f4b..3f309b4 100644
|
||||
};
|
||||
|
||||
#ifdef CONFIG_DVB_DYNAMIC_MINORS
|
||||
@@ -900,6 +900,7 @@ out:
|
||||
@@ -900,6 +900,7 @@ int dvb_usercopy(struct file *file,
|
||||
kfree(mbuf);
|
||||
return err;
|
||||
}
|
||||
@@ -736,7 +688,7 @@ index 4aff7bd..ae4f4d1 100644
|
||||
#define DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr) \
|
||||
static short adapter_nr[] = \
|
||||
diff --git a/drivers/media/dvb-frontends/Kconfig b/drivers/media/dvb-frontends/Kconfig
|
||||
index a82f77c..3692927 100644
|
||||
index c645aa8..f5ff222 100644
|
||||
--- a/drivers/media/dvb-frontends/Kconfig
|
||||
+++ b/drivers/media/dvb-frontends/Kconfig
|
||||
@@ -28,6 +28,14 @@ config DVB_STV090x
|
||||
@@ -776,7 +728,7 @@ index a82f77c..3692927 100644
|
||||
config DVB_M88DS3103
|
||||
tristate "Montage Technology M88DS3103"
|
||||
depends on DVB_CORE && I2C && I2C_MUX
|
||||
@@ -81,6 +104,24 @@ config DVB_MN88473
|
||||
@@ -89,6 +112,24 @@ config DVB_MN88473
|
||||
help
|
||||
Say Y when you want to support this frontend.
|
||||
|
||||
@@ -802,10 +754,10 @@ index a82f77c..3692927 100644
|
||||
depends on DVB_CORE
|
||||
|
||||
diff --git a/drivers/media/dvb-frontends/Makefile b/drivers/media/dvb-frontends/Makefile
|
||||
index eb7191f..1749be8 100644
|
||||
index e90165a..d3fed98 100644
|
||||
--- a/drivers/media/dvb-frontends/Makefile
|
||||
+++ b/drivers/media/dvb-frontends/Makefile
|
||||
@@ -110,6 +110,11 @@ obj-$(CONFIG_DVB_CXD2820R) += cxd2820r.o
|
||||
@@ -111,6 +111,11 @@ obj-$(CONFIG_DVB_CXD2820R) += cxd2820r.o
|
||||
obj-$(CONFIG_DVB_CXD2841ER) += cxd2841er.o
|
||||
obj-$(CONFIG_DVB_DRXK) += drxk.o
|
||||
obj-$(CONFIG_DVB_TDA18271C2DD) += tda18271c2dd.o
|
||||
@@ -2924,10 +2876,10 @@ index 0000000..2467a6b
|
||||
+#endif /* _CXD2843_H_ */
|
||||
diff --git a/drivers/media/dvb-frontends/mxl5xx.c b/drivers/media/dvb-frontends/mxl5xx.c
|
||||
new file mode 100644
|
||||
index 0000000..29bebed
|
||||
index 0000000..4413fd2
|
||||
--- /dev/null
|
||||
+++ b/drivers/media/dvb-frontends/mxl5xx.c
|
||||
@@ -0,0 +1,1738 @@
|
||||
@@ -0,0 +1,1749 @@
|
||||
+/*
|
||||
+ * Driver for the Maxlinear MX58x family of tuners/demods
|
||||
+ *
|
||||
@@ -3382,53 +3334,6 @@ index 0000000..29bebed
|
||||
+ return stat;
|
||||
+}
|
||||
+
|
||||
+static int get_stats(struct dvb_frontend *fe);
|
||||
+
|
||||
+static int read_status(struct dvb_frontend *fe, enum fe_status *status)
|
||||
+{
|
||||
+ struct mxl *state = fe->demodulator_priv;
|
||||
+
|
||||
+ int stat;
|
||||
+ u32 regData = 0;
|
||||
+
|
||||
+ mutex_lock(&state->base->status_lock);
|
||||
+ HYDRA_DEMOD_STATUS_LOCK(state, state->demod);
|
||||
+ stat = read_register(state, (HYDRA_DMD_LOCK_STATUS_ADDR_OFFSET +
|
||||
+ HYDRA_DMD_STATUS_OFFSET(state->demod)),
|
||||
+ ®Data);
|
||||
+ HYDRA_DEMOD_STATUS_UNLOCK(state, state->demod);
|
||||
+ mutex_unlock(&state->base->status_lock);
|
||||
+
|
||||
+ *status = (regData == 1) ? 0x1f : 0;
|
||||
+ get_stats(fe);
|
||||
+ return stat;
|
||||
+}
|
||||
+
|
||||
+static int tune(struct dvb_frontend *fe, bool re_tune,
|
||||
+ unsigned int mode_flags,
|
||||
+ unsigned int *delay, enum fe_status *status)
|
||||
+{
|
||||
+ struct mxl *state = fe->demodulator_priv;
|
||||
+ int r = 0;
|
||||
+
|
||||
+ *delay = HZ / 2;
|
||||
+ if (re_tune) {
|
||||
+ r = set_parameters(fe);
|
||||
+ if (r)
|
||||
+ return r;
|
||||
+ state->tune_time = jiffies;
|
||||
+ return 0;
|
||||
+ }
|
||||
+ if (*status & FE_HAS_LOCK)
|
||||
+ return 0;
|
||||
+
|
||||
+ r = read_status(fe, status);
|
||||
+ if (r)
|
||||
+ return r;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int enable_tuner(struct mxl *state, u32 tuner, u32 enable);
|
||||
+
|
||||
+static int sleep(struct dvb_frontend *fe)
|
||||
@@ -3465,10 +3370,14 @@ index 0000000..29bebed
|
||||
+ ®Data);
|
||||
+ HYDRA_DEMOD_STATUS_UNLOCK(state, state->demod);
|
||||
+ mutex_unlock(&state->base->status_lock);
|
||||
+ *snr = (s16) (regData & 0xFFFF); /* 100x dB */
|
||||
+
|
||||
+ p->cnr.len = 1;
|
||||
+ p->cnr.stat[0].scale = FE_SCALE_DECIBEL;
|
||||
+ p->cnr.stat[0].uvalue = 10 * (s64) *snr;
|
||||
+ p->cnr.stat[0].svalue = (s16)regData * 10;
|
||||
+
|
||||
+ if (regData > 2000) regData = 2000;
|
||||
+ *snr = (s16)(regData/10) * 328; /* 20dB = 100% */
|
||||
+
|
||||
+ return stat;
|
||||
+}
|
||||
+
|
||||
@@ -3476,52 +3385,64 @@ index 0000000..29bebed
|
||||
+{
|
||||
+ struct mxl *state = fe->demodulator_priv;
|
||||
+ struct dtv_frontend_properties *p = &fe->dtv_property_cache;
|
||||
+ u32 reg[8], reg2[4];
|
||||
+ u32 reg[8];
|
||||
+ int stat;
|
||||
+
|
||||
+ *ber = 0;
|
||||
+ mutex_lock(&state->base->status_lock);
|
||||
+ HYDRA_DEMOD_STATUS_LOCK(state, state->demod);
|
||||
+ stat = read_register_block(state,
|
||||
+ (HYDRA_DMD_DVBS_1ST_CORR_RS_ERRORS_ADDR_OFFSET +
|
||||
+ HYDRA_DMD_STATUS_OFFSET(state->demod)),
|
||||
+ (4 * sizeof(u32)),
|
||||
+ (u8 *) ®[0]);
|
||||
+ HYDRA_DEMOD_STATUS_UNLOCK(state, state->demod);
|
||||
+
|
||||
+ switch (p->delivery_system) {
|
||||
+ case SYS_DSS:
|
||||
+ case SYS_DVBS:
|
||||
+ p->pre_bit_error.len = 1;
|
||||
+ p->pre_bit_error.stat[0].scale = FE_SCALE_COUNTER;
|
||||
+ p->pre_bit_error.stat[0].uvalue = reg[2];
|
||||
+ p->pre_bit_count.len = 1;
|
||||
+ p->pre_bit_count.stat[0].scale = FE_SCALE_COUNTER;
|
||||
+ p->pre_bit_count.stat[0].uvalue = reg[3];
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ stat = read_register_block(state,
|
||||
+ (HYDRA_DMD_DVBS2_CRC_ERRORS_ADDR_OFFSET +
|
||||
+ HYDRA_DMD_STATUS_OFFSET(state->demod)),
|
||||
+ (7 * sizeof(u32)),
|
||||
+ (u8 *) ®[0]);
|
||||
+ stat = read_register_block(state,
|
||||
+ (HYDRA_DMD_DVBS_1ST_CORR_RS_ERRORS_ADDR_OFFSET +
|
||||
+ HYDRA_DMD_STATUS_OFFSET(state->demod)),
|
||||
+ (4 * sizeof(u32)),
|
||||
+ (u8 *) ®2[0]);
|
||||
+ HYDRA_DEMOD_STATUS_UNLOCK(state, state->demod);
|
||||
+ mutex_unlock(&state->base->status_lock);
|
||||
+
|
||||
+
|
||||
+ switch (p->delivery_system) {
|
||||
+ case SYS_DSS:
|
||||
+ break;
|
||||
+ case SYS_DVBS:
|
||||
+ p->pre_bit_error.len = 1;
|
||||
+ p->pre_bit_error.stat[0].scale = FE_SCALE_COUNTER;
|
||||
+ p->pre_bit_error.stat[0].uvalue = reg[5];
|
||||
+ p->pre_bit_count.len = 1;
|
||||
+ p->pre_bit_count.stat[0].scale = FE_SCALE_COUNTER;
|
||||
+ p->pre_bit_count.stat[0].uvalue = reg[6] * 188 * 8;
|
||||
+ p->post_bit_error.len = 1;
|
||||
+ p->post_bit_error.stat[0].scale = FE_SCALE_COUNTER;
|
||||
+ p->post_bit_error.stat[0].uvalue = reg[5];
|
||||
+ p->post_bit_count.len = 1;
|
||||
+ p->post_bit_count.stat[0].scale = FE_SCALE_COUNTER;
|
||||
+ p->post_bit_count.stat[0].uvalue = reg[6];
|
||||
+ break;
|
||||
+ case SYS_DVBS2:
|
||||
+ p->post_bit_error.len = 1;
|
||||
+ p->post_bit_error.stat[0].scale = FE_SCALE_COUNTER;
|
||||
+ p->post_bit_error.stat[0].uvalue = reg[1];
|
||||
+ p->post_bit_count.len = 1;
|
||||
+ p->post_bit_count.stat[0].scale = FE_SCALE_COUNTER;
|
||||
+ p->post_bit_count.stat[0].uvalue = reg[2];
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ pr_debug("ber %08x %08x %08x %08x %08x %08x %08x\n",
|
||||
+ reg[0], reg[1], reg[2], reg[3], reg[4], reg[5], reg[6]);
|
||||
+ pr_debug("ber2 %08x %08x %08x %08x\n",
|
||||
+ reg[0], reg[1], reg[2], reg[3]);
|
||||
+ /*
|
||||
+ * pre_bit_error, pre_bit_count
|
||||
+ * post_bit_error, post_bit_count;
|
||||
+ * block_error block_count;
|
||||
+ * reset_fec_counter(state);
|
||||
+ */
|
||||
+
|
||||
+ *ber = p->post_bit_error.stat[0].uvalue;
|
||||
+
|
||||
+ mutex_unlock(&state->base->status_lock);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
@@ -3539,10 +3460,12 @@ index 0000000..29bebed
|
||||
+ ®Data);
|
||||
+ HYDRA_DEMOD_STATUS_UNLOCK(state, state->demod);
|
||||
+ mutex_unlock(&state->base->status_lock);
|
||||
+ *strength = (u16) (regData & 0xFFFF); /* 10x dBm */
|
||||
+
|
||||
+ p->strength.len = 1;
|
||||
+ p->strength.stat[0].scale = FE_SCALE_DECIBEL;
|
||||
+ p->strength.stat[0].uvalue = 10 * (s64) (s16) (regData & 0xFFFF);
|
||||
+ p->strength.stat[0].svalue = (s16)regData *10;
|
||||
+
|
||||
+ *strength = (100 + (s16)regData/100) * 656;
|
||||
+ return stat;
|
||||
+}
|
||||
+
|
||||
@@ -3551,14 +3474,54 @@ index 0000000..29bebed
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int get_stats(struct dvb_frontend *fe)
|
||||
+static int read_status(struct dvb_frontend *fe, enum fe_status *status)
|
||||
+{
|
||||
+ u16 val;
|
||||
+ u32 val32;
|
||||
+ struct mxl *state = fe->demodulator_priv;
|
||||
+
|
||||
+ int stat;
|
||||
+ u32 regData = 0;
|
||||
+ u16 val;
|
||||
+
|
||||
+ mutex_lock(&state->base->status_lock);
|
||||
+ HYDRA_DEMOD_STATUS_LOCK(state, state->demod);
|
||||
+ stat = read_register(state, (HYDRA_DMD_LOCK_STATUS_ADDR_OFFSET +
|
||||
+ HYDRA_DMD_STATUS_OFFSET(state->demod)),
|
||||
+ ®Data);
|
||||
+ HYDRA_DEMOD_STATUS_UNLOCK(state, state->demod);
|
||||
+ mutex_unlock(&state->base->status_lock);
|
||||
+
|
||||
+ *status = (regData == 1) ? 0x1f : 0;
|
||||
+ read_signal_strength(fe, &val);
|
||||
+ read_snr(fe, &val);
|
||||
+ read_ber(fe, &val32);
|
||||
+ if (*status) {
|
||||
+ read_snr(fe, &val);
|
||||
+ read_ber(fe, ®Data);
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int tune(struct dvb_frontend *fe, bool re_tune,
|
||||
+ unsigned int mode_flags,
|
||||
+ unsigned int *delay, enum fe_status *status)
|
||||
+{
|
||||
+ struct mxl *state = fe->demodulator_priv;
|
||||
+ int r = 0;
|
||||
+
|
||||
+ *delay = HZ / 2;
|
||||
+ if (re_tune) {
|
||||
+ r = set_parameters(fe);
|
||||
+ if (r)
|
||||
+ return r;
|
||||
+ state->tune_time = jiffies;
|
||||
+ return 0;
|
||||
+ }
|
||||
+ if (*status & FE_HAS_LOCK)
|
||||
+ return 0;
|
||||
+
|
||||
+ r = read_status(fe, status);
|
||||
+ if (r)
|
||||
+ return r;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
@@ -18189,7 +18152,7 @@ index 7446c8b..28e89f0 100644
|
||||
ccflags-y += -Idrivers/media/dvb-core/
|
||||
ccflags-y += -Idrivers/media/dvb-frontends/
|
||||
diff --git a/drivers/media/pci/ddbridge/ddbridge-core.c b/drivers/media/pci/ddbridge/ddbridge-core.c
|
||||
index 6e995ef..82c1938 100644
|
||||
index 47def73..82c1938 100644
|
||||
--- a/drivers/media/pci/ddbridge/ddbridge-core.c
|
||||
+++ b/drivers/media/pci/ddbridge/ddbridge-core.c
|
||||
@@ -1,7 +1,10 @@
|
||||
@@ -20069,7 +20032,7 @@ index 6e995ef..82c1938 100644
|
||||
{
|
||||
int ret;
|
||||
|
||||
@@ -759,1000 +1576,3010 @@ static int start_feed(struct dvb_demux_feed *dvbdmxfeed)
|
||||
@@ -759,999 +1576,3010 @@ static int start_feed(struct dvb_demux_feed *dvbdmxfeed)
|
||||
{
|
||||
struct dvb_demux *dvbdmx = dvbdmxfeed->demux;
|
||||
struct ddb_input *input = dvbdmx->priv;
|
||||
@@ -23465,10 +23428,9 @@ index 6e995ef..82c1938 100644
|
||||
- if (pci_enable_device(pdev) < 0)
|
||||
- return -ENODEV;
|
||||
-
|
||||
- dev = vmalloc(sizeof(struct ddb));
|
||||
- dev = vzalloc(sizeof(struct ddb));
|
||||
- if (dev == NULL)
|
||||
- return -ENOMEM;
|
||||
- memset(dev, 0, sizeof(struct ddb));
|
||||
-
|
||||
- dev->pdev = pdev;
|
||||
- pci_set_drvdata(pdev, dev);
|
||||
@@ -27881,7 +27843,7 @@ index ae917c0..02d22eb 100644
|
||||
|
||||
static struct cx24116_config anysee_cx24116_config = {
|
||||
diff --git a/drivers/media/usb/em28xx/em28xx-dvb.c b/drivers/media/usb/em28xx/em28xx-dvb.c
|
||||
index 1a5c012..335d16a 100644
|
||||
index 8cedef0..7bc7778 100644
|
||||
--- a/drivers/media/usb/em28xx/em28xx-dvb.c
|
||||
+++ b/drivers/media/usb/em28xx/em28xx-dvb.c
|
||||
@@ -376,6 +376,7 @@ static struct tda18271_config kworld_ub435q_v2_config = {
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user