1 /*
2 * uninorth.h: definitions for using the "UniNorth" host bridge chip
3 * from Apple. This chip is used on "Core99" machines
4 *
5 */
6 #ifdef __KERNEL__
7
8
9 /*
10 * Uni-N config space reg. definitions
11 *
12 * (Little endian)
13 */
14
15 /* Address ranges selection. This one should work with Bandit too */
16 #define UNI_N_ADDR_SELECT 0x48
17 #define UNI_N_ADDR_COARSE_MASK 0xffff0000 /* 256Mb regions at *0000000 */
18 #define UNI_N_ADDR_FINE_MASK 0x0000ffff /* 16Mb regions at f*000000 */
19
20 /* AGP registers */
21 #define UNI_N_CFG_GART_BASE 0x8c
22 #define UNI_N_CFG_AGP_BASE 0x90
23 #define UNI_N_CFG_GART_CTRL 0x94
24 #define UNI_N_CFG_INTERNAL_STATUS 0x98
25
26 /* UNI_N_CFG_GART_CTRL bits definitions */
27 #define UNI_N_CFG_GART_INVAL 0x00000001
28 #define UNI_N_CFG_GART_ENABLE 0x00000100
29 #define UNI_N_CFG_GART_2xRESET 0x00010000
30
31
32 /*
33 * Uni-N memory mapped reg. definitions
34 *
35 * Those registers are Big-Endian !!
36 *
37 * Their meaning come from either Darwin and/or from experiments I made with
38 * the bootrom, I'm not sure about their exact meaning yet
39 *
40 */
41
42 /* Version of the UniNorth chip */
43 #define UNI_N_VERSION 0x0000 /* Known versions: 3,7 and 8 */
44
45 /* This register is used to enable/disable various parts */
46 #define UNI_N_CLOCK_CNTL 0x0020
47 #define UNI_N_CLOCK_CNTL_PCI 0x00000001 /* guess ? */
48 #define UNI_N_CLOCK_CNTL_GMAC 0x00000002
49 #define UNI_N_CLOCK_CNTL_FW 0x00000004 /* guess ? */
50
51 /* Power Management control ? (from Darwin) */
52 #define UNI_N_POWER_MGT 0x0030
53 #define UNI_N_POWER_MGT_NORMAL 0x00
54 #define UNI_N_POWER_MGT_IDLE2 0x01
55 #define UNI_N_POWER_MGT_SLEEP 0x02
56
57 /* This register is configured by Darwin depending on the UniN
58 * revision
59 */
60 #define UNI_N_ARB_CTRL 0x0040
61 #define UNI_N_ARB_CTRL_QACK_DELAY_SHIFT 15
62 #define UNI_N_ARB_CTRL_QACK_DELAY_MASK 0x0e1f8000
63 #define UNI_N_ARB_CTRL_QACK_DELAY 0x30
64 #define UNI_N_ARB_CTRL_QACK_DELAY105 0x00
65
66 /* This one _might_ return the CPU number of the CPU reading it;
67 * the bootROM decides wether to boot or to sleep/spinloop depending
68 * on this register beeing 0 or not
69 */
70 #define UNI_N_CPU_NUMBER 0x0050
71
72 /* This register appear to be read by the bootROM to decide what
73 * to do on a non-recoverable reset (powerup or wakeup)
74 */
75 #define UNI_N_HWINIT_STATE 0x0070
76 #define UNI_N_HWINIT_STATE_SLEEPING 0x01
77 #define UNI_N_HWINIT_STATE_RUNNING 0x02
78 /* This last bit appear to be used by the bootROM to know the second
79 * CPU has started and will enter it's sleep loop with IP=0
80 */
81 #define UNI_N_HWINIT_STATE_CPU1_FLAG 0x10000000
82
83 #endif /* __KERNEL__ */
84
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.