📄 global.c
字号:
u16 typeReq, u16 wValue, u16 wIndex,
char far * buf, u16 wLength);*/NULL,
/*long (*post_unlink_timeout)(struct usb_hcd far * hcd,
struct usb_device far * dev,atomic_t * p_refcnt);*/
NULL
};
const struct pci_device_id ohci_pci_ids [] =
{
{/*unsigned long vendor*/ PCI_ANY_ID,
/*unsigned long device*/ PCI_ANY_ID,
/*unsigned long subvendor*/ PCI_ANY_ID,
/*unsigned long subdevice*/ PCI_ANY_ID,
/*unsigned long class*/ (PCI_CLASS_SERIAL_USB << 8) | 0x10,
/*unsigned long class_mask*/ ~0L,
/*unsigned long driver_data*/ (unsigned long) &ohci_driver},
{0,0,0,0,0,0,0}
};
struct pci_driver ohci_pci_driver =
{
/*struct list_head node*/{NULL,NULL},
/*char *name*/ohci_hcd_name,
/*const struct pci_device_id *id_table*/ohci_pci_ids,
/*long (*probe) (struct pci_dev *dev, const struct pci_device_id *id)*/
usb_hcd_pci_probe,
/*void (*remove) (struct pci_dev *dev)*/usb_hcd_pci_remove,
/*long (*save_state) (struct pci_dev *dev, u32 state)*/NULL,
#ifdef CONFIG_PM
/*long (*suspend)(struct pci_dev *dev, u32 state)*/usb_hcd_pci_suspend,
/*long (*resume) (struct pci_dev *dev)*/usb_hcd_pci_resume,
#endif
/*long (*enable_wake) (struct pci_dev *dev, u32 state, long enable)*/NULL
};
/* pci.c */
unsigned long pcibios_max_latency = 255;
LIST_HEAD(pci_root_buses);
LIST_HEAD(pci_devices);
LIST_HEAD(pci_drivers);
struct pci_driver pci_compat_driver = {
/*struct list_head node;*/{NULL,NULL},
/*char *name*/"compat",
/*const struct pci_device_id *id_table; */NULL,
/*long (*probe) (struct pci_dev *dev, const struct pci_device_id *id);*/NULL,
/*void (*remove) (struct pci_dev *dev);*/NULL,
/*long (*save_state) (struct pci_dev *dev, u32 state);*/NULL,
#ifdef CONFIG_PM
/*long (*suspend)(struct pci_dev *dev, u32 state);*/NULL,
/*long (*resume) (struct pci_dev *dev);*/NULL,
#endif
/*long (*enable_wake) (struct pci_dev *dev, u32 state, long enable);*/NULL
};
/* pcifixup.c */
struct pci_fixup pcibios_fixups[] =
{
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82451NX, pci_fixup_i450nx },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82454GX, pci_fixup_i450gx },
#if 0
/* Until we get proper handling pray the BIOS gets it right */
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HE, pci_fixup_serverworks },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_LE, pci_fixup_serverworks },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CMIC_HE, pci_fixup_serverworks },
#endif
#if 1
/* Our bus code shouldnt need this fixup any more. Delete once verified */
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_COMPAQ, PCI_DEVICE_ID_COMPAQ_6010, pci_fixup_compaq },
#endif
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_UMC, PCI_DEVICE_ID_UMC_UM8886BF, pci_fixup_umc_ide },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_5513, pci_fixup_ide_trash },
{ PCI_FIXUP_HEADER, PCI_ANY_ID, PCI_ANY_ID, pci_fixup_ide_bases },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_5597, pci_fixup_latency },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_5598, pci_fixup_latency },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_3, pci_fixup_piix4_acpi },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8363_0, pci_fixup_via_athlon_bug },
{ 0 }
};
long isa_dma_bridge_buggy; /* Exported */
long pci_pci_problems;
#ifdef CONFIG_X86_IO_APIC
long nr_ioapics;
#endif
struct pci_fixup pci_fixups[] =
{
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82441, quirk_passive_release },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82441, quirk_passive_release },
/*
* Its not totally clear which chipsets are the problematic ones
* We know 82C586 and 82C596 variants are affected.
*/
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_0, quirk_isa_dma_hangs },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C596, quirk_isa_dma_hangs },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371SB_0, quirk_isa_dma_hangs },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_868, quirk_s3_64M },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_968, quirk_s3_64M },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82437, quirk_triton },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82437VX, quirk_triton },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82439, quirk_triton },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82439TX, quirk_triton },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82441, quirk_natoma },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443LX_0, quirk_natoma },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443LX_1, quirk_natoma },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443BX_0, quirk_natoma },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443BX_1, quirk_natoma },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443BX_2, quirk_natoma },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_5597, quirk_nopcipci },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_496, quirk_nopcipci },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8363_0, quirk_vialatency },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8371_1, quirk_vialatency },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, 0x3112 /* Not out yet ? */, quirk_vialatency },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C576, quirk_vsfx },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C597_0, quirk_viaetbf },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C597_0, quirk_vt82c598_id },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_vt82c586_acpi },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_vt82c686_acpi },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_3, quirk_piix4_acpi },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M7101, quirk_ali7101_acpi },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371SB_2, quirk_piix3_usb },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_2, quirk_piix3_usb },
{ PCI_FIXUP_FINAL, PCI_ANY_ID, PCI_ANY_ID, quirk_cardbus_legacy },
#ifdef CONFIG_X86_IO_APIC
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_ioapic },
#endif
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_via_acpi },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_acpi },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_2, quirk_via_irqpic },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, quirk_via_irqpic },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_6, quirk_via_irqpic },
{ 0 }
};
/* pciirq.c */
struct irq_routing_table far * pirq_table = NULL;
struct irq_router pirq_bios_router =
{ "BIOS", 0, 0, NULL, pirq_bios_set};
struct irq_router pirq_routers[] = {
{ "PIIX", PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371FB_0, pirq_piix_get, pirq_piix_set },
{ "PIIX", PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371SB_0, pirq_piix_get, pirq_piix_set },
{ "PIIX", PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_0, pirq_piix_get, pirq_piix_set },
{ "PIIX", PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371MX, pirq_piix_get, pirq_piix_set },
{ "PIIX", PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443MX_0, pirq_piix_get, pirq_piix_set },
{ "PIIX", PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801BA_0, pirq_piix_get, pirq_piix_set },
{ "ALI", PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, pirq_ali_get, pirq_ali_set },
{ "VIA", PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_0, pirq_via_get, pirq_via_set },
{ "VIA", PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C596, pirq_via_get, pirq_via_set },
{ "VIA", PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, pirq_via_get, pirq_via_set },
{ "OPTI", PCI_VENDOR_ID_OPTI, PCI_DEVICE_ID_OPTI_82C700, pirq_opti_get, pirq_opti_set },
{ "NatSemi", PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5520, pirq_cyrix_get, pirq_cyrix_set },
{ "SIS", PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503, pirq_sis_get, pirq_sis_set },
{ "VLSI 82C534", PCI_VENDOR_ID_VLSI, PCI_DEVICE_ID_VLSI_82C534, pirq_vlsi_get, pirq_vlsi_set },
{ "ServerWorks", PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_OSB4,
pirq_serverworks_get, pirq_serverworks_set },
{ "ServerWorks", PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB5,
pirq_serverworks_get, pirq_serverworks_set },
{ "AMD756 VIPER", PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_VIPER_740B,
pirq_amd756_get, pirq_amd756_set },
{ "default", 0, 0, NULL, NULL }
};
unsigned short total_pirq_routers = sizeof(pirq_routers) /
sizeof(struct irq_router);
long pirq_penalty[16] = {
1000000, 1000000, 1000000, 1000, 1000, 0, 1000, 1000,
0, 0, 0, 0, 1000, 100000, 100000, 100000
};
unsigned long pcibios_irq_mask = 0xfff8;
struct pci_dev *pirq_router_dev;
struct irq_router * pirq_router;
/* pcilow.c */
struct resource ioport_resource = { "PCI IO", 0x0000, IO_SPACE_LIMIT, IORESOURCE_IO , 0};
struct resource iomem_resource = { "PCI mem", 0x00000000, 0xfffffffc, IORESOURCE_MEM, 0};
int pci_bios_present;
unsigned short pci_probe = PCI_BIOS_IRQ_SCAN | PCI_PROBE_BIOS | PCI_PROBE_CONF1 |
PCI_PROBE_CONF2 | PCI_ASSIGN_ALL_BUSSES;
short pcibios_last_bus = -1;
struct pci_bus *pci_root_bus = NULL;
struct pci_ops *pci_root_ops = NULL;
long (*pci_config_read)(long seg, long bus, long dev, long fn, long reg, long len, u32 *value) = NULL;
long (*pci_config_write)(long seg, long bus, long dev, long fn, long reg, long len, u32 value) = NULL;
struct pci_ops pci_direct_conf1 = {
pci_conf1_read_config_byte,
pci_conf1_read_config_word,
pci_conf1_read_config_dword,
pci_conf1_write_config_byte,
pci_conf1_write_config_word,
pci_conf1_write_config_dword
};
struct pci_ops pci_direct_conf2 = {
pci_conf2_read_config_byte,
pci_conf2_read_config_word,
pci_conf2_read_config_dword,
pci_conf2_write_config_byte,
pci_conf2_write_config_word,
pci_conf2_write_config_dword
};
struct pci_ops pci_bios_access = {
pci_bios_read_config_byte,
pci_bios_read_config_word,
pci_bios_read_config_dword,
pci_bios_write_config_byte,
pci_bios_write_config_word,
pci_bios_write_config_dword
};
/* pm.c */
short pm_active;
LIST_HEAD(pm_devs);
/* uhci.c */
char uhci_hcd_name [] = "uhci-hcd";
const struct hc_driver uhci_driver = {
/*const char far * description*/uhci_hcd_name,
/*void (*irq) (struct usb_hcd far * hcd)*/uhci_irq,
/*long flags*/HCD_USB11,
/*long (*start) (struct usb_hcd far * hcd)*/uhci_start,
#ifdef CONFIG_PM
/*long (*suspend) (struct usb_hcd far * hcd, u32 state)*/uhci_suspend,
/*long (*resume) (struct usb_hcd far * hcd)*/uhci_resume,
#endif
/*void (*stop) (struct usb_hcd far * hcd)*/uhci_stop,
/*long (*get_frame_number) (struct usb_hcd far * hcd)*/uhci_get_frame,
/*ruct usb_hcd far * (*hcd_alloc) (void)*/uhci_hcd_alloc,
/*void (*hcd_free) (struct usb_hcd far * hcd);*/uhci_hcd_free,
/*long (*urb_enqueue) (struct usb_hcd far * hcd, struct urb far * urb,
int mem_flags)*/uhci_urb_enqueue,
/*long (*urb_dequeue) (struct usb_hcd far * hcd, struct urb far * urb)*/
uhci_urb_dequeue,
/*void (*free_config) (struct usb_hcd far * hcd,
struct usb_device far * dev,unsigned char mode)*/
uhci_free_config,
/*long (*hub_status_data) (struct usb_hcd far * hcd,struct urb far * urb)*/
uhci_hub_status_data,
/*long (*hub_control) (struct usb_hcd far * hcd,
u16 typeReq, u16 wValue, u16 wIndex,
char far * buf, u16 wLength);*/uhci_hub_control,
/*long (*post_unlink_timeout)(struct usb_hcd far * hcd,
struct usb_device far * dev,atomic_t * p_refcnt);*/
uhci_post_unlink_timeout
};
const struct pci_device_id uhci_pci_ids [] =
{
{/*unsigned long vendor*/PCI_ANY_ID,
/*unsigned long device*/PCI_ANY_ID,
/*unsigned long subvendor*/PCI_ANY_ID,
/*unsigned long subdevice*/PCI_ANY_ID,
/*unsigned long class*/((PCI_CLASS_SERIAL_USB << 8) | 0x00),
/*unsigned long class_mask*/~0L,
/*unsigned long driver_data;*/(unsigned long) &uhci_driver},
{0,0,0,0,0,0,0}
};
/* pci driver glue; this is a "new style" PCI driver module */
struct pci_driver uhci_pci_driver =
{
/*struct list_head node*/{NULL,NULL},
/*char *name*/uhci_hcd_name,
/*const struct pci_device_id *id_table*/uhci_pci_ids,
/*long (*probe) (struct pci_dev *dev, const struct pci_device_id *id)*/
usb_hcd_pci_probe,
/*void (*remove) (struct pci_dev *dev)*/usb_hcd_pci_remove,
/*long (*save_state) (struct pci_dev *dev, u32 state)*/NULL,
#ifdef CONFIG_PM
/*long (*suspend)(struct pci_dev *dev, u32 state)*/usb_hcd_pci_suspend,
/*long (*resume) (struct pci_dev *dev)*/usb_hcd_pci_resume,
#endif
/*long (*enable_wake) (struct pci_dev *dev, u32 state, long enable)*/NULL
};
/* usb.c */
LIST_HEAD(usb_driver_list);
LIST_HEAD(usb_bus_list);
struct usb_busmap busmap;
struct driver_info driver_map[16];
const char usb_bandwidth_option = 1;
/* low.c */
unsigned long GlobalTickCount = 0L;
unsigned char is_chain = 0;
unsigned long event_next = 0L;
struct LDT moveld;
struct LDT far * p_moveld = (struct LDT far *)(&(moveld));
unsigned char mystack[MY_STACK_SIZE];
unsigned char busy = 0;
void (_interrupt _far * old_int1c_handler)(void) = NULL;
void (_interrupt _far * old_int8_handler)(void) = NULL;
unsigned char common_is_sti;
struct irq_action far * common_action;
long common_irq;
unsigned char common_is_sti;
void far * common_ptr;
unsigned short common_intsp,common_intss;
unsigned short common_temp;
#ifdef DEBUG_HARDWARE_INTERRUPT_USE_MEMORY
unsigned long run_status = 0L;
unsigned long status1 = 0;
unsigned long status2 = 0;
void (_far * irq_handler)(long irq,void far * __hcd) = 0;
unsigned long pass_count = 0;
#endif
#ifdef DEBUG_HARDWARE_INTERRUPT
void (_interrupt _far * old_flush_handler)(void) = NULL;
unsigned short iOffset1 = 0;
unsigned short iSeg1 = 0;
unsigned short XmsHandle = 0;
unsigned long LoggedSize = 0L;
unsigned char IsLogging = 0;
unsigned char IsLogChecked = 0;
unsigned short PassCount = 0;
unsigned short BeginCount = 0;
unsigned short EndCount = 0;
#endif
unsigned char int1c_is_sti;
struct event_item far * int1c_item;
unsigned short int1c_temp;
unsigned long flags = 0L;
unsigned short flags_irq[16];
unsigned char is_in_interrupt = 0;
struct eventmap event_map;
LIST_HEAD(global_event_list);
struct irq_table global_irq_table[16];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -