Skip to contentSkip to conversation

libata on SATA only (non-combined) & legcy mode

PATCH New Seiichi Ikarashi 1 participant 1 message Jul 15, 2005

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 libata on SATA only (non-combined) & legcy mode

Hi Jeff,

The libata driver cannot be loaded if a system has a CD-ROM drive connected via SATA instead of PATA because this is not combined mode and reserved no ports in quirk_intel_ide_combined() function. I think SATA only (non-combined) && legacy mode should be treated as same as such combined mode. How about following patch?

----------------------- Original Message -----------------------

drivers/pci/quirks.c renamed from drivers/pci/quirks.c.orig +8 -3
@@ -1195,7 +1195,7 @@ static void __devinit quirk_intel_ide_co
 		else if (tmp == 0x6)	/* bits 11x */
 			comb = (1 << 2);	/* PATA port 0, SATA port 1 */
 		else
-			return;			/* not in combined mode */
+			comb = 0;		/* not in combined mode */
 	} else {
 		WARN_ON((ich != 6) && (ich != 7));
 		tmp &= 0x3;  /* interesting bits 1:0 */
@@ -1204,7 +1204,7 @@ static void __devinit quirk_intel_ide_co
 		else if (tmp & (1 << 1))
 			comb = (1 << 0);	/* SATA port 0, PATA port 1 */
 		else
-			return;			/* not in combined mode */
+			comb = 0;		/* not in combined mode */
 	}
 
 	/*
@@ -1224,8 +1224,13 @@ static void __devinit quirk_intel_ide_co
 	 */
 	if (comb == (1 << 0))
 		request_region(0x1f0, 8, "libata");	/* port 0 */
-	else
+	else if (comb == (1 << 2))
 		request_region(0x170, 8, "libata");	/* port 1 */
+
+	if (comb == 0 && (prog & 0x5) == 0) {   /* Legacy but SATA only */
+		request_region(0x1f0, 8, "libata");     /* port 0 */
+		request_region(0x170, 8, "libata");     /* port 1 */
+	}
 }
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL,    PCI_ANY_ID,	  quirk_intel_ide_combined );
 #endif /* CONFIG_SCSI_SATA */

--------------------- Original Message Ends --------------------

Signature · 1 line
Seiichi Ikarashi <[email protected]>