3 #define RES_PCI_IO 0x10
4 #define RES_PORT_IO_8 0x22
5 #define RES_PORT_IO_32 0x20
6 #define RES_MEM_IO 0x30
8 static void setup_resource_map_x(const unsigned int *register_values, int max)
13 print_debug("setting up resource map ex....");
20 for(i = 0; i < max; i += 4) {
22 print_debug_hex16(i/4);
24 print_debug_hex8(register_values[i]);
26 print_debug_hex32(register_values[i+1]);
27 print_debug(" <- & ");
28 print_debug_hex32(register_values[i+2]);
30 print_debug_hex32(register_values[i+3]);
33 switch (register_values[i]) {
34 case RES_PCI_IO: //PCI
39 dev = register_values[i+1] & ~0xff;
40 where = register_values[i+1] & 0xff;
41 reg = pci_read_config32(dev, where);
42 reg &= register_values[i+2];
43 reg |= register_values[i+3];
44 pci_write_config32(dev, where, reg);
47 case RES_PORT_IO_8: // io 8
51 where = register_values[i+1];
53 reg &= register_values[i+2];
54 reg |= register_values[i+3];
58 case RES_PORT_IO_32: //io32
62 where = register_values[i+1];
64 reg &= register_values[i+2];
65 reg |= register_values[i+3];
70 case RES_MEM_IO: //mem
74 where = register_values[i+1];
76 reg &= register_values[i+2];
77 reg |= register_values[i+3];
89 print_debug("done.\r\n");
94 static void setup_iob_resource_map(const unsigned int *register_values, int max)
98 for(i = 0; i < max; i += 3) {
102 where = register_values[i];
105 print_debug_hex16(where);
110 print_debug_hex8(reg);
113 reg &= register_values[i+1];
114 reg |= register_values[i+2];
117 print_debug_hex8(reg);
124 print_debug_hex8(reg);
130 static void setup_io_resource_map(const unsigned int *register_values, int max)
134 for(i = 0; i < max; i += 3) {
138 where = register_values[i];
141 print_debug_hex16(where);
148 print_debug_hex32(reg);
150 reg &= register_values[i+1];
151 reg |= register_values[i+2];
156 print_debug_hex32(reg);
163 print_debug_hex32(reg);
170 static void setup_mem_resource_map(const unsigned int *register_values, int max)
174 for(i = 0; i < max; i += 3) {
178 print_debug_hex32(register_values[i]);
180 print_debug_hex32(register_values[i+2]);
182 where = register_values[i];
184 reg &= register_values[i+1];
185 reg |= register_values[i+2];
186 write32( where, reg);
190 print_debug_hex32(reg);