summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libre-testing/linux-libre/0001-linux-4.6-drm-i915-psr.patch115
-rw-r--r--libre-testing/linux-libre/PKGBUILD36
-rw-r--r--libre-testing/linux-libre/config.armv7h26
3 files changed, 144 insertions, 33 deletions
diff --git a/libre-testing/linux-libre/0001-linux-4.6-drm-i915-psr.patch b/libre-testing/linux-libre/0001-linux-4.6-drm-i915-psr.patch
new file mode 100644
index 000000000..29ba7ea6b
--- /dev/null
+++ b/libre-testing/linux-libre/0001-linux-4.6-drm-i915-psr.patch
@@ -0,0 +1,115 @@
+From 03b7b5f983091bca17e9c163832fcde56971d7d1 Mon Sep 17 00:00:00 2001
+From: Daniel Vetter <daniel.vetter@ffwll.ch>
+Date: Wed, 18 May 2016 18:47:11 +0200
+Subject: drm/i915/psr: Try to program link training times correctly
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The default of 0 is 500us of link training, but that's not enough for
+some platforms. Decoding this correctly means we're using 2.5ms of
+link training on these platforms, which fixes flickering issues
+associated with enabling PSR.
+
+v2: Unbotch the math a bit.
+
+v3: Drop debug hunk.
+
+v4: Improve commit message.
+
+Tested-by: Lyude <cpaul@redhat.com>
+Cc: Lyude <cpaul@redhat.com>
+Cc: stable@vger.kernel.org
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=95176
+Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
+Cc: Sonika Jindal <sonika.jindal@intel.com>
+Cc: Durgadoss R <durgadoss.r@intel.com>
+Cc: "Pandiyan, Dhinakaran" <dhinakaran.pandiyan@intel.com>
+Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
+Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
+Tested-by: fritsch@kodi.tv
+Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463590036-17824-2-git-send-email-daniel.vetter@ffwll.ch
+(cherry picked from commit 50db139018f9c94376d5f4db94a3bae65fdfac14)
+Signed-off-by: Jani Nikula <jani.nikula@intel.com>
+---
+ drivers/gpu/drm/i915/intel_psr.c | 55 ++++++++++++++++++++++++++++++++++------
+ 1 file changed, 47 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c
+index c3abae4..a788d1e 100644
+--- a/drivers/gpu/drm/i915/intel_psr.c
++++ b/drivers/gpu/drm/i915/intel_psr.c
+@@ -280,7 +280,10 @@ static void hsw_psr_enable_source(struct intel_dp *intel_dp)
+ * with the 5 or 6 idle patterns.
+ */
+ uint32_t idle_frames = max(6, dev_priv->vbt.psr.idle_frames);
+- uint32_t val = 0x0;
++ uint32_t val = EDP_PSR_ENABLE;
++
++ val |= max_sleep_time << EDP_PSR_MAX_SLEEP_TIME_SHIFT;
++ val |= idle_frames << EDP_PSR_IDLE_FRAME_SHIFT;
+
+ if (IS_HASWELL(dev))
+ val |= EDP_PSR_MIN_LINK_ENTRY_TIME_8_LINES;
+@@ -288,14 +291,50 @@ static void hsw_psr_enable_source(struct intel_dp *intel_dp)
+ if (dev_priv->psr.link_standby)
+ val |= EDP_PSR_LINK_STANDBY;
+
+- I915_WRITE(EDP_PSR_CTL, val |
+- max_sleep_time << EDP_PSR_MAX_SLEEP_TIME_SHIFT |
+- idle_frames << EDP_PSR_IDLE_FRAME_SHIFT |
+- EDP_PSR_ENABLE);
++ if (dev_priv->vbt.psr.tp1_wakeup_time > 5)
++ val |= EDP_PSR_TP1_TIME_2500us;
++ else if (dev_priv->vbt.psr.tp1_wakeup_time > 1)
++ val |= EDP_PSR_TP1_TIME_500us;
++ else if (dev_priv->vbt.psr.tp1_wakeup_time > 0)
++ val |= EDP_PSR_TP1_TIME_100us;
++ else
++ val |= EDP_PSR_TP1_TIME_0us;
++
++ if (dev_priv->vbt.psr.tp2_tp3_wakeup_time > 5)
++ val |= EDP_PSR_TP2_TP3_TIME_2500us;
++ else if (dev_priv->vbt.psr.tp2_tp3_wakeup_time > 1)
++ val |= EDP_PSR_TP2_TP3_TIME_500us;
++ else if (dev_priv->vbt.psr.tp2_tp3_wakeup_time > 0)
++ val |= EDP_PSR_TP2_TP3_TIME_100us;
++ else
++ val |= EDP_PSR_TP2_TP3_TIME_0us;
++
++ if (intel_dp_source_supports_hbr2(intel_dp) &&
++ drm_dp_tps3_supported(intel_dp->dpcd))
++ val |= EDP_PSR_TP1_TP3_SEL;
++ else
++ val |= EDP_PSR_TP1_TP2_SEL;
++
++ I915_WRITE(EDP_PSR_CTL, val);
++
++ if (!dev_priv->psr.psr2_support)
++ return;
++
++ /* FIXME: selective update is probably totally broken because it doesn't
++ * mesh at all with our frontbuffer tracking. And the hw alone isn't
++ * good enough. */
++ val = EDP_PSR2_ENABLE | EDP_SU_TRACK_ENABLE;
++
++ if (dev_priv->vbt.psr.tp2_tp3_wakeup_time > 5)
++ val |= EDP_PSR2_TP2_TIME_2500;
++ else if (dev_priv->vbt.psr.tp2_tp3_wakeup_time > 1)
++ val |= EDP_PSR2_TP2_TIME_500;
++ else if (dev_priv->vbt.psr.tp2_tp3_wakeup_time > 0)
++ val |= EDP_PSR2_TP2_TIME_100;
++ else
++ val |= EDP_PSR2_TP2_TIME_50;
+
+- if (dev_priv->psr.psr2_support)
+- I915_WRITE(EDP_PSR2_CTL, EDP_PSR2_ENABLE |
+- EDP_SU_TRACK_ENABLE | EDP_PSR2_TP2_TIME_100);
++ I915_WRITE(EDP_PSR2_CTL, val);
+ }
+
+ static bool intel_psr_match_conditions(struct intel_dp *intel_dp)
+--
+cgit v0.12
+
diff --git a/libre-testing/linux-libre/PKGBUILD b/libre-testing/linux-libre/PKGBUILD
index 1293c047d..286306ddc 100644
--- a/libre-testing/linux-libre/PKGBUILD
+++ b/libre-testing/linux-libre/PKGBUILD
@@ -11,7 +11,7 @@
pkgbase=linux-libre # Build stock kernel
#pkgbase=linux-libre-custom # Build kernel with a different name
_pkgbasever=4.6-gnu
-_pkgver=${_pkgbasever}
+_pkgver=4.6.1-gnu
_replacesarchkernel=('linux%') # '%' gets replaced with _kernelname
_replacesoldkernels=() # '%' gets replaced with _kernelname
@@ -20,20 +20,18 @@ _replacesoldmodules=() # '%' gets replaced with _kernelname
_srcname=linux-${_pkgbasever%-*}
_archpkgver=${_pkgver%-*}
pkgver=${_pkgver//-/_}
-pkgrel=1
-rcnrel=armv7-x2
+pkgrel=2
+rcnrel=armv7-x4
arch=('i686' 'x86_64' 'armv7h')
url="http://linux-libre.fsfla.org/"
license=('GPL2')
-makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc')
-if [ "${CARCH}" = "armv7h" ]; then
- makedepends+=('git')
-fi
+makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc' 'libelf')
+makedepends_armv7h=('git')
options=('!strip')
source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/linux-libre-${_pkgbasever}.tar.xz"
"http://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/linux-libre-${_pkgbasever}.tar.xz.sign"
- #"http://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgver}/patch-${_pkgbasever}-${_pkgver}.xz"
- #"http://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgver}/patch-${_pkgbasever}-${_pkgver}.xz.sign"
+ "http://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgver}/patch-${_pkgbasever}-${_pkgver}.xz"
+ "http://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgver}/patch-${_pkgbasever}-${_pkgver}.xz.sign"
"https://repo.parabola.nu/other/linux-libre/logos/logo_linux_clut224.ppm"
"https://repo.parabola.nu/other/linux-libre/logos/logo_linux_clut224.ppm.sig"
"https://repo.parabola.nu/other/linux-libre/logos/logo_linux_mono.pbm"
@@ -45,6 +43,7 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/li
# standard config files for mkinitcpio ramdisk
'linux.preset'
'change-default-console-loglevel.patch'
+ '0001-linux-4.6-drm-i915-psr.patch'
'0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch'
'0002-fix-Atmel-maXTouch-touchscreen-support.patch'
# armv7h patches
@@ -60,6 +59,8 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/li
'0008-USB-armory-support.patch')
sha256sums=('c3726ad785b2f4534c78a2cff1dd09906dde8b82775e55860a6091b16bf62ef8'
'SKIP'
+ '663f30c19792e5de130d3adbb41d0ce76c03717b38e596c23e4c62ec29ff10f0'
+ 'SKIP'
'bfd4a7f61febe63c880534dcb7c31c5b932dde6acf991810b41a939a93535494'
'SKIP'
'13bd7a8d9ed6b6bc971e4cd162262c5a20448a83796af39ce394d827b0e5de74'
@@ -68,12 +69,13 @@ sha256sums=('c3726ad785b2f4534c78a2cff1dd09906dde8b82775e55860a6091b16bf62ef8'
'SKIP'
'61e60b3a914744d85b030aa1c5f923308fcb9c05ac244d01b8b25820de9cdac0'
'7959e923a90555432db595b9da677668839bd37ef4f2c920d22eb7ab9013e63e'
- '7fe3eabb27fbfab161df63dba1d638f60074b8ad8c39f9c78c83d4265027500c'
+ '7a286c6d42c2b7cbf778428e215a61fd13958d6a89349a7f508a76b738d4bace'
'f0d90e756f14533ee67afda280500511a62465b4f76adcc5effa95a40045179c'
'1256b241cd477b265a3c2d64bdc19ffe3c9bbcee82ea3994c590c2c76e767d99'
+ 'b719c3bd58d71a9e0d76b3674e854419ebec4a3fa9f8a4823f23639720527e83'
'0376bd5efa31d4e2a9d52558777cebd9f0941df8e1adab916c868bf0c05f2fc3'
'351fd96be8cd5ebd0435c0a8a978673fc023e3b1026085e67f86d815b2285e25'
- 'd05febd9fdec0ea8c7e21e01beabb6b2b0f7f021d41538077b5c6ec27bacf9fe'
+ 'f74b28e9e3b6434c1bb7803f9751a068299206953519a9e61162538f5dd8be7e'
'SKIP'
'9fc2533ed95497583752c6eca931f24c159be956fcc49d39cac64da7298a9c88'
'909c046f6123ec81764fde5d9a78431a9dc3b206ce01119ae4d91be54d9471dd'
@@ -137,6 +139,10 @@ prepare() {
# (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
patch -p1 -i "${srcdir}/change-default-console-loglevel.patch"
+ # fix flickering on 4.6
+ # reported from brain0 and heftig on IRC
+ patch -p1 -i "${srcdir}/0001-linux-4.6-drm-i915-psr.patch"
+
# maintain the TTY over USB disconnects
# http://www.coreboot.org/EHCI_Gadget_Debug
patch -p1 -i "${srcdir}/0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch"
@@ -187,10 +193,10 @@ _package() {
provides=("${_replacesarchkernel[@]/%/=${_archpkgver}}")
conflicts=("${_replacesarchkernel[@]}" "${_replacesoldkernels[@]}" "${_replacesoldmodules[@]}")
replaces=("${_replacesarchkernel[@]}" "${_replacesoldkernels[@]}" "${_replacesoldmodules[@]}")
- if [ "${CARCH}" = "x86_64" ] || [ "${CARCH}" = "i686" ]; then
- depends+=('mkinitcpio>=0.7')
- backup=("etc/mkinitcpio.d/${pkgbase}.preset")
- fi
+ depends_i686=('mkinitcpio>=0.7')
+ depends_x86_64=('mkinitcpio>=0.7')
+ backup_i686=("etc/mkinitcpio.d/${pkgbase}.preset")
+ backup_x86_64=("etc/mkinitcpio.d/${pkgbase}.preset")
install=linux.install
cd "${srcdir}/${_srcname}"
diff --git a/libre-testing/linux-libre/config.armv7h b/libre-testing/linux-libre/config.armv7h
index 58985d040..a417170df 100644
--- a/libre-testing/linux-libre/config.armv7h
+++ b/libre-testing/linux-libre/config.armv7h
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/arm 4.6.0-gnu-1 Kernel Configuration
+# Linux/arm 4.6.1-gnu-1 Kernel Configuration
#
CONFIG_ARM=y
CONFIG_ARM_HAS_SG_CHAIN=y
@@ -271,7 +271,9 @@ CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
# CONFIG_MODULE_SIG is not set
-# CONFIG_MODULE_COMPRESS is not set
+CONFIG_MODULE_COMPRESS=y
+CONFIG_MODULE_COMPRESS_GZIP=y
+# CONFIG_MODULE_COMPRESS_XZ is not set
CONFIG_MODULES_TREE_LOOKUP=y
CONFIG_BLOCK=y
CONFIG_LBDAF=y
@@ -666,12 +668,13 @@ CONFIG_PCI_STUB=m
#
CONFIG_PCI_DRA7XX=y
CONFIG_PCI_MVEBU=y
-# CONFIG_PCIE_DW_PLAT is not set
+CONFIG_PCIE_DW_PLAT=y
CONFIG_PCIE_DW=y
# CONFIG_PCI_EXYNOS is not set
CONFIG_PCI_IMX6=y
CONFIG_PCI_TEGRA=y
-# CONFIG_PCI_HOST_GENERIC is not set
+CONFIG_PCI_HOST_COMMON=y
+CONFIG_PCI_HOST_GENERIC=y
# CONFIG_PCI_KEYSTONE is not set
CONFIG_PCIE_XILINX=y
# CONFIG_PCI_LAYERSCAPE is not set
@@ -782,8 +785,7 @@ CONFIG_KEXEC=y
CONFIG_ATAGS_PROC=y
# CONFIG_CRASH_DUMP is not set
CONFIG_AUTO_ZRELADDR=y
-CONFIG_EFI_STUB=y
-CONFIG_EFI=y
+# CONFIG_EFI is not set
#
# CPU Power Management
@@ -6354,7 +6356,6 @@ CONFIG_RTC_DRV_DS2404=m
CONFIG_RTC_DRV_DA9052=y
CONFIG_RTC_DRV_DA9055=m
CONFIG_RTC_DRV_DA9063=m
-CONFIG_RTC_DRV_EFI=y
CONFIG_RTC_DRV_STK17TA8=m
CONFIG_RTC_DRV_M48T86=m
CONFIG_RTC_DRV_M48T35=m
@@ -7229,15 +7230,6 @@ CONFIG_RASPBERRYPI_FIRMWARE=y
CONFIG_HAVE_ARM_SMCCC=y
#
-# EFI (Extensible Firmware Interface) Support
-#
-CONFIG_EFI_VARS=m
-CONFIG_EFI_ESRT=y
-CONFIG_EFI_PARAMS_FROM_FDT=y
-CONFIG_EFI_RUNTIME_WRAPPERS=y
-CONFIG_EFI_ARMSTUB=y
-
-#
# File systems
#
CONFIG_DCACHE_WORD_ACCESS=y
@@ -7354,7 +7346,6 @@ CONFIG_TMPFS_POSIX_ACL=y
CONFIG_TMPFS_XATTR=y
# CONFIG_HUGETLB_PAGE is not set
CONFIG_CONFIGFS_FS=y
-CONFIG_EFIVAR_FS=m
CONFIG_MISC_FILESYSTEMS=y
CONFIG_ORANGEFS_FS=m
CONFIG_ADFS_FS=m
@@ -7983,7 +7974,6 @@ CONFIG_IRQ_POLL=y
CONFIG_MPILIB=m
CONFIG_LIBFDT=y
CONFIG_OID_REGISTRY=y
-CONFIG_UCS2_STRING=y
CONFIG_FONT_SUPPORT=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y