File: [local] / sys / dev / usb / ueaglereg.h (download)
Revision 1.1.1.1 (vendor branch), Tue Mar 4 16:14:25 2008 UTC (16 years, 6 months ago) by nbrk
Branch: OPENBSD_4_2_BASE, MAIN
CVS Tags: jornada-partial-support-wip, HEAD Changes since 1.1: +0 -0 lines
Import of OpenBSD 4.2 release kernel tree with initial code to support
Jornada 720/728, StrongARM 1110-based handheld PC.
At this point kernel roots on NFS and boots into vfs_mountroot() and traps.
What is supported:
- glass console, Jornada framebuffer (jfb) works in 16bpp direct color mode
(needs some palette tweaks for non black/white/blue colors, i think)
- saic, SA11x0 interrupt controller (needs cleanup)
- sacom, SA11x0 UART (supported only as boot console for now)
- SA11x0 GPIO controller fully supported (but can't handle multiple interrupt
handlers on one gpio pin)
- sassp, SSP port on SA11x0 that attaches spibus
- Jornada microcontroller (jmcu) to control kbd, battery, etc throught
the SPI bus (wskbd attaches on jmcu, but not tested)
- tod functions seem work
- initial code for SA-1111 (chip companion) : this is TODO
Next important steps, i think:
- gpio and intc on sa1111
- pcmcia support for sa11x0 (and sa1111 help logic)
- REAL root on nfs when we have PCMCIA support (we may use any of supported pccard NICs)
- root on wd0! (using already supported PCMCIA-ATA)
|
/* $OpenBSD: ueaglereg.h,v 1.3 2007/06/09 11:06:53 mbalmer Exp $ */
/*-
* Copyright (c) 2003-2005
* Damien Bergamini <damien.bergamini@free.fr>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* OPTN: default values from analog devices */
#ifndef UEAGLE_OPTN0
#define UEAGLE_OPTN0 0x80020066
#endif
#ifndef UEAGLE_OPTN2
#define UEAGLE_OPTN2 0x23700000
#endif
#ifndef UEAGLE_OPTN7
#define UEAGLE_OPTN7 0x02cd8044
#endif
#define UEAGLE_CONFIG_NO 1
#define UEAGLE_INTR_IFACE_NO 0
#define UEAGLE_US_IFACE_NO 1
#define UEAGLE_DS_IFACE_NO 2
#define UEAGLE_ESISTR 4
#define UEAGLE_TX_PIPE 0x02
#define UEAGLE_IDMA_PIPE 0x04
#define UEAGLE_INTR_PIPE 0x84
#define UEAGLE_RX_PIPE 0x88
#define UEAGLE_REQUEST 0
#define UEAGLE_SETBLOCK 0x0001
#define UEAGLE_SETMODE 0x0003
#define UEAGLE_SET2183DATA 0x0004
#define UEAGLE_LOOPBACKOFF 0x0002
#define UEAGLE_LOOPBACKON 0x0003
#define UEAGLE_BOOTIDMA 0x0006
#define UEAGLE_STARTRESET 0x0007
#define UEAGLE_ENDRESET 0x0008
#define UEAGLE_SWAPMAILBOX 0x7fcd
#define UEAGLE_MPTXSTART 0x7fce
#define UEAGLE_MPTXMAILBOX 0x7fd6
#define UEAGLE_MPRXMAILBOX 0x7fdf
/* block within a firmware page */
struct ueagle_block_info {
uWord wHdr;
#define UEAGLE_BLOCK_INFO_HDR 0xabcd
uWord wAddress;
uWord wSize;
uWord wOvlOffset;
uWord wOvl; /* overlay */
uWord wLast;
} __packed;
/* CMV (Configuration and Management Variable) */
struct ueagle_cmv {
uWord wPreamble;
#define UEAGLE_CMV_PREAMBLE 0x535c
uByte bDst;
#define UEAGLE_HOST 0x01
#define UEAGLE_MODEM 0x10
uByte bFunction;
#define UEAGLE_CR 0x10
#define UEAGLE_CW 0x11
#define UEAGLE_CR_ACK 0x12
#define UEAGLE_CW_ACK 0x13
#define UEAGLE_MODEMREADY 0x71
uWord wIndex;
uDWord dwSymbolicAddress;
#define UEAGLE_MAKESA(a, b, c, d) ((c) << 24 | (d) << 16 | (a) << 8 | (b))
#define UEAGLE_CMV_CNTL UEAGLE_MAKESA('C', 'N', 'T', 'L')
#define UEAGLE_CMV_DIAG UEAGLE_MAKESA('D', 'I', 'A', 'G')
#define UEAGLE_CMV_INFO UEAGLE_MAKESA('I', 'N', 'F', 'O')
#define UEAGLE_CMV_OPTN UEAGLE_MAKESA('O', 'P', 'T', 'N')
#define UEAGLE_CMV_RATE UEAGLE_MAKESA('R', 'A', 'T', 'E')
#define UEAGLE_CMV_STAT UEAGLE_MAKESA('S', 'T', 'A', 'T')
uWord wOffsetAddress;
uDWord dwData;
#define UGETDATA(w) ((w)[2] | (w)[3] << 8 | (w)[0] << 16 | (w)[1] << 24)
#define USETDATA(w, v) \
((w)[2] = (uint8_t)(v), \
(w)[3] = (uint8_t)((v) >> 8), \
(w)[0] = (uint8_t)((v) >> 16), \
(w)[1] = (uint8_t)((v) >> 24))
} __packed;
struct ueagle_swap {
uByte bPageNo;
uByte bOvl; /* overlay */
} __packed;
struct ueagle_intr {
uByte bType;
uByte bNotification;
uWord wValue;
uWord wIndex;
uWord wLength;
uWord wInterrupt;
#define UEAGLE_INTR_SWAP 1
#define UEAGLE_INTR_CMV 2
} __packed;
#define UEAGLE_INTR_MAXSIZE 28