at91var.h revision 213496
1155324Simp/*-
2155324Simp * Copyright (c) 2005 Olivier Houchard.  All rights reserved.
3155324Simp *
4155324Simp * Redistribution and use in source and binary forms, with or without
5155324Simp * modification, are permitted provided that the following conditions
6155324Simp * are met:
7155324Simp * 1. Redistributions of source code must retain the above copyright
8155324Simp *    notice, this list of conditions and the following disclaimer.
9155324Simp * 2. Redistributions in binary form must reproduce the above copyright
10155324Simp *    notice, this list of conditions and the following disclaimer in the
11155324Simp *    documentation and/or other materials provided with the distribution.
12155324Simp *
13185265Simp * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14185265Simp * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15185265Simp * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16185265Simp * ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
17185265Simp * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18185265Simp * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19185265Simp * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20185265Simp * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21185265Simp * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22185265Simp * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23185265Simp * SUCH DAMAGE.
24155324Simp */
25155324Simp
26155324Simp/* $FreeBSD: head/sys/arm/at91/at91var.h 213496 2010-10-06 22:25:21Z cognet $ */
27155324Simp
28155324Simp#ifndef _AT91VAR_H_
29155324Simp#define _AT91VAR_H_
30155324Simp
31213496Scognet#include <sys/bus.h>
32155324Simp#include <sys/rman.h>
33155324Simp
34213496Scognet#include <arm/at91/at91reg.h>
35213496Scognet
36155324Simpstruct at91_softc {
37155324Simp	device_t dev;
38155324Simp	bus_space_tag_t sc_st;
39155324Simp	bus_space_handle_t sc_sh;
40213496Scognet	bus_space_handle_t sc_aic_sh;
41155324Simp	struct rman sc_irq_rman;
42155324Simp	struct rman sc_mem_rman;
43213496Scognet	uint32_t sc_irq_system;
44155324Simp};
45155324Simp
46155324Simpstruct at91_ivar {
47155324Simp	struct resource_list resources;
48155324Simp};
49155324Simp
50213496Scognetstruct cpu_devs
51213496Scognet{
52213496Scognet	const char *name;
53213496Scognet	int unit;
54213496Scognet	bus_addr_t mem_base;
55213496Scognet	bus_size_t mem_len;
56213496Scognet	int irq0;
57213496Scognet	int irq1;
58213496Scognet	int irq2;
59213496Scognet	const char *parent_clk;
60213496Scognet};
61213496Scognet
62213496Scognetextern uint32_t at91_chip_id;
63213496Scognet
64213496Scognetstatic inline int at91_is_rm92(void);
65213496Scognetstatic inline int at91_is_sam9(void) ;
66213496Scognetstatic inline int at91_cpu_is(u_int cpu);
67213496Scognet
68213496Scognetstatic inline int
69213496Scognetat91_is_rm92(void)
70213496Scognet{
71213496Scognet	return (AT91_ARCH(at91_chip_id) == AT91_ARCH_RM92);
72213496Scognet}
73213496Scognet
74213496Scognetstatic inline int
75213496Scognetat91_is_sam9(void)
76213496Scognet{
77213496Scognet	return (AT91_ARCH(at91_chip_id) == AT91_ARCH_SAM9);
78213496Scognet}
79213496Scognet
80213496Scognetstatic inline int
81213496Scognetat91_cpu_is(u_int cpu)
82213496Scognet{
83213496Scognet	return (AT91_CPU(at91_chip_id) == cpu);
84213496Scognet}
85213496Scognet
86213496Scognetextern uint32_t at91_irq_system;
87187599Simpextern uint32_t at91_master_clock;
88187599Simp
89155324Simp#endif /* _AT91VAR_H_ */
90