diff --git a/packages/linux/package.mk b/packages/linux/package.mk index b41668f18a..30dc1144ff 100644 --- a/packages/linux/package.mk +++ b/packages/linux/package.mk @@ -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 diff --git a/packages/linux/patches/4.7.6/linux-231-Terratec-Cinergy-S2-Rev.3.patch b/packages/linux/patches/4.7.6/linux-231-Terratec-Cinergy-S2-Rev.3.patch deleted file mode 100644 index c662155e74..0000000000 --- a/packages/linux/patches/4.7.6/linux-231-Terratec-Cinergy-S2-Rev.3.patch +++ /dev/null @@ -1,51 +0,0 @@ -From: cvh -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 - diff --git a/packages/linux/patches/4.7.6/linux-004-fix-build-with-gcc-5.patch b/packages/linux/patches/4.8.1/linux-004-fix-build-with-gcc-5.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-004-fix-build-with-gcc-5.patch rename to packages/linux/patches/4.8.1/linux-004-fix-build-with-gcc-5.patch diff --git a/packages/linux/patches/4.7.6/linux-051-ouya_controller_support.patch b/packages/linux/patches/4.8.1/linux-051-ouya_controller_support.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-051-ouya_controller_support.patch rename to packages/linux/patches/4.8.1/linux-051-ouya_controller_support.patch diff --git a/packages/linux/patches/4.7.6/linux-052-XBOX_remote_support.patch b/packages/linux/patches/4.8.1/linux-052-XBOX_remote_support.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-052-XBOX_remote_support.patch rename to packages/linux/patches/4.8.1/linux-052-XBOX_remote_support.patch diff --git a/packages/linux/patches/4.7.6/linux-053-spinelplus-remote-0.2.patch b/packages/linux/patches/4.8.1/linux-053-spinelplus-remote-0.2.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-053-spinelplus-remote-0.2.patch rename to packages/linux/patches/4.8.1/linux-053-spinelplus-remote-0.2.patch diff --git a/packages/linux/patches/4.7.6/linux-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3.6.114c13.patch b/packages/linux/patches/4.8.1/linux-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3.6.114c13.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3.6.114c13.patch rename to packages/linux/patches/4.8.1/linux-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3.6.114c13.patch diff --git a/packages/linux/patches/4.7.6/linux-057-Removed-MCE-customer-code-restriction-in-rc6-decode.patch b/packages/linux/patches/4.8.1/linux-057-Removed-MCE-customer-code-restriction-in-rc6-decode.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-057-Removed-MCE-customer-code-restriction-in-rc6-decode.patch rename to packages/linux/patches/4.8.1/linux-057-Removed-MCE-customer-code-restriction-in-rc6-decode.patch diff --git a/packages/linux/patches/4.7.6/linux-058.05-hid_sony-add_autorepeat_for_PS3_remotes.patch b/packages/linux/patches/4.8.1/linux-058.05-hid_sony-add_autorepeat_for_PS3_remotes.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-058.05-hid_sony-add_autorepeat_for_PS3_remotes.patch rename to packages/linux/patches/4.8.1/linux-058.05-hid_sony-add_autorepeat_for_PS3_remotes.patch diff --git a/packages/linux/patches/4.7.6/linux-062-imon_pad_ignore_diagonal.patch b/packages/linux/patches/4.8.1/linux-062-imon_pad_ignore_diagonal.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-062-imon_pad_ignore_diagonal.patch rename to packages/linux/patches/4.8.1/linux-062-imon_pad_ignore_diagonal.patch diff --git a/packages/linux/patches/4.7.6/linux-203-stb0899_enable_low_symbol_rate.patch b/packages/linux/patches/4.8.1/linux-203-stb0899_enable_low_symbol_rate.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-203-stb0899_enable_low_symbol_rate.patch rename to packages/linux/patches/4.8.1/linux-203-stb0899_enable_low_symbol_rate.patch diff --git a/packages/linux/patches/4.7.6/linux-212-mantis_stb0899_faster_lock.patch b/packages/linux/patches/4.8.1/linux-212-mantis_stb0899_faster_lock.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-212-mantis_stb0899_faster_lock.patch rename to packages/linux/patches/4.8.1/linux-212-mantis_stb0899_faster_lock.patch diff --git a/packages/linux/patches/4.7.6/linux-221-ddbridge-features.patch b/packages/linux/patches/4.8.1/linux-221-ddbridge-features.patch similarity index 99% rename from packages/linux/patches/4.7.6/linux-221-ddbridge-features.patch rename to packages/linux/patches/4.8.1/linux-221-ddbridge-features.patch index 958d680c78..87eafb9f25 100644 --- a/packages/linux/patches/4.7.6/linux-221-ddbridge-features.patch +++ b/packages/linux/patches/4.8.1/linux-221-ddbridge-features.patch @@ -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 = { diff --git a/packages/linux/patches/4.7.6/linux-222-stb0899_signal_quality.patch b/packages/linux/patches/4.8.1/linux-222-stb0899_signal_quality.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-222-stb0899_signal_quality.patch rename to packages/linux/patches/4.8.1/linux-222-stb0899_signal_quality.patch diff --git a/packages/linux/patches/4.7.6/linux-227-ds3000-invalid-symbol-rate.patch b/packages/linux/patches/4.8.1/linux-227-ds3000-invalid-symbol-rate.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-227-ds3000-invalid-symbol-rate.patch rename to packages/linux/patches/4.8.1/linux-227-ds3000-invalid-symbol-rate.patch diff --git a/packages/linux/patches/4.7.6/linux-950-saa716x_PCIe_interface_chipset.patch.todo b/packages/linux/patches/4.8.1/linux-950-saa716x_PCIe_interface_chipset.patch.todo similarity index 100% rename from packages/linux/patches/4.7.6/linux-950-saa716x_PCIe_interface_chipset.patch.todo rename to packages/linux/patches/4.8.1/linux-950-saa716x_PCIe_interface_chipset.patch.todo diff --git a/packages/linux/patches/4.7.6/linux-990.06-hda-Avoid-outputting-HDMI-audio-before-prepare-.patch b/packages/linux/patches/4.8.1/linux-990.06-hda-Avoid-outputting-HDMI-audio-before-prepare-.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-990.06-hda-Avoid-outputting-HDMI-audio-before-prepare-.patch rename to packages/linux/patches/4.8.1/linux-990.06-hda-Avoid-outputting-HDMI-audio-before-prepare-.patch diff --git a/packages/linux/patches/4.7.6/linux-999-i915-extend-fake-hdmi-live-status-to-valley-view.patch b/packages/linux/patches/4.8.1/linux-999-i915-extend-fake-hdmi-live-status-to-valley-view.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-999-i915-extend-fake-hdmi-live-status-to-valley-view.patch rename to packages/linux/patches/4.8.1/linux-999-i915-extend-fake-hdmi-live-status-to-valley-view.patch diff --git a/packages/linux/patches/4.7.6/linux-999-i915-implement-passthrough-colors.patch b/packages/linux/patches/4.8.1/linux-999-i915-implement-passthrough-colors.patch similarity index 72% rename from packages/linux/patches/4.7.6/linux-999-i915-implement-passthrough-colors.patch rename to packages/linux/patches/4.8.1/linux-999-i915-implement-passthrough-colors.patch index 2721a94d53..37649c62ef 100644 --- a/packages/linux/patches/4.7.6/linux-999-i915-implement-passthrough-colors.patch +++ b/packages/linux/patches/4.8.1/linux-999-i915-implement-passthrough-colors.patch @@ -1,32 +1,20 @@ -From 7fa7c0b24aa134d5fdb65dc2a984c734b499f70e Mon Sep 17 00:00:00 2001 -From: fritsch -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 diff --git a/packages/linux/patches/4.7.6/linux-999-i915-use-legacy-turbo.patch b/packages/linux/patches/4.8.1/linux-999-i915-use-legacy-turbo.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-999-i915-use-legacy-turbo.patch rename to packages/linux/patches/4.8.1/linux-999-i915-use-legacy-turbo.patch diff --git a/packages/linux/patches/4.7.6/linux-999-partly-revert-media-rc-core.patch b/packages/linux/patches/4.8.1/linux-999-partly-revert-media-rc-core.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-999-partly-revert-media-rc-core.patch rename to packages/linux/patches/4.8.1/linux-999-partly-revert-media-rc-core.patch diff --git a/packages/linux/patches/4.7.6/linux-999.02-0001-pm-disable-async-suspend-resume-by-default.patch b/packages/linux/patches/4.8.1/linux-999.02-0001-pm-disable-async-suspend-resume-by-default.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-999.02-0001-pm-disable-async-suspend-resume-by-default.patch rename to packages/linux/patches/4.8.1/linux-999.02-0001-pm-disable-async-suspend-resume-by-default.patch diff --git a/packages/linux/patches/4.7.6/linux-999.05-eMMC-Don-t-initialize-partitions-on-RPMB-flagged-are.patch b/packages/linux/patches/4.8.1/linux-999.05-eMMC-Don-t-initialize-partitions-on-RPMB-flagged-are.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-999.05-eMMC-Don-t-initialize-partitions-on-RPMB-flagged-are.patch rename to packages/linux/patches/4.8.1/linux-999.05-eMMC-Don-t-initialize-partitions-on-RPMB-flagged-are.patch diff --git a/projects/Generic/patches/linux/linux-030-BYT-CHT-SOC-audio-support.patch b/projects/Generic/patches/linux/linux-030-BYT-CHT-SOC-audio-support.patch index 6c67e87f48..9d5d1c5b17 100644 --- a/projects/Generic/patches/linux/linux-030-BYT-CHT-SOC-audio-support.patch +++ b/projects/Generic/patches/linux/linux-030-BYT-CHT-SOC-audio-support.patch @@ -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 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 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 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 Signed-off-by: Pierre-Louis Bossart --- 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 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 Signed-off-by: Toyo Abe --- 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 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 @@ -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 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 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 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 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 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 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 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 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 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 Date: Fri, 1 Apr 2016 11:07:48 +0530 Subject: [PATCH 12/12] Create a platform device for hdmi audio driver and