~kris/9p

9hist

c47b26036e092ee2aaf20b00a9cad0ed8529d481 — David du Colombier 23 years ago 60f758b
Plan 9 from Bell Labs 2002-10-16
2 files changed, 35 insertions(+), 21 deletions(-)

M pc/devpccard.c
M pc/pcmciamodem.c
M pc/devpccard.c => pc/devpccard.c +34 -21
@@ 17,6 17,7 @@ enum {
	TI_1250_did = 0xAC16,
	TI_1450_did = 0xAC1B,
	TI_1251A_did = 0xAC1D,
	TI_1420_did = 0xAC51,

	Ricoh_vid = 0x1180,
	Ricoh_476_did = 0x0476,


@@ 57,7 58,7 @@ static Variant variant[] = {
{	TI_vid,		TI_1250_did,		"TI PCI-1250 Cardbus Controller",	},
{	TI_vid,		TI_1450_did,		"TI PCI-1450 Cardbus Controller",	},
{	TI_vid,		TI_1251A_did,		"TI PCI-1251A Cardbus Controller",	},
{	TI_vid,		0xAC51,			"TI 0xAC51 Cardbus Controller", },
{	TI_vid,		TI_1420_did,		"TI PCI-1420 Cardbus Controller", },
};

/* Cardbus registers */


@@ 86,6 87,8 @@ enum {
	PciPCR_MEM = 1 << 1,
	PciPCR_Master = 1 << 2,

	PciPMC = 0xa4,

	Nbars = 6,
	Ncmd = 10,
	CBIRQ = 9,


@@ 325,7 328,7 @@ static char *states[] = {
static void
engine(Cardbus *cb, int message)
{
	// print("engine(%d): %s(%s)\n", 
	//print("engine(%d): %s(%s)\n", 
	//	 (int)(cb - cbslots), states[cb->state], messages[message]);
	switch (cb->state) {
	case SlotEmpty:


@@ 338,8 341,8 @@ engine(Cardbus *cb, int message)
		case CardEjected:
			break;
		default:
			print("#Y%d: Invalid message %s in SlotEmpty state\n",
				(int)(cb - cbslots), messages[message]);
			//print("#Y%d: Invalid message %s in SlotEmpty state\n",
			//	(int)(cb - cbslots), messages[message]);
			break;
		}
		break;


@@ 374,8 377,8 @@ engine(Cardbus *cb, int message)
			powerdown(cb);
			break;
		default:
			print("#Y%d: Invalid message %s in SlotPowered state\n",
				(int)(cb - cbslots), messages[message]);
			//print("#Y%d: Invalid message %s in SlotPowered state\n",
			//	(int)(cb - cbslots), messages[message]);
			break;
		}
		break;


@@ 389,8 392,8 @@ engine(Cardbus *cb, int message)
			powerdown(cb);
			break;
		default:
			print("#Y%d: Invalid message %s in SlotConfigured state\n",
				(int)(cb - cbslots), messages[message]);
			//print("#Y%d: Invalid message %s in SlotConfigured state\n",
			//	(int)(cb - cbslots), messages[message]);
			break;
		}
		break;


@@ 475,8 478,8 @@ cbinterrupt(Ureg *, void *)
		state = cb->regs[SocketState];
		rdreg(cb, Rcsc);	/* Ack the interrupt */

		// print("interrupt: slot %d, event %.8lX, state %.8lX, (%s)\n", 
		//		(int)(cb - cbslots), event, state, states[cb->state]);
		//print("interrupt: slot %d, event %.8lX, state %.8lX, (%s)\n", 
		//	(int)(cb - cbslots), event, state, states[cb->state]);

		if (event & SE_CCD) {
			cb->regs[SocketEvent] |= SE_CCD;	/* Ack interrupt */


@@ 599,6 602,13 @@ devpccardlink(void)
			else if (pci->did == TI_1250_did) {
				print("No support yet for the TI_1250_did, prod pb\n");
			}
			else if (pci->did == TI_1420_did) {
				// Disable Vcc protection
				pcicfgw32(cb->pci, 0x80, 
					pcicfgr32(cb->pci, 0x80) | (1 << 21));
			}
			
			pcicfgw16(cb->pci, PciPMC, pcicfgr16(cb->pci, PciPMC) & ~3);
		}

		if (intl != -1 && intl != pci->intl)


@@ 659,7 669,8 @@ powerup(Cardbus *cb)
	ulong state;
	ushort bcr;

	if ((state = cb->regs[SocketState]) & SS_PC16) {
	state = cb->regs[SocketState];
	if (state & SS_PC16) {
	
		// print("#Y%ld: Probed a PC16 card, powering up card\n", cb - cbslots);
		cb->type = PC16;


@@ 671,6 682,7 @@ powerup(Cardbus *cb)
		wrreg(cb, Rigc, 0);
		delay(100);
		wrreg(cb, Rigc, Fnotreset);
		delay(500);

		return 1;
	}


@@ 678,8 690,8 @@ powerup(Cardbus *cb)
	if (state & SS_CCD)
		return 0;

	if ((state & SS_CBC) == 0 || (state & SS_NOTCARD)) {
		print("#Y%ld: No cardbus card inserted\n", cb - cbslots);
	if (state & SS_NOTCARD) {
		print("#Y%ld: Not a card inserted\n", cb - cbslots);
		return 0;
	}



@@ 704,7 716,7 @@ powerup(Cardbus *cb)
	pcicfgw16(cb->pci, PciBCR, bcr);
	delay(100);

	cb->type = PC32;
	cb->type = (state & SS_PC16)? PC16: PC32;
	return 1;
}



@@ 1124,7 1136,7 @@ pccard_pcmspecial(char *idstr, ISAConf *isa)
	pi->irq = isa->irq;
	unlock(cb);

//	print("#Y%d: %s irq %ld, port %lX\n", (int)(cb - cbslots), pi->verstr, isa->irq, isa->port);
	print("#Y%d: %s irq %ld, port %lX\n", (int)(cb - cbslots), pi->verstr, isa->irq, isa->port);
	return (int)(cb - cbslots);
}



@@ 1301,6 1313,7 @@ pccardread(Chan *c, void *a, long n, vlong offset)
{
	Cardbus *cb;
	char *buf, *p, *e;
	int i;

	switch(TYPE(c)){
	case Qdir:


@@ 1349,19 1362,19 @@ pccardread(Chan *c, void *a, long n, vlong offset)
				p = seprint(p, e, "%s port %X; irq %d;\n",
						  pi->verstr, pi->port,
						  pi->irq);
				for (n = 0; n != pi->nctab; n++) {
				for (i = 0; i != pi->nctab; i++) {
					PCMconftab *ct;
					int i;
					int j;

					ct = &pi->ctab[n];
					ct = &pi->ctab[i];
					p = seprint(p, e, 
						"\tconfiguration[%ld] irqs %.4uX; vpp %d, %d; %s\n",
							  n, ct->irqs, ct->vpp1, ct->vpp2,
							  (ct == pi->defctab)? "(default);": "");
					for (i = 0; i != ct->nio; i++)
						if (ct->io[i].len > 0)
					for (j = 0; j != ct->nio; j++)
						if (ct->io[j].len > 0)
							p = seprint(p, e, "\t\tio[%d] %.8ulX %uld\n",
									  i, ct->io[i].start, ct->io[i].len);
									  i, ct->io[j].start, ct->io[j].len);
				}
			}
			break;

M pc/pcmciamodem.c => pc/pcmciamodem.c +1 -0
@@ 26,6 26,7 @@ static char* modems[] = {
	"CEM56",
	"MONTANA V.34 FAX/MODEM",	/* Motorola */
	"REM10",
	"GSM/GPRS",
	0,
};