Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 83468
b: refs/heads/master
c: f63fd7e
h: refs/heads/master
v: v3
  • Loading branch information
Petr Cvek authored and Linus Torvalds committed Feb 6, 2008
1 parent 9dd76ad commit a449ca2
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 7 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a9000d037d7dd08ac46168560b3a3d3bb743bfa6
refs/heads/master: f63fd7e299ee13da071ecfce2b90b58c5e1562b1
45 changes: 39 additions & 6 deletions trunk/drivers/parport/parport_pc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1540,6 +1540,38 @@ static void __devinit detect_and_report_smsc (void)
smsc_check(0x3f0,0x44);
smsc_check(0x370,0x44);
}

static void __devinit detect_and_report_it87(void)
{
u16 dev;
u8 r;
if (verbose_probing)
printk(KERN_DEBUG "IT8705 Super-IO detection, now testing port 2E ...\n");
if (!request_region(0x2e, 1, __FUNCTION__))
return;
outb(0x87, 0x2e);
outb(0x01, 0x2e);
outb(0x55, 0x2e);
outb(0x55, 0x2e);
outb(0x20, 0x2e);
dev = inb(0x2f) << 8;
outb(0x21, 0x2e);
dev |= inb(0x2f);
if (dev == 0x8712 || dev == 0x8705 || dev == 0x8715 ||
dev == 0x8716 || dev == 0x8718 || dev == 0x8726) {
printk(KERN_INFO "IT%04X SuperIO detected.\n", dev);
outb(0x07, 0x2E); /* Parallel Port */
outb(0x03, 0x2F);
outb(0xF0, 0x2E); /* BOOT 0x80 off */
r = inb(0x2f);
outb(0xF0, 0x2E);
outb(r | 8, 0x2F);
outb(0x02, 0x2E); /* Lock */
outb(0x02, 0x2F);

release_region(0x2e, 1);
}
}
#endif /* CONFIG_PARPORT_PC_SUPERIO */

static int get_superio_dma (struct parport *p)
Expand Down Expand Up @@ -3164,24 +3196,25 @@ static void __init parport_pc_find_ports (int autoirq, int autodma)
int count = 0, err;

#ifdef CONFIG_PARPORT_PC_SUPERIO
detect_and_report_winbond ();
detect_and_report_smsc ();
detect_and_report_it87();
detect_and_report_winbond();
detect_and_report_smsc();
#endif

/* Onboard SuperIO chipsets that show themselves on the PCI bus. */
count += parport_pc_init_superio (autoirq, autodma);
count += parport_pc_init_superio(autoirq, autodma);

/* PnP ports, skip detection if SuperIO already found them */
if (!count) {
err = pnp_register_driver (&parport_pc_pnp_driver);
err = pnp_register_driver(&parport_pc_pnp_driver);
if (!err)
pnp_registered_parport = 1;
}

/* ISA ports and whatever (see asm/parport.h). */
parport_pc_find_nonpci_ports (autoirq, autodma);
parport_pc_find_nonpci_ports(autoirq, autodma);

err = pci_register_driver (&parport_pc_pci_driver);
err = pci_register_driver(&parport_pc_pci_driver);
if (!err)
pci_registered_parport = 1;
}
Expand Down

0 comments on commit a449ca2

Please sign in to comment.