Date: Mon, 18 Oct 1999 13:14:55 -0700 From: kachun@pathlink.com (Kachun Lee) To: freebsd-stable@freebsd.org Subject: Re: Promise Ultra66 Message-ID: <199910182015.NAA46986@pathlink.net> In-Reply-To: <Pine.BSF.4.10.9705051758380.283-100000@gravy.kishka.net> References: <Pine.BSF.4.10.9705051758380.283-100000@gravy.kishka.net>
next in thread | previous in thread | raw e-mail | index | archive | help
In article <Pine.BSF.4.10.9705051758380.283-100000@gravy.kishka.net>, you
say...
>
>I am trying to get FreeBSD 3.3-stable to detect a Promise Ultra66 IDE
>adapter. I searched through the mailing list archives, but could not
>find an answer. I tried the configuration detailed in LINT, but it still
>isn't detected. On boot, the card announces itself and detects my Western
>Digital AC29100 and sets it up for UDMA mode 4. The kernel will start to
>load, then panic because it cannot see a hard disk controller.
>
>Anyone out there have success with this, and if so, can I have a peek at
>your config file?
>
>
>==========================================================
>= Bryan D. Liesner LeezSoft Communications, Inc. =
>= A subsidiary of LeezSoft Inc. =
>= bleez@netaxs.com Home of the Gipper =
>==========================================================
>
>
>
>To Unsubscribe: send mail to majordomo@FreeBSD.org
>with "unsubscribe freebsd-stable" in the body of the message
A similar post I made to comp.unix.bsd.freebsd.misc... I am trying to get some
comment about if there is any side effect in the wd.c patch...
I got the Promise Ultra66 working with the ide_pci.c patch below. I was using
v3.3, but I believe it should work with v3.2. But with ATAPI option set, the
wd.c needed to be patched (same with Promise Ultra33) also, or else the
controller would fail the wdreset. I did not know the full ramification of the
wd.c patch to other controllers and ATAPI devices... I only tried it with a
CDROM.
*** ide_pci.c Wed Oct 13 15:27:44 1999
--- ide_pci.c.01 Mon Oct 18 10:44:31 1999
***************
*** 61,66 ****
--- 61,67 ----
#endif
#define PROMISE_ULTRA33 0x4d33105a
+ #define PROMISE_ULTRA66 0x4d38105a
struct ide_pci_cookie; /* structs vendor_fns, ide_pci_cookie are recursive
*/
***************
*** 1217,1222 ****
--- 1218,1224 ----
if ((data & PCI_CLASS_MASK) == PCI_CLASS_MASS_STORAGE &&
((data & PCI_SUBCLASS_MASK) == 0x00010000 ||
+ ((data & PCI_SUBCLASS_MASK) == 0x00800000) ||
((data & PCI_SUBCLASS_MASK) == 0x00040000))) {
if (type == 0x71118086)
return ("Intel PIIX4 Bus-master IDE controller");
***************
*** 1226,1231 ****
--- 1228,1235 ----
return ("Intel PIIX Bus-master IDE controller");
if (type == PROMISE_ULTRA33)
return ("Promise Ultra/33 IDE controller");
+ if (type == PROMISE_ULTRA66)
+ return ("Promise Ultra/66 IDE controller");
if (type == 0x05711106)
return ("VIA 82C586x (Apollo) Bus-master IDE
controller");
if (type == 0x01021078)
***************
*** 1263,1269 ****
/* set up vendor-specific stuff */
type = pci_conf_read(tag, PCI_ID_REG);
! if (type != PROMISE_ULTRA33) {
/* is it busmaster capable? bail if not */
class = pci_conf_read(tag, PCI_CLASS_REG);
if (!(class & 0x8000)) {
--- 1267,1279 ----
/* set up vendor-specific stuff */
type = pci_conf_read(tag, PCI_ID_REG);
! switch(type)
! {
! case PROMISE_ULTRA33:
! case PROMISE_ULTRA66:
! break;
!
! default:
/* is it busmaster capable? bail if not */
class = pci_conf_read(tag, PCI_CLASS_REG);
if (!(class & 0x8000)) {
***************
*** 1291,1296 ****
--- 1301,1307 ----
break;
case PROMISE_ULTRA33:
+ case PROMISE_ULTRA66:
/* Promise controllers */
vp = &vs_promise;
break;
***************
*** 1308,1314 ****
break;
}
! if (type != PROMISE_ULTRA33) {
if ((class & 0x100) == 0) {
iobase_wd_1 = IO_WD1;
altiobase_wd_1 = iobase_wd_1 + wd_altsts;
--- 1319,1326 ----
break;
}
! switch(type) {
! default:
if ((class & 0x100) == 0) {
iobase_wd_1 = IO_WD1;
altiobase_wd_1 = iobase_wd_1 + wd_altsts;
***************
*** 1324,1330 ****
iobase_wd_2 = pci_conf_read(tag, 0x18) & 0xfffc;
altiobase_wd_2 = pci_conf_read(tag, 0x1c) & 0xfffc;
}
! } else {
iobase_wd_1 = pci_conf_read(tag, 0x10) & 0xfffc;
altiobase_wd_1 = pci_conf_read(tag, 0x14) & 0xfffc;
iobase_wd_2 = pci_conf_read(tag, 0x18) & 0xfffc;
--- 1336,1344 ----
iobase_wd_2 = pci_conf_read(tag, 0x18) & 0xfffc;
altiobase_wd_2 = pci_conf_read(tag, 0x1c) & 0xfffc;
}
! break;
! case PROMISE_ULTRA33:
! case PROMISE_ULTRA66:
iobase_wd_1 = pci_conf_read(tag, 0x10) & 0xfffc;
altiobase_wd_1 = pci_conf_read(tag, 0x14) & 0xfffc;
iobase_wd_2 = pci_conf_read(tag, 0x18) & 0xfffc;
-----------------------------------------------------------------------
wd.c patch - only need when ATAPI is set... see caution above.
*** wd.c Mon Aug 30 17:24:28 1999
--- wd.c.01 Mon Oct 18 11:03:05 1999
***************
*** 2302,2310 ****
--- 2302,2312 ----
#ifdef ATAPI
if (wdwait(du, 0, TIMEOUT) != 0)
err = 1; /* no IDE drive found */
du->dk_error = inb(du->dk_port + wd_error);
+ #if 0 /* Promise Ultra33/66 would not pass this */
if (du->dk_error != 0x01)
err = 1; /* the drive is incompatible */
+ #endif
#else
if (wdwait(du, WDCS_READY | WDCS_SEEKCMPLT, TIMEOUT) != 0) {
printf("wdreset: error1: 0x%x\n", du->dk_error);
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199910182015.NAA46986>
