Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
d27d703a
Commit
d27d703a
authored
Feb 19, 2003
by
Adam Belay
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
IDE PnP Update
Updates the IDE PnP driver to the new PnP API.
parent
05140d26
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
43 additions
and
94 deletions
+43
-94
drivers/ide/Kconfig
drivers/ide/Kconfig
+6
-7
drivers/ide/Makefile
drivers/ide/Makefile
+1
-1
drivers/ide/ide-pnp.c
drivers/ide/ide-pnp.c
+30
-82
drivers/ide/ide.c
drivers/ide/ide.c
+5
-4
include/linux/ide.h
include/linux/ide.h
+1
-0
No files found.
drivers/ide/Kconfig
View file @
d27d703a
...
...
@@ -239,14 +239,13 @@ config BLK_DEV_CMD640_ENHANCED
and your BIOS does not already do this for you, then say Y here.
Otherwise say N.
config BLK_DEV_I
SA
PNP
bool "
ISA-
PNP EIDE support"
depends on BLK_DEV_IDE &&
ISA
PNP
config BLK_DEV_I
DE
PNP
bool "PNP EIDE support"
depends on BLK_DEV_IDE && PNP
help
If you have an ISA EIDE card that is PnP (Plug and Play) and
requires setup first before scanning for devices, say Y here.
If unsure, say N.
If you have a PnP (Plug and Play) compatible EIDE card and
would like the kernel to automatically detect and activate
it, say Y here.
config BLK_DEV_IDEPCI
bool "PCI IDE chipset support" if PCI
...
...
drivers/ide/Makefile
View file @
d27d703a
...
...
@@ -21,7 +21,7 @@ obj-$(CONFIG_BLK_DEV_IDEFLOPPY) += ide-floppy.o
obj-$(CONFIG_BLK_DEV_IDEPCI)
+=
setup-pci.o
obj-$(CONFIG_BLK_DEV_IDEDMA_PCI)
+=
ide-dma.o
obj-$(CONFIG_BLK_DEV_IDE_TCQ)
+=
ide-tcq.o
obj-$(CONFIG_BLK_DEV_I
SA
PNP)
+=
ide-pnp.o
obj-$(CONFIG_BLK_DEV_I
DE
PNP)
+=
ide-pnp.o
ifeq
($(CONFIG_BLK_DEV_IDE),y)
obj-$(CONFIG_PROC_FS)
+=
ide-proc.o
...
...
drivers/ide/ide-pnp.c
View file @
d27d703a
...
...
@@ -19,9 +19,7 @@
#include <linux/ide.h>
#include <linux/init.h>
#include <linux/isapnp.h>
#define DEV_NAME(dev) (dev->name)
#include <linux/pnp.h>
#define GENERIC_HD_DATA 0
#define GENERIC_HD_ERROR 1
...
...
@@ -32,31 +30,27 @@
#define GENERIC_HD_SELECT 6
#define GENERIC_HD_STATUS 7
static
int
generic_ide_offsets
[
IDE_NR_PORTS
]
__initdata
=
{
static
int
generic_ide_offsets
[
IDE_NR_PORTS
]
=
{
GENERIC_HD_DATA
,
GENERIC_HD_ERROR
,
GENERIC_HD_NSECTOR
,
GENERIC_HD_SECTOR
,
GENERIC_HD_LCYL
,
GENERIC_HD_HCYL
,
GENERIC_HD_SELECT
,
GENERIC_HD_STATUS
,
-
1
,
-
1
};
/* ISA PnP device table entry */
struct
pnp_dev_t
{
unsigned
short
card_vendor
,
card_device
,
vendor
,
device
;
int
(
*
init_fn
)(
struct
pnp_dev
*
dev
,
int
enable
);
/* Add your devices here :)) */
struct
pnp_device_id
idepnp_devices
[]
=
{
/* Generic ESDI/IDE/ATA compatible hard disk controller */
{.
id
=
"PNP0600"
,
.
driver_data
=
0
},
{.
id
=
""
}
};
/* Generic initialisation function for ISA PnP IDE interface */
static
int
__init
pnpide_generic_init
(
struct
pnp_dev
*
dev
,
int
enable
)
static
int
idepnp_probe
(
struct
pnp_dev
*
dev
,
const
struct
pnp_device_id
*
dev_id
)
{
hw_regs_t
hw
;
ide_hwif_t
*
hwif
;
int
index
;
if
(
!
enable
)
return
0
;
if
(
!
(
pnp_port_valid
(
dev
,
0
)
&&
pnp_port_valid
(
dev
,
1
)
&&
pnp_irq_valid
(
dev
,
0
)))
return
1
;
return
-
1
;
ide_setup_ports
(
&
hw
,
(
unsigned
long
)
pnp_port_start
(
dev
,
0
),
generic_ide_offsets
,
...
...
@@ -68,82 +62,36 @@ static int __init pnpide_generic_init(struct pnp_dev *dev, int enable)
index
=
ide_register_hw
(
&
hw
,
&
hwif
);
if
(
index
!=
-
1
)
{
printk
(
KERN_INFO
"ide%d: %s IDE interface
\n
"
,
index
,
DEV_NAME
(
dev
));
printk
(
KERN_INFO
"ide%d: generic PnP IDE interface
\n
"
,
index
);
pnp_set_drvdata
(
dev
,
hwif
);
hwif
->
pnp_dev
=
dev
;
return
0
;
}
return
1
;
return
-
1
;
}
/* Add your devices here :)) */
struct
pnp_dev_t
idepnp_devices
[]
__initdata
=
{
/* Generic ESDI/IDE/ATA compatible hard disk controller */
{
ISAPNP_ANY_ID
,
ISAPNP_ANY_ID
,
ISAPNP_VENDOR
(
'P'
,
'N'
,
'P'
),
ISAPNP_DEVICE
(
0x0600
),
pnpide_generic_init
},
{
0
}
}
;
static
void
idepnp_remove
(
struct
pnp_dev
*
dev
)
{
ide_hwif_t
*
hwif
=
pnp_get_drvdata
(
dev
);
if
(
hwif
)
{
ide_unregister
(
hwif
->
index
);
}
else
printk
(
KERN_ERR
"idepnp: Unable to remove device, please report.
\n
"
);
}
#define NR_PNP_DEVICES 8
struct
pnp_dev_inst
{
struct
pnp_dev
*
dev
;
struct
pnp_dev_t
*
dev_type
;
static
struct
pnp_driver
idepnp_driver
=
{
.
name
=
"ide"
,
.
id_table
=
idepnp_devices
,
.
probe
=
idepnp_probe
,
.
remove
=
idepnp_remove
,
};
static
struct
pnp_dev_inst
devices
[
NR_PNP_DEVICES
];
static
int
pnp_ide_dev_idx
=
0
;
/*
* Probe for ISA PnP IDE interfaces.
*/
void
__init
pnpide_init
(
int
enable
)
void
pnpide_init
(
int
enable
)
{
struct
pnp_dev
*
dev
=
NULL
;
struct
pnp_dev_t
*
dev_type
;
if
(
!
isapnp_present
())
return
;
/* Module unload, deactivate all registered devices. */
if
(
!
enable
)
{
int
i
;
for
(
i
=
0
;
i
<
pnp_ide_dev_idx
;
i
++
)
{
dev
=
devices
[
i
].
dev
;
devices
[
i
].
dev_type
->
init_fn
(
dev
,
0
);
pnp_device_detach
(
dev
);
}
return
;
}
for
(
dev_type
=
idepnp_devices
;
dev_type
->
vendor
;
dev_type
++
)
{
while
((
dev
=
pnp_find_dev
(
NULL
,
dev_type
->
vendor
,
dev_type
->
device
,
dev
)))
{
if
(
pnp_device_attach
(
dev
)
<
0
)
continue
;
if
(
pnp_activate_dev
(
dev
,
NULL
)
<
0
)
{
printk
(
KERN_ERR
"ide: %s activate failed
\n
"
,
DEV_NAME
(
dev
));
continue
;
}
/* Call device initialization function */
if
(
dev_type
->
init_fn
(
dev
,
1
))
{
pnp_device_detach
(
dev
);
}
else
{
#ifdef MODULE
/*
* Register device in the array to
* deactivate it on a module unload.
*/
if
(
pnp_ide_dev_idx
>=
NR_PNP_DEVICES
)
return
;
devices
[
pnp_ide_dev_idx
].
dev
=
dev
;
devices
[
pnp_ide_dev_idx
].
dev_type
=
dev_type
;
pnp_ide_dev_idx
++
;
#endif
}
}
}
if
(
enable
)
pnp_register_driver
(
&
idepnp_driver
);
else
pnp_unregister_driver
(
&
idepnp_driver
);
}
drivers/ide/ide.c
View file @
d27d703a
...
...
@@ -818,6 +818,7 @@ void ide_unregister (unsigned int index)
EXPORT_SYMBOL
(
ide_unregister
);
/**
* ide_setup_ports - set up IDE interface ports
* @hw: register descriptions
...
...
@@ -2145,12 +2146,12 @@ static void __init probe_for_hwifs (void)
buddha_init
();
}
#endif
/* CONFIG_BLK_DEV_BUDDHA */
#if defined(CONFIG_BLK_DEV_I
SAPNP) && defined(CONFIG_ISA
PNP)
#if defined(CONFIG_BLK_DEV_I
DEPNP) && defined(CONFIG_
PNP)
{
extern
void
pnpide_init
(
int
enable
);
pnpide_init
(
1
);
}
#endif
/* CONFIG_BLK_DEV_I
SA
PNP */
#endif
/* CONFIG_BLK_DEV_I
DE
PNP */
}
void
__init
ide_init_builtin_drivers
(
void
)
...
...
@@ -2321,9 +2322,9 @@ int ide_unregister_subdriver (ide_drive_t *drive)
spin_unlock_irqrestore
(
&
ide_lock
,
flags
);
return
1
;
}
#if defined(CONFIG_BLK_DEV_I
SAPNP) && defined(CONFIG_ISA
PNP) && defined(MODULE)
#if defined(CONFIG_BLK_DEV_I
DEPNP) && defined(CONFIG_
PNP) && defined(MODULE)
pnpide_init
(
0
);
#endif
/* CONFIG_BLK_DEV_I
SA
PNP */
#endif
/* CONFIG_BLK_DEV_I
DE
PNP */
#ifdef CONFIG_PROC_FS
ide_remove_proc_entries
(
drive
->
proc
,
DRIVER
(
drive
)
->
proc
);
ide_remove_proc_entries
(
drive
->
proc
,
generic_subdriver_entries
);
...
...
include/linux/ide.h
View file @
d27d703a
...
...
@@ -1705,6 +1705,7 @@ static inline void ide_release_dma(ide_hwif_t *drive) {;}
#endif
extern
void
hwif_unregister
(
ide_hwif_t
*
);
extern
void
ide_unregister
(
unsigned
int
index
);
extern
void
export_ide_init_queue
(
ide_drive_t
*
);
extern
u8
export_probe_for_drive
(
ide_drive_t
*
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment