From 12db2c1cd56663ba40295675d0a0f96ddc5756fb Mon Sep 17 00:00:00 2001 From: neil Date: Sat, 16 May 2009 00:53:25 +0000 Subject: [PATCH] - Give PCI controllers lower unit numbers than legacy controllers. - Check size of DMA I/O range is correct. git-svn-id: https://svn.aros.org/svn/aros/trunk/AROS@31238 fb15a70f-31f2-0310-bbcc-cdcc74a49acc --- arch/common/ata.device/ata.conf | 2 +- arch/common/ata.device/ata_init.c | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/arch/common/ata.device/ata.conf b/arch/common/ata.device/ata.conf index 30e54f99a..0037bd551 100644 --- a/arch/common/ata.device/ata.conf +++ b/arch/common/ata.device/ata.conf @@ -1,6 +1,6 @@ ##begin config basename ata -version 41.8 +version 41.9 libbasetype struct ataBase residentpri 4 beginio_func BeginIO diff --git a/arch/common/ata.device/ata_init.c b/arch/common/ata.device/ata_init.c index 50ed0c0cb..218dc937d 100644 --- a/arch/common/ata.device/ata_init.c +++ b/arch/common/ata.device/ata_init.c @@ -102,12 +102,13 @@ struct ata_LegacyBus UBYTE atalb_BusID; }; -#define ATABUSNODEPRI_PROBED 0 +#define ATABUSNODEPRI_PROBED 50 #define ATABUSNODEPRI_PROBEDLEGACY 100 -#define ATABUSNODEPRI_LEGACY 50 +#define ATABUSNODEPRI_LEGACY 0 #define RANGESIZE0 8 #define RANGESIZE1 4 +#define DMASIZE 16 /* static list of io/irqs that we can handle */ static struct ata__legacybus @@ -304,6 +305,7 @@ AROS_UFH3(void, ata_PCIEnumerator_h, IPTR ProductID, VendorID, DMABase, + DMASize, INTLine, IOBase, IOAlt, @@ -335,6 +337,7 @@ AROS_UFH3(void, ata_PCIEnumerator_h, OOP_GetAttr(Device, aHidd_PCIDevice_VendorID, &VendorID); OOP_GetAttr(Device, aHidd_PCIDevice_ProductID, &ProductID); OOP_GetAttr(Device, aHidd_PCIDevice_Base4, &DMABase); + OOP_GetAttr(Device, aHidd_PCIDevice_Size4, &DMASize); OOP_GetAttr(Device, aHidd_PCIDevice_SubClass, &SubClass); OOP_GetAttr(Device, aHidd_PCIDevice_Interface, &Interface); @@ -395,7 +398,8 @@ AROS_UFH3(void, ata_PCIEnumerator_h, } if (IOBase != (IPTR)NULL && IOSize == RANGESIZE0 - && AltSize == RANGESIZE1) + && AltSize == RANGESIZE1 + && (DMASize = DMASIZE || DMABase == NULL || SubClass == 1)) { struct ata_ProbedBus *probedbus; D(bug("[ATA ] ata_PCIEnumerator_h: Adding Bus %d - IRQ %d, IO: %x:%x, DMA: %x\n", x, INTLine, IOBase, IOAlt, DMABase)); -- 2.11.4.GIT