Misc KNF and cosmetics.
This commit is contained in:
parent
7dcf597b04
commit
51b5e07bf9
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: boot.c,v 1.5 2005/11/25 13:37:58 tsutsui Exp $ */
|
||||
/* $NetBSD: boot.c,v 1.6 2007/08/03 13:15:56 tsutsui Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2003 The NetBSD Foundation, Inc.
|
||||
|
@ -122,25 +122,25 @@ int main(unsigned int memsize);
|
|||
* Perform CPU reboot.
|
||||
*/
|
||||
int
|
||||
cpu_reboot()
|
||||
cpu_reboot(void)
|
||||
{
|
||||
printf("rebooting...\n\n");
|
||||
|
||||
*(volatile char *)MIPS_PHYS_TO_KSEG1(LED_ADDR) = LED_RESET;
|
||||
*(volatile uint8_t *)MIPS_PHYS_TO_KSEG1(LED_ADDR) = LED_RESET;
|
||||
printf("WARNING: reboot failed!\n");
|
||||
|
||||
for (;;);
|
||||
for (;;)
|
||||
;
|
||||
}
|
||||
|
||||
/*
|
||||
* Substitute root value with NetBSD root partition name.
|
||||
*/
|
||||
int
|
||||
patch_bootstring(bootspec)
|
||||
char *bootspec;
|
||||
patch_bootstring(char *bootspec)
|
||||
{
|
||||
char *sp = bootstring;
|
||||
u_int8_t unit, part;
|
||||
uint8_t unit, part;
|
||||
int dev, error;
|
||||
char *file;
|
||||
|
||||
|
@ -153,7 +153,7 @@ patch_bootstring(bootspec)
|
|||
DPRINTF(("patch_bootstring: %d, %d\n", unit, part));
|
||||
|
||||
/* take out the 'root=xxx' parameter */
|
||||
if ( (sp = strstr(bootstring, "root=")) != NULL) {
|
||||
if ((sp = strstr(bootstring, "root=")) != NULL) {
|
||||
const char *end;
|
||||
|
||||
end = strchr(sp, ' ');
|
||||
|
@ -184,16 +184,14 @@ patch_bootstring(bootspec)
|
|||
}
|
||||
|
||||
DPRINTF(("patch_bootstring: -> %s\n", bootstring));
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Extract NetBSD boot specification
|
||||
*/
|
||||
static int
|
||||
get_bsdbootname(dev, kname)
|
||||
char **dev;
|
||||
char **kname;
|
||||
get_bsdbootname(char **dev, char **kname)
|
||||
{
|
||||
int len, error;
|
||||
char *bootstr_dev, *bootstr_kname;
|
||||
|
@ -280,11 +278,7 @@ get_bsdbootname(dev, kname)
|
|||
}
|
||||
|
||||
static int
|
||||
parse_bootname(spec, len, dev, kname)
|
||||
char *spec;
|
||||
int len;
|
||||
char **dev;
|
||||
char **kname;
|
||||
parse_bootname(char *spec, int len, char **dev, char **kname)
|
||||
{
|
||||
char *bootname, *ptr;
|
||||
|
||||
|
@ -310,9 +304,9 @@ parse_bootname(spec, len, dev, kname)
|
|||
* Get the bootstring from PROM.
|
||||
*/
|
||||
int
|
||||
prominit(memsize)
|
||||
unsigned int memsize;
|
||||
prominit(unsigned int memsize)
|
||||
{
|
||||
|
||||
bootstring = (char *)(memsize - 512);
|
||||
bootstring[511] = '\0';
|
||||
}
|
||||
|
@ -321,9 +315,9 @@ prominit(memsize)
|
|||
* Print boot message.
|
||||
*/
|
||||
int
|
||||
print_banner(memsize)
|
||||
unsigned int memsize;
|
||||
print_banner(unsigned int memsize)
|
||||
{
|
||||
|
||||
printf("\n");
|
||||
printf(">> %s " NETBSD_VERS " Bootloader, Revision %s [@%p]\n",
|
||||
bootprog_name, bootprog_rev, (void*)&start);
|
||||
|
@ -337,14 +331,13 @@ print_banner(memsize)
|
|||
* Parse PROM boot string, load the kernel and jump into it
|
||||
*/
|
||||
int
|
||||
main(memsize)
|
||||
unsigned int memsize;
|
||||
main(unsigned int memsize)
|
||||
{
|
||||
char **namep, *dev, *kernel, *bi_addr;
|
||||
char bootpath[PATH_MAX];
|
||||
int win;
|
||||
u_long marks[MARK_MAX];
|
||||
void (*entry) __P((unsigned int, u_int, char*));
|
||||
void (*entry)(unsigned int, u_int, char *);
|
||||
|
||||
struct btinfo_flags bi_flags;
|
||||
struct btinfo_symtab bi_syms;
|
||||
|
@ -393,7 +386,7 @@ main(memsize)
|
|||
strncpy(bi_bpath.bootpath, kernel, BTINFO_BOOTPATH_LEN);
|
||||
bi_add(&bi_bpath, BTINFO_BOOTPATH, sizeof(bi_bpath));
|
||||
|
||||
entry = (void *) marks[MARK_ENTRY];
|
||||
entry = (void *)marks[MARK_ENTRY];
|
||||
bi_syms.nsym = marks[MARK_NSYM];
|
||||
bi_syms.ssym = marks[MARK_SYM];
|
||||
bi_syms.esym = marks[MARK_END];
|
||||
|
@ -401,7 +394,7 @@ main(memsize)
|
|||
|
||||
bi_add(&bi_flags, BTINFO_FLAGS, sizeof(bi_flags));
|
||||
|
||||
entry = (void *) marks[MARK_ENTRY];
|
||||
entry = (void *)marks[MARK_ENTRY];
|
||||
|
||||
DPRINTF(("Bootinfo @ 0x%x\n", bi_addr));
|
||||
printf("Starting at 0x%x\n\n", (u_int)entry);
|
||||
|
@ -409,5 +402,5 @@ main(memsize)
|
|||
}
|
||||
|
||||
(void)printf("Boot failed! Rebooting...\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: boot.h,v 1.3 2005/12/11 12:17:06 christos Exp $ */
|
||||
/* $NetBSD: boot.h,v 1.4 2007/08/03 13:15:56 tsutsui Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2003 The NetBSD Foundation, Inc.
|
||||
|
@ -48,15 +48,15 @@ extern char *kernelnames[];
|
|||
/*
|
||||
* com
|
||||
*/
|
||||
int comspeed __P((long));
|
||||
int comspeed(long);
|
||||
|
||||
/*
|
||||
* console
|
||||
*/
|
||||
char* cninit __P((int *, int *));
|
||||
int cngetc __P((void));
|
||||
void cnputc __P((int));
|
||||
int cnscan __P((void));
|
||||
char *cninit(int *, int *);
|
||||
int cngetc(void);
|
||||
void cnputc(int);
|
||||
int cnscan(void);
|
||||
|
||||
/*
|
||||
* clock
|
||||
|
@ -66,14 +66,13 @@ void delay(int);
|
|||
/*
|
||||
* wd
|
||||
*/
|
||||
int wdstrategy __P((void *, int, daddr_t, size_t, void *, size_t *));
|
||||
int wdopen __P((struct open_file *, ...));
|
||||
int wdclose __P((struct open_file *));
|
||||
int wdstrategy(void *, int, daddr_t, size_t, void *, size_t *);
|
||||
int wdopen(struct open_file *, ...);
|
||||
int wdclose(struct open_file *);
|
||||
|
||||
/*
|
||||
* devopen
|
||||
*/
|
||||
int devparse (const char *fname, int *dev, u_int8_t *unit,
|
||||
u_int8_t *part, const char **file);
|
||||
int devparse(const char *, int *, uint8_t *, uint8_t *, const char **);
|
||||
|
||||
int tgets(char *);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: bootinfo.c,v 1.2 2005/12/11 12:17:06 christos Exp $ */
|
||||
/* $NetBSD: bootinfo.c,v 1.3 2007/08/03 13:15:56 tsutsui Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
|
||||
|
@ -47,12 +47,13 @@ static char *bootinfo = NULL;
|
|||
static char *bi_next;
|
||||
static int bi_size;
|
||||
|
||||
char* bi_init(void)
|
||||
char *
|
||||
bi_init(void)
|
||||
{
|
||||
struct btinfo_common *bi;
|
||||
struct btinfo_magic bi_magic;
|
||||
|
||||
if ( (bootinfo = (char*)alloc(BOOTINFO_SIZE)) != NULL) {
|
||||
if ((bootinfo = (char *)alloc(BOOTINFO_SIZE)) != NULL) {
|
||||
bi = (struct btinfo_common *)bootinfo;
|
||||
bi->next = bi->type = 0;
|
||||
bi_next = bootinfo;
|
||||
|
@ -62,12 +63,10 @@ char* bi_init(void)
|
|||
bi_add(&bi_magic, BTINFO_MAGIC, sizeof(bi_magic));
|
||||
}
|
||||
|
||||
return (bootinfo);
|
||||
return bootinfo;
|
||||
}
|
||||
|
||||
void bi_add(new, type, size)
|
||||
void *new;
|
||||
int type, size;
|
||||
void bi_add(void *new, int type, int size)
|
||||
{
|
||||
struct btinfo_common *bi;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: bootinfo.h,v 1.2 2005/12/11 12:17:06 christos Exp $ */
|
||||
/* $NetBSD: bootinfo.h,v 1.3 2007/08/03 13:15:56 tsutsui Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
|
||||
|
@ -38,5 +38,5 @@
|
|||
|
||||
#include <machine/bootinfo.h>
|
||||
|
||||
char* bi_init __P((void));
|
||||
void bi_add __P((void *, int, int));
|
||||
char *bi_init(void);
|
||||
void bi_add(void *, int, int);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: com.c,v 1.4 2005/12/11 12:17:06 christos Exp $ */
|
||||
/* $NetBSD: com.c,v 1.5 2007/08/03 13:15:56 tsutsui Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1993, 1994, 1995, 1996, 1997
|
||||
|
@ -70,8 +70,7 @@
|
|||
#define COM_TOLERANCE 30 /* baud rate tolerance, in 0.1% units */
|
||||
|
||||
int
|
||||
comspeed(speed)
|
||||
long speed;
|
||||
comspeed(long speed)
|
||||
{
|
||||
#define divrnd(n, q) (((n)*2/(q)+1)/2) /* divide and round off */
|
||||
|
||||
|
@ -79,16 +78,16 @@ comspeed(speed)
|
|||
long frequency = COM_FREQ * 10;
|
||||
|
||||
if (speed <= 0)
|
||||
return (-1);
|
||||
return -1;
|
||||
x = divrnd((frequency / 16), speed);
|
||||
if (x <= 0)
|
||||
return (-1);
|
||||
return -1;
|
||||
err = divrnd(((quad_t)frequency) * 1000 / 16, speed * x) - 1000;
|
||||
if (err < 0)
|
||||
err = -err;
|
||||
if (err > COM_TOLERANCE)
|
||||
return (-1);
|
||||
return (x);
|
||||
return -1;
|
||||
return x;
|
||||
|
||||
#undef divrnd
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: cons.c,v 1.3 2005/12/11 12:17:06 christos Exp $ */
|
||||
/* $NetBSD: cons.c,v 1.4 2007/08/03 13:15:56 tsutsui Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1990, 1993
|
||||
|
@ -82,11 +82,11 @@
|
|||
#include "cons.h"
|
||||
|
||||
#ifdef CONS_SERIAL
|
||||
void siocnprobe __P((struct consdev *));
|
||||
void siocninit __P((struct consdev *));
|
||||
void siocnputchar __P((void *, int));
|
||||
int siocngetchar __P((void *));
|
||||
int siocnscan __P((void *));
|
||||
void siocnprobe(struct consdev *);
|
||||
void siocninit(struct consdev *);
|
||||
void siocnputchar(void *, int);
|
||||
int siocngetchar(void *);
|
||||
int siocnscan(void *);
|
||||
# include "ns16550.h"
|
||||
# ifndef COMPORT
|
||||
# define COMPORT COM1
|
||||
|
@ -107,9 +107,7 @@ struct consdev constab[] = {
|
|||
struct consdev *cn_tab;
|
||||
|
||||
char *
|
||||
cninit(addr, speed)
|
||||
int *addr;
|
||||
int *speed;
|
||||
cninit(int *addr, int *speed)
|
||||
{
|
||||
register struct consdev *cp;
|
||||
|
||||
|
@ -124,24 +122,23 @@ cninit(addr, speed)
|
|||
(*cn_tab->cn_init)(cn_tab);
|
||||
*addr = cn_tab->address;
|
||||
*speed = cn_tab->speed;
|
||||
return (cn_tab->cn_name);
|
||||
return cn_tab->cn_name;
|
||||
}
|
||||
|
||||
return (NULL);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int
|
||||
cngetc()
|
||||
cngetc(void)
|
||||
{
|
||||
|
||||
if (cn_tab)
|
||||
return ((*cn_tab->cn_getc)(cn_tab->cn_dev));
|
||||
return (0);
|
||||
return (*cn_tab->cn_getc)(cn_tab->cn_dev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
cnputc(c)
|
||||
int c;
|
||||
cnputc(int c)
|
||||
{
|
||||
|
||||
if (cn_tab)
|
||||
|
@ -149,12 +146,12 @@ cnputc(c)
|
|||
}
|
||||
|
||||
int
|
||||
cnscan()
|
||||
cnscan(void)
|
||||
{
|
||||
|
||||
if (cn_tab)
|
||||
return ((*cn_tab->cn_scan)(cn_tab->cn_dev));
|
||||
return (0);
|
||||
return (*cn_tab->cn_scan)(cn_tab->cn_dev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONS_FB
|
||||
|
@ -162,45 +159,39 @@ cnscan()
|
|||
* frame buffer console
|
||||
*/
|
||||
void
|
||||
fbcnprobe(cp)
|
||||
struct consdev *cp;
|
||||
fbcnprobe(struct consdev *cp)
|
||||
{
|
||||
|
||||
cp->cn_pri = CN_INTERNAL;
|
||||
}
|
||||
|
||||
void
|
||||
fbcninit(cp)
|
||||
struct consdev *cp;
|
||||
fbcninit(struct consdev *cp)
|
||||
{
|
||||
|
||||
video_init((u_char *)cp->address);
|
||||
video_init((uint8_t *)cp->address);
|
||||
kbdreset();
|
||||
}
|
||||
|
||||
int
|
||||
fbcngetchar(dev)
|
||||
void *dev;
|
||||
fbcngetchar(void *dev)
|
||||
{
|
||||
|
||||
return (kbd_getc());
|
||||
return kbd_getc();
|
||||
}
|
||||
|
||||
void
|
||||
fbcnputchar(dev, c)
|
||||
void *dev;
|
||||
register int c;
|
||||
fbcnputchar(void *dev, int c)
|
||||
{
|
||||
|
||||
video_putc(c);
|
||||
}
|
||||
|
||||
int
|
||||
fbcnscan(dev)
|
||||
void *dev;
|
||||
fbcnscan(void *dev)
|
||||
{
|
||||
|
||||
return (kbd(1));
|
||||
return kbd(1);
|
||||
}
|
||||
#endif /* CONS_FB */
|
||||
|
||||
|
@ -209,45 +200,40 @@ fbcnscan(dev)
|
|||
* VGA console
|
||||
*/
|
||||
void
|
||||
vgacnprobe(cp)
|
||||
struct consdev *cp;
|
||||
vgacnprobe(struct consdev *cp)
|
||||
{
|
||||
|
||||
cp->cn_pri = CN_NORMAL;
|
||||
}
|
||||
|
||||
void
|
||||
vgacninit(cp)
|
||||
struct consdev *cp;
|
||||
vgacninit(struct consdev *cp)
|
||||
{
|
||||
|
||||
vga_reset((u_char *)cp->address);
|
||||
vga_init((u_char *)cp->address);
|
||||
vga_reset((uint8_t *)cp->address);
|
||||
vga_init((uint8_t *)cp->address);
|
||||
kbdreset();
|
||||
}
|
||||
|
||||
int
|
||||
vgacngetchar(dev)
|
||||
void *dev;
|
||||
vgacngetchar(void *dev)
|
||||
{
|
||||
|
||||
return (kbd_getc());
|
||||
return kbd_getc();
|
||||
}
|
||||
|
||||
void
|
||||
vgacnputchar(dev, c)
|
||||
void *dev;
|
||||
register int c;
|
||||
vgacnputchar(void *dev, int c)
|
||||
{
|
||||
|
||||
vga_putc(c);
|
||||
}
|
||||
|
||||
int
|
||||
vgacnscan(dev)
|
||||
void *dev;
|
||||
vgacnscan(void *dev)
|
||||
{
|
||||
|
||||
return (kbd(1));
|
||||
return kbd(1);
|
||||
}
|
||||
#endif /* CONS_VGA */
|
||||
|
||||
|
@ -256,33 +242,29 @@ vgacnscan(dev)
|
|||
* serial console
|
||||
*/
|
||||
void
|
||||
siocnprobe(cp)
|
||||
struct consdev *cp;
|
||||
siocnprobe(struct consdev *cp)
|
||||
{
|
||||
if (*((unsigned long *)COMPROBE) != 0)
|
||||
|
||||
if (*((uint32_t *)COMPROBE) != 0)
|
||||
cp->cn_pri = CN_REMOTE;
|
||||
}
|
||||
|
||||
void
|
||||
siocninit(cp)
|
||||
struct consdev *cp;
|
||||
siocninit(struct consdev *cp)
|
||||
{
|
||||
|
||||
cp->cn_dev = (void *)NS16550_init(cp->address, cp->speed);
|
||||
}
|
||||
|
||||
int
|
||||
siocngetchar(dev)
|
||||
void *dev;
|
||||
siocngetchar(void *dev)
|
||||
{
|
||||
|
||||
return (NS16550_getc((struct NS16550 *)dev));
|
||||
return NS16550_getc((struct NS16550 *)dev);
|
||||
}
|
||||
|
||||
void
|
||||
siocnputchar(dev, c)
|
||||
void *dev;
|
||||
register int c;
|
||||
siocnputchar(void *dev, int c)
|
||||
{
|
||||
|
||||
if (c == '\n')
|
||||
|
@ -291,10 +273,9 @@ siocnputchar(dev, c)
|
|||
}
|
||||
|
||||
int
|
||||
siocnscan(dev)
|
||||
void *dev;
|
||||
siocnscan(void *dev)
|
||||
{
|
||||
|
||||
return (NS16550_scankbd((struct NS16550 *)dev));
|
||||
return NS16550_scankbd((struct NS16550 *)dev);
|
||||
}
|
||||
#endif /* CONS_SERIAL */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: devopen.c,v 1.1 2003/06/25 17:24:22 cdi Exp $ */
|
||||
/* $NetBSD: devopen.c,v 1.2 2007/08/03 13:15:56 tsutsui Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2003 The NetBSD Foundation, Inc.
|
||||
|
@ -48,8 +48,8 @@
|
|||
* [device:][filename]
|
||||
*/
|
||||
int
|
||||
devparse(const char *fname, int *dev, u_int8_t *unit,
|
||||
u_int8_t *part, const char **file)
|
||||
devparse(const char *fname, int *dev, uint8_t *unit, uint8_t *part,
|
||||
const char **file)
|
||||
{
|
||||
const char *col;
|
||||
|
||||
|
@ -59,17 +59,17 @@ devparse(const char *fname, int *dev, u_int8_t *unit,
|
|||
*file = DEFKERNELNAME;
|
||||
|
||||
if (fname == NULL)
|
||||
return (0);
|
||||
return 0;
|
||||
|
||||
if ( (col = strchr(fname, ':')) != NULL) {
|
||||
if ((col = strchr(fname, ':')) != NULL) {
|
||||
int devlen;
|
||||
u_int8_t i, u, p;
|
||||
uint8_t i, u, p;
|
||||
struct devsw *dp;
|
||||
char devname[MAXDEVNAME];
|
||||
|
||||
devlen = col - fname;
|
||||
if (devlen > MAXDEVNAME)
|
||||
return (EINVAL);
|
||||
return EINVAL;
|
||||
|
||||
#define isnum(c) (((c) >= '0') && ((c) <= '9'))
|
||||
#define isalpha(c) (((c) >= 'a') && ((c) <= 'z'))
|
||||
|
@ -80,21 +80,21 @@ devparse(const char *fname, int *dev, u_int8_t *unit,
|
|||
devname[i] = 0;
|
||||
|
||||
if (!isnum(fname[i]))
|
||||
return (EUNIT);
|
||||
return EUNIT;
|
||||
|
||||
/* device number */
|
||||
for (u = 0; isnum(fname[i]) && (i < devlen); i++)
|
||||
u = u * 10 + (fname[i] - '0');
|
||||
|
||||
if (!isalpha(fname[i]))
|
||||
return (EPART);
|
||||
return EPART;
|
||||
|
||||
/* partition number */
|
||||
if (i < devlen)
|
||||
p = fname[i++] - 'a';
|
||||
|
||||
if (i != devlen)
|
||||
return (ENXIO);
|
||||
return ENXIO;
|
||||
|
||||
/* check device name */
|
||||
for (dp = devsw, i = 0; i < ndevs; dp++, i++) {
|
||||
|
@ -103,7 +103,7 @@ devparse(const char *fname, int *dev, u_int8_t *unit,
|
|||
}
|
||||
|
||||
if (i >= ndevs)
|
||||
return (ENXIO);
|
||||
return ENXIO;
|
||||
|
||||
*unit = u;
|
||||
*part = p;
|
||||
|
@ -114,31 +114,31 @@ devparse(const char *fname, int *dev, u_int8_t *unit,
|
|||
if (*fname)
|
||||
*file = fname;
|
||||
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
devopen(struct open_file *f, const char *fname, char **file)
|
||||
{
|
||||
struct devsw *dp;
|
||||
u_int8_t unit, part;
|
||||
int dev, error;
|
||||
struct devsw *dp;
|
||||
uint8_t unit, part;
|
||||
int dev, error;
|
||||
|
||||
DPRINTF(("devopen(%s)\n", fname));
|
||||
DPRINTF(("devopen(%s)\n", fname));
|
||||
|
||||
if ( (error = devparse(fname, &dev, &unit, &part,
|
||||
(const char **)file)) != 0)
|
||||
return error;
|
||||
if ((error = devparse(fname, &dev, &unit, &part,
|
||||
(const char **)file)) != 0)
|
||||
return error;
|
||||
|
||||
dp = &devsw[dev];
|
||||
if ((void *)dp->dv_open == (void *)nodev)
|
||||
dp = &devsw[dev];
|
||||
if ((void *)dp->dv_open == (void *)nodev)
|
||||
return ENXIO;
|
||||
|
||||
f->f_dev = dp;
|
||||
f->f_dev = dp;
|
||||
|
||||
if ( (error = (*dp->dv_open)(f, unit, part)) != 0)
|
||||
if ((error = (*dp->dv_open)(f, unit, part)) != 0)
|
||||
printf("%s%d%c: %d = %s\n", devsw[dev].dv_name,
|
||||
unit, 'a' + part, error, strerror(error));
|
||||
unit, 'a' + part, error, strerror(error));
|
||||
|
||||
return error;
|
||||
return error;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: ns16550.c,v 1.1 2003/06/25 17:24:22 cdi Exp $ */
|
||||
/* $NetBSD: ns16550.c,v 1.2 2007/08/03 13:15:56 tsutsui Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (C) 1995-1997 Gary Thomas (gdt@linuxppc.org)
|
||||
|
@ -42,9 +42,7 @@
|
|||
int calculated_speed;
|
||||
|
||||
volatile struct NS16550 *
|
||||
NS16550_init(addr, speed)
|
||||
int addr;
|
||||
int speed;
|
||||
NS16550_init(int addr, int speed)
|
||||
{
|
||||
struct NS16550 *com_port;
|
||||
|
||||
|
@ -60,13 +58,11 @@ NS16550_init(addr, speed)
|
|||
com_port->fcr = 0x07; /* Clear & enable FIFOs */
|
||||
com_port->ier = 0x00;
|
||||
|
||||
return (com_port);
|
||||
return com_port;
|
||||
}
|
||||
|
||||
void
|
||||
NS16550_putc(com_port, c)
|
||||
volatile struct NS16550 *com_port;
|
||||
int c;
|
||||
NS16550_putc(volatile struct NS16550 *com_port, int c)
|
||||
{
|
||||
|
||||
while ((com_port->lsr & LSR_THRE) == 0)
|
||||
|
@ -75,31 +71,27 @@ NS16550_putc(com_port, c)
|
|||
}
|
||||
|
||||
int
|
||||
NS16550_getc(com_port)
|
||||
volatile struct NS16550 *com_port;
|
||||
NS16550_getc(volatile struct NS16550 *com_port)
|
||||
{
|
||||
|
||||
while ((com_port->lsr & LSR_DR) == 0)
|
||||
;
|
||||
return (com_port->rbr);
|
||||
return com_port->rbr;
|
||||
}
|
||||
|
||||
int
|
||||
NS16550_scankbd(com_port)
|
||||
volatile struct NS16550 *com_port;
|
||||
NS16550_scankbd(volatile struct NS16550 *com_port)
|
||||
{
|
||||
|
||||
if ((com_port->lsr & LSR_DR) == 0)
|
||||
return -1;
|
||||
return (com_port->rbr);
|
||||
return com_port->rbr;
|
||||
}
|
||||
|
||||
int
|
||||
NS16550_test(com_port)
|
||||
volatile struct NS16550 *com_port;
|
||||
NS16550_test(volatile struct NS16550 *com_port)
|
||||
{
|
||||
|
||||
return ((com_port->lsr & LSR_DR) != 0)
|
||||
;
|
||||
return (com_port->lsr & LSR_DR) != 0;
|
||||
}
|
||||
#endif /* CONS_SERIAL */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: ns16550.h,v 1.1 2003/06/25 17:24:22 cdi Exp $ */
|
||||
/* $NetBSD: ns16550.h,v 1.2 2007/08/03 13:15:56 tsutsui Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (C) 1995-1997 Gary Thomas (gdt@linuxppc.org)
|
||||
|
@ -34,17 +34,16 @@
|
|||
* NS16550 Serial Port
|
||||
*/
|
||||
|
||||
struct NS16550
|
||||
{
|
||||
volatile unsigned char rbr; /* 0 */
|
||||
volatile unsigned char ier; /* 1 */
|
||||
volatile unsigned char fcr; /* 2 */
|
||||
volatile unsigned char lcr; /* 3 */
|
||||
volatile unsigned char mcr; /* 4 */
|
||||
volatile unsigned char lsr; /* 5 */
|
||||
volatile unsigned char msr; /* 6 */
|
||||
volatile unsigned char scr; /* 7 */
|
||||
};
|
||||
struct NS16550 {
|
||||
volatile uint8_t rbr; /* 0 */
|
||||
volatile uint8_t ier; /* 1 */
|
||||
volatile uint8_t fcr; /* 2 */
|
||||
volatile uint8_t lcr; /* 3 */
|
||||
volatile uint8_t mcr; /* 4 */
|
||||
volatile uint8_t lsr; /* 5 */
|
||||
volatile uint8_t msr; /* 6 */
|
||||
volatile uint8_t scr; /* 7 */
|
||||
};
|
||||
|
||||
#define thr rbr
|
||||
#define iir fcr
|
||||
|
@ -71,8 +70,8 @@ struct NS16550
|
|||
#define COMPROBE 0xa020001c
|
||||
#endif
|
||||
|
||||
extern volatile struct NS16550 *NS16550_init __P((int, int));
|
||||
extern void NS16550_putc __P((volatile struct NS16550 *, int));
|
||||
extern int NS16550_getc __P((volatile struct NS16550 *));
|
||||
extern int NS16550_scankbd __P((volatile struct NS16550 *));
|
||||
extern int NS16550_test __P((volatile struct NS16550 *));
|
||||
volatile struct NS16550 *NS16550_init(int, int);
|
||||
void NS16550_putc(volatile struct NS16550 *, int);
|
||||
int NS16550_getc(volatile struct NS16550 *);
|
||||
int NS16550_scankbd(volatile struct NS16550 *);
|
||||
int NS16550_test(volatile struct NS16550 *);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: pciide.c,v 1.5 2005/12/11 12:17:06 christos Exp $ */
|
||||
/* $NetBSD: pciide.c,v 1.6 2007/08/03 13:15:56 tsutsui Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2003 The NetBSD Foundation, Inc.
|
||||
|
@ -43,11 +43,9 @@
|
|||
#define COBALT_IO_SPACE_BASE 0x10000000 /* XXX VT82C586 ISA I/O space */
|
||||
|
||||
int
|
||||
pciide_init(chp, unit)
|
||||
struct wdc_channel *chp;
|
||||
u_int *unit;
|
||||
pciide_init(struct wdc_channel *chp, u_int *unit)
|
||||
{
|
||||
u_int32_t cmdreg, ctlreg;
|
||||
uint32_t cmdreg, ctlreg;
|
||||
int i, compatchan = 0;
|
||||
|
||||
/*
|
||||
|
@ -69,15 +67,15 @@ pciide_init(chp, unit)
|
|||
PCIIDE_COMPAT_CTL_BASE(compatchan));
|
||||
|
||||
/* set up cmd regsiters */
|
||||
chp->c_cmdbase = (u_int8_t *)cmdreg;
|
||||
chp->c_data = (u_int16_t *)(cmdreg + wd_data);
|
||||
chp->c_cmdbase = (uint8_t *)cmdreg;
|
||||
chp->c_data = (uint16_t *)(cmdreg + wd_data);
|
||||
for (i = 0; i < WDC_NPORTS; i++)
|
||||
chp->c_cmdreg[i] = chp->c_cmdbase + i;
|
||||
/* set up shadow registers */
|
||||
chp->c_cmdreg[wd_status] = chp->c_cmdreg[wd_command];
|
||||
chp->c_cmdreg[wd_features] = chp->c_cmdreg[wd_precomp];
|
||||
/* set up ctl registers */
|
||||
chp->c_ctlbase = (u_int8_t *)ctlreg;
|
||||
chp->c_ctlbase = (uint8_t *)ctlreg;
|
||||
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: prf.c,v 1.1 2003/06/25 17:24:22 cdi Exp $ */
|
||||
/* $NetBSD: prf.c,v 1.2 2007/08/03 13:15:57 tsutsui Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1996, 1997 The NetBSD Foundation, Inc.
|
||||
|
@ -39,14 +39,15 @@
|
|||
#include <lib/libsa/stand.h>
|
||||
|
||||
void
|
||||
putchar(c)
|
||||
unsigned char c;
|
||||
putchar(int c)
|
||||
{
|
||||
|
||||
cnputc(c);
|
||||
}
|
||||
|
||||
int
|
||||
getchar()
|
||||
getchar(void)
|
||||
{
|
||||
return (cngetc());
|
||||
|
||||
return cngetc();
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: tgets.c,v 1.2 2005/12/11 12:17:06 christos Exp $ */
|
||||
/* $NetBSD: tgets.c,v 1.3 2007/08/03 13:15:57 tsutsui Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1993
|
||||
|
@ -37,8 +37,7 @@
|
|||
#define USE_SCAN
|
||||
|
||||
int
|
||||
tgets(buf)
|
||||
char *buf;
|
||||
tgets(char *buf)
|
||||
{
|
||||
int c;
|
||||
char *lp;
|
||||
|
@ -53,7 +52,7 @@ tgets(buf)
|
|||
goto next;
|
||||
delay(SCANWAIT / 32); /* XXX */
|
||||
}
|
||||
return (-1);
|
||||
return -1;
|
||||
next:
|
||||
#else
|
||||
c = getchar();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: wd.c,v 1.6 2007/08/03 12:57:38 tsutsui Exp $ */
|
||||
/* $NetBSD: wd.c,v 1.7 2007/08/03 13:15:57 tsutsui Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2003 The NetBSD Foundation, Inc.
|
||||
|
@ -56,14 +56,13 @@ static void wdgetdefaultlabel(struct wd_softc *wd, struct disklabel *lp);
|
|||
* Get drive parameters through 'device identify' command.
|
||||
*/
|
||||
int
|
||||
wd_get_params(wd)
|
||||
struct wd_softc *wd;
|
||||
wd_get_params(struct wd_softc *wd)
|
||||
{
|
||||
int error;
|
||||
unsigned char buf[DEV_BSIZE];
|
||||
uint8_t buf[DEV_BSIZE];
|
||||
|
||||
if ( (error = wdc_exec_identify(wd, buf)) != 0)
|
||||
return (error);
|
||||
if ((error = wdc_exec_identify(wd, buf)) != 0)
|
||||
return error;
|
||||
|
||||
wd->sc_params = *(struct ataparams *)buf;
|
||||
|
||||
|
@ -81,17 +80,16 @@ wd_get_params(wd)
|
|||
wd->sc_flags |= WDF_LBA;
|
||||
}
|
||||
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize disk label to the default value.
|
||||
*/
|
||||
void
|
||||
wdgetdefaultlabel(wd, lp)
|
||||
struct wd_softc *wd;
|
||||
struct disklabel *lp;
|
||||
wdgetdefaultlabel(struct wd_softc *wd, struct disklabel *lp)
|
||||
{
|
||||
|
||||
memset(lp, 0, sizeof(struct disklabel));
|
||||
|
||||
lp->d_secsize = DEV_BSIZE;
|
||||
|
@ -130,14 +128,13 @@ wdgetdefaultlabel(wd, lp)
|
|||
* Read disk label from the device.
|
||||
*/
|
||||
int
|
||||
wdgetdisklabel(wd)
|
||||
struct wd_softc *wd;
|
||||
wdgetdisklabel(struct wd_softc *wd)
|
||||
{
|
||||
char *msg;
|
||||
int sector;
|
||||
size_t rsize;
|
||||
struct disklabel *lp;
|
||||
unsigned char buf[DEV_BSIZE];
|
||||
uint8_t buf[DEV_BSIZE];
|
||||
|
||||
wdgetdefaultlabel(wd, &wd->sc_label);
|
||||
|
||||
|
@ -148,7 +145,7 @@ wdgetdisklabel(wd)
|
|||
if (wdstrategy(wd, F_READ, MBR_BBSECTOR, DEV_BSIZE, buf, &rsize))
|
||||
return EOFFSET;
|
||||
|
||||
if (*(u_int16_t *)&buf[MBR_MAGIC_OFFSET] == MBR_MAGIC) {
|
||||
if (*(uint16_t *)&buf[MBR_MAGIC_OFFSET] == MBR_MAGIC) {
|
||||
int i;
|
||||
struct mbr_partition *mp;
|
||||
|
||||
|
@ -166,30 +163,30 @@ wdgetdisklabel(wd)
|
|||
}
|
||||
|
||||
if (wdstrategy(wd, F_READ, sector + LABELSECTOR, DEV_BSIZE,
|
||||
buf, &rsize))
|
||||
buf, &rsize))
|
||||
return EOFFSET;
|
||||
|
||||
if ( (msg = getdisklabel(buf + LABELOFFSET, &wd->sc_label)))
|
||||
if ((msg = getdisklabel(buf + LABELOFFSET, &wd->sc_label)))
|
||||
printf("wd%d: getdisklabel: %s\n", wd->sc_unit, msg);
|
||||
|
||||
lp = &wd->sc_label;
|
||||
|
||||
/* check partition */
|
||||
if ((wd->sc_part >= lp->d_npartitions) ||
|
||||
(lp->d_partitions[wd->sc_part].p_fstype == FS_UNUSED)) {
|
||||
(lp->d_partitions[wd->sc_part].p_fstype == FS_UNUSED)) {
|
||||
DPRINTF(("illegal partition\n"));
|
||||
return (EPART);
|
||||
return EPART;
|
||||
}
|
||||
|
||||
DPRINTF(("label info: d_secsize %d, d_nsectors %d, d_ncylinders %d,"
|
||||
"d_ntracks %d, d_secpercyl %d\n",
|
||||
wd->sc_label.d_secsize,
|
||||
wd->sc_label.d_nsectors,
|
||||
wd->sc_label.d_ncylinders,
|
||||
wd->sc_label.d_ntracks,
|
||||
wd->sc_label.d_secpercyl));
|
||||
"d_ntracks %d, d_secpercyl %d\n",
|
||||
wd->sc_label.d_secsize,
|
||||
wd->sc_label.d_nsectors,
|
||||
wd->sc_label.d_ncylinders,
|
||||
wd->sc_label.d_ntracks,
|
||||
wd->sc_label.d_secpercyl));
|
||||
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -222,14 +219,14 @@ wdopen(struct open_file *f, ...)
|
|||
wd->sc_part = part;
|
||||
wd->sc_unit = unit;
|
||||
|
||||
if ( (error = wd_get_params(wd)) != 0)
|
||||
return (error);
|
||||
if ((error = wd_get_params(wd)) != 0)
|
||||
return error;
|
||||
|
||||
if ( (error = wdgetdisklabel(wd)) != 0)
|
||||
if ((error = wdgetdisklabel(wd)) != 0)
|
||||
return error;
|
||||
|
||||
f->f_devdata = wd;
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -238,6 +235,7 @@ wdopen(struct open_file *f, ...)
|
|||
int
|
||||
wdclose(struct open_file *f)
|
||||
{
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -245,13 +243,7 @@ wdclose(struct open_file *f)
|
|||
* Read some data.
|
||||
*/
|
||||
int
|
||||
wdstrategy(f, rw, dblk, size, buf, rsize)
|
||||
void *f;
|
||||
int rw;
|
||||
daddr_t dblk;
|
||||
size_t size;
|
||||
void *buf;
|
||||
size_t *rsize;
|
||||
wdstrategy(void *f, int rw, daddr_t dblk, size_t size, void *buf, size_t *rsize)
|
||||
{
|
||||
int i, nsect;
|
||||
daddr_t blkno;
|
||||
|
@ -259,7 +251,7 @@ wdstrategy(f, rw, dblk, size, buf, rsize)
|
|||
struct partition *pp;
|
||||
|
||||
if (size == 0)
|
||||
return (0);
|
||||
return 0;
|
||||
|
||||
if (rw != F_READ)
|
||||
return EOPNOTSUPP;
|
||||
|
@ -275,12 +267,12 @@ wdstrategy(f, rw, dblk, size, buf, rsize)
|
|||
for (i = 0; i < nsect; i++, blkno++) {
|
||||
int error;
|
||||
|
||||
if ( (error = wdc_exec_read(wd, WDCC_READ, blkno, buf)) != 0)
|
||||
return (error);
|
||||
if ((error = wdc_exec_read(wd, WDCC_READ, blkno, buf)) != 0)
|
||||
return error;
|
||||
|
||||
buf += wd->sc_label.d_secsize;
|
||||
}
|
||||
|
||||
*rsize = size;
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: wdc.c,v 1.7 2005/12/11 12:17:06 christos Exp $ */
|
||||
/* $NetBSD: wdc.c,v 1.8 2007/08/03 13:15:57 tsutsui Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2003 The NetBSD Foundation, Inc.
|
||||
|
@ -58,12 +58,10 @@ static int __wdcwait_reset(struct wdc_channel *chp, int drv_mask);
|
|||
* Reset the controller.
|
||||
*/
|
||||
static int
|
||||
__wdcwait_reset(chp, drv_mask)
|
||||
struct wdc_channel *chp;
|
||||
int drv_mask;
|
||||
__wdcwait_reset(struct wdc_channel *chp, int drv_mask)
|
||||
{
|
||||
int timeout;
|
||||
u_int8_t st0, st1;
|
||||
uint8_t st0, st1;
|
||||
|
||||
/* wait for BSY to deassert */
|
||||
for (timeout = 0; timeout < WDCNDELAY_RST; timeout++) {
|
||||
|
@ -102,8 +100,8 @@ __wdcwait_reset(chp, drv_mask)
|
|||
if (st1 & WDCS_BSY)
|
||||
drv_mask &= ~0x02;
|
||||
|
||||
end:
|
||||
return (drv_mask);
|
||||
end:
|
||||
return drv_mask;
|
||||
}
|
||||
|
||||
/* Test to see controller with at last one attached drive is there.
|
||||
|
@ -118,12 +116,11 @@ end:
|
|||
* If timeout -> return.
|
||||
*/
|
||||
static int
|
||||
wdcprobe(chp)
|
||||
struct wdc_channel *chp;
|
||||
wdcprobe(struct wdc_channel *chp)
|
||||
{
|
||||
u_int8_t st0, st1, sc, sn, cl, ch;
|
||||
u_int8_t ret_value = 0x03;
|
||||
u_int8_t drive;
|
||||
uint8_t st0, st1, sc, sn, cl, ch;
|
||||
uint8_t ret_value = 0x03;
|
||||
uint8_t drive;
|
||||
int found;
|
||||
|
||||
/*
|
||||
|
@ -141,7 +138,7 @@ wdcprobe(chp)
|
|||
if (st1 == 0xff || st1 == (WDSD_IBM | 0x10))
|
||||
ret_value &= ~0x02;
|
||||
if (ret_value == 0)
|
||||
return (ENXIO);
|
||||
return ENXIO;
|
||||
|
||||
/* assert SRST, wait for reset to complete */
|
||||
WDC_WRITE_REG(chp, wd_sdh, WDSD_IBM);
|
||||
|
@ -158,7 +155,7 @@ wdcprobe(chp)
|
|||
|
||||
/* if reset failed, there's nothing here */
|
||||
if (ret_value == 0)
|
||||
return (ENXIO);
|
||||
return ENXIO;
|
||||
|
||||
/*
|
||||
* Test presence of drives. First test register signatures looking for
|
||||
|
@ -170,79 +167,74 @@ wdcprobe(chp)
|
|||
for (drive = 0; drive < 2; drive++) {
|
||||
if ((ret_value & (0x01 << drive)) == 0)
|
||||
continue;
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
return (ENXIO);
|
||||
return ENXIO;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize the device.
|
||||
*/
|
||||
int
|
||||
wdc_init(sc, unit)
|
||||
struct wd_softc *sc;
|
||||
u_int *unit;
|
||||
wdc_init(struct wd_softc *sc, u_int *unit)
|
||||
{
|
||||
|
||||
if (pciide_init(&sc->sc_channel, unit) != 0)
|
||||
return (ENXIO);
|
||||
return ENXIO;
|
||||
if (wdcprobe(&sc->sc_channel) != 0)
|
||||
return (ENXIO);
|
||||
return (0);
|
||||
return ENXIO;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Wait until the device is ready.
|
||||
*/
|
||||
int
|
||||
wdc_wait_for_ready(chp)
|
||||
struct wdc_channel *chp;
|
||||
wdc_wait_for_ready(struct wdc_channel *chp)
|
||||
{
|
||||
u_int timeout;
|
||||
|
||||
for (timeout = WDC_TIMEOUT; timeout > 0; --timeout) {
|
||||
if ((WDC_READ_REG(chp, wd_status) & (WDCS_BSY | WDCS_DRDY))
|
||||
== WDCS_DRDY)
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
return (ENXIO);
|
||||
return ENXIO;
|
||||
}
|
||||
|
||||
/*
|
||||
* Read one block off the device.
|
||||
*/
|
||||
int
|
||||
wdc_read_block(sc, wd_c)
|
||||
struct wd_softc *sc;
|
||||
struct wdc_command *wd_c;
|
||||
wdc_read_block(struct wd_softc *sc, struct wdc_command *wd_c)
|
||||
{
|
||||
int i;
|
||||
struct wdc_channel *chp = &sc->sc_channel;
|
||||
u_int16_t *ptr = (u_int16_t*)wd_c->data;
|
||||
uint16_t *ptr = (uint16_t *)wd_c->data;
|
||||
|
||||
if (ptr == NULL)
|
||||
return (0);
|
||||
return 0;
|
||||
|
||||
for (i = wd_c->bcount; i > 0; i -= sizeof(u_int16_t))
|
||||
for (i = wd_c->bcount; i > 0; i -= sizeof(uint16_t))
|
||||
*ptr++ = WDC_READ_DATA(chp);
|
||||
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Send a command to the device (CHS and LBA addressing).
|
||||
*/
|
||||
int
|
||||
wdccommand(sc, wd_c)
|
||||
struct wd_softc *sc;
|
||||
struct wdc_command *wd_c;
|
||||
wdccommand(struct wd_softc *sc, struct wdc_command *wd_c)
|
||||
{
|
||||
u_int8_t err;
|
||||
uint8_t err;
|
||||
struct wdc_channel *chp = &sc->sc_channel;
|
||||
|
||||
#if 0
|
||||
DPRINTF(("wdccommand(%d, %d, %d, %d, %d, %d, %d)\n",
|
||||
wd_c->drive, wd_c->r_command, wd_c->r_cyl,
|
||||
wd_c->r_head, wd_c->r_sector, wd_c->bcount,
|
||||
wd_c->r_precomp));
|
||||
wd_c->drive, wd_c->r_command, wd_c->r_cyl,
|
||||
wd_c->r_head, wd_c->r_sector, wd_c->bcount,
|
||||
wd_c->r_precomp));
|
||||
#endif
|
||||
|
||||
WDC_WRITE_REG(chp, wd_precomp, wd_c->r_precomp);
|
||||
|
@ -255,26 +247,24 @@ wdccommand(sc, wd_c)
|
|||
WDC_WRITE_REG(chp, wd_command, wd_c->r_command);
|
||||
|
||||
if (wdc_wait_for_ready(chp) != 0)
|
||||
return (ENXIO);
|
||||
return ENXIO;
|
||||
|
||||
if (WDC_READ_REG(chp, wd_status) & WDCS_ERR) {
|
||||
printf("wd%d: error %x\n", chp->compatchan,
|
||||
WDC_READ_REG(chp, wd_error));
|
||||
return (ENXIO);
|
||||
WDC_READ_REG(chp, wd_error));
|
||||
return ENXIO;
|
||||
}
|
||||
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Send a command to the device (LBA48 addressing).
|
||||
*/
|
||||
int
|
||||
wdccommandext(wd, wd_c)
|
||||
struct wd_softc *wd;
|
||||
struct wdc_command *wd_c;
|
||||
wdccommandext(struct wd_softc *wd, struct wdc_command *wd_c)
|
||||
{
|
||||
u_int8_t err;
|
||||
uint8_t err;
|
||||
struct wdc_channel *chp = &wd->sc_channel;
|
||||
|
||||
/* Select drive, head, and addressing mode. */
|
||||
|
@ -298,24 +288,22 @@ wdccommandext(wd, wd_c)
|
|||
WDC_WRITE_REG(chp, wd_command, wd_c->r_command);
|
||||
|
||||
if (wdc_wait_for_ready(chp) != 0)
|
||||
return (ENXIO);
|
||||
return ENXIO;
|
||||
|
||||
if (WDC_READ_REG(chp, wd_status) & WDCS_ERR) {
|
||||
printf("wd%d: error %x\n", chp->compatchan,
|
||||
WDC_READ_REG(chp, wd_error));
|
||||
return (ENXIO);
|
||||
WDC_READ_REG(chp, wd_error));
|
||||
return ENXIO;
|
||||
}
|
||||
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Issue 'device identify' command.
|
||||
*/
|
||||
int
|
||||
wdc_exec_identify(wd, data)
|
||||
struct wd_softc *wd;
|
||||
void *data;
|
||||
wdc_exec_identify(struct wd_softc *wd, void *data)
|
||||
{
|
||||
int error;
|
||||
struct wdc_command wd_c;
|
||||
|
@ -327,8 +315,8 @@ wdc_exec_identify(wd, data)
|
|||
wd_c.bcount = DEV_BSIZE;
|
||||
wd_c.data = data;
|
||||
|
||||
if ( (error = wdccommand(wd, &wd_c)) != 0)
|
||||
return (error);
|
||||
if ((error = wdccommand(wd, &wd_c)) != 0)
|
||||
return error;
|
||||
|
||||
return wdc_read_block(wd, &wd_c);
|
||||
}
|
||||
|
@ -337,11 +325,7 @@ wdc_exec_identify(wd, data)
|
|||
* Issue 'read' command.
|
||||
*/
|
||||
int
|
||||
wdc_exec_read(wd, cmd, blkno, data)
|
||||
struct wd_softc *wd;
|
||||
u_int8_t cmd;
|
||||
daddr_t blkno;
|
||||
void *data;
|
||||
wdc_exec_read(struct wd_softc *wd, uint8_t cmd, daddr_t blkno, void *data)
|
||||
{
|
||||
int error;
|
||||
struct wdc_command wd_c;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: wdvar.h,v 1.6 2005/12/11 12:17:06 christos Exp $ */
|
||||
/* $NetBSD: wdvar.h,v 1.7 2007/08/03 13:15:57 tsutsui Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2003 The NetBSD Foundation, Inc.
|
||||
|
@ -49,12 +49,12 @@
|
|||
#define WDC_NSHADOWREG 2 /* XXX */
|
||||
|
||||
struct wdc_channel {
|
||||
volatile u_int8_t *c_cmdbase;
|
||||
volatile u_int8_t *c_ctlbase;
|
||||
volatile u_int8_t *c_cmdreg[WDC_NPORTS + WDC_NSHADOWREG];
|
||||
volatile u_int16_t *c_data;
|
||||
volatile uint8_t *c_cmdbase;
|
||||
volatile uint8_t *c_ctlbase;
|
||||
volatile uint8_t *c_cmdreg[WDC_NPORTS + WDC_NSHADOWREG];
|
||||
volatile uint16_t *c_data;
|
||||
|
||||
u_int8_t compatchan;
|
||||
uint8_t compatchan;
|
||||
};
|
||||
|
||||
#define WDC_READ_REG(chp, reg) *(chp)->c_cmdreg[(reg)]
|
||||
|
@ -66,12 +66,12 @@ struct wdc_channel {
|
|||
struct wd_softc {
|
||||
#define WDF_LBA 0x0001
|
||||
#define WDF_LBA48 0x0002
|
||||
u_int16_t sc_flags;
|
||||
uint16_t sc_flags;
|
||||
|
||||
u_int sc_part;
|
||||
u_int sc_unit;
|
||||
|
||||
u_int64_t sc_capacity;
|
||||
uint64_t sc_capacity;
|
||||
|
||||
struct ataparams sc_params;
|
||||
struct disklabel sc_label;
|
||||
|
@ -79,27 +79,27 @@ struct wd_softc {
|
|||
};
|
||||
|
||||
struct wdc_command {
|
||||
u_int8_t drive; /* drive id */
|
||||
uint8_t drive; /* drive id */
|
||||
|
||||
u_int8_t r_command; /* Parameters to upload to registers */
|
||||
u_int8_t r_head;
|
||||
u_int16_t r_cyl;
|
||||
u_int8_t r_sector;
|
||||
u_int8_t r_count;
|
||||
u_int8_t r_precomp;
|
||||
uint8_t r_command; /* Parameters to upload to registers */
|
||||
uint8_t r_head;
|
||||
uint16_t r_cyl;
|
||||
uint8_t r_sector;
|
||||
uint8_t r_count;
|
||||
uint8_t r_precomp;
|
||||
|
||||
u_int16_t bcount;
|
||||
uint16_t bcount;
|
||||
void *data;
|
||||
|
||||
u_int64_t r_blkno;
|
||||
uint64_t r_blkno;
|
||||
};
|
||||
|
||||
int wdc_init (struct wd_softc*, u_int*);
|
||||
int wdccommand (struct wd_softc*, struct wdc_command*);
|
||||
int wdccommandext (struct wd_softc*, struct wdc_command*);
|
||||
int wdc_exec_read (struct wd_softc*, u_int8_t, daddr_t, void*);
|
||||
int wdc_exec_identify (struct wd_softc*, void*);
|
||||
int wdc_init(struct wd_softc *, u_int *);
|
||||
int wdccommand(struct wd_softc *, struct wdc_command *);
|
||||
int wdccommandext(struct wd_softc *, struct wdc_command *);
|
||||
int wdc_exec_read(struct wd_softc *, uint8_t, daddr_t, void *);
|
||||
int wdc_exec_identify(struct wd_softc *, void *);
|
||||
|
||||
int pciide_init (struct wdc_channel*, u_int*);
|
||||
int pciide_init(struct wdc_channel *, u_int *);
|
||||
|
||||
#endif /* _STAND_WDVAR_H */
|
||||
|
|
Loading…
Reference in New Issue