diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /drivers/ide/ide-pnp.c |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'drivers/ide/ide-pnp.c')
-rw-r--r-- | drivers/ide/ide-pnp.c | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/drivers/ide/ide-pnp.c b/drivers/ide/ide-pnp.c new file mode 100644 index 000000000000..df7d1504f84e --- /dev/null +++ b/drivers/ide/ide-pnp.c | |||
@@ -0,0 +1,75 @@ | |||
1 | /* | ||
2 | * linux/drivers/ide/ide-pnp.c | ||
3 | * | ||
4 | * This file provides autodetection for ISA PnP IDE interfaces. | ||
5 | * It was tested with "ESS ES1868 Plug and Play AudioDrive" IDE interface. | ||
6 | * | ||
7 | * Copyright (C) 2000 Andrey Panin <pazke@donpac.ru> | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License as published by | ||
11 | * the Free Software Foundation; either version 2, or (at your option) | ||
12 | * any later version. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * (for example /usr/src/linux/COPYING); if not, write to the Free | ||
16 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
17 | */ | ||
18 | |||
19 | #include <linux/init.h> | ||
20 | #include <linux/pnp.h> | ||
21 | #include <linux/ide.h> | ||
22 | |||
23 | /* Add your devices here :)) */ | ||
24 | static struct pnp_device_id idepnp_devices[] = { | ||
25 | /* Generic ESDI/IDE/ATA compatible hard disk controller */ | ||
26 | {.id = "PNP0600", .driver_data = 0}, | ||
27 | {.id = ""} | ||
28 | }; | ||
29 | |||
30 | static int idepnp_probe(struct pnp_dev * dev, const struct pnp_device_id *dev_id) | ||
31 | { | ||
32 | hw_regs_t hw; | ||
33 | ide_hwif_t *hwif; | ||
34 | int index; | ||
35 | |||
36 | if (!(pnp_port_valid(dev, 0) && pnp_port_valid(dev, 1) && pnp_irq_valid(dev, 0))) | ||
37 | return -1; | ||
38 | |||
39 | memset(&hw, 0, sizeof(hw)); | ||
40 | ide_std_init_ports(&hw, pnp_port_start(dev, 0), | ||
41 | pnp_port_start(dev, 1)); | ||
42 | hw.irq = pnp_irq(dev, 0); | ||
43 | hw.dma = NO_DMA; | ||
44 | |||
45 | index = ide_register_hw(&hw, &hwif); | ||
46 | |||
47 | if (index != -1) { | ||
48 | printk(KERN_INFO "ide%d: generic PnP IDE interface\n", index); | ||
49 | pnp_set_drvdata(dev,hwif); | ||
50 | return 0; | ||
51 | } | ||
52 | |||
53 | return -1; | ||
54 | } | ||
55 | |||
56 | static void idepnp_remove(struct pnp_dev * dev) | ||
57 | { | ||
58 | ide_hwif_t *hwif = pnp_get_drvdata(dev); | ||
59 | if (hwif) { | ||
60 | ide_unregister(hwif->index); | ||
61 | } else | ||
62 | printk(KERN_ERR "idepnp: Unable to remove device, please report.\n"); | ||
63 | } | ||
64 | |||
65 | static struct pnp_driver idepnp_driver = { | ||
66 | .name = "ide", | ||
67 | .id_table = idepnp_devices, | ||
68 | .probe = idepnp_probe, | ||
69 | .remove = idepnp_remove, | ||
70 | }; | ||
71 | |||
72 | void __init pnpide_init(void) | ||
73 | { | ||
74 | pnp_register_driver(&idepnp_driver); | ||
75 | } | ||