Blame view
drivers/ide/ide-pnp.c
2.07 KB
af1a8899d treewide: Replace... |
1 |
// SPDX-License-Identifier: GPL-2.0-or-later |
1da177e4c Linux-2.6.12-rc2 |
2 |
/* |
1da177e4c Linux-2.6.12-rc2 |
3 4 5 6 |
* This file provides autodetection for ISA PnP IDE interfaces. * It was tested with "ESS ES1868 Plug and Play AudioDrive" IDE interface. * * Copyright (C) 2000 Andrey Panin <pazke@donpac.ru> |
1da177e4c Linux-2.6.12-rc2 |
7 8 9 10 11 |
*/ #include <linux/init.h> #include <linux/pnp.h> #include <linux/ide.h> |
bff7832dd ide/ata: Add modu... |
12 |
#include <linux/module.h> |
1da177e4c Linux-2.6.12-rc2 |
13 |
|
134d4548a ide-pnp: manage I... |
14 |
#define DRV_NAME "ide-pnp" |
1da177e4c Linux-2.6.12-rc2 |
15 |
/* Add your devices here :)) */ |
b671e1703 PNP: ide: constif... |
16 |
static const struct pnp_device_id idepnp_devices[] = { |
177b8fe9a IDE: Coding Style... |
17 |
/* Generic ESDI/IDE/ATA compatible hard disk controller */ |
1da177e4c Linux-2.6.12-rc2 |
18 19 20 |
{.id = "PNP0600", .driver_data = 0}, {.id = ""} }; |
ee1464a4e ide-pnp: use stru... |
21 22 |
static const struct ide_port_info ide_pnp_port_info = { .host_flags = IDE_HFLAG_NO_DMA, |
29e52cf79 ide: remove chips... |
23 |
.chipset = ide_generic, |
ee1464a4e ide-pnp: use stru... |
24 |
}; |
177b8fe9a IDE: Coding Style... |
25 |
static int idepnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id) |
1da177e4c Linux-2.6.12-rc2 |
26 |
{ |
48c3c1072 ide: add struct i... |
27 |
struct ide_host *host; |
134d4548a ide-pnp: manage I... |
28 |
unsigned long base, ctl; |
6f904d015 ide: add ide_host... |
29 |
int rc; |
9f36d3143 ide: remove hw_re... |
30 |
struct ide_hw hw, *hws[] = { &hw }; |
1da177e4c Linux-2.6.12-rc2 |
31 |
|
e193c3e14 ide-pnp: print dr... |
32 33 |
printk(KERN_INFO DRV_NAME ": generic PnP IDE interface "); |
1da177e4c Linux-2.6.12-rc2 |
34 35 |
if (!(pnp_port_valid(dev, 0) && pnp_port_valid(dev, 1) && pnp_irq_valid(dev, 0))) return -1; |
134d4548a ide-pnp: manage I... |
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
base = pnp_port_start(dev, 0); ctl = pnp_port_start(dev, 1); if (!request_region(base, 8, DRV_NAME)) { printk(KERN_ERR "%s: I/O resource 0x%lX-0x%lX not free. ", DRV_NAME, base, base + 7); return -EBUSY; } if (!request_region(ctl, 1, DRV_NAME)) { printk(KERN_ERR "%s: I/O resource 0x%lX not free. ", DRV_NAME, ctl); release_region(base, 8); return -EBUSY; } |
1da177e4c Linux-2.6.12-rc2 |
53 |
memset(&hw, 0, sizeof(hw)); |
134d4548a ide-pnp: manage I... |
54 |
ide_std_init_ports(&hw, base, ctl); |
1da177e4c Linux-2.6.12-rc2 |
55 |
hw.irq = pnp_irq(dev, 0); |
1da177e4c Linux-2.6.12-rc2 |
56 |
|
dca398305 ide: pass number ... |
57 |
rc = ide_host_add(&ide_pnp_port_info, hws, 1, &host); |
6f904d015 ide: add ide_host... |
58 59 |
if (rc) goto out; |
cbb010c18 ide: drop 'initia... |
60 |
|
6f904d015 ide: add ide_host... |
61 |
pnp_set_drvdata(dev, host); |
1da177e4c Linux-2.6.12-rc2 |
62 |
|
6f904d015 ide: add ide_host... |
63 64 |
return 0; out: |
134d4548a ide-pnp: manage I... |
65 66 |
release_region(ctl, 1); release_region(base, 8); |
6f904d015 ide: add ide_host... |
67 |
return rc; |
1da177e4c Linux-2.6.12-rc2 |
68 |
} |
177b8fe9a IDE: Coding Style... |
69 |
static void idepnp_remove(struct pnp_dev *dev) |
1da177e4c Linux-2.6.12-rc2 |
70 |
{ |
48c3c1072 ide: add struct i... |
71 |
struct ide_host *host = pnp_get_drvdata(dev); |
f82c2b171 ide: add 'init_de... |
72 |
|
48c3c1072 ide: add struct i... |
73 |
ide_host_remove(host); |
134d4548a ide-pnp: manage I... |
74 75 76 |
release_region(pnp_port_start(dev, 1), 1); release_region(pnp_port_start(dev, 0), 8); |
1da177e4c Linux-2.6.12-rc2 |
77 78 79 80 81 82 83 84 |
} static struct pnp_driver idepnp_driver = { .name = "ide", .id_table = idepnp_devices, .probe = idepnp_probe, .remove = idepnp_remove, }; |
6a5333092 PNP: ide/ide-pnp:... |
85 |
module_pnp_driver(idepnp_driver); |
a62ee6415 ide-pnp.c: add MO... |
86 |
MODULE_LICENSE("GPL"); |