mirror of
https://github.com/libretro/Lakka-LibreELEC.git
synced 2024-11-27 02:20:29 +00:00
linux: update to linux-4.8.1
This commit is contained in:
parent
d57f557dfc
commit
1b10b09d41
@ -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 = {
|
@ -1,32 +1,20 @@
|
||||
From 7fa7c0b24aa134d5fdb65dc2a984c734b499f70e Mon Sep 17 00:00:00 2001
|
||||
From: fritsch <peter.fruehberger@gmail.com>
|
||||
Date: Sun, 29 Nov 2015 16:38:14 +0100
|
||||
Subject: [PATCH] Intel: Implement Video Color Range (testing)
|
||||
|
||||
---
|
||||
drivers/gpu/drm/i915/i915_drv.h | 1 +
|
||||
drivers/gpu/drm/i915/intel_drv.h | 8 ++++++++
|
||||
drivers/gpu/drm/i915/intel_hdmi.c | 17 +++++++++++++++--
|
||||
drivers/gpu/drm/i915/intel_modes.c | 1 +
|
||||
4 files changed, 25 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
|
||||
index a01e515..9e4b8d0 100644
|
||||
index f68c789..a6b6dfe 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/i915_drv.h
|
||||
@@ -3450,6 +3450,7 @@ int intel_freq_opcode(struct drm_i915_private *dev_priv, int val);
|
||||
@@ -3948,6 +3948,7 @@ __raw_write(64, q)
|
||||
#define INTEL_BROADCAST_RGB_AUTO 0
|
||||
#define INTEL_BROADCAST_RGB_FULL 1
|
||||
#define INTEL_BROADCAST_RGB_LIMITED 2
|
||||
+#define INTEL_BROADCAST_RGB_VIDEO 3
|
||||
|
||||
static inline uint32_t i915_vgacntrl_reg(struct drm_device *dev)
|
||||
static inline i915_reg_t i915_vgacntrl_reg(struct drm_device *dev)
|
||||
{
|
||||
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
|
||||
index f2a1142..210e7a7 100644
|
||||
index ff399b9..f2ac0ff 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/intel_drv.h
|
||||
@@ -372,6 +372,13 @@ struct intel_crtc_state {
|
||||
@@ -522,6 +522,13 @@ struct intel_crtc_state {
|
||||
*/
|
||||
bool limited_color_range;
|
||||
|
||||
@ -37,11 +25,11 @@ index f2a1142..210e7a7 100644
|
||||
+ */
|
||||
+ bool video_color_range;
|
||||
+
|
||||
/* DP has a bunch of special case unfortunately, so mark the pipe
|
||||
* accordingly. */
|
||||
bool has_dp_encoder;
|
||||
@@ -682,6 +689,7 @@ struct intel_hdmi {
|
||||
int ddc_bus;
|
||||
/* Bitmask of encoder types (enum intel_output_type)
|
||||
* driven by the pipe.
|
||||
*/
|
||||
@@ -805,6 +812,7 @@ struct intel_hdmi {
|
||||
} dp_dual_mode;
|
||||
bool limited_color_range;
|
||||
bool color_range_auto;
|
||||
+ bool color_range_video;
|
||||
@ -49,10 +37,10 @@ index f2a1142..210e7a7 100644
|
||||
bool has_audio;
|
||||
enum hdmi_force_audio force_audio;
|
||||
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
index 81cdd9f..417f9be 100644
|
||||
index 4df9f38..8b64508 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
@@ -464,7 +464,8 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
|
||||
@@ -462,7 +462,8 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
|
||||
}
|
||||
|
||||
if (intel_hdmi->rgb_quant_range_selectable) {
|
||||
@ -62,16 +50,16 @@ index 81cdd9f..417f9be 100644
|
||||
frame.avi.quantization_range =
|
||||
HDMI_QUANTIZATION_RANGE_LIMITED;
|
||||
else
|
||||
@@ -1266,6 +1267,8 @@ bool intel_hdmi_compute_config(struct intel_encoder *encoder,
|
||||
@@ -1308,6 +1309,8 @@ bool intel_hdmi_compute_config(struct intel_encoder *encoder,
|
||||
pipe_config->limited_color_range =
|
||||
intel_hdmi->limited_color_range;
|
||||
}
|
||||
+ if (intel_hdmi->color_range_video)
|
||||
+ pipe_config->video_color_range = true;
|
||||
+ pipe_config->video_color_range = true;
|
||||
|
||||
if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK) {
|
||||
pipe_config->pixel_multiplier = 2;
|
||||
@@ -1485,25 +1488,35 @@ intel_hdmi_set_property(struct drm_connector *connector,
|
||||
@@ -1588,25 +1591,35 @@ intel_hdmi_set_property(struct drm_connector *connector,
|
||||
if (property == dev_priv->broadcast_rgb_property) {
|
||||
bool old_auto = intel_hdmi->color_range_auto;
|
||||
bool old_range = intel_hdmi->limited_color_range;
|
||||
@ -109,7 +97,7 @@ index 81cdd9f..417f9be 100644
|
||||
|
||||
goto done;
|
||||
diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c
|
||||
index 38a4c8c..c49681a 100644
|
||||
index f2584d0..5a6f853 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_modes.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_modes.c
|
||||
@@ -103,6 +103,7 @@ static const struct drm_prop_enum_list broadcast_rgb_names[] = {
|
||||
@ -120,5 +108,3 @@ index 38a4c8c..c49681a 100644
|
||||
};
|
||||
|
||||
void
|
||||
--
|
||||
2.5.0
|
@ -1,4 +1,4 @@
|
||||
From d7c07ade8f6b82a3fd299e749f98381f3c3c2057 Mon Sep 17 00:00:00 2001
|
||||
From 982a9c5bbe16cabc297e75d6d9e8d2926f5641b8 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Date: Wed, 2 Mar 2016 14:30:44 -0600
|
||||
Subject: [PATCH 01/12] drm: i915: remove intel_hdmi variable declaration
|
||||
@ -12,10 +12,10 @@ Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
index a884470..2adcc15 100644
|
||||
index 4df9f38..34e497f 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
@@ -1514,7 +1514,7 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
|
||||
@@ -1496,7 +1496,7 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
|
||||
intel_hdmi_unset_edid(connector);
|
||||
|
||||
if (intel_hdmi_set_edid(connector, live_status)) {
|
||||
@ -25,7 +25,7 @@ index a884470..2adcc15 100644
|
||||
hdmi_to_dig_port(intel_hdmi)->base.type = INTEL_OUTPUT_HDMI;
|
||||
status = connector_status_connected;
|
||||
|
||||
From 0dffccdf5025a92d38f18c1698e542a8bd2de903 Mon Sep 17 00:00:00 2001
|
||||
From 9a4bb140fbca791441bcf93ddf0a2ae062bc9945 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Date: Tue, 1 Mar 2016 16:25:04 -0600
|
||||
Subject: [PATCH 02/12] drm/i915: Add headers for non-HDAudio HDMI interface
|
||||
@ -43,10 +43,10 @@ Signed-off-by: David Henningsson <david.henningsson@canonical.com>
|
||||
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
---
|
||||
drivers/gpu/drm/i915/hdmi_audio_if.h | 125 +++++++++++++++++++++++++++++++++++
|
||||
drivers/gpu/drm/i915/i915_drv.h | 32 +++++++++
|
||||
drivers/gpu/drm/i915/i915_drv.h | 31 +++++++++
|
||||
drivers/gpu/drm/i915/i915_reg.h | 22 ++++++
|
||||
drivers/gpu/drm/i915/intel_drv.h | 13 ++++
|
||||
4 files changed, 192 insertions(+)
|
||||
4 files changed, 191 insertions(+)
|
||||
create mode 100644 drivers/gpu/drm/i915/hdmi_audio_if.h
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/hdmi_audio_if.h b/drivers/gpu/drm/i915/hdmi_audio_if.h
|
||||
@ -181,19 +181,18 @@ index 0000000..165bba5
|
||||
+
|
||||
+#endif /* __HDMI_AUDIO_IF_H */
|
||||
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
|
||||
index bc3f2e6..7c2577d 100644
|
||||
index f68c789..4c682fae 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/i915_drv.h
|
||||
@@ -61,6 +61,8 @@
|
||||
#include "i915_gem_gtt.h"
|
||||
@@ -63,6 +63,7 @@
|
||||
#include "i915_gem_render_state.h"
|
||||
|
||||
#include "intel_gvt.h"
|
||||
+#include "hdmi_audio_if.h"
|
||||
+
|
||||
|
||||
/* General customization:
|
||||
*/
|
||||
|
||||
@@ -1165,6 +1167,18 @@ struct intel_gen6_power_mgmt {
|
||||
@@ -1208,6 +1209,18 @@ struct intel_gen6_power_mgmt {
|
||||
struct mutex hw_lock;
|
||||
};
|
||||
|
||||
@ -212,7 +211,7 @@ index bc3f2e6..7c2577d 100644
|
||||
/* defined intel_pm.c */
|
||||
extern spinlock_t mchdev_lock;
|
||||
|
||||
@@ -1997,6 +2011,19 @@ struct drm_i915_private {
|
||||
@@ -2066,6 +2079,19 @@ struct drm_i915_private {
|
||||
|
||||
struct intel_encoder *dig_port_map[I915_MAX_PORTS];
|
||||
|
||||
@ -232,7 +231,7 @@ index bc3f2e6..7c2577d 100644
|
||||
/*
|
||||
* NOTE: This is the dri1/ums dungeon, don't add stuff here. Your patch
|
||||
* will be rejected. Instead look for a better place.
|
||||
@@ -3634,6 +3661,11 @@ int intel_freq_opcode(struct drm_i915_private *dev_priv, int val);
|
||||
@@ -3903,6 +3929,11 @@ int intel_freq_opcode(struct drm_i915_private *dev_priv, int val);
|
||||
} while (upper != old_upper && loop++ < 2); \
|
||||
(u64)upper << 32 | lower; })
|
||||
|
||||
@ -245,10 +244,10 @@ index bc3f2e6..7c2577d 100644
|
||||
#define POSTING_READ16(reg) (void)I915_READ16_NOTRACE(reg)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
|
||||
index 3fcf7dd..d3e5935 100644
|
||||
index bf2cad3..bb0378f2d 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_reg.h
|
||||
+++ b/drivers/gpu/drm/i915/i915_reg.h
|
||||
@@ -2113,7 +2113,25 @@ enum skl_disp_power_wells {
|
||||
@@ -2131,7 +2131,25 @@ enum skl_disp_power_wells {
|
||||
#define I915_WINVALID_INTERRUPT (1<<1)
|
||||
#define I915_USER_INTERRUPT (1<<1)
|
||||
#define I915_ASLE_INTERRUPT (1<<0)
|
||||
@ -274,7 +273,7 @@ index 3fcf7dd..d3e5935 100644
|
||||
|
||||
#define GEN6_BSD_RNCID _MMIO(0x12198)
|
||||
|
||||
@@ -3433,6 +3451,9 @@ enum skl_disp_power_wells {
|
||||
@@ -3468,6 +3486,9 @@ enum {
|
||||
#define _GEN3_SDVOC 0x61160
|
||||
#define GEN3_SDVOB _MMIO(_GEN3_SDVOB)
|
||||
#define GEN3_SDVOC _MMIO(_GEN3_SDVOC)
|
||||
@ -284,7 +283,7 @@ index 3fcf7dd..d3e5935 100644
|
||||
#define GEN4_HDMIB GEN3_SDVOB
|
||||
#define GEN4_HDMIC GEN3_SDVOC
|
||||
#define VLV_HDMIB _MMIO(VLV_DISPLAY_BASE + 0x61140)
|
||||
@@ -3442,6 +3463,7 @@ enum skl_disp_power_wells {
|
||||
@@ -3477,6 +3498,7 @@ enum {
|
||||
#define PCH_HDMIB PCH_SDVOB
|
||||
#define PCH_HDMIC _MMIO(0xe1150)
|
||||
#define PCH_HDMID _MMIO(0xe1160)
|
||||
@ -293,10 +292,10 @@ index 3fcf7dd..d3e5935 100644
|
||||
#define PORT_DFT_I9XX _MMIO(0x61150)
|
||||
#define DC_BALANCE_RESET (1 << 25)
|
||||
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
|
||||
index f7f0f01..2820ef2 100644
|
||||
index ff399b9..83915b1 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/intel_drv.h
|
||||
@@ -751,6 +751,14 @@ struct cxsr_latency {
|
||||
@@ -796,6 +796,14 @@ struct cxsr_latency {
|
||||
#define to_intel_plane_state(x) container_of(x, struct intel_plane_state, base)
|
||||
#define intel_fb_obj(x) (x ? to_intel_framebuffer(x)->obj : NULL)
|
||||
|
||||
@ -311,7 +310,7 @@ index f7f0f01..2820ef2 100644
|
||||
struct intel_hdmi {
|
||||
i915_reg_t hdmi_reg;
|
||||
int ddc_bus;
|
||||
@@ -766,6 +774,9 @@ struct intel_hdmi {
|
||||
@@ -811,6 +819,9 @@ struct intel_hdmi {
|
||||
bool rgb_quant_range_selectable;
|
||||
enum hdmi_picture_aspect aspect_ratio;
|
||||
struct intel_connector *attached_connector;
|
||||
@ -321,7 +320,7 @@ index f7f0f01..2820ef2 100644
|
||||
void (*write_infoframe)(struct drm_encoder *encoder,
|
||||
enum hdmi_infoframe_type type,
|
||||
const void *frame, ssize_t len);
|
||||
@@ -1196,6 +1207,8 @@ intel_rotation_90_or_270(unsigned int rotation)
|
||||
@@ -1263,6 +1274,8 @@ intel_rotation_90_or_270(unsigned int rotation)
|
||||
|
||||
void intel_create_rotation_property(struct drm_device *dev,
|
||||
struct intel_plane *plane);
|
||||
@ -331,7 +330,7 @@ index f7f0f01..2820ef2 100644
|
||||
void assert_pch_transcoder_disabled(struct drm_i915_private *dev_priv,
|
||||
enum pipe pipe);
|
||||
|
||||
From fdb02b86d0cc7c9ec341efdc3086aa703637f2b6 Mon Sep 17 00:00:00 2001
|
||||
From 0aca8e42f07b0f84970a39d7f91b33a9899001a9 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Date: Tue, 1 Mar 2016 16:25:04 -0600
|
||||
Subject: [PATCH 03/12] drm/i915: changes for non-HDAudio HDMI interface
|
||||
@ -361,15 +360,15 @@ Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Signed-off-by: Toyo Abe <toyo.abe@gmail.com>
|
||||
---
|
||||
drivers/gpu/drm/i915/i915_irq.c | 169 +++++++++++++++++++++++++++-
|
||||
drivers/gpu/drm/i915/intel_display.c | 103 ++++++++++++++++-
|
||||
drivers/gpu/drm/i915/intel_hdmi.c | 211 ++++++++++++++++++++++++++++++++++-
|
||||
3 files changed, 479 insertions(+), 4 deletions(-)
|
||||
drivers/gpu/drm/i915/intel_display.c | 100 +++++++++++++++++
|
||||
drivers/gpu/drm/i915/intel_hdmi.c | 212 ++++++++++++++++++++++++++++++++++-
|
||||
3 files changed, 478 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
|
||||
index aab47f7..3ef0d14 100644
|
||||
index 1c2aec3..93ad21e 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_irq.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_irq.c
|
||||
@@ -603,6 +603,42 @@ i915_disable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe,
|
||||
@@ -587,6 +587,42 @@ i915_disable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe,
|
||||
__i915_disable_pipestat(dev_priv, pipe, enable_mask, status_mask);
|
||||
}
|
||||
|
||||
@ -382,7 +381,7 @@ index aab47f7..3ef0d14 100644
|
||||
+ mask = dev_priv->hdmi_audio_interrupt_mask;
|
||||
+ mask |= I915_HDMI_AUDIO_UNDERRUN | I915_HDMI_AUDIO_BUFFER_DONE;
|
||||
+ /* Enable the interrupt, clear any pending status */
|
||||
+ if (IS_CHERRYVIEW(dev_priv->dev)) {
|
||||
+ if (IS_CHERRYVIEW(dev_priv)) {
|
||||
+ I915_WRITE(I915_LPE_AUDIO_HDMI_STATUS_C, mask);
|
||||
+ POSTING_READ(I915_LPE_AUDIO_HDMI_STATUS_C);
|
||||
+ } else {
|
||||
@ -399,7 +398,7 @@ index aab47f7..3ef0d14 100644
|
||||
+ mask = dev_priv->hdmi_audio_interrupt_mask;
|
||||
+ mask |= I915_HDMI_AUDIO_UNDERRUN | I915_HDMI_AUDIO_BUFFER_DONE;
|
||||
+ /* Disable the interrupt, clear any pending status */
|
||||
+ if (IS_CHERRYVIEW(dev_priv->dev)) {
|
||||
+ if (IS_CHERRYVIEW(dev_priv)) {
|
||||
+ I915_WRITE(I915_LPE_AUDIO_HDMI_STATUS_C, mask);
|
||||
+ POSTING_READ(I915_LPE_AUDIO_HDMI_STATUS_C);
|
||||
+
|
||||
@ -411,9 +410,9 @@ index aab47f7..3ef0d14 100644
|
||||
+
|
||||
/**
|
||||
* i915_enable_asle_pipestat - enable ASLE pipestat for OpRegion
|
||||
* @dev: drm device
|
||||
@@ -1651,6 +1687,24 @@ static bool intel_pipe_handle_vblank(struct drm_device *dev, enum pipe pipe)
|
||||
return true;
|
||||
* @dev_priv: i915 device private
|
||||
@@ -1618,6 +1654,24 @@ static bool intel_pipe_handle_vblank(struct drm_i915_private *dev_priv,
|
||||
return ret;
|
||||
}
|
||||
|
||||
+static inline
|
||||
@ -434,15 +433,15 @@ index aab47f7..3ef0d14 100644
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static void valleyview_pipestat_irq_ack(struct drm_device *dev, u32 iir,
|
||||
u32 pipe_stats[I915_MAX_PIPES])
|
||||
static void valleyview_pipestat_irq_ack(struct drm_i915_private *dev_priv,
|
||||
u32 iir, u32 pipe_stats[I915_MAX_PIPES])
|
||||
{
|
||||
@@ -1853,6 +1907,23 @@ static irqreturn_t valleyview_irq_handler(int irq, void *arg)
|
||||
i9xx_hpd_irq_handler(dev, hotplug_status);
|
||||
@@ -1817,6 +1871,23 @@ static irqreturn_t valleyview_irq_handler(int irq, void *arg)
|
||||
i9xx_hpd_irq_handler(dev_priv, hotplug_status);
|
||||
|
||||
valleyview_pipestat_irq_handler(dev, pipe_stats);
|
||||
valleyview_pipestat_irq_handler(dev_priv, pipe_stats);
|
||||
+
|
||||
+ if (IS_CHERRYVIEW(dev)) {
|
||||
+ if (IS_CHERRYVIEW(dev_priv)) {
|
||||
+ // FIXME: plb: why are pipes and status mapped this way?
|
||||
+ if (iir & I915_LPE_PIPE_C_INTERRUPT)
|
||||
+ i915_notify_audio_buffer_status(dev,
|
||||
@ -461,12 +460,12 @@ index aab47f7..3ef0d14 100644
|
||||
} while (0);
|
||||
|
||||
enable_rpm_wakeref_asserts(dev_priv);
|
||||
@@ -1930,6 +2001,23 @@ static irqreturn_t cherryview_irq_handler(int irq, void *arg)
|
||||
i9xx_hpd_irq_handler(dev, hotplug_status);
|
||||
@@ -1894,6 +1965,23 @@ static irqreturn_t cherryview_irq_handler(int irq, void *arg)
|
||||
i9xx_hpd_irq_handler(dev_priv, hotplug_status);
|
||||
|
||||
valleyview_pipestat_irq_handler(dev, pipe_stats);
|
||||
valleyview_pipestat_irq_handler(dev_priv, pipe_stats);
|
||||
+
|
||||
+ if (IS_CHERRYVIEW(dev)) {
|
||||
+ if (IS_CHERRYVIEW(dev_priv)) {
|
||||
+ // FIXME: plb: why are pipes and status mapped this way?
|
||||
+ if (iir & I915_LPE_PIPE_C_INTERRUPT)
|
||||
+ i915_notify_audio_buffer_status(dev,
|
||||
@ -485,7 +484,7 @@ index aab47f7..3ef0d14 100644
|
||||
} while (0);
|
||||
|
||||
enable_rpm_wakeref_asserts(dev_priv);
|
||||
@@ -2861,6 +2949,72 @@ static void gen8_disable_vblank(struct drm_device *dev, unsigned int pipe)
|
||||
@@ -2803,6 +2891,72 @@ static void gen8_disable_vblank(struct drm_device *dev, unsigned int pipe)
|
||||
spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags);
|
||||
}
|
||||
|
||||
@ -502,7 +501,7 @@ index aab47f7..3ef0d14 100644
|
||||
+
|
||||
+ imr = I915_READ(VLV_IMR);
|
||||
+
|
||||
+ if (IS_CHERRYVIEW(dev_priv->dev)) {
|
||||
+ if (IS_CHERRYVIEW(dev_priv)) {
|
||||
+ // FIXME: plb: looks wrong
|
||||
+
|
||||
+ //imr &= ~I915_LPE_PIPE_C_INTERRUPT;
|
||||
@ -534,7 +533,7 @@ index aab47f7..3ef0d14 100644
|
||||
+ spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
|
||||
+ imr = I915_READ(VLV_IMR);
|
||||
+
|
||||
+ if (IS_CHERRYVIEW(dev_priv->dev)) {
|
||||
+ if (IS_CHERRYVIEW(dev_priv)) {
|
||||
+ // FIXME: plb: looks wrong, should have other interrupts as well?
|
||||
+ //imr |= I915_LPE_PIPE_C_INTERRUPT;
|
||||
+ int_bit = (pipe ? (I915_LPE_PIPE_B_INTERRUPT >>
|
||||
@ -558,7 +557,7 @@ index aab47f7..3ef0d14 100644
|
||||
static bool
|
||||
ring_idle(struct intel_engine_cs *engine, u32 seqno)
|
||||
{
|
||||
@@ -3371,7 +3525,8 @@ static void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv)
|
||||
@@ -3293,7 +3447,8 @@ static void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv)
|
||||
u32 pipestat_mask;
|
||||
u32 enable_mask;
|
||||
enum pipe pipe;
|
||||
@ -568,11 +567,11 @@ index aab47f7..3ef0d14 100644
|
||||
pipestat_mask = PLANE_FLIP_DONE_INT_STATUS_VLV |
|
||||
PIPE_CRC_DONE_INTERRUPT_STATUS;
|
||||
|
||||
@@ -3385,6 +3540,18 @@ static void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv)
|
||||
@@ -3307,6 +3462,18 @@ static void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv)
|
||||
if (IS_CHERRYVIEW(dev_priv))
|
||||
enable_mask |= I915_DISPLAY_PIPE_C_EVENT_INTERRUPT;
|
||||
|
||||
+ if (IS_CHERRYVIEW(dev_priv->dev))
|
||||
+ if (IS_CHERRYVIEW(dev_priv))
|
||||
+ // FIXME: plb: looks wrong: what about other interrupts
|
||||
+ enable_mask |= I915_LPE_PIPE_C_INTERRUPT;
|
||||
+
|
||||
@ -580,7 +579,7 @@ index aab47f7..3ef0d14 100644
|
||||
+ I915_HDMI_AUDIO_BUFFER_DONE;
|
||||
+ I915_WRITE(I915_LPE_AUDIO_HDMI_STATUS_A, lpe_status_clear);
|
||||
+ I915_WRITE(I915_LPE_AUDIO_HDMI_STATUS_B, lpe_status_clear);
|
||||
+ if (IS_CHERRYVIEW(dev_priv->dev))
|
||||
+ if (IS_CHERRYVIEW(dev_priv))
|
||||
+ I915_WRITE(I915_LPE_AUDIO_HDMI_STATUS_C, lpe_status_clear);
|
||||
+
|
||||
+
|
||||
@ -588,28 +587,28 @@ index aab47f7..3ef0d14 100644
|
||||
|
||||
dev_priv->irq_mask = ~enable_mask;
|
||||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
||||
index 3074c56..5d162b8 100644
|
||||
index 175595f..d4499ff 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -7964,6 +7964,8 @@ static int chv_crtc_compute_clock(struct intel_crtc *crtc,
|
||||
@@ -8096,6 +8096,8 @@ static int chv_crtc_compute_clock(struct intel_crtc *crtc,
|
||||
{
|
||||
int refclk = 100000;
|
||||
const intel_limit_t *limit = &intel_limits_chv;
|
||||
const struct intel_limit *limit = &intel_limits_chv;
|
||||
+ struct drm_device *dev = crtc->base.dev;
|
||||
+ struct drm_i915_private *dev_priv = dev->dev_private;
|
||||
|
||||
memset(&crtc_state->dpll_hw_state, 0,
|
||||
sizeof(crtc_state->dpll_hw_state));
|
||||
@@ -7977,6 +7979,16 @@ static int chv_crtc_compute_clock(struct intel_crtc *crtc,
|
||||
@@ -8109,6 +8111,16 @@ static int chv_crtc_compute_clock(struct intel_crtc *crtc,
|
||||
|
||||
chv_compute_dpll(crtc, crtc_state);
|
||||
|
||||
+ /* Added for HDMI Audio */
|
||||
+ if ((IS_CHERRYVIEW(dev)) || (IS_VALLEYVIEW(dev))) {
|
||||
+ if (intel_pipe_will_have_type(crtc_state, INTEL_OUTPUT_HDMI)) {
|
||||
+ if ((IS_CHERRYVIEW(dev_priv)) || (IS_VALLEYVIEW(dev_priv))) {
|
||||
+ if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) {
|
||||
+ dev_priv->tmds_clock_speed = crtc_state->port_clock;
|
||||
+
|
||||
+ mid_hdmi_audio_signal_event(dev_priv->dev,
|
||||
+ mid_hdmi_audio_signal_event(dev,
|
||||
+ HAD_EVENT_MODE_CHANGING);
|
||||
+ }
|
||||
+ }
|
||||
@ -617,27 +616,25 @@ index 3074c56..5d162b8 100644
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -7985,7 +7997,9 @@ static int vlv_crtc_compute_clock(struct intel_crtc *crtc,
|
||||
@@ -8117,6 +8129,8 @@ static int vlv_crtc_compute_clock(struct intel_crtc *crtc,
|
||||
{
|
||||
int refclk = 100000;
|
||||
const intel_limit_t *limit = &intel_limits_vlv;
|
||||
-
|
||||
const struct intel_limit *limit = &intel_limits_vlv;
|
||||
+ struct drm_device *dev = crtc->base.dev;
|
||||
+ struct drm_i915_private *dev_priv = dev->dev_private;
|
||||
+
|
||||
|
||||
memset(&crtc_state->dpll_hw_state, 0,
|
||||
sizeof(crtc_state->dpll_hw_state));
|
||||
|
||||
@@ -7998,6 +8012,16 @@ static int vlv_crtc_compute_clock(struct intel_crtc *crtc,
|
||||
@@ -8130,6 +8144,16 @@ static int vlv_crtc_compute_clock(struct intel_crtc *crtc,
|
||||
|
||||
vlv_compute_dpll(crtc, crtc_state);
|
||||
|
||||
+ /* Added for HDMI Audio */
|
||||
+ if ((IS_CHERRYVIEW(dev)) || (IS_VALLEYVIEW(dev))) {
|
||||
+ if (intel_pipe_will_have_type(crtc_state, INTEL_OUTPUT_HDMI)) {
|
||||
+ if ((IS_CHERRYVIEW(dev_priv)) || (IS_VALLEYVIEW(dev_priv))) {
|
||||
+ if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) {
|
||||
+ dev_priv->tmds_clock_speed = crtc_state->port_clock;
|
||||
+
|
||||
+ mid_hdmi_audio_signal_event(dev_priv->dev,
|
||||
+ mid_hdmi_audio_signal_event(dev,
|
||||
+ HAD_EVENT_MODE_CHANGING);
|
||||
+ }
|
||||
+ }
|
||||
@ -645,15 +642,14 @@ index 3074c56..5d162b8 100644
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -14678,6 +14702,83 @@ static void intel_setup_outputs(struct drm_device *dev)
|
||||
@@ -14913,6 +14937,82 @@ static void intel_setup_outputs(struct drm_device *dev)
|
||||
drm_helper_move_panel_connectors_to_head(dev);
|
||||
}
|
||||
|
||||
+void chv_set_lpe_audio_reg_pipe(struct drm_device *dev,
|
||||
+ int encoder_type, enum port port)
|
||||
+{
|
||||
+ struct drm_i915_private *dev_priv = dev->dev_private;
|
||||
+ struct intel_encoder *intel_encoder;
|
||||
+ struct drm_i915_private *dev_priv = to_i915(dev);
|
||||
+ struct hdmi_audio_priv *hdmi_priv = get_hdmi_priv();
|
||||
+
|
||||
+ if(!hdmi_priv) {
|
||||
@ -730,7 +726,7 @@ index 3074c56..5d162b8 100644
|
||||
{
|
||||
struct drm_device *dev = fb->dev;
|
||||
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
index 2adcc15..c4ec79e 100644
|
||||
index 34e497f..67cbf17 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
@@ -38,6 +38,8 @@
|
||||
@ -742,7 +738,7 @@ index 2adcc15..c4ec79e 100644
|
||||
static struct drm_device *intel_hdmi_to_dev(struct intel_hdmi *intel_hdmi)
|
||||
{
|
||||
return hdmi_to_dig_port(intel_hdmi)->base.base.dev;
|
||||
@@ -1479,6 +1481,124 @@ intel_hdmi_set_edid(struct drm_connector *connector, bool force)
|
||||
@@ -1461,6 +1463,124 @@ intel_hdmi_set_edid(struct drm_connector *connector, bool force)
|
||||
return connected;
|
||||
}
|
||||
|
||||
@ -867,7 +863,7 @@ index 2adcc15..c4ec79e 100644
|
||||
static enum drm_connector_status
|
||||
intel_hdmi_detect(struct drm_connector *connector, bool force)
|
||||
{
|
||||
@@ -1487,6 +1607,8 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
|
||||
@@ -1469,6 +1589,8 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
|
||||
struct drm_i915_private *dev_priv = to_i915(connector->dev);
|
||||
bool live_status = false;
|
||||
unsigned int try;
|
||||
@ -876,7 +872,7 @@ index 2adcc15..c4ec79e 100644
|
||||
|
||||
DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n",
|
||||
connector->base.id, connector->name);
|
||||
@@ -1523,6 +1645,31 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
|
||||
@@ -1505,6 +1627,31 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
|
||||
|
||||
intel_display_power_put(dev_priv, POWER_DOMAIN_GMBUS);
|
||||
|
||||
@ -897,7 +893,7 @@ index 2adcc15..c4ec79e 100644
|
||||
+ /* Send a disconnect event to audio */
|
||||
+ if (inform_audio) {
|
||||
+ DRM_DEBUG_DRIVER("Sending event to audio");
|
||||
+ mid_hdmi_audio_signal_event(dev_priv->dev,
|
||||
+ mid_hdmi_audio_signal_event(dev,
|
||||
+ HAD_EVENT_HOT_UNPLUG);
|
||||
+ }
|
||||
+ }
|
||||
@ -908,7 +904,7 @@ index 2adcc15..c4ec79e 100644
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -1546,12 +1693,29 @@ intel_hdmi_force(struct drm_connector *connector)
|
||||
@@ -1528,12 +1675,29 @@ intel_hdmi_force(struct drm_connector *connector)
|
||||
static int intel_hdmi_get_modes(struct drm_connector *connector)
|
||||
{
|
||||
struct edid *edid;
|
||||
@ -918,7 +914,7 @@ index 2adcc15..c4ec79e 100644
|
||||
+ hdmi_to_dig_port(intel_hdmi);
|
||||
+ struct drm_device *dev = connector->dev;
|
||||
+ int ret;
|
||||
+ struct drm_i915_private *dev_priv = connector->dev->dev_private;
|
||||
+
|
||||
|
||||
edid = to_intel_connector(connector)->detect_edid;
|
||||
if (edid == NULL)
|
||||
@ -930,7 +926,7 @@ index 2adcc15..c4ec79e 100644
|
||||
+ if (i915_notify_had) {
|
||||
+ chv_set_lpe_audio_reg_pipe(dev, INTEL_OUTPUT_HDMI,
|
||||
+ intel_dig_port->port);
|
||||
+ mid_hdmi_audio_signal_event(dev_priv->dev,
|
||||
+ mid_hdmi_audio_signal_event(dev,
|
||||
+ HAD_EVENT_HOT_PLUG);
|
||||
+ i915_notify_had = 0;
|
||||
+ }
|
||||
@ -939,7 +935,7 @@ index 2adcc15..c4ec79e 100644
|
||||
}
|
||||
|
||||
static bool
|
||||
@@ -2258,6 +2422,20 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
|
||||
@@ -1907,6 +2071,21 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
|
||||
u32 temp = I915_READ(PEG_BAND_GAP_DATA);
|
||||
I915_WRITE(PEG_BAND_GAP_DATA, (temp & ~0xf) | 0xd);
|
||||
}
|
||||
@ -952,15 +948,16 @@ index 2adcc15..c4ec79e 100644
|
||||
+{
|
||||
+ struct drm_i915_private *dev_priv = container_of(work,
|
||||
+ struct drm_i915_private, hdmi_audio_wq);
|
||||
+ struct drm_device *dev = &dev_priv->drm;
|
||||
+
|
||||
+ if (i915_hdmi_state == connector_status_connected) {
|
||||
+ mid_hdmi_audio_signal_event(dev_priv->dev,
|
||||
+ HAD_EVENT_HOT_PLUG);
|
||||
+ mid_hdmi_audio_signal_event(dev,
|
||||
+ HAD_EVENT_HOT_PLUG);
|
||||
+ }
|
||||
}
|
||||
|
||||
void intel_hdmi_init(struct drm_device *dev,
|
||||
@@ -2266,7 +2444,10 @@ void intel_hdmi_init(struct drm_device *dev,
|
||||
@@ -1915,7 +2094,10 @@ void intel_hdmi_init(struct drm_device *dev,
|
||||
struct intel_digital_port *intel_dig_port;
|
||||
struct intel_encoder *intel_encoder;
|
||||
struct intel_connector *intel_connector;
|
||||
@ -972,7 +969,7 @@ index 2adcc15..c4ec79e 100644
|
||||
intel_dig_port = kzalloc(sizeof(*intel_dig_port), GFP_KERNEL);
|
||||
if (!intel_dig_port)
|
||||
return;
|
||||
@@ -2277,6 +2458,7 @@ void intel_hdmi_init(struct drm_device *dev,
|
||||
@@ -1926,6 +2108,7 @@ void intel_hdmi_init(struct drm_device *dev,
|
||||
return;
|
||||
}
|
||||
|
||||
@ -980,7 +977,7 @@ index 2adcc15..c4ec79e 100644
|
||||
intel_encoder = &intel_dig_port->base;
|
||||
|
||||
drm_encoder_init(dev, &intel_encoder->base, &intel_hdmi_enc_funcs,
|
||||
@@ -2336,4 +2518,29 @@ void intel_hdmi_init(struct drm_device *dev,
|
||||
@@ -1985,4 +2168,29 @@ void intel_hdmi_init(struct drm_device *dev,
|
||||
intel_dig_port->max_lanes = 4;
|
||||
|
||||
intel_hdmi_init_connector(intel_dig_port, intel_connector);
|
||||
@ -1011,7 +1008,7 @@ index 2adcc15..c4ec79e 100644
|
||||
+
|
||||
}
|
||||
|
||||
From bea9d15e00603196e4d138af691327bbf6a86af0 Mon Sep 17 00:00:00 2001
|
||||
From c2fc8a0fadd274be5b75f6ca10c3ca35c381d611 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Date: Tue, 1 Mar 2016 16:25:04 -0600
|
||||
Subject: [PATCH 04/12] drm/i915: power-related changes non-HDAudio HDMI
|
||||
@ -1516,10 +1513,10 @@ index 0000000..511311c
|
||||
+
|
||||
+#endif /*CONFIG_PM_RUNTIME*/
|
||||
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
|
||||
index 2863b92..883b13c 100644
|
||||
index 2d24813..23206de 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_pm.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_pm.c
|
||||
@@ -31,6 +31,17 @@
|
||||
@@ -32,6 +32,17 @@
|
||||
#include "../../../platform/x86/intel_ips.h"
|
||||
#include <linux/module.h>
|
||||
|
||||
@ -1537,15 +1534,15 @@ index 2863b92..883b13c 100644
|
||||
/**
|
||||
* DOC: RC6
|
||||
*
|
||||
@@ -7264,6 +7275,7 @@ void intel_init_clock_gating_hooks(struct drm_i915_private *dev_priv)
|
||||
@@ -7774,6 +7785,7 @@ void intel_init_clock_gating_hooks(struct drm_i915_private *dev_priv)
|
||||
void intel_init_pm(struct drm_device *dev)
|
||||
{
|
||||
struct drm_i915_private *dev_priv = dev->dev_private;
|
||||
struct drm_i915_private *dev_priv = to_i915(dev);
|
||||
+ gdev = dev;
|
||||
|
||||
intel_fbc_init(dev_priv);
|
||||
|
||||
@@ -7496,3 +7508,44 @@ void intel_pm_setup(struct drm_device *dev)
|
||||
@@ -8088,3 +8100,44 @@ void intel_pm_setup(struct drm_device *dev)
|
||||
atomic_set(&dev_priv->pm.wakeref_count, 0);
|
||||
atomic_set(&dev_priv->pm.atomic_seq, 0);
|
||||
}
|
||||
@ -1591,7 +1588,7 @@ index 2863b92..883b13c 100644
|
||||
+}
|
||||
+EXPORT_SYMBOL(ospm_power_using_hw_end);
|
||||
|
||||
From b172cffb536124dba41ff37793a67dc6f9a6a39c Mon Sep 17 00:00:00 2001
|
||||
From d37021d5405ce4eb5f42328b575f07fa5d6f34a9 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Date: Thu, 3 Mar 2016 11:08:10 -0600
|
||||
Subject: [PATCH 05/12] drm/i915: Add API code for non-HDAudio HDMI interface
|
||||
@ -1614,7 +1611,7 @@ Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/hdmi_audio_if.c b/drivers/gpu/drm/i915/hdmi_audio_if.c
|
||||
new file mode 100644
|
||||
index 0000000..c7c5f8f
|
||||
index 0000000..d176b25
|
||||
--- /dev/null
|
||||
+++ b/drivers/gpu/drm/i915/hdmi_audio_if.c
|
||||
@@ -0,0 +1,425 @@
|
||||
@ -1669,7 +1666,7 @@ index 0000000..c7c5f8f
|
||||
+ struct drm_i915_private *dev_priv =
|
||||
+ (struct drm_i915_private *) dev->dev_private;
|
||||
+ memcpy(hdmi_eld, eld, HAD_MAX_ELD_BYTES);
|
||||
+ mid_hdmi_audio_signal_event(dev_priv->dev, HAD_EVENT_HOT_PLUG);
|
||||
+ mid_hdmi_audio_signal_event(dev, HAD_EVENT_HOT_PLUG);
|
||||
+}
|
||||
+
|
||||
+static inline int android_hdmi_get_eld(struct drm_device *dev, void *eld)
|
||||
@ -2044,7 +2041,7 @@ index 0000000..c7c5f8f
|
||||
+EXPORT_SYMBOL(mid_hdmi_audio_register);
|
||||
+#endif
|
||||
|
||||
From 915a5b433454cab54cda47484390e84cfb8c7b5d Mon Sep 17 00:00:00 2001
|
||||
From fee88eee7f0b174a146bf612ef19bc0602b5f89b Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Date: Tue, 1 Mar 2016 16:25:04 -0600
|
||||
Subject: [PATCH 06/12] drm/i915: enable non-HDAudio HDMI interface Makefile
|
||||
@ -2064,12 +2061,12 @@ Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
|
||||
index 0b88ba0..57406b2 100644
|
||||
index 684fc1c..ea14a7c 100644
|
||||
--- a/drivers/gpu/drm/i915/Makefile
|
||||
+++ b/drivers/gpu/drm/i915/Makefile
|
||||
@@ -14,7 +14,8 @@ i915-y := i915_drv.o \
|
||||
i915_sysfs.o \
|
||||
@@ -16,7 +16,8 @@ i915-y := i915_drv.o \
|
||||
intel_csr.o \
|
||||
intel_device_info.o \
|
||||
intel_pm.o \
|
||||
- intel_runtime_pm.o
|
||||
+ intel_runtime_pm.o \
|
||||
@ -2077,8 +2074,8 @@ index 0b88ba0..57406b2 100644
|
||||
|
||||
i915-$(CONFIG_COMPAT) += i915_ioc32.o
|
||||
i915-$(CONFIG_DEBUG_FS) += i915_debugfs.o
|
||||
@@ -39,6 +40,7 @@ i915-y += i915_cmd_parser.o \
|
||||
i915_trace_points.o \
|
||||
@@ -42,6 +43,7 @@ i915-y += i915_cmd_parser.o \
|
||||
intel_breadcrumbs.o \
|
||||
intel_lrc.o \
|
||||
intel_mocs.o \
|
||||
+ i915_rpm.o \
|
||||
@ -2086,7 +2083,7 @@ index 0b88ba0..57406b2 100644
|
||||
intel_uncore.o
|
||||
|
||||
|
||||
From 8213760904b873b68e55f5c707921704d0ff4c8f Mon Sep 17 00:00:00 2001
|
||||
From 138e6f7e00064d2d94a76308771f4f4b7e528a48 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Date: Thu, 3 Mar 2016 11:09:26 -0600
|
||||
Subject: [PATCH 07/12] ALSA: Intel: Atom: add Atom non-HDAudio HDMI interface
|
||||
@ -2132,10 +2129,10 @@ index 5a240e0..75c679e 100644
|
||||
+ Choose this option to support HDMI.
|
||||
+
|
||||
diff --git a/sound/Makefile b/sound/Makefile
|
||||
index 7732070..f2c5e82 100644
|
||||
index c41bdf5..256f335 100644
|
||||
--- a/sound/Makefile
|
||||
+++ b/sound/Makefile
|
||||
@@ -8,6 +8,7 @@ obj-$(CONFIG_DMASOUND) += oss/
|
||||
@@ -7,6 +7,7 @@ obj-$(CONFIG_DMASOUND) += oss/
|
||||
obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ sh/ synth/ usb/ \
|
||||
firewire/ sparc/ spi/ parisc/ pcmcia/ mips/ soc/ atmel/ hda/
|
||||
obj-$(CONFIG_SND_AOA) += aoa/
|
||||
@ -5477,7 +5474,7 @@ index 0000000..acc407d
|
||||
+ return retval;
|
||||
+}
|
||||
|
||||
From 16eb2207449a5bf5115345384e78033cb13a0f3c Mon Sep 17 00:00:00 2001
|
||||
From ba7b36acd4d4f2bcf9c84c885d385d3d1327b221 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Date: Sat, 20 Feb 2016 18:08:41 -0600
|
||||
Subject: [PATCH 08/12] add dependency on PM_RUNTIME
|
||||
@ -5500,7 +5497,7 @@ index 75c679e..b8b4fce 100644
|
||||
help
|
||||
Choose this option to support HDMI.
|
||||
|
||||
From 6f73b34ca585c052de0732c02dece07126d36dbe Mon Sep 17 00:00:00 2001
|
||||
From 30f9d3b223b28623431348350cdf00409b8cef24 Mon Sep 17 00:00:00 2001
|
||||
From: David Henningsson <david.henningsson@canonical.com>
|
||||
Date: Fri, 21 Aug 2015 11:08:47 +0200
|
||||
Subject: [PATCH 09/12] hdmi_audio: Improve position reporting
|
||||
@ -5553,7 +5550,7 @@ index d8c5574..b2337c3 100644
|
||||
}
|
||||
|
||||
|
||||
From 3265fa5f1bea0e7820718a1c14528ba8620ee70a Mon Sep 17 00:00:00 2001
|
||||
From 25f0028061dcb8c4ed3d464419e4095570a68441 Mon Sep 17 00:00:00 2001
|
||||
From: David Henningsson <david.henningsson@canonical.com>
|
||||
Date: Fri, 21 Aug 2015 11:18:19 +0200
|
||||
Subject: [PATCH 10/12] hdmi_audio: Fixup some monitor
|
||||
@ -5605,7 +5602,7 @@ index b2337c3..1667748 100644
|
||||
return 0;
|
||||
}
|
||||
|
||||
From fbad36dca91688d71593b61bd170cf4c39eb24fb Mon Sep 17 00:00:00 2001
|
||||
From 0ef07c8e6cf8505f89ceab0b27895d8a21062d70 Mon Sep 17 00:00:00 2001
|
||||
From: Toyo Abe <toyo.abe@gmail.com>
|
||||
Date: Thu, 3 Mar 2016 12:57:41 +0900
|
||||
Subject: [PATCH 11/12] hdmi_audio: Fix mishandling of AUD_HDMI_STATUS_v2
|
||||
@ -5635,7 +5632,7 @@ index 1667748..86db38e 100644
|
||||
} else
|
||||
break;
|
||||
|
||||
From 9c175c10b955b2d6f2865bb4a1c2dcda6d57dbf6 Mon Sep 17 00:00:00 2001
|
||||
From 71729bb7f7f080b68e36a4e4b9f65fce67d5e869 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Anand <jerome.anand@intel.com>
|
||||
Date: Fri, 1 Apr 2016 11:07:48 +0530
|
||||
Subject: [PATCH 12/12] Create a platform device for hdmi audio driver and
|
||||
|
Loading…
Reference in New Issue
Block a user