kernel: fix ide-disk problems on newer kernels - thanks russell!
[openwrt/openwrt.git] / package / kernel / modules / block.mk
index 34ed8c8e1e575ce5b68380aa5ce5bd0c841c49ad..e4cdc596b2f814591f3ffab7a62079a40a248541 100644 (file)
@@ -146,33 +146,55 @@ endef
 $(eval $(call KernelPackage,ata-via-sata))
 
 
-# XXX: broken on 2.6.28 due to module name/path changes
-define KernelPackage/ide-core
-  SUBMENU:=$(BLOCK_MENU)
-  TITLE:=IDE (ATA/ATAPI) device support
-  DEPENDS:=@PCI_SUPPORT
-  KCONFIG:= \
-       CONFIG_IDE \
-       CONFIG_IDE_GENERIC \
-       CONFIG_BLK_DEV_GENERIC \
-       CONFIG_BLK_DEV_IDE \
-       CONFIG_BLK_DEV_IDEDISK \
-       CONFIG_BLK_DEV_IDEDMA_PCI=y \
-       CONFIG_BLK_DEV_IDEPCI=y
-  FILES:= \
-       $(LINUX_DIR)/drivers/ide/ide-core.$(LINUX_KMOD_SUFFIX) \
-       $(LINUX_DIR)/drivers/ide/ide-disk.$(LINUX_KMOD_SUFFIX)
-  AUTOLOAD:=$(call AutoLoad,20,ide-core) $(call AutoLoad,40,ide-disk)
-endef
+ifeq ($(strip $(call CompareKernelPatchVer,$(KERNEL_PATCHVER),ge,2.6.28)),1)
+  define KernelPackage/ide-core
+    SUBMENU:=$(BLOCK_MENU)
+    TITLE:=IDE (ATA/ATAPI) device support
+    DEPENDS:=@PCI_SUPPORT
+    KCONFIG:= \
+       CONFIG_IDE \
+       CONFIG_IDE_GENERIC \
+       CONFIG_BLK_DEV_GENERIC \
+       CONFIG_BLK_DEV_IDE \
+       CONFIG_IDE_GD \
+       CONFIG_IDE_GD_ATA=y \
+       CONFIG_IDE_GD_ATAPI=n \
+       CONFIG_BLK_DEV_IDEDMA_PCI=y \
+       CONFIG_BLK_DEV_IDEPCI=y
+    FILES:= \
+       $(LINUX_DIR)/drivers/ide/ide-core.$(LINUX_KMOD_SUFFIX) \
+       $(LINUX_DIR)/drivers/ide/ide-gd_mod.$(LINUX_KMOD_SUFFIX)
+    AUTOLOAD:=$(call AutoLoad,20,ide-core) $(call AutoLoad,40,ide-gd_mod)
+  endef
+else
+  define KernelPackage/ide-core
+    SUBMENU:=$(BLOCK_MENU)
+    TITLE:=IDE (ATA/ATAPI) device support
+    DEPENDS:=@PCI_SUPPORT
+    KCONFIG:= \
+          CONFIG_IDE \
+          CONFIG_IDE_GENERIC \
+          CONFIG_BLK_DEV_GENERIC \
+          CONFIG_BLK_DEV_IDE \
+          CONFIG_BLK_DEV_IDEDISK \
+          CONFIG_BLK_DEV_IDEDMA_PCI=y \
+          CONFIG_BLK_DEV_IDEPCI=y
+    FILES:= \
+          $(LINUX_DIR)/drivers/ide/ide-core.$(LINUX_KMOD_SUFFIX) \
+          $(LINUX_DIR)/drivers/ide/ide-disk.$(LINUX_KMOD_SUFFIX)
+    AUTOLOAD:=$(call AutoLoad,20,ide-core) $(call AutoLoad,40,ide-disk)
+  endef
+endif
 
 define KernelPackage/ide-core/2.4
   FILES+=$(LINUX_DIR)/drivers/ide/ide-detect.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD+=$(call AutoLoad,30,ide-detect)
 endef
 
-ifeq ($(strip $(call CompareKernelPatchVer,$(KERNEL_PATCHVER),ge,2.6.26)),1)
+ifeq ($(and $(strip $(call CompareKernelPatchVer,$(KERNEL_PATCHVER),ge,2.6.26)),1),
+       $(strip $(cal CompareKernelPatchVer,$(KERNEL_PATCHVER),lt,2.6.28)))
   define KernelPackage/ide-core/2.6
-    FILES+=$(LINUX_DIR)/drivers/ide/pci/ide-pci-generic.$(LINUX_KMOD_SUFFIX)
+    FILES+=$(LINUX_DIR)/drivers/ide/ide-pci-generic.$(LINUX_KMOD_SUFFIX)
     AUTOLOAD+=$(call AutoLoad,30,ide-pci-generic)
   endef
 else
@@ -187,7 +209,7 @@ define KernelPackage/ide-core/description
  Includes:
  - ide-core
  - ide-detect
- - ide-disk
+ - ide-gd_mod (or ide-disk)
 endef
 
 $(eval $(call KernelPackage,ide-core))