~kris/9p

9hist

d0f6f9a13b4ff7aef84c4f757ce77c37d0656b6c — David du Colombier 24 years ago 357cb88
Plan 9 from Bell Labs 2002-07-18
3 files changed, 26 insertions(+), 27 deletions(-)

M bitsy/sd.h
M bitsy/sdata.c
M pc/kbd.c
M bitsy/sd.h => bitsy/sd.h +6 -6
@@ 9,8 9,8 @@ typedef struct SDreq SDreq;
typedef struct SDunit SDunit;

typedef struct SDperm {
	char	name[NAMELEN];
	char	user[NAMELEN];
	char	name[KNAMELEN];
	char	user[KNAMELEN];
	ulong	perm;
} SDperm;



@@ 50,7 50,7 @@ typedef struct SDev {
	SDifc*	ifc;			/* pnp/legacy */
	void	*ctlr;
	int	idno;
	char	name[NAMELEN];
	char	name[KNAMELEN];
	int	index;			/* into unit space */
	int	nunit;
	SDev*	next;


@@ 59,7 59,7 @@ typedef struct SDev {
	int	enabled;
} SDev;

typedef struct SDifc {
struct SDifc {
	char*	name;

	SDev*	(*pnp)(void);


@@ 75,8 75,8 @@ typedef struct SDifc {
	int	(*wctl)(SDunit*, Cmdbuf*);

	long	(*bio)(SDunit*, int, int, void*, long, long);
	SDev*	(*config)(int on, char *spec, void *cf);
} SDifc;
	SDev*	(*config)(int on, char *spec, DevConf *cf);
};

typedef struct SDreq {
	SDunit*	unit;

M bitsy/sdata.c => bitsy/sdata.c +16 -21
@@ 7,7 7,7 @@
#include "ureg.h"
#include "../port/error.h"

#include "../port/sd.h"
#include "sd.h"


extern SDifc sdataifc;


@@ 353,17 353,16 @@ ataready(int cmdport, int ctlport, int dev, int reset, int ready, int micro)
		 * can be used as a test for !Bsy.
		 */
		as = inb(ctlport+As);
		if(as & reset)
			;
		else if(dev){
			outb(cmdport+Dh, dev);
			dev = 0;
		}
		else if(ready == 0 || (as & ready)){
			atadebug(0, 0, "ataready: %d 0x%2.2uX\n", micro, as);
			return as;
		if((as & reset) == 0){
			if(dev){
				outb(cmdport+Dh, dev);
				dev = 0;
			}
			else if(ready == 0 || (as & ready)){
				atadebug(0, 0, "ataready: %d 0x%2.2uX\n", micro, as);
				return as;
			}
		}

		if(micro-- <= 0){
			atadebug(0, 0, "ataready: %d 0x%2.2uX\n", micro, as);
			break;


@@ 1581,18 1580,15 @@ static SDev*
ataid(SDev* sdev)
{
	int i;
	Ctlr *ctlr;

	if(sdev == nil)
		return nil;
	ctlr = sdev->ctlr;
	i = 0;
	while(sdev){
		if(sdev->ifc == &sdataifc){
			ctlr = sdev->ctlr;
			sdev->idno = 'C'+i;
			i++;
			snprint(sdev->name, NAMELEN, "sd%c", sdev->idno);
			snprint(sdev->name, KNAMELEN, "sd%c", sdev->idno);
		}
		sdev = sdev->next;
	}


@@ 1606,14 1602,14 @@ static int
ataenable(SDev* sdev)
{
	Ctlr *ctlr;
	char name[NAMELEN];
	char name[KNAMELEN];

	ctlr = sdev->ctlr;

	if(ctlr->bmiba){
		ctlr->prdt = xspanalloc(Nprd*sizeof(Prd), 4, 4*1024);
	}
	snprint(name, NAMELEN, "%s (%s)", sdev->name, sdev->ifc->name);
	snprint(name, KNAMELEN, "%s (%s)", sdev->name, sdev->ifc->name);
//	intrenable(ctlr->irq, atainterrupt, ctlr, ctlr->tbdf, name);
	outb(ctlr->ctlport+Dc, 0);
	intrenable(ataitype, atairq, atainterrupt, ctlr, name);


@@ 2040,9 2036,8 @@ struct Try {
};

static SDev*
ataconfig(int on, char *, void *pf)
ataconfig(int on, char *, DevConf *cf)
{
	DevConf* cf = pf;
	int	cmdport;
	int	ctlport;
	int	irq;


@@ 2054,10 2049,10 @@ ataconfig(int on, char *, void *pf)
	rc = nil;
	for (try = &tries[0]; try->p != 0 || try->c != 0; try++){
		ataitype = cf->itype;
		atairq  = cf->intnum;
		atairq  = cf->irq;
		cmdport = cf->port + try->p;
		ctlport = cmdport + try->c;
		irq = cf->intnum;
		irq = cf->irq;
		rc = ataprobe(cmdport, ctlport, irq);
		if (rc)
			break;

M pc/kbd.c => pc/kbd.c +4 -0
@@ 124,6 124,8 @@ enum
	Ckbdint=	(1<<0),		/* kbd interrupt enable */
};

int mouseshifted;

static Lock i8042lock;
static uchar ccc;
static void (*auxputc)(int, int);


@@ 326,6 328,7 @@ i8042intr(Ureg*, void*)
			break;
		case Shift:
			shift = 0;
			mouseshifted = 0;
			break;
		case Ctrl:
			ctl = 0;


@@ 369,6 372,7 @@ i8042intr(Ureg*, void*)
			return;
		case Shift:
			shift = 1;
			mouseshifted = 1;
			return;
		case Latin:
			alt = 1;