浏览代码

Moved functions that we want to keep to drivers/bus/pci.c

tags/v0.9.3
Michael Brown 19 年前
父节点
当前提交
7172d4abfb
共有 1 个文件被更改,包括 0 次插入142 次删除
  1. 0
    142
      src/core/pci_legacy.c

+ 0
- 142
src/core/pci_legacy.c 查看文件

@@ -192,146 +192,4 @@ void scan_pci_bus(int type, struct pci_device *dev)
192 192
 }
193 193
 
194 194
 
195
-
196
-/*
197
- *	Set device to be a busmaster in case BIOS neglected to do so.
198
- *	Also adjust PCI latency timer to a reasonable value, 32.
199
- */
200
-void adjust_pci_device(struct pci_device *p)
201
-{
202
-	unsigned short	new_command, pci_command;
203
-	unsigned char	pci_latency;
204
-
205
-	pcibios_read_config_word(p->bus, p->devfn, PCI_COMMAND, &pci_command);
206
-	new_command = pci_command | PCI_COMMAND_MASTER|PCI_COMMAND_IO;
207
-	if (pci_command != new_command) {
208
-#if DEBUG > 0
209
-		printf(
210
-			"The PCI BIOS has not enabled this device!\n"
211
-			"Updating PCI command %hX->%hX. pci_bus %hhX pci_device_fn %hhX\n",
212
-			   pci_command, new_command, p->bus, p->devfn);
213
-#endif
214
-		pcibios_write_config_word(p->bus, p->devfn, PCI_COMMAND, new_command);
215
-	}
216
-	pcibios_read_config_byte(p->bus, p->devfn, PCI_LATENCY_TIMER, &pci_latency);
217
-	if (pci_latency < 32) {
218
-#if DEBUG > 0
219
-		printf("PCI latency timer (CFLT) is unreasonably low at %d. Setting to 32 clocks.\n", 
220
-			pci_latency);
221
-#endif
222
-		pcibios_write_config_byte(p->bus, p->devfn, PCI_LATENCY_TIMER, 32);
223
-	}
224
-}
225
-
226
-/*
227
- * Find the start of a pci resource.
228
- */
229
-unsigned long pci_bar_start(struct pci_device *dev, unsigned int index)
230
-{
231
-	uint32_t lo, hi;
232
-	unsigned long bar;
233
-	pci_read_config_dword(dev, index, &lo);
234
-	if (lo & PCI_BASE_ADDRESS_SPACE_IO) {
235
-		bar = lo & PCI_BASE_ADDRESS_IO_MASK;
236
-	} else {
237
-		bar = 0;
238
-		if ((lo & PCI_BASE_ADDRESS_MEM_TYPE_MASK) == PCI_BASE_ADDRESS_MEM_TYPE_64) {
239
-			pci_read_config_dword(dev, index + 4, &hi);
240
-			if (hi) {
241
-#if ULONG_MAX > 0xffffffff
242
-					bar = hi;
243
-					bar <<=32;
244
-#else
245
-					printf("Unhandled 64bit BAR\n");
246
-					return -1UL;
247
-#endif
248
-			}
249
-		}
250
-		bar |= lo & PCI_BASE_ADDRESS_MEM_MASK;
251
-	}
252
-	return bar + pcibios_bus_base(dev->bus);
253
-}
254
-
255
-/*
256
- * Find the size of a pci resource.
257
- */
258
-unsigned long pci_bar_size(struct pci_device *dev, unsigned int bar)
259
-{
260
-	uint32_t start, size;
261
-	/* Save the original bar */
262
-	pci_read_config_dword(dev, bar, &start);
263
-	/* Compute which bits can be set */
264
-	pci_write_config_dword(dev, bar, ~0);
265
-	pci_read_config_dword(dev, bar, &size);
266
-	/* Restore the original size */
267
-	pci_write_config_dword(dev, bar, start);
268
-	/* Find the significant bits */
269
-	if (start & PCI_BASE_ADDRESS_SPACE_IO) {
270
-		size &= PCI_BASE_ADDRESS_IO_MASK;
271
-	} else {
272
-		size &= PCI_BASE_ADDRESS_MEM_MASK;
273
-	}
274
-	/* Find the lowest bit set */
275
-	size = size & ~(size - 1);
276
-	return size;
277
-}
278
-
279
-/**
280
- * pci_find_capability - query for devices' capabilities 
281
- * @dev: PCI device to query
282
- * @cap: capability code
283
- *
284
- * Tell if a device supports a given PCI capability.
285
- * Returns the address of the requested capability structure within the
286
- * device's PCI configuration space or 0 in case the device does not
287
- * support it.  Possible values for @cap:
288
- *
289
- *  %PCI_CAP_ID_PM           Power Management 
290
- *
291
- *  %PCI_CAP_ID_AGP          Accelerated Graphics Port 
292
- *
293
- *  %PCI_CAP_ID_VPD          Vital Product Data 
294
- *
295
- *  %PCI_CAP_ID_SLOTID       Slot Identification 
296
- *
297
- *  %PCI_CAP_ID_MSI          Message Signalled Interrupts
298
- *
299
- *  %PCI_CAP_ID_CHSWP        CompactPCI HotSwap 
300
- */
301
-int pci_find_capability(struct pci_device *dev, int cap)
302
-{
303
-	uint16_t status;
304
-	uint8_t pos, id;
305
-	uint8_t hdr_type;
306
-	int ttl = 48;
307
-
308
-	pci_read_config_word(dev, PCI_STATUS, &status);
309
-	if (!(status & PCI_STATUS_CAP_LIST))
310
-		return 0;
311
-	pci_read_config_byte(dev, PCI_HEADER_TYPE, &hdr_type);
312
-	switch (hdr_type & 0x7F) {
313
-	case PCI_HEADER_TYPE_NORMAL:
314
-	case PCI_HEADER_TYPE_BRIDGE:
315
-	default:
316
-		pci_read_config_byte(dev, PCI_CAPABILITY_LIST, &pos);
317
-		break;
318
-	case PCI_HEADER_TYPE_CARDBUS:
319
-		pci_read_config_byte(dev, PCI_CB_CAPABILITY_LIST, &pos);
320
-		break;
321
-	}
322
-	while (ttl-- && pos >= 0x40) {
323
-		pos &= ~3;
324
-		pci_read_config_byte(dev, pos + PCI_CAP_LIST_ID, &id);
325
-#if	DEBUG > 0
326
-		printf("Capability: %d\n", id);
327
-#endif
328
-		if (id == 0xff)
329
-			break;
330
-		if (id == cap)
331
-			return pos;
332
-		pci_read_config_byte(dev, pos + PCI_CAP_LIST_NEXT, &pos);
333
-	}
334
-	return 0;
335
-}
336
-
337 195
 #endif /* CONFIG_PCI */

正在加载...
取消
保存