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) {
23 printk_debug("%04x: %02x %08x <- & %08x | %08x\r\n",
24 i/4, register_values[i],register_values[i+1], register_values[i+2], register_values[i+3]);
26 print_debug_hex16(i/4);
28 print_debug_hex8(register_values[i]);
30 print_debug_hex32(register_values[i+1]);
31 print_debug(" <- & ");
32 print_debug_hex32(register_values[i+2]);
34 print_debug_hex32(register_values[i+3]);
38 switch (register_values[i]) {
39 case RES_PCI_IO: //PCI
44 dev = register_values[i+1] & ~0xff;
45 where = register_values[i+1] & 0xff;
46 reg = pci_read_config32(dev, where);
47 reg &= register_values[i+2];
48 reg |= register_values[i+3];
49 pci_write_config32(dev, where, reg);
52 case RES_PORT_IO_8: // io 8
56 where = register_values[i+1];
58 reg &= register_values[i+2];
59 reg |= register_values[i+3];
63 case RES_PORT_IO_32: //io32
67 where = register_values[i+1];
69 reg &= register_values[i+2];
70 reg |= register_values[i+3];
75 case RES_MEM_IO: //mem
79 where = register_values[i+1];
81 reg &= register_values[i+2];
82 reg |= register_values[i+3];
94 print_debug("done.\r\n");
99 static void setup_iob_resource_map(const unsigned int *register_values, int max)
103 for(i = 0; i < max; i += 3) {
107 where = register_values[i];
110 print_debug_hex16(where);
115 print_debug_hex8(reg);
118 reg &= register_values[i+1];
119 reg |= register_values[i+2];
122 print_debug_hex8(reg);
129 print_debug_hex8(reg);
135 static void setup_io_resource_map(const unsigned int *register_values, int max)
139 for(i = 0; i < max; i += 3) {
143 where = register_values[i];
146 print_debug_hex16(where);
153 print_debug_hex32(reg);
155 reg &= register_values[i+1];
156 reg |= register_values[i+2];
161 print_debug_hex32(reg);
168 print_debug_hex32(reg);
175 static void setup_mem_resource_map(const unsigned int *register_values, int max)
179 for(i = 0; i < max; i += 3) {
183 print_debug_hex32(register_values[i]);
185 print_debug_hex32(register_values[i+2]);
187 where = register_values[i];
189 reg &= register_values[i+1];
190 reg |= register_values[i+2];
191 write32( where, reg);
195 print_debug_hex32(reg);