1/*	$NetBSD: iomap.h,v 1.15 2012/08/10 17:43:32 tsutsui Exp $	*/
2
3/*
4 * Copyright (c) 1995 Leo Weppelman.
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 *    notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 *    notice, this list of conditions and the following disclaimer in the
14 *    documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28#ifndef _MACHINE_IOMAP_H
29#define _MACHINE_IOMAP_H
30
31#ifdef _KERNEL_OPT
32#include "opt_mbtype.h"
33#endif
34/*
35 * Atari TT hardware:
36 * I/O Address maps
37 */
38#ifdef _KERNEL
39extern vaddr_t	stio_addr;	/* Where the st io-area is mapped	*/
40#define	AD_STIO	(stio_addr)	/* .. see atari_init.c			*/
41
42/*
43 * PCI KVA addresses. These are determined in atari_init.c. Except for
44 * the config-space, they should be used for a PCI-console only. Other
45 * cards should use the bus-functions to map io & mem spaces.
46 * Each card gets an config area of PAGE_SIZE  bytes.
47 * 'pci_mem_uncached' is used by the Milan interrupt handler that frobs
48 * with the PLX. Also, the Milan uses the first page of 'pci_io_addr' for
49 * access to some of its ISA I/O devices (RTC, Interrupt controller, etc.)
50 */
51extern vaddr_t	pci_conf_addr;	/* KVA base of PCI config space		*/
52extern vaddr_t	pci_io_addr;	/* KVA base of PCI io-space		*/
53extern vaddr_t	pci_mem_addr;	/* KVA base of PCI mem-space		*/
54extern vaddr_t	pci_mem_uncached; /* KVA base of an uncached PCI mem-page */
55#endif /* _KERNEL */
56
57#define	PCI_CONFB_PHYS		(0xA0000000L)
58#define	PCI_CONFM_PHYS		(0x00010000L)
59
60#if defined(_ATARIHW_)
61#define	PCI_IO_PHYS		(0xB0000000L)
62#define	PCI_MEM_PHYS		(0x80000000L)
63#define PCI_VGA_PHYS		(0x800a0000L)
64#define	ISA_IOSTART		(0xfff30000L) /* XXX: With byte frobbing */
65#define	ISA_MEMSTART		(0xff000000L)
66#endif /* defined(_ATARIHW_) */
67
68#if defined(_MILANHW_)
69#define	PCI_IO_PHYS		(0x80000000L)
70#define	PCI_MEM_PHYS		(0x40000000L)
71#define PCI_VGA_PHYS		(0x400a0000L)
72#define	ISA_IOSTART		(0x80000000L) /* !NO! byte frobbing	 */
73#define	ISA_MEMSTART		(0x40000000L)
74#endif	/* defined(_MILANHW_) */
75
76/*
77 * Pre-allocated PCI-memory regions (atari_init.c). We need those in the
78 * boot-stages.
79 * XXX: Can probably be reduced to only PCI_CONFIG_SIZE (Leo).
80 */
81#define PCI_CONFIG_SIZE	(4 * PAGE_SIZE)
82#define PCI_IO_SIZE	(PAGE_SIZE)
83#define PCI_MEM_SIZE	(PAGE_SIZE)
84
85#define	PCI_VGA_SIZE	(32 * 1024) /* XXX Leo: Only used by grfabs_et now. */
86
87/*
88 * See bootm_init()/bootm_alloc() in bus.c for the usage of this pool
89 * of pre-allocated VA-space.
90 */
91#define	BOOTM_VA_POOL	(32 * 8192)	/* Pre-allocated VA-space	*/
92
93#define	AD_RAM		(0x000000L)	/* main memory			*/
94#define	AD_CART		(0xFA0000L)	/* expansion cartridge		*/
95#define	AD_ROM		(0xFC0000L)	/* system ROM			*/
96#define	STIO_SIZE	(0x8000L)	/* Size of mapped I/O devices	*/
97
98/*
99 * Physical address of I/O area. Use only for pte initialisation!
100 */
101#define	STIO_PHYS	((machineid & (ATARI_HADES | ATARI_MILAN))	\
102				? 0xffff8000L				\
103				: 0x00ff8000L)
104
105#if defined(_ATARIHW_)
106
107/*
108 * I/O addresses in the STIO area:
109 */
110#define	AD_RAMCFG	(AD_STIO + 0x0000)	/* ram configuration	*/
111#define AD_FAL_MON_TYPE	(AD_STIO + 0x0006)	/* Falcon monitor type	*/
112#define	AD_VIDEO	(AD_STIO + 0x0200)	/* video controller	*/
113#define AD_RESERVED	(AD_STIO + 0x0400)	/* reserved		*/
114#define	AD_DMA		(AD_STIO + 0x0600)	/* DMA device access	*/
115#define	AD_SCSI_DMA	(AD_STIO + 0x0700)	/* SCSI DMA registers	*/
116#define	AD_NCR5380	(AD_STIO + 0x0780)	/* SCSI controller	*/
117#define	AD_SOUND	(AD_STIO + 0x0800)	/* YM-2149		*/
118#define	AD_RTC		(AD_STIO + 0x0960)	/* TT realtime clock	*/
119#define	AD_SCC		(AD_STIO + 0x0C80)	/* SCC 8530		*/
120#define	AD_SCU		(AD_STIO + 0x0E00)	/* System Control Unit	*/
121#define	AD_CFG_SWITCH	(AD_STIO + 0x1200)	/* Config switches	*/
122#define	AD_MFP		(AD_STIO + 0x7A00)	/* 68901		*/
123#define	AD_MFP2		(AD_STIO + 0x7A80)	/* 68901-TT		*/
124#define	AD_ACIA		(AD_STIO + 0x7C00)	/* 2 * 6850		*/
125#endif /* defined(_ATARIHW_) */
126
127#if defined(_MILANHW_)
128/*
129 * Milan onboard I/O
130 */
131#define	AD_MFP		(AD_STIO + 0x4100)	/* 68901		*/
132#define	AD_PLX		(AD_STIO + 0x4200)	/* PLX9080		*/
133
134/*
135 * Milan special locations in the first page of the PCI I/O space.
136 */
137#define	AD_8259_MASTER	(pci_io_addr + 0x20)	/* Master int. contr.	*/
138#define	AD_8259_SLAVE	(pci_io_addr + 0xA0)	/* Slave int. contr.	*/
139#define	AD_RTC		(pci_io_addr + 0x70)	/* MC146818 compat. RTC	*/
140
141#endif /* defined(_MILANHW_) */
142
143#endif /* _MACHINE_IOMAP_H */
144