File: [local] / sys / dev / acpi / dsdt.h (download)
Revision 1.1.1.1 (vendor branch), Tue Mar 4 16:14:48 2008 UTC (16 years, 3 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: dsdt.h,v 1.28 2007/04/11 02:51:11 jordan Exp $ */
/*
* Copyright (c) 2005 Marco Peereboom <marco@openbsd.org>
*
* 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.
*/
#ifndef __DEV_ACPI_DSDT_H__
#define __DEV_ACPI_DSDT_H__
struct aml_vallist {
struct aml_value *obj;
int nobj;
struct aml_vallist *next;
};
struct aml_scope {
struct acpi_softc *sc;
uint8_t *pos;
uint8_t *end;
struct aml_node *node;
struct aml_vallist *tmpvals;
struct aml_scope *parent;
struct aml_value *locals;
struct aml_value *args;
int nargs;
};
struct aml_opcode {
u_int32_t opcode;
const char *mnem;
const char *args;
struct aml_value *(*handler)(struct aml_scope *, int,
struct aml_value*);
};
const char *aml_eisaid(u_int32_t);
const char *aml_args(int);
const char *aml_mnem(int, uint8_t *);
int64_t aml_val2int(struct aml_value *);
struct aml_node *aml_searchname(struct aml_node *, const void *);
struct aml_node *aml_createname(struct aml_node *, const void *,
struct aml_value *);
struct aml_value *aml_allocint(uint64_t);
struct aml_value *aml_allocstr(const char *);
struct aml_value *aml_allocvalue(int, int64_t, const void *);
void aml_freevalue(struct aml_value *);
void aml_notify(struct aml_node *, int);
void aml_notify_dev(const char *, int);
void aml_showvalue(struct aml_value *, int);
void aml_walkroot(void);
void aml_walktree(struct aml_node *);
int aml_find_node(struct aml_node *, const char *,
void (*)(struct aml_node *, void *), void *);
int acpi_parse_aml(struct acpi_softc *, u_int8_t *,
u_int32_t);
int aml_eval_object(struct acpi_softc *, struct aml_node *,
struct aml_value *, int, struct aml_value *);
void aml_register_notify(struct aml_node *, const char *,
int (*)(struct aml_node *, int, void *), void *,
int);
u_int64_t aml_getpciaddr(struct acpi_softc *, struct aml_node *);
int aml_evalnode(struct acpi_softc *, struct aml_node *,
int , struct aml_value *, struct aml_value *);
int aml_evalname(struct acpi_softc *, struct aml_node *,
const char *, int, struct aml_value *,
struct aml_value *);
void aml_fixup_dsdt(u_int8_t *, u_int8_t *, int);
void aml_create_defaultobjects(void);
int acpi_mutex_acquire(struct aml_value *, int);
void acpi_mutex_release(struct aml_value *);
const char *aml_nodename(struct aml_node *);
#define SR_IRQ 0x04
#define SR_DMA 0x05
#define SR_STARTDEP 0x06
#define SR_ENDDEP 0x07
#define SR_IOPORT 0x08
#define SR_FIXEDPORT 0x09
#define SR_ENDTAG 0x0F
#define LR_24BIT 0x81
#define LR_GENREGISTER 0x82
#define LR_32BIT 0x85
#define LR_32BITFIXED 0x86
#define LR_DWORD 0x87
#define LR_WORD 0x88
#define LR_EXTIRQ 0x89
#define LR_QWORD 0x8A
#define __amlflagbit(v,s,l)
union acpi_resource {
struct {
uint8_t typecode;
uint16_t length;
} __packed hdr;
/* Small resource structures
* format of typecode is: tttttlll, t = type, l = length
*/
struct {
uint8_t typecode;
uint16_t irq_mask;
uint8_t irq_flags;
} __packed sr_irq;
struct {
uint8_t typecode;
uint8_t channel;
uint8_t flags;
} __packed sr_dma;
struct {
uint8_t typecode;
uint8_t flags;
uint16_t _min;
uint16_t _max;
uint8_t _aln;
uint8_t _len;
} __packed sr_ioport;
struct {
uint8_t typecode;
uint16_t _bas;
uint8_t _len;
} __packed sr_fioport;
/* Large resource structures */
struct {
uint8_t typecode;
uint16_t length;
uint8_t _info;
uint16_t _min;
uint16_t _max;
uint16_t _aln;
uint16_t _len;
} __packed lr_m24;
struct {
uint8_t typecode;
uint16_t length;
uint8_t _info;
uint32_t _min;
uint32_t _max;
uint32_t _aln;
uint32_t _len;
} __packed lr_m32;
struct {
uint8_t typecode;
uint16_t length;
uint8_t flags;
uint8_t irq_count;
uint32_t irq[1];
} __packed lr_extirq;
struct {
uint8_t typecode;
uint16_t length;
uint8_t type;
uint8_t flags;
uint8_t tflags;
uint16_t _gra;
uint16_t _min;
uint16_t _max;
uint16_t _tra;
uint16_t _len;
uint8_t src_index;
char src[1];
} __packed lr_word;
struct {
uint8_t typecode;
uint16_t length;
uint8_t type;
uint8_t flags;
uint8_t tflags;
uint32_t _gra;
uint32_t _min;
uint32_t _max;
uint32_t _tra;
uint32_t _len;
uint8_t src_index;
char src[1];
} __packed lr_dword;
struct {
uint8_t typecode;
uint16_t length;
uint8_t type;
uint8_t flags;
uint8_t tflags;
uint64_t _gra;
uint64_t _min;
uint64_t _max;
uint64_t _tra;
uint64_t _len;
uint8_t src_index;
char src[1];
} __packed lr_qword;
uint8_t pad[64];
} __packed;
#define AML_CRSTYPE(x) ((x)->hdr.typecode & 0x80 ? \
(x)->hdr.typecode : (x)->hdr.typecode >> 3)
#define AML_CRSLEN(x) ((x)->hdr.typecode & 0x80 ? \
3+(x)->hdr.length : 1+((x)->hdr.typecode & 0x7))
int aml_print_resource(union acpi_resource *, void *);
int aml_parse_resource(int, uint8_t *,
int (*)(union acpi_resource *, void *), void *);
#define ACPI_E_NOERROR 0x00
#define ACPI_E_BADVALUE 0x01
#define AML_MAX_ARG 7
#define AML_MAX_LOCAL 8
/* XXX: endian macros */
#define aml_letohost16(x) letoh16(x)
#define aml_letohost32(x) letoh32(x)
#define aml_letohost64(x) letoh64(x)
#define AML_WALK_PRE 0x00
#define AML_WALK_POST 0x01
void aml_walknodes(struct aml_node *, int,
int (*)(struct aml_node *, void *), void *);
void aml_postparse(void);
void acpi_poll_notify(void);
void aml_hashopcodes(void);
void aml_foreachpkg(struct aml_value *, int,
void (*fn)(struct aml_value *, void *), void *);
#endif /* __DEV_ACPI_DSDT_H__ */