The datasheet for the 6710/6722 says that you must use one method to
detect 3.3V cards for the 6710 and another method for the 6722. This latter method is also how the 6729/6730 is supposed to detect 3.3V cards. This method works great on my Fujitsu Stylistic 500. Sadly, it appears that not all laptop makers are as detail oriented as the folks that made the Stylistic. IBM Thinkpad 701C and AST Asentia 810N both hang hard when the 6729 method is used, but at least the thinkpad works when the 6710 method is used. The failure mode appears to be any access to the memory that we've mapped the CIS in causes the machine to hang until you eject the card. The Thinkpad, at least, works with this change, and it doesn't break my Stylistic. MFC after: 4 days
This commit is contained in:
parent
4854d67b1c
commit
296596145c
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=89348
@ -599,17 +599,23 @@ pcic_power(struct slot *slt)
|
||||
/*
|
||||
* The 6710 does it one way, and the '22 and '29 do it
|
||||
* another. And it appears that the '32 and '33 yet
|
||||
* another way (which I don't know).
|
||||
* another way (which I don't know). The '22 can also
|
||||
* do it the same way as a '10 does it, despite what
|
||||
* the datasheets say. Some laptops with '22 don't
|
||||
* seem to have the signals wired right for the '29
|
||||
* method to work, so we always use the '10 method for
|
||||
* the '22. The laptops that don't work hang solid
|
||||
* when the pccard memory is accessed.
|
||||
*/
|
||||
switch (sp->controller) {
|
||||
case PCIC_PD6710:
|
||||
case PCIC_PD6722:
|
||||
c = sp->getb(sp, PCIC_MISC1);
|
||||
if ((c & PCIC_MISC1_5V_DETECT) == 0)
|
||||
slt->pwr.vcc = 33;
|
||||
else
|
||||
slt->pwr.vcc = 50;
|
||||
break;
|
||||
case PCIC_PD6722:
|
||||
case PCIC_PD6729:
|
||||
/*
|
||||
* VS[12] signals are in slot1's
|
||||
|
Loading…
Reference in New Issue
Block a user