diff options
Diffstat (limited to 'libre-testing')
-rw-r--r-- | libre-testing/linux-libre/0001-linux-4.6-drm-i915-psr.patch | 115 | ||||
-rw-r--r-- | libre-testing/linux-libre/PKGBUILD | 36 | ||||
-rw-r--r-- | libre-testing/linux-libre/config.armv7h | 26 |
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 |