2 * generic K8 debug code, used by mainboard specific auto.c
6 static inline void print_debug_addr(const char *str, void *val)
8 #if CACHE_AS_RAM_ADDRESS_DEBUG == 1
10 printk_debug("------Address debug: %s%x------\r\n", str, val);
12 print_debug ("------Address debug: "); print_debug(str); print_debug_hex32(val); print_debug("------\r\n");
18 static void print_debug_pci_dev(unsigned dev)
21 printk_debug("PCI: %02x:%02x.%02x", (dev>>16) & 0xff, (dev>>11) & 0x1f, (dev>>8) & 0x7);
24 print_debug_hex8((dev >> 16) & 0xff);
25 print_debug_char(':');
26 print_debug_hex8((dev >> 11) & 0x1f);
27 print_debug_char('.');
28 print_debug_hex8((dev >> 8) & 7);
32 static void print_pci_devices(void)
35 for(dev = PCI_DEV(0, 0, 0);
36 dev <= PCI_DEV(0xff, 0x1f, 0x7);
37 dev += PCI_DEV(0,0,1)) {
39 id = pci_read_config32(dev, PCI_VENDOR_ID);
40 if (((id & 0xffff) == 0x0000) || ((id & 0xffff) == 0xffff) ||
41 (((id >> 16) & 0xffff) == 0xffff) ||
42 (((id >> 16) & 0xffff) == 0x0000)) {
45 print_debug_pci_dev(dev);
47 printk_debug(" %04x:%04x\r\n", (id & 0xffff), (id>>16));
50 print_debug_hex32(id);
53 if(((dev>>8) & 0x07) == 0) {
55 hdr_type = pci_read_config8(dev, PCI_HEADER_TYPE);
56 if((hdr_type & 0x80) != 0x80) {
57 dev += PCI_DEV(0,0,7);
63 static void dump_pci_device(unsigned dev)
66 print_debug_pci_dev(dev);
68 for(i = 0; i < 256; i++) {
70 if ((i & 0x0f) == 0) {
72 printk_debug("\r\n%02x:",i);
76 print_debug_char(':');
79 val = pci_read_config8(dev, i);
81 printk_debug(" %02x", val);
83 print_debug_char(' ');
84 print_debug_hex8(val);
90 static void dump_pci_devices(void)
93 for(dev = PCI_DEV(0, 0, 0);
94 dev <= PCI_DEV(0xff, 0x1f, 0x7);
95 dev += PCI_DEV(0,0,1)) {
97 id = pci_read_config32(dev, PCI_VENDOR_ID);
98 if (((id & 0xffff) == 0x0000) || ((id & 0xffff) == 0xffff) ||
99 (((id >> 16) & 0xffff) == 0xffff) ||
100 (((id >> 16) & 0xffff) == 0x0000)) {
103 dump_pci_device(dev);
105 if(((dev>>8) & 0x07) == 0) {
107 hdr_type = pci_read_config8(dev, PCI_HEADER_TYPE);
108 if((hdr_type & 0x80) != 0x80) {
109 dev += PCI_DEV(0,0,7);
115 static void dump_pci_devices_on_bus(unsigned busn)
118 for(dev = PCI_DEV(busn, 0, 0);
119 dev <= PCI_DEV(busn, 0x1f, 0x7);
120 dev += PCI_DEV(0,0,1)) {
122 id = pci_read_config32(dev, PCI_VENDOR_ID);
123 if (((id & 0xffff) == 0x0000) || ((id & 0xffff) == 0xffff) ||
124 (((id >> 16) & 0xffff) == 0xffff) ||
125 (((id >> 16) & 0xffff) == 0x0000)) {
128 dump_pci_device(dev);
130 if(((dev>>8) & 0x07) == 0) {
132 hdr_type = pci_read_config8(dev, PCI_HEADER_TYPE);
133 if((hdr_type & 0x80) != 0x80) {
134 dev += PCI_DEV(0,0,7);
140 static void dump_spd_registers(const struct mem_controller *ctrl)
144 for(i = 0; i < 4; i++) {
146 device = ctrl->channel0[i];
150 printk_debug("dimm: %02x.0: %02x", i, device);
152 print_debug("dimm: ");
155 print_debug_hex8(device);
157 for(j = 0; j < 128; j++) {
160 if ((j & 0xf) == 0) {
162 printk_debug("\r\n%02x: ", j);
169 status = smbus_read_byte(device, j);
173 byte = status & 0xff;
175 printk_debug("%02x ", byte);
177 print_debug_hex8(byte);
178 print_debug_char(' ');
183 device = ctrl->channel1[i];
187 printk_debug("dimm: %02x.1: %02x", i, device);
189 print_debug("dimm: ");
192 print_debug_hex8(device);
194 for(j = 0; j < 128; j++) {
197 if ((j & 0xf) == 0) {
199 printk_debug("\r\n%02x: ", j);
206 status = smbus_read_byte(device, j);
210 byte = status & 0xff;
212 printk_debug("%02x ", byte);
214 print_debug_hex8(byte);
215 print_debug_char(' ');
222 static void dump_smbus_registers(void)
226 for(device = 1; device < 0x80; device++) {
228 if( smbus_read_byte(device, 0) < 0 ) continue;
230 printk_debug("smbus: %02x", device);
232 print_debug("smbus: ");
233 print_debug_hex8(device);
235 for(j = 0; j < 256; j++) {
238 status = smbus_read_byte(device, j);
242 if ((j & 0xf) == 0) {
244 printk_debug("\r\n%02x: ",j);
251 byte = status & 0xff;
253 printk_debug("%02x ", byte);
255 print_debug_hex8(byte);
256 print_debug_char(' ');
263 static void dump_io_resources(unsigned port)
269 printk_debug("%04x:\r\n", port);
271 print_debug_hex16(port);
272 print_debug(":\r\n");
276 if ((i & 0x0f) == 0) {
278 printk_debug("%02x:", i);
281 print_debug_char(':');
286 printk_debug(" %02x",val);
288 print_debug_char(' ');
289 print_debug_hex8(val);
291 if ((i & 0x0f) == 0x0f) {
298 static void dump_mem(unsigned start, unsigned end)
301 print_debug("dump_mem:");
302 for(i=start;i<end;i++) {
305 printk_debug("\r\n%08x:", i);
308 print_debug_hex32(i);
313 printk_debug(" %02x", (unsigned char)*((unsigned char *)i));
316 print_debug_hex8((unsigned char)*((unsigned char *)i));