diff options
Diffstat (limited to 'abs/core/xf86-video-intel')
7 files changed, 168 insertions, 13 deletions
diff --git a/abs/core/xf86-video-intel/20_thinkpad_g40_quirk.patch b/abs/core/xf86-video-intel/20_thinkpad_g40_quirk.patch new file mode 100644 index 0000000..c2c72a7 --- /dev/null +++ b/abs/core/xf86-video-intel/20_thinkpad_g40_quirk.patch @@ -0,0 +1,18 @@ +diff -Nurp xserver-xorg-video-intel-2.3.1-patched/src/i830_quirks.c xserver-xorg-video-intel-2.3.1-working/src/i830_quirks.c +--- xserver-xorg-video-intel-2.3.1-patched/src/i830_quirks.c 2008-06-20 00:05:23.000000000 -0700 ++++ xserver-xorg-video-intel-2.3.1-working/src/i830_quirks.c 2008-06-20 00:20:19.000000000 -0700 +@@ -266,9 +266,13 @@ static i830_quirk i830_quirk_list[] = { + /* HP Compaq 6730s has no TV output */ + { PCI_CHIP_IGD_GM, 0x103c, 0x30e8, quirk_ignore_tv }, + ++ /* Thinkpad G40 needs pipe A force quirk (See LP: #240457) */ ++ { PCI_CHIP_I855_GM, 0x1014, 0x0543, quirk_pipea_force }, + /* Thinkpad R31 needs pipe A force quirk */ + { PCI_CHIP_I830_M, 0x1014, 0x0505, quirk_pipea_force }, +- /* Dell Latitude D400 needs pipe A force quirk (LP: #228519) */ ++ /* Dell Latitude C400 needs pipe A force quirk (See LP: #216490) */ ++ { PCI_CHIP_I855_GM, 0x1028, 0x00c8, quirk_pipea_force }, ++ /* Dell Latitude D400 needs pipe A force quirk (See LP: #228519) */ + { PCI_CHIP_I855_GM, 0x1028, 0x0139, quirk_pipea_force }, + /* Dell Latitude D500 needs pipe A force quirk */ + { PCI_CHIP_I855_GM, 0x1028, 0x0152, quirk_pipea_force }, diff --git a/abs/core/xf86-video-intel/21_quirk_lenovo.patch b/abs/core/xf86-video-intel/21_quirk_lenovo.patch new file mode 100644 index 0000000..8479a40 --- /dev/null +++ b/abs/core/xf86-video-intel/21_quirk_lenovo.patch @@ -0,0 +1,12 @@ +diff -Nurp xserver-xorg-video-intel-2.3.2-1ubuntu2-patched/src/i830_quirks.c xserver-xorg-video-intel-2.3.2-1ubuntu2-working/src/i830_quirks.c +--- xserver-xorg-video-intel-2.3.2-1ubuntu2-patched/src/i830_quirks.c 2008-06-26 20:21:14.000000000 -0700 ++++ xserver-xorg-video-intel-2.3.2-1ubuntu2-working/src/i830_quirks.c 2008-06-26 20:30:23.000000000 -0700 +@@ -242,6 +242,8 @@ static i830_quirk i830_quirk_list[] = { + + /* Lenovo Napa TV (use dmi)*/ + { PCI_CHIP_I945_GM, 0x17aa, SUBSYS_ANY, quirk_lenovo_tv_dmi }, ++ /* Lenovo T60/R60 needs pipe A force quirk (See LP: #243405) */ ++ { PCI_CHIP_I945_GM, 0x17aa, 0x201a, quirk_pipea_force }, + /* Lenovo T61 has no TV output */ + { PCI_CHIP_I965_GM, 0x17aa, 0x20b5, quirk_ignore_tv }, + /* Lenovo 3000 v200 */ diff --git a/abs/core/xf86-video-intel/23_quirks_studiohybrid_eeepc_and_w251u.patch b/abs/core/xf86-video-intel/23_quirks_studiohybrid_eeepc_and_w251u.patch new file mode 100644 index 0000000..d82923f --- /dev/null +++ b/abs/core/xf86-video-intel/23_quirks_studiohybrid_eeepc_and_w251u.patch @@ -0,0 +1,13 @@ +diff -Nurp xserver-xorg-video-intel-2.4.1-patched/src/i830_quirks.c xserver-xorg-video-intel-2.4.1-working/src/i830_quirks.c +--- xserver-xorg-video-intel-2.4.1-patched/src/i830_quirks.c 2008-09-08 20:12:28.000000000 -0700 ++++ xserver-xorg-video-intel-2.4.1-working/src/i830_quirks.c 2008-09-08 21:02:53.000000000 -0700 +@@ -312,6 +317,9 @@ static i830_quirk i830_quirk_list[] = { + /* Sony vaio VGN-SZ4MN (See LP: #212163) */ + { PCI_CHIP_I830_M, 0x104d, 0x81e6, quirk_pipea_force }, + ++ /* Quanta Gigabyte W251U (See LP: #244242) */ ++ { PCI_CHIP_I945_GM, 0x152d, 0x0755, quirk_pipea_force }, ++ + /* Ordi Enduro UW31 (See LP: #152416) */ + { PCI_CHIP_I945_GM, 0x1584, 0x9900, quirk_ignore_tv }, + diff --git a/abs/core/xf86-video-intel/25_quirk_nc6110.patch b/abs/core/xf86-video-intel/25_quirk_nc6110.patch new file mode 100644 index 0000000..a6db410 --- /dev/null +++ b/abs/core/xf86-video-intel/25_quirk_nc6110.patch @@ -0,0 +1,13 @@ +diff --git a/src/i830_quirks.c b/src/i830_quirks.c +index 089e458..09b7c53 100644 +--- a/src/i830_quirks.c ++++ b/src/i830_quirks.c +@@ -278,6 +278,8 @@ static i830_quirk i830_quirk_list[] = { + /* Samsung Q45 has no TV output */ + { PCI_CHIP_I965_GM, 0x144d, 0xc510, quirk_ignore_tv }, + ++ /* HP Compaq nx6110 has no TV output */ ++ { PCI_CHIP_I915_GM, 0x103c, 0x099c, quirk_ignore_tv }, + /* HP Compaq 6730s has no TV output */ + { PCI_CHIP_GM45_GM, 0x103c, 0x30e8, quirk_ignore_tv }, + diff --git a/abs/core/xf86-video-intel/26_i830-use-lfp-data-ptrs.patch b/abs/core/xf86-video-intel/26_i830-use-lfp-data-ptrs.patch new file mode 100644 index 0000000..d74b809 --- /dev/null +++ b/abs/core/xf86-video-intel/26_i830-use-lfp-data-ptrs.patch @@ -0,0 +1,63 @@ +diff -Nurp patched/src/bios_reader/bios_reader.c working/src/bios_reader/bios_reader.c +--- patched/src/bios_reader/bios_reader.c 2008-10-16 14:06:07.000000000 -0700 ++++ working/src/bios_reader/bios_reader.c 2008-10-16 14:25:07.000000000 -0700 +@@ -180,6 +180,19 @@ static void dump_lvds_options(void *data + printf("\tPFIT mode: %d\n", options->pfit_mode); + } + ++static void dump_lvds_ptr_data(void *data, unsigned char *base) ++{ ++ struct bdb_lvds_lfp_data_ptrs *ptrs = data; ++ ++ struct lvds_fp_timing *fp_timing = ++ (struct lvds_fp_timing *)(base + ptrs->ptr[panel_type].fp_timing_offset); ++ ++ printf("LVDS timing pointer data:\n"); ++ ++ printf("\tpanel type %02i: %dx%d\n", panel_type, fp_timing->x_res, ++ fp_timing->y_res); ++} ++ + static void dump_lvds_data(void *data, unsigned char *base) + { + struct bdb_lvds_lfp_data *lvds_data = data; +@@ -274,6 +287,8 @@ int main(int argc, char **argv) + dump_general_definitions(find_section(bdb, BDB_GENERAL_DEFINITIONS)); + dump_lvds_options(find_section(bdb, BDB_LVDS_OPTIONS)); + dump_lvds_data(find_section(bdb, BDB_LVDS_LFP_DATA), bdb); ++ dump_lvds_ptr_data(find_section(bdb, BDB_LVDS_LFP_DATA_PTRS), ++ (unsigned char *)bdb); + + return 0; + } +diff -Nurp patched/src/i830_bios.c working/src/i830_bios.c +--- patched/src/i830_bios.c 2008-10-16 14:06:07.000000000 -0700 ++++ working/src/i830_bios.c 2008-10-16 14:27:15.000000000 -0700 +@@ -89,7 +89,8 @@ parse_panel_data(I830Ptr pI830, struct b + { + struct bdb_lvds_options *lvds_options; + struct bdb_lvds_lfp_data *lvds_lfp_data; +- struct bdb_lvds_lfp_data_entry *entry; ++ struct bdb_lvds_lfp_data_ptrs *lvds_lfp_data_ptrs; ++ int timing_offset; + DisplayModePtr fixed_mode; + unsigned char *timing_ptr; + +@@ -104,12 +105,13 @@ parse_panel_data(I830Ptr pI830, struct b + if (lvds_options->panel_type == 0xff) + return; + +- lvds_lfp_data = find_section(bdb, BDB_LVDS_LFP_DATA); +- if (!lvds_lfp_data) ++ lvds_lfp_data_ptrs = find_section(bdb, BDB_LVDS_LFP_DATA_PTRS); ++ if (!lvds_lfp_data_ptrs) + return; + +- entry = &lvds_lfp_data->data[lvds_options->panel_type]; +- timing_ptr = (unsigned char *)&entry->dvo_timing; ++ timing_offset = ++ lvds_lfp_data_ptrs->ptr[lvds_options->panel_type].dvo_timing_offset; ++ timing_ptr = (unsigned char *)bdb + timing_offset; + + fixed_mode = xnfalloc(sizeof(DisplayModeRec)); + memset(fixed_mode, 0, sizeof(*fixed_mode)); diff --git a/abs/core/xf86-video-intel/27_disable_fbc_on_965.patch b/abs/core/xf86-video-intel/27_disable_fbc_on_965.patch new file mode 100644 index 0000000..cc881b9 --- /dev/null +++ b/abs/core/xf86-video-intel/27_disable_fbc_on_965.patch @@ -0,0 +1,18 @@ +diff --git a/src/i830.h b/src/i830.h +index 5b78236..89f19d2 100644 +--- a/src/i830.h ++++ b/src/i830.h +@@ -950,6 +950,13 @@ static inline int i830_fb_compression_supported(I830Ptr pI830) + */ + if (!pI830->tiling || (IS_I965G(pI830) && pI830->accel <= ACCEL_XAA)) + return FALSE; ++ /* We have not gotten FBC to work consistently on 965GM. Our best ++ * working theory right now is that FBC simply isn't reliable on ++ * that device. See this bug report for more details: ++ * https://bugs.freedesktop.org/show_bug.cgi?id=16257 ++ */ ++ if (IS_I965GM(pI830)) ++ return FALSE; + return TRUE; + } + diff --git a/abs/core/xf86-video-intel/PKGBUILD b/abs/core/xf86-video-intel/PKGBUILD index 106ec41..3530b90 100644 --- a/abs/core/xf86-video-intel/PKGBUILD +++ b/abs/core/xf86-video-intel/PKGBUILD @@ -1,25 +1,43 @@ -# $Id: PKGBUILD 3246 2008-06-21 18:13:57Z jgc $ +# $Id: PKGBUILD 19083 2008-11-14 21:09:00Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> +# Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-intel -pkgver=2.3.2 +pkgver=2.4.3 pkgrel=1 -pkgdesc="X.org Intel i810/i830/i915 video drivers" +pkgdesc="X.org Intel i810/i830/i915/945G/G965+ video drivers" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('intel-dri' 'libdrm') -makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'xorg-util-macros' 'xf86driproto>=2.0.4' 'glproto>=1.4.9' 'mesa>=7.0.3') - -options=('!libtool') +depends=('intel-dri>=7.2' 'libpciaccess>=0.10.5' 'libdrm>=2.3.1') +makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'xf86driproto>=2.0.4' 'glproto>=1.4.9' 'mesa>=7.2' 'libdrm=2.3.1') +conflicts=('xorg-server<1.5.3' 'xf86-video-i810') +replaces=('xf86-video-i810') +options=('!libtool' 'force') groups=('xorg-video-drivers') -source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('fef32ffc428d9d565ab10b338ce17855') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 + 20_thinkpad_g40_quirk.patch + 21_quirk_lenovo.patch + 23_quirks_studiohybrid_eeepc_and_w251u.patch + 25_quirk_nc6110.patch + 26_i830-use-lfp-data-ptrs.patch + 27_disable_fbc_on_965.patch) +md5sums=('a664819288b98a37f77ab6ae1e14c9d9' + '68a362a168ffa4f37d9f722f43855468' + '2d617364ac2e47ca366901d0b849b1a1' + '3d0f8e593e8eac3000154feb6b0f45b8' + '3deb800906e6845e8576d4e9d0f22b12' + 'cb7ee7a68858c038020e0cd991143d8e' + 'd215e428585c6e55aefd9f525ebfbe7b') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/20_thinkpad_g40_quirk.patch" || return 1 + patch -Np1 -i "${srcdir}/21_quirk_lenovo.patch" || return 1 + patch -Np1 -i "${srcdir}/23_quirks_studiohybrid_eeepc_and_w251u.patch" || return 1 + patch -Np1 -i "${srcdir}/25_quirk_nc6110.patch" || return 1 + patch -Np1 -i "${srcdir}/26_i830-use-lfp-data-ptrs.patch" || return 1 + patch -Np1 -i "${srcdir}/27_disable_fbc_on_965.patch" || return 1 ./configure --prefix=/usr \ --enable-dri || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - rm -f ${startdir}/pkg/usr/lib/xorg/modules/drivers/i810_drv.so - rm -f ${startdir}/pkg/usr/share/man/man4/i810.4* + make DESTDIR="${pkgdir}" install || return 1 } |