Upgraded GRUB2 to 2.00 release.
[AROS.git] / arch / all-pc / boot / grub2-aros / include / grub / cs5536.h
blob6b5b424c843630ecb635b90ef808e99d9a95a63f
1 /*
2 * GRUB -- GRand Unified Bootloader
3 * Copyright (C) 2010 Free Software Foundation, Inc.
5 * GRUB is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
10 * GRUB is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
19 #ifndef GRUB_CS5536_HEADER
20 #define GRUB_CS5536_HEADER 1
22 #ifndef ASM_FILE
23 #include <grub/pci.h>
24 #include <grub/err.h>
25 #include <grub/smbus.h>
26 #endif
28 #define GRUB_CS5536_PCIID 0x208f1022
29 #define GRUB_CS5536_MSR_MAILBOX_CONFIG_ENABLED 0x1
30 #define GRUB_CS5536_MSR_MAILBOX_CONFIG 0xf0
31 #define GRUB_CS5536_MSR_MAILBOX_ADDR 0xf4
32 #define GRUB_CS5536_MSR_MAILBOX_DATA0 0xf8
33 #define GRUB_CS5536_MSR_MAILBOX_DATA1 0xfc
34 #define GRUB_CS5536_MSR_IRQ_MAP_BAR 0x80000008
35 #define GRUB_CS5536_MSR_SMB_BAR 0x8000000b
37 #define GRUB_CS5536_SMBUS_REGS_SIZE 8
38 #define GRUB_CS5536_GPIO_REGS_SIZE 256
39 #define GRUB_CS5536_MFGPT_REGS_SIZE 64
40 #define GRUB_CS5536_IRQ_MAP_REGS_SIZE 32
41 #define GRUB_CS5536_PM_REGS_SIZE 128
42 #define GRUB_CS5536_ACPI_REGS_SIZE 32
44 #define GRUB_CS5536_USB_OPTION_REGS_SIZE 0x1c
45 #define GRUB_CS5536_USB_OPTION_REG_UOCMUX 1
46 #define GRUB_CS5536_USB_OPTION_REG_UOCMUX_PMUX_MASK 0x03
47 #define GRUB_CS5536_USB_OPTION_REG_UOCMUX_PMUX_HC 0x02
49 #define GRUB_CS5536_DESTINATION_GLIU 0
50 #define GRUB_CS5536_DESTINATION_GLPCI_SB 1
51 #define GRUB_CS5536_DESTINATION_USB 2
52 #define GRUB_CS5536_DESTINATION_IDE 3
53 #define GRUB_CS5536_DESTINATION_DD 4
54 #define GRUB_CS5536_DESTINATION_ACC 5
55 #define GRUB_CS5536_DESTINATION_GLCP 7
57 #define GRUB_CS5536_P2D_DEST_SHIFT 61
58 #define GRUB_CS5536_P2D_LOG_ALIGN 12
59 #define GRUB_CS5536_P2D_ALIGN (1 << GRUB_CS5536_P2D_LOG_ALIGN)
60 #define GRUB_CS5536_P2D_BASE_SHIFT 20
61 #define GRUB_CS5536_P2D_MASK_SHIFT 0
63 #define GRUB_CS5536_MSR_GL_IOD_START 0x000100e0
64 #define GRUB_CS5536_IOD_DEST_SHIFT 61
65 #define GRUB_CS5536_IOD_BASE_SHIFT 20
66 #define GRUB_CS5536_IOD_MASK_SHIFT 0
67 #define GRUB_CS5536_IOD_ADDR_MASK 0xfffff
69 #define GRUB_CS5536_MSR_GPIO_BAR 0x8000000c
70 #define GRUB_CS5536_MSR_MFGPT_BAR 0x8000000d
71 #define GRUB_CS5536_MSR_ACPI_BAR 0x8000000e
72 #define GRUB_CS5536_MSR_PM_BAR 0x8000000f
73 #define GRUB_CS5536_MSR_DIVIL_LEG_IO 0x80000014
74 #define GRUB_CS5536_MSR_DIVIL_LEG_IO_RTC_ENABLE0 0x00000001
75 #define GRUB_CS5536_MSR_DIVIL_LEG_IO_RTC_ENABLE1 0x00000002
76 #define GRUB_CS5536_MSR_DIVIL_LEG_IO_MODE_X86 0x10000000
77 #define GRUB_CS5536_MSR_DIVIL_LEG_IO_F_REMAP 0x04000000
78 #define GRUB_CS5536_MSR_DIVIL_LEG_IO_UART1_COM1 0x00070000
79 #define GRUB_CS5536_MSR_DIVIL_LEG_IO_UART2_COM3 0x00500000
80 #define GRUB_CS5536_MSR_DIVIL_RESET 0x80000017
81 #define GRUB_CS5536_MSR_DIVIL_IRQ_MAPPER_PRIMARY_MASK 0x80000024
82 #define GRUB_CS5536_MSR_DIVIL_IRQ_MAPPER_LPC_MASK 0x80000025
83 #define GRUB_CS5536_DIVIL_LPC_INTERRUPTS 0x1002
84 #define GRUB_CS5536_MSR_DIVIL_LPC_SERIAL_IRQ_CONTROL 0x8000004e
85 #define GRUB_CS5536_MSR_DIVIL_LPC_SERIAL_IRQ_CONTROL_ENABLE 0x80
86 #define GRUB_CS5536_MSR_DIVIL_UART1_CONF 0x8000003a
87 #define GRUB_CS5536_MSR_DIVIL_UART2_CONF 0x8000003e
89 #define GRUB_CS5536_MSR_USB_OHCI_BASE 0x40000008
90 #define GRUB_CS5536_MSR_USB_EHCI_BASE 0x40000009
91 #define GRUB_CS5536_MSR_USB_CONTROLLER_BASE 0x4000000a
92 #define GRUB_CS5536_MSR_USB_OPTION_CONTROLLER_BASE 0x4000000b
93 #define GRUB_CS5536_MSR_USB_BASE_ADDR_MASK 0x00ffffff00ULL
94 #define GRUB_CS5536_MSR_USB_BASE_SMI_ENABLE 0x3f000000000000ULL
95 #define GRUB_CS5536_MSR_USB_BASE_BUS_MASTER 0x0400000000ULL
96 #define GRUB_CS5536_MSR_USB_BASE_MEMORY_ENABLE 0x0200000000ULL
97 #define GRUB_CS5536_MSR_USB_BASE_PME_ENABLED 0x0800000000ULL
98 #define GRUB_CS5536_MSR_USB_BASE_PME_STATUS 0x1000000000ULL
99 #define GRUB_CS5536_MSR_USB_EHCI_BASE_FLDJ_SHIFT 40
101 #define GRUB_CS5536_MSR_IDE_IO_BAR 0x60000008
102 #define GRUB_CS5536_MSR_IDE_IO_BAR_UNITS 1
103 #define GRUB_CS5536_MSR_IDE_IO_BAR_ADDR_MASK 0xfffffff0
104 #define GRUB_CS5536_MSR_IDE_CFG 0x60000010
105 #define GRUB_CS5536_MSR_IDE_CFG_CHANNEL_ENABLE 2
106 #define GRUB_CS5536_MSR_IDE_TIMING 0x60000012
107 #define GRUB_CS5536_MSR_IDE_TIMING_PIO0 0x98
108 #define GRUB_CS5536_MSR_IDE_TIMING_DRIVE0_SHIFT 24
109 #define GRUB_CS5536_MSR_IDE_TIMING_DRIVE1_SHIFT 16
110 #define GRUB_CS5536_MSR_IDE_CAS_TIMING 0x60000013
111 #define GRUB_CS5536_MSR_IDE_CAS_TIMING_CMD_PIO0 0x99
112 #define GRUB_CS5536_MSR_IDE_CAS_TIMING_CMD_SHIFT 24
113 #define GRUB_CS5536_MSR_IDE_CAS_TIMING_DRIVE0_SHIFT 6
114 #define GRUB_CS5536_MSR_IDE_CAS_TIMING_DRIVE1_SHIFT 4
115 #define GRUB_CS5536_MSR_IDE_CAS_TIMING_PIO0 2
117 #define GRUB_CS5536_MSR_GL_PCI_CTRL 0x00000010
118 #define GRUB_CS5536_MSR_GL_PCI_CTRL_MEMORY_ENABLE 1
119 #define GRUB_CS5536_MSR_GL_PCI_CTRL_IO_ENABLE 2
120 #define GRUB_CS5536_MSR_GL_PCI_CTRL_LATENCY_SHIFT 35
121 #define GRUB_CS5536_MSR_GL_PCI_CTRL_OUT_THR_SHIFT 60
122 #define GRUB_CS5536_MSR_GL_PCI_CTRL_IN_THR_SHIFT 56
124 #define GRUB_CS5536_MSR_GL_REGIONS_START 0x00000020
125 #define GRUB_CS5536_MSR_GL_REGIONS_NUM 16
126 #define GRUB_CS5536_MSR_GL_REGION_ENABLE 1
127 #define GRUB_CS5536_MSR_GL_REGION_IO 0x100000000ULL
128 #define GRUB_CS5536_MSR_GL_REGION_BASE_MASK 0xfffff000ULL
129 #define GRUB_CS5536_MSR_GL_REGION_IO_BASE_SHIFT 12
130 #define GRUB_CS5536_MSR_GL_REGION_TOP_MASK 0xfffff00000000000ULL
131 #define GRUB_CS5536_MSR_GL_REGION_IO_TOP_SHIFT 44
133 #define GRUB_CS5536_MSR_GL_P2D_START 0x00010020
135 #define GRUB_CS5536_SMB_REG_DATA 0x0
136 #define GRUB_CS5536_SMB_REG_STATUS 0x1
137 #define GRUB_CS5536_SMB_REG_STATUS_SDAST (1 << 6)
138 #define GRUB_CS5536_SMB_REG_STATUS_BER (1 << 5)
139 #define GRUB_CS5536_SMB_REG_STATUS_NACK (1 << 4)
140 #define GRUB_CS5536_SMB_REG_CTRL1 0x3
141 #define GRUB_CS5536_SMB_REG_CTRL1_START 0x01
142 #define GRUB_CS5536_SMB_REG_CTRL1_STOP 0x02
143 #define GRUB_CS5536_SMB_REG_CTRL1_ACK 0x10
144 #define GRUB_CS5536_SMB_REG_ADDR 0x4
145 #define GRUB_CS5536_SMB_REG_ADDR_MASTER 0x0
146 #define GRUB_CS5536_SMB_REG_CTRL2 0x5
147 #define GRUB_CS5536_SMB_REG_CTRL2_ENABLE 0x1
148 #define GRUB_CS5536_SMB_REG_CTRL3 0x6
150 #ifdef ASM_FILE
151 #define GRUB_ULL(x) x
152 #else
153 #define GRUB_ULL(x) x ## ULL
154 #endif
156 #define GRUB_CS5536_LBAR_ADDR_MASK GRUB_ULL (0x000000000000fff8)
157 #define GRUB_CS5536_LBAR_ENABLE GRUB_ULL (0x0000000100000000)
158 #define GRUB_CS5536_LBAR_MASK_MASK GRUB_ULL (0x0000f00000000000)
159 #define GRUB_CS5536_LBAR_TURN_ON (GRUB_CS5536_LBAR_ENABLE | GRUB_CS5536_LBAR_MASK_MASK)
161 /* PMON-compatible LBARs. */
162 #define GRUB_CS5536_LBAR_GPIO 0xb000
163 #define GRUB_CS5536_LBAR_ACC 0xb200
164 #define GRUB_CS5536_LBAR_PM 0xb280
165 #define GRUB_CS5536_LBAR_MFGPT 0xb300
166 #define GRUB_CS5536_LBAR_ACPI 0xb340
167 #define GRUB_CS5536_LBAR_IRQ_MAP 0xb360
168 #define GRUB_CS5536_LBAR_IDE 0xb380
169 #define GRUB_CS5536_LBAR_SMBUS 0xb390
171 #define GRUB_GPIO_SMBUS_PINS ((1 << 14) | (1 << 15))
172 #define GRUB_GPIO_REG_OUT_EN 0x4
173 #define GRUB_GPIO_REG_OUT_AUX1 0x10
174 #define GRUB_GPIO_REG_IN_EN 0x20
175 #define GRUB_GPIO_REG_IN_AUX1 0x34
177 #ifndef ASM_FILE
178 int EXPORT_FUNC (grub_cs5536_find) (grub_pci_device_t *devp);
180 grub_uint64_t EXPORT_FUNC (grub_cs5536_read_msr) (grub_pci_device_t dev,
181 grub_uint32_t addr);
182 void EXPORT_FUNC (grub_cs5536_write_msr) (grub_pci_device_t dev,
183 grub_uint32_t addr,
184 grub_uint64_t val);
185 grub_err_t grub_cs5536_read_spd_byte (grub_port_t smbbase, grub_uint8_t dev,
186 grub_uint8_t addr, grub_uint8_t *res);
187 grub_err_t EXPORT_FUNC (grub_cs5536_read_spd) (grub_port_t smbbase,
188 grub_uint8_t dev,
189 struct grub_smbus_spd *res);
190 grub_err_t grub_cs5536_smbus_wait (grub_port_t smbbase);
191 grub_err_t EXPORT_FUNC (grub_cs5536_init_smbus) (grub_pci_device_t dev,
192 grub_uint16_t divisor,
193 grub_port_t *smbbase);
195 void grub_cs5536_init_geode (grub_pci_device_t dev);
196 #endif
198 #endif