Annotation of sys/arch/armish/stand/boot/pciide.c, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: pciide.c,v 1.3 2006/07/30 20:46:30 drahn Exp $ */
2: /* $NetBSD: pciide.c,v 1.5 2005/12/11 12:17:06 christos Exp $ */
3:
4: /*-
5: * Copyright (c) 2003 The NetBSD Foundation, Inc.
6: * All rights reserved.
7: *
8: * Redistribution and use in source and binary forms, with or without
9: * modification, are permitted provided that the following conditions
10: * are met:
11: * 1. Redistributions of source code must retain the above copyright
12: * notice, this list of conditions and the following disclaimer.
13: * 2. Redistributions in binary form must reproduce the above copyright
14: * notice, this list of conditions and the following disclaimer in the
15: * documentation and/or other materials provided with the distribution.
16: * 3. All advertising materials mentioning features or use of this software
17: * must display the following acknowledgement:
18: * This product includes software developed by the NetBSD
19: * Foundation, Inc. and its contributors.
20: * 4. Neither the name of The NetBSD Foundation nor the names of its
21: * contributors may be used to endorse or promote products derived
22: * from this software without specific prior written permission.
23: *
24: * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
25: * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
26: * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
27: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
28: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34: * POSSIBILITY OF SUCH DAMAGE.
35: */
36:
37: #include <sys/types.h>
38:
39: #include "libsa.h"
40: #include "wdvar.h"
41:
42: u_int32_t wdc_base_addr = 0;
43:
44: int
45: pciide_init(struct wdc_channel *chp, u_int chan)
46: {
47: u_int32_t cmdreg, ctlreg;
48: int i;
49:
50: /*
51: * two channels per chip, one drive per channel
52: */
53: if (chan >= PCIIDE_NUM_CHANNELS || wdc_base_addr == 0)
54: return (ENXIO);
55: chp->ndrives = 1;
56:
57: DPRINTF(("[pciide] channel: %d\n", chan));
58:
59: /*
60: * XXX map?
61: */
62: cmdreg = wdc_base_addr + chan * 0x10;
63: ctlreg = wdc_base_addr+0x8 + chan * 0x10;
64:
65: /* set up cmd regsiters */
66: chp->c_cmdbase = (u_int8_t *)cmdreg;
67: chp->c_data = (u_int16_t *)(cmdreg + wd_data);
68: for (i = 0; i < WDC_NPORTS; i++)
69: chp->c_cmdreg[i] = chp->c_cmdbase + i;
70: /* set up shadow registers */
71: chp->c_cmdreg[wd_status] = chp->c_cmdreg[wd_command];
72: chp->c_cmdreg[wd_features] = chp->c_cmdreg[wd_precomp];
73: /* set up ctl registers */
74: chp->c_ctlbase = (u_int8_t *)ctlreg;
75:
76: return (0);
77: }
CVSweb