|
|
1.1 root 1: #ifndef _PCI_SCAN_H
2: #define _PCI_SCAN_H
3: /*
4: version 1.02 $Version:$ $Date: 2006/01/22 15:54:41 $
5: Copyright 1999-2001 Donald Becker / Scyld Computing Corporation
6: This software is part of the Linux kernel. It may be used and
7: distributed according to the terms of the GNU Public License,
8: incorporated herein by reference.
9: */
10:
11: /*
12: These are the structures in the table that drives the PCI probe routines.
13: Note the matching code uses a bitmask: more specific table entries should
14: be placed before "catch-all" entries.
15:
16: The table must be zero terminated.
17: */
18: enum pci_id_flags_bits {
19: /* Set PCI command register bits before calling probe1(). */
20: PCI_USES_IO=1, PCI_USES_MEM=2, PCI_USES_MASTER=4,
21: /* Read and map the single following PCI BAR. */
22: PCI_ADDR0=0<<4, PCI_ADDR1=1<<4, PCI_ADDR2=2<<4, PCI_ADDR3=3<<4,
23: PCI_ADDR_64BITS=0x100, PCI_NO_ACPI_WAKE=0x200, PCI_NO_MIN_LATENCY=0x400,
24: PCI_UNUSED_IRQ=0x800,
25: };
26:
27: struct pci_id_info {
28: const char *name;
29: struct match_info {
30: int pci, pci_mask, subsystem, subsystem_mask;
31: int revision, revision_mask; /* Only 8 bits. */
32: } id;
33: enum pci_id_flags_bits pci_flags;
34: int io_size; /* Needed for I/O region check or ioremap(). */
35: int drv_flags; /* Driver use, intended as capability flags. */
36: };
37:
38: enum drv_id_flags {
39: PCI_HOTSWAP=1, /* Leave module loaded for Cardbus-like chips. */
40: };
41: enum drv_pwr_action {
42: DRV_NOOP, /* No action. */
43: DRV_ATTACH, /* The driver may expect power ops. */
44: DRV_SUSPEND, /* Machine suspending, next event RESUME or DETACH. */
45: DRV_RESUME, /* Resume from previous SUSPEND */
46: DRV_DETACH, /* Card will-be/is gone. Valid from SUSPEND! */
47: DRV_PWR_WakeOn, /* Put device in e.g. Wake-On-LAN mode. */
48: DRV_PWR_DOWN, /* Go to lowest power mode. */
49: DRV_PWR_UP, /* Go to normal power mode. */
50: };
51:
52: struct drv_id_info {
53: const char *name; /* Single-word driver name. */
54: int flags;
55: int pci_class; /* Typically PCI_CLASS_NETWORK_ETHERNET<<8. */
56: struct pci_id_info *pci_dev_tbl;
57: void *(*probe1)(struct pci_dev *pdev, void *dev_ptr,
58: long ioaddr, int irq, int table_idx, int fnd_cnt);
59: /* Optional, called for suspend, resume and detach. */
60: int (*pwr_event)(void *dev, int event);
61: /* Internal values. */
62: struct drv_id_info *next;
63: void *cb_ops;
64: };
65:
66: /* PCI scan and activate.
67: Scan PCI-like hardware, calling probe1(..,dev,..) on devices that match.
68: Returns -ENODEV, a negative number, if no cards are found. */
69:
70: extern int pci_drv_register(struct drv_id_info *drv_id, void *initial_device);
71: extern void pci_drv_unregister(struct drv_id_info *drv_id);
72:
73:
74: /* ACPI routines.
75: Wake (change to ACPI D0 state) or set the ACPI power level of a sleeping
76: ACPI device. Returns the old power state. */
77:
78: int acpi_wake(struct pci_dev *pdev);
79: enum acpi_pwr_state {ACPI_D0, ACPI_D1, ACPI_D2, ACPI_D3};
80: int acpi_set_pwr_state(struct pci_dev *pdev, enum acpi_pwr_state state);
81:
82:
83: /*
84: * Local variables:
85: * c-indent-level: 4
86: * c-basic-offset: 4
87: * tab-width: 4
88: * End:
89: */
90: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.