Browse Source

make intel driver work on ibm x40

- add kernel support for AGP/DRM/KMS
- update intel driver
- fix MesaLib (add the correct driver)
Waldemar Brodkorb 13 years ago
parent
commit
7ccb968052

+ 9 - 14
package/MesaLib/Makefile

@@ -5,11 +5,11 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=		MesaLib
 PKG_VERSION:=		7.8.2
-PKG_RELEASE:=		1
+PKG_RELEASE:=		2
 PKG_MD5SUM:=		c89b63d253605ed40e8ac370d25a833c
 PKG_DESCR:=		MESA library
 PKG_SECTION:=		libs
-PKG_DEPENDS:=		libxdamage libxfixes libdrm
+PKG_DEPENDS:=		libxdamage libxfixes libdrm libxxf86vm
 PKG_BUILDDEP:=		libXdamage libXfixes libXxf86vm libdrm
 PKG_BUILDDEP+=		dri2proto glproto expat
 PKG_URL:=		http://www.mesa3d.org/
@@ -32,22 +32,15 @@ $(eval $(call PKG_template,MESALIB,mesalib,$(PKG_VERSION)-${PKG_RELEASE},${PKG_D
 $(eval $(call PKG_template,GLXINFO,glxinfo,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_GLXINFO},${PKGSC_GLXINFO}))
 $(eval $(call PKG_template,GLXGEARS,glxgears,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_GLXGEARS},${PKGSC_GLXGEARS}))
 
-ifeq (${ADK_LINUX_X86_IBMX40},y)
-DRI_DRIVERS:=i810
-endif
-
-# Lemote's SMI712 is not directly supported by Mesa,
-# and at least some SIS driver fails to build when
-# keeping the driver auto-selection intact.
-ifeq (${ADK_LINUX_MIPS64_LEMOTE},y)
-DRI_DRIVERS:=swrast
+ifeq (${ADK_HARDWARE_IBMX40},y)
+DRI_DRIVERS:=i915
 endif
 
 CONFIGURE_ARGS+=	--disable-static \
 			--disable-gallium \
 			--disable-glw \
 			--with-driver=dri \
-			--with-dri-drivers=${DRI_DRIVERS} \
+			--with-dri-drivers=${DRI_DRIVERS},swrast \
 			--with-demos=xdemos
 
 XAKE_FLAGS+=		HOST_CC=${HOSTCC}
@@ -70,10 +63,12 @@ post-install:
 	$(INSTALL_DIR) $(IDIR_MESALIB)/usr/lib/dri
 	$(CP) $(WRKINST)/usr/lib/libGL*.so* \
 		$(IDIR_MESALIB)/usr/lib
-ifeq (${ADK_LINUX_MIPS64_LEMOTE},y)
-	${CP} $(WRKINST)/usr/lib/dri/swrast_dri.so \
+ifeq (${ADK_HARDWARE_IBMX40},y)
+	${CP} $(WRKINST)/usr/lib/dri/i915_dri.so \
 		${IDIR_MESALIB}/usr/lib/dri/
 endif
+	${CP} $(WRKINST)/usr/lib/dri/swrast_dri.so \
+		${IDIR_MESALIB}/usr/lib/dri/
 	${INSTALL_DIR} ${IDIR_GLXINFO}/usr/bin
 	${INSTALL_BIN} ${WRKBUILD}/progs/xdemos/glxinfo \
 		${IDIR_GLXINFO}/usr/bin/

+ 2 - 2
package/libdrm/Makefile

@@ -4,9 +4,9 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=		libdrm
-PKG_VERSION:=		2.4.20
+PKG_VERSION:=		2.4.22
 PKG_RELEASE:=		1
-PKG_MD5SUM:=		dcbf9aa0497c84c7e4af15adb0021955
+PKG_MD5SUM:=		baf6e005001c8cf739b499bcf2ca9dfb
 PKG_DESCR:=		DRM library
 PKG_SECTION:=		libs
 PKG_BUILDDEP:=		libpthread-stubs

+ 4 - 4
package/xf86-video-intel/Makefile

@@ -4,14 +4,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=		xf86-video-intel
-PKG_VERSION:=		2.9.1
+PKG_VERSION:=		2.13.0
 PKG_RELEASE:=		1
-PKG_MD5SUM:=		b1926dc68cc10209fc2200729fb6162b
+PKG_MD5SUM:=		df7e3644a34e97ead09f083ab48d4457
 PKG_DESCR:=		X11 driver for Intel VGA chip
 PKG_SECTION:=		x11/drivers
 PKG_DEPENDS:=		xorg-server libdrm
 PKG_BUILDDEP:=		xorg-server libdrm
-PKG_SITES:=		http://www.x.org/releases/X11R7.5/src/driver/
+PKG_SITES:=		http://xorg.freedesktop.org/archive/individual/driver/
 
 include $(TOPDIR)/mk/package.mk
 
@@ -21,7 +21,7 @@ CONFIGURE_ARGS+=	--enable-dri
 
 post-install:
 	${INSTALL_DIR} ${IDIR_XF86_VIDEO_INTEL}/usr/lib/xorg/modules/drivers
-	${CP} ${WRKINST}/usr/lib/xorg/modules/drivers/intel_drv.so \
+	${CP} ${WRKINST}/usr/lib/xorg/modules/drivers/*.so \
 		${IDIR_XF86_VIDEO_INTEL}/usr/lib/xorg/modules/drivers/
 
 include ${TOPDIR}/mk/pkg-bottom.mk

+ 11 - 21
package/xf86-video-intel/patches/patch-configure

@@ -1,42 +1,32 @@
---- xf86-video-intel-2.9.1.orig/configure	2009-10-26 12:53:35.000000000 +0100
-+++ xf86-video-intel-2.9.1/configure	2010-04-21 19:57:36.000000000 +0200
-@@ -12283,9 +12283,6 @@ if test x$DRI != xno; then
+--- xf86-video-intel-2.13.0.orig/configure	2010-09-30 17:46:13.000000000 +0200
++++ xf86-video-intel-2.13.0/configure	2010-11-24 22:05:13.100685362 +0100
+@@ -11623,9 +11623,6 @@ if test x$DRI != xno; then
  $as_echo_n "checking for ${sdkdir}/dri.h... " >&6; }
- if { as_var=$as_ac_File; eval "test \"\${$as_var+set}\" = set"; }; then :
+ if eval "test \"\${$as_ac_File+set}\"" = set; then :
    $as_echo_n "(cached) " >&6
 -else
 -  test "$cross_compiling" = yes &&
--  as_fn_error "cannot check for file existence when cross compiling" "$LINENO" 5
+-  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
  if test -r "${sdkdir}/dri.h"; then
    eval "$as_ac_File=yes"
  else
-@@ -12307,9 +12304,6 @@ fi
+@@ -11646,9 +11643,6 @@ fi
  $as_echo_n "checking for ${sdkdir}/sarea.h... " >&6; }
- if { as_var=$as_ac_File; eval "test \"\${$as_var+set}\" = set"; }; then :
+ if eval "test \"\${$as_ac_File+set}\"" = set; then :
    $as_echo_n "(cached) " >&6
 -else
 -  test "$cross_compiling" = yes &&
--  as_fn_error "cannot check for file existence when cross compiling" "$LINENO" 5
+-  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
  if test -r "${sdkdir}/sarea.h"; then
    eval "$as_ac_File=yes"
  else
-@@ -12331,9 +12325,6 @@ fi
+@@ -11669,9 +11663,6 @@ fi
  $as_echo_n "checking for ${sdkdir}/dristruct.h... " >&6; }
- if { as_var=$as_ac_File; eval "test \"\${$as_var+set}\" = set"; }; then :
+ if eval "test \"\${$as_ac_File+set}\"" = set; then :
    $as_echo_n "(cached) " >&6
 -else
 -  test "$cross_compiling" = yes &&
--  as_fn_error "cannot check for file existence when cross compiling" "$LINENO" 5
+-  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
  if test -r "${sdkdir}/dristruct.h"; then
    eval "$as_ac_File=yes"
  else
-@@ -12927,9 +12918,6 @@ else
- $as_echo_n "checking for $XORG_SGML_PATH/X11/defs.ent... " >&6; }
- if { as_var=$as_ac_File; eval "test \"\${$as_var+set}\" = set"; }; then :
-   $as_echo_n "(cached) " >&6
--else
--  test "$cross_compiling" = yes &&
--  as_fn_error "cannot check for file existence when cross compiling" "$LINENO" 5
- if test -r "$XORG_SGML_PATH/X11/defs.ent"; then
-   eval "$as_ac_File=yes"
- else

+ 0 - 109
package/xf86-video-intel/patches/patch-src_i830_h

@@ -1,109 +0,0 @@
---- xf86-video-intel-2.9.1.orig/src/i830.h	2009-10-26 12:48:05.000000000 +0100
-+++ xf86-video-intel-2.9.1/src/i830.h	2010-04-19 20:20:51.000000000 +0200
-@@ -61,6 +61,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN
- #include "xorg-server.h"
- #include <pciaccess.h>
- 
-+#ifdef XF86DRI
- #include "xf86drm.h"
- #include "sarea.h"
- #define _XF86DRI_SERVER_
-@@ -69,16 +70,19 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN
- #include "i830_dri.h"
- #include "intel_bufmgr.h"
- #include "i915_drm.h"
-+#endif
- 
- #include "uxa.h"
- Bool i830_uxa_init(ScreenPtr pScreen);
- void i830_uxa_create_screen_resources(ScreenPtr pScreen);
- void i830_uxa_block_handler (ScreenPtr pScreen);
-+#ifdef XF86DRI
- Bool i830_get_aperture_space(ScrnInfoPtr pScrn, drm_intel_bo **bo_table,
- 			     int num_bos);
- 
- dri_bo *i830_get_pixmap_bo (PixmapPtr pixmap);
- void i830_set_pixmap_bo(PixmapPtr pixmap, dri_bo *bo);
-+#endif
- 
- typedef struct _I830OutputRec I830OutputRec, *I830OutputPtr;
- 
-@@ -168,7 +172,9 @@ struct _i830_memory {
-     i830_memory *prev;
-     /** @} */
- 
-+#ifdef XF86DRI
-     dri_bo *bo;
-+#endif
-     uint32_t alignment;
-     uint32_t gem_name;
-     Bool lifetime_fixed_offset;
-@@ -370,7 +376,9 @@ typedef struct _I830Rec {
-    /** Offset in the ring for the next DWORD emit */
-    uint32_t ring_next;
- 
-+#ifdef XF86DRI
-    dri_bufmgr *bufmgr;
-+#endif
- 
-    uint8_t *batch_ptr;
-    /** Byte offset in batch_ptr for the next dword to be emitted. */
-@@ -379,8 +387,10 @@ typedef struct _I830Rec {
-    unsigned int batch_emit_start;
-    /** Number of bytes to be emitted in the current BEGIN_BATCH. */
-    uint32_t batch_emitting;
-+#ifdef XF86DRI
-    dri_bo *batch_bo;
-    dri_bo *last_batch_bo;
-+#endif
-    /** Whether we're in a section of code that can't tolerate flushing */
-    Bool in_batch_atomic;
-    /** Ending batch_used that was verified by i830_start_batch_atomic() */
-@@ -451,6 +461,7 @@ typedef struct _I830Rec {
-    ScreenBlockHandlerProcPtr BlockHandler;
-    Bool overlayOn;
- 
-+#ifdef XF86DRI
-    struct {
-       drm_intel_bo *gen4_vs_bo;
-       drm_intel_bo *gen4_sf_bo;
-@@ -461,6 +472,7 @@ typedef struct _I830Rec {
-       drm_intel_bo *gen4_sampler_bo;
-       drm_intel_bo *gen4_sip_kernel_bo;
-    } video;
-+#endif
- 
-    /* Render accel state */
-    float scale_units[2][2];
-@@ -687,6 +699,7 @@ i830_pipe_a_require_activate (ScrnInfoPt
- void
- i830_pipe_a_require_deactivate (ScrnInfoPtr scrn);
- 
-+#ifdef XF86DRI
- Bool I830DRI2ScreenInit(ScreenPtr pScreen);
- void I830DRI2CloseScreen(ScreenPtr pScreen);
- 
-@@ -696,6 +709,7 @@ extern void drmmode_closefb(ScrnInfoPtr 
- extern int drmmode_output_dpms_status(xf86OutputPtr output);
- void
- drmmode_crtc_set_cursor_bo(xf86CrtcPtr crtc, dri_bo *cursor);
-+#endif
- 
- extern Bool i830_crtc_on(xf86CrtcPtr crtc);
- extern int i830_crtc_to_pipe(xf86CrtcPtr crtc);
-@@ -882,6 +896,7 @@ Bool i830_pixmap_tiled(PixmapPtr p);
-     if (pitch > KB(8)) I830FALLBACK("pitch exceeds 3d limit 8K\n");\
- } while(0)
- 
-+#ifdef XF86DRI
- /**
-  * Little wrapper around drm_intel_bo_reloc to return the initial value you
-  * should stuff into the relocation entry.
-@@ -913,6 +928,7 @@ intel_bo_alloc_for_data(ScrnInfoPtr scrn
- 
-     return bo;
- }
-+#endif
- 
- extern const int I830PatternROP[16];
- extern const int I830CopyROP[16];

+ 0 - 11
package/xf86-video-intel/patches/patch-uxa_uxa-priv_h

@@ -1,11 +0,0 @@
---- xf86-video-intel-2.9.1.orig/uxa/uxa-priv.h	2009-10-26 12:48:05.000000000 +0100
-+++ xf86-video-intel-2.9.1/uxa/uxa-priv.h	2010-04-16 20:13:57.000000000 +0200
-@@ -46,7 +46,7 @@
- #include <X11/extensions/shm.h>
- #else
- #define _XSHM_SERVER_
--#include <X11/extensions/shmstr.h>
-+#include <xorg/shmint.h>
- #endif
- #endif
- #include "scrnintstr.h"

+ 11 - 0
package/xinit/patches/patch-xinitrc_cpp

@@ -0,0 +1,11 @@
+--- xinit-1.2.1.orig/xinitrc.cpp	2009-11-23 23:49:24.000000000 +0100
++++ xinit-1.2.1/xinitrc.cpp	2010-11-24 21:55:37.540685561 +0100
+@@ -95,8 +95,4 @@ fi
+ 
+ #endif
+ 
+-TWM &
+-XCLOCK -geometry 50x50-1+1 &
+-XTERM -geometry 80x50+494+51 &
+-XTERM -geometry 80x20+494-0 &
+ exec XTERM -geometry 80x66+0+0 -name login

+ 7 - 0
target/Config.in

@@ -137,9 +137,16 @@ config ADK_x86_64
 config ADK_x86
 	tristate
 
+config ADK_ibmx40
+	boolean
+
+config ADK_shuttle
+	boolean
+
 config ADK_HW
 	string
 	default "ibmx40" if ADK_ibmx40
+	default "shuttle" if ADK_shuttle
 
 config ADK_TARGET
 	string

+ 35 - 0
target/linux/config/Config.in.graphics

@@ -9,6 +9,26 @@ config ADK_KERNEL_FRAMEBUFFER_CONSOLE
 config ADK_KERNEL_FB_GEODE
 	boolean
 	default n
+
+config ADK_KERNEL_DRM
+	boolean
+	default n
+
+config ADK_KERNEL_DRM_I915
+	boolean
+	default n
+
+config ADK_KERNEL_DRM_I915_KMS
+	boolean
+	default n
+
+config ADK_KERNEL_AGP
+	boolean
+	default n
+
+config ADK_KERNEL_AGP_INTEL
+	boolean
+	default n
  
 menu "Graphic devices support"
 
@@ -22,5 +42,20 @@ config ADK_KERNEL_FB_GEODE_LX
  	default n
  	help
 	 Framebuffer support for ALIX boards.
+
+config ADK_HARDWARE_GRAPHICS_INTEL
+	prompt "graphics-intel.................. support for intel graphic cards (AGP/DRM/KMS)"
+	boolean
+	select ADK_KERNEL_FB
+	select ADK_KERNEL_DRM
+	select ADK_KERNEL_AGP
+	select ADK_KERNEL_AGP_INTEL
+	select ADK_KERNEL_FRAMEBUFFER_CONSOLE
+	select ADK_KERNEL_DRM_I915_KMS
+	select ADK_KERNEL_DRM_I915
+	default y if ADK_HARDWARE_IBMX40
+	default n
+	help
+          DRM support for intel chipsets.
 	
 endmenu

+ 34 - 0
target/linux/patches/2.6.36/drm-kconfig.patch

@@ -0,0 +1,34 @@
+diff -Nur linux-2.6.36.orig/drivers/gpu/drm/Kconfig linux-2.6.36/drivers/gpu/drm/Kconfig
+--- linux-2.6.36.orig/drivers/gpu/drm/Kconfig	2010-10-20 22:30:22.000000000 +0200
++++ linux-2.6.36/drivers/gpu/drm/Kconfig	2010-11-24 23:08:39.707247343 +0100
+@@ -79,21 +79,6 @@
+ 	  selected, the module will be called i810.  AGP support is required
+ 	  for this driver to work.
+ 
+-choice
+-	prompt "Intel 830M, 845G, 852GM, 855GM, 865G"
+-	depends on DRM && AGP && AGP_INTEL
+-	optional
+-
+-config DRM_I830
+-	tristate "i830 driver"
+-	help
+-	  Choose this option if you have a system that has Intel 830M, 845G,
+-	  852GM, 855GM or 865G integrated graphics.  If M is selected, the
+-	  module will be called i830.  AGP support is required for this driver
+-	  to work. This driver is used by the older X releases X.org 6.7 and
+-	  XFree86 4.3. If unsure, build this and i915 as modules and the X server
+-	  will load the correct one.
+-
+ config DRM_I915
+ 	tristate "i915 driver"
+ 	depends on AGP_INTEL
+@@ -127,8 +112,6 @@
+ 	  the driver to bind to PCI devices, which precludes loading things
+ 	  like intelfb.
+ 
+-endchoice
+-
+ config DRM_MGA
+ 	tristate "Matrox g200/g400"
+ 	depends on DRM && PCI

+ 11 - 9
target/x86/kernel.config

@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.36
-# Thu Nov 18 19:58:19 2010
+# Wed Nov 24 20:35:48 2010
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
@@ -129,7 +129,7 @@ CONFIG_HAVE_PERF_EVENTS=y
 CONFIG_PERF_EVENTS=y
 # CONFIG_PERF_COUNTERS is not set
 # CONFIG_VM_EVENT_COUNTERS is not set
-# CONFIG_PCI_QUIRKS is not set
+CONFIG_PCI_QUIRKS=y
 # CONFIG_COMPAT_BRK is not set
 CONFIG_SLAB=y
 # CONFIG_SLUB is not set
@@ -285,12 +285,12 @@ CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
 CONFIG_VM86=y
 # CONFIG_TOSHIBA is not set
 # CONFIG_I8K is not set
-# CONFIG_X86_REBOOTFIXUPS is not set
+CONFIG_X86_REBOOTFIXUPS=y
 # CONFIG_MICROCODE is not set
 # CONFIG_X86_MSR is not set
 # CONFIG_X86_CPUID is not set
-CONFIG_NOHIGHMEM=y
-# CONFIG_HIGHMEM4G is not set
+# CONFIG_NOHIGHMEM is not set
+CONFIG_HIGHMEM4G=y
 # CONFIG_HIGHMEM64G is not set
 CONFIG_VMSPLIT_3G=y
 # CONFIG_VMSPLIT_3G_OPT is not set
@@ -298,7 +298,7 @@ CONFIG_VMSPLIT_3G=y
 # CONFIG_VMSPLIT_2G_OPT is not set
 # CONFIG_VMSPLIT_1G is not set
 CONFIG_PAGE_OFFSET=0xC0000000
-# CONFIG_X86_PAE is not set
+CONFIG_HIGHMEM=y
 # CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
 CONFIG_NEED_NODE_MEMMAP_SIZE=y
 CONFIG_ARCH_FLATMEM_ENABLE=y
@@ -311,6 +311,7 @@ CONFIG_SPARSEMEM_MANUAL=y
 CONFIG_SPARSEMEM=y
 CONFIG_HAVE_MEMORY_PRESENT=y
 CONFIG_SPARSEMEM_STATIC=y
+# CONFIG_MEMORY_HOTPLUG is not set
 CONFIG_SPLIT_PTLOCK_CPUS=4
 # CONFIG_PHYS_ADDR_T_64BIT is not set
 CONFIG_ZONE_DMA_FLAG=1
@@ -318,13 +319,12 @@ CONFIG_BOUNCE=y
 CONFIG_VIRT_TO_BUS=y
 # CONFIG_KSM is not set
 CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+# CONFIG_HIGHPTE is not set
 # CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
 # CONFIG_X86_RESERVE_LOW_64K is not set
 # CONFIG_MATH_EMULATION is not set
 CONFIG_MTRR=y
-CONFIG_MTRR_SANITIZER=y
-CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
-CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
+# CONFIG_MTRR_SANITIZER is not set
 # CONFIG_X86_PAT is not set
 # CONFIG_SECCOMP is not set
 # CONFIG_CC_STACKPROTECTOR is not set
@@ -335,6 +335,7 @@ CONFIG_HZ_250=y
 CONFIG_HZ=250
 # CONFIG_SCHED_HRTICK is not set
 # CONFIG_KEXEC is not set
+# CONFIG_CRASH_DUMP is not set
 CONFIG_PHYSICAL_START=0x200000
 # CONFIG_RELOCATABLE is not set
 CONFIG_PHYSICAL_ALIGN=0x200000
@@ -342,6 +343,7 @@ CONFIG_PHYSICAL_ALIGN=0x200000
 CONFIG_CMDLINE_BOOL=y
 CONFIG_CMDLINE="console=tty0 console=ttyS0,115200n8"
 # CONFIG_CMDLINE_OVERRIDE is not set
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 
 #
 # Power management and ACPI options