Misc KNF and cosmetics.

This commit is contained in:
tsutsui 2007-08-03 13:15:56 +00:00
parent 7dcf597b04
commit 51b5e07bf9
15 changed files with 256 additions and 320 deletions

View File

@ -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;
}

View File

@ -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 *);

View File

@ -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;

View File

@ -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);

View File

@ -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
}

View File

@ -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 */

View File

@ -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;
}

View File

@ -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 */

View File

@ -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 *);

View File

@ -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;
}

View File

@ -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();
}

View File

@ -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();

View File

@ -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;
}

View File

@ -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;

View File

@ -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 */