12aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm/*	$NetBSD: dig64.h,v 1.1 2006/04/07 14:21:18 cherry Exp $	*/
22aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm
32aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm/*-
42aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * Copyright (c) 2002 Marcel Moolenaar
52aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * All rights reserved.
62aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm *
72aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * Redistribution and use in source and binary forms, with or without
82aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * modification, are permitted provided that the following conditions
92aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * are met:
102aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm *
112aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * 1. Redistributions of source code must retain the above copyright
122aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm *    notice, this list of conditions and the following disclaimer.
132aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * 2. Redistributions in binary form must reproduce the above copyright
142aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm *    notice, this list of conditions and the following disclaimer in the
152aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm *    documentation and/or other materials provided with the distribution.
162aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm *
172aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
182aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
192aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
202aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
212aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
222aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
232aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
242aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
252aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
262aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
272aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm *
282aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm * $FreeBSD$
292aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm */
302aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm
312aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm#ifndef _MACHINE_DIG64_H_
322aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm#define	_MACHINE_DIG64_H_
332aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm
342aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylmstruct dig64_gas {
352aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		addr_space;
362aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		bit_width;
372aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		bit_offset;
382aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		_reserved_;
392aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	/*
402aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	 * XXX using a 64-bit type for the address would cause padding and
412aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	 * using __packed would cause unaligned accesses...
422aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	 */
432aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint32_t	addr_low;
442aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint32_t	addr_high;
452aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm};
462aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm
472aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylmstruct dig64_hcdp_entry {
482aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		type;
492aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm#define	DIG64_HCDP_CONSOLE	0
502aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm#define	DIG64_HCDP_DBGPORT	1
512aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		databits;
522aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		parity;
532aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		stopbits;
542aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		pci_segment;
552aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		pci_bus;
562aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		pci_device:5;
572aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		_reserved1_:3;
582aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		pci_function:3;
592aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		_reserved2_:3;
602aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		interrupt:1;
612aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		pci_flag:1;
622aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	/*
632aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	 * XXX using a 64-bit type for the baudrate would cause padding and
642aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	 * using __packed would cause unaligned accesses...
652aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	 */
662aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint32_t	baud_low;
672aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint32_t	baud_high;
682aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	struct dig64_gas address;
692aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint16_t	pci_devid;
702aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint16_t	pci_vendor;
712aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint32_t	irq;
722aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint32_t	pclock;
732aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		pci_interface;
742aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		_reserved3_[7];
752aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm};
762aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm
772aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylmstruct dig64_hcdp_table {
782aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	char		signature[4];
792aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm#define	HCDP_SIGNATURE	"HCDP"
802aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint32_t	length;
812aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		revision;
822aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint8_t		checksum;
832aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	char		oem_id[6];
842aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	char		oem_tbl_id[8];
852aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint32_t	oem_rev;
862aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	char		creator_id[4];
872aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint32_t	creator_rev;
882aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	uint32_t	entries;
892aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm	struct dig64_hcdp_entry entry[1];
902aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm};
912aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm
922aa62f2bc9a9654687b377d9ca8a8c2c860a3852darylm#endif
93