[ide] kill setup_driver_defaults()

* move default_do_request() to ide-default.c
* fix drivers to set ide_driver_t->{do_request,end_request,error,abort}
* kill setup_driver_defaults()
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent 0a04d0c2
......@@ -3279,6 +3279,9 @@ static ide_driver_t ide_cdrom_driver = {
.supports_dsc_overlap = 1,
.cleanup = ide_cdrom_cleanup,
.do_request = ide_do_rw_cdrom,
.end_request = ide_end_request,
.error = __ide_error,
.abort = __ide_abort,
.proc = idecd_proc,
.attach = ide_cdrom_attach,
.drives = LIST_HEAD_INIT(ide_cdrom_driver.drives),
......
......@@ -38,6 +38,12 @@
static int idedefault_attach(ide_drive_t *drive);
static ide_startstop_t idedefault_do_request(ide_drive_t *drive, struct request *rq, sector_t block)
{
ide_end_request(drive, 0, 0);
return ide_stopped;
}
/*
* IDE subdriver functions, registered with ide.c
*/
......@@ -47,6 +53,10 @@ ide_driver_t idedefault_driver = {
.version = IDEDEFAULT_VERSION,
.attach = idedefault_attach,
.cleanup = ide_unregister_subdriver,
.do_request = idedefault_do_request,
.end_request = ide_end_request,
.error = __ide_error,
.abort = __ide_abort,
.drives = LIST_HEAD_INIT(idedefault_driver.drives)
};
......
......@@ -1046,6 +1046,9 @@ static ide_driver_t idedisk_driver = {
.supports_dsc_overlap = 0,
.cleanup = idedisk_cleanup,
.do_request = ide_do_rw_disk,
.end_request = ide_end_request,
.error = __ide_error,
.abort = __ide_abort,
.proc = idedisk_proc,
.attach = idedisk_attach,
.drives = LIST_HEAD_INIT(idedisk_driver.drives),
......
......@@ -1884,6 +1884,8 @@ static ide_driver_t idefloppy_driver = {
.cleanup = idefloppy_cleanup,
.do_request = idefloppy_do_request,
.end_request = idefloppy_do_end_request,
.error = __ide_error,
.abort = __ide_abort,
.proc = idefloppy_proc,
.attach = idefloppy_attach,
.drives = LIST_HEAD_INIT(idefloppy_driver.drives),
......
......@@ -493,6 +493,8 @@ __ide_error(ide_drive_t *drive, struct request *rq, u8 stat, u8 err)
return ide_atapi_error(drive, rq, stat, err);
}
EXPORT_SYMBOL_GPL(__ide_error);
/**
* ide_error - handle an error on the IDE
* @drive: drive the error occurred on
......@@ -537,6 +539,8 @@ ide_startstop_t __ide_abort(ide_drive_t *drive, struct request *rq)
return ide_stopped;
}
EXPORT_SYMBOL_GPL(__ide_abort);
/**
* ide_abort - abort pending IDE operatins
* @drive: drive the error occurred on
......
......@@ -4693,6 +4693,8 @@ static ide_driver_t idetape_driver = {
.cleanup = idetape_cleanup,
.do_request = idetape_do_request,
.end_request = idetape_end_request,
.error = __ide_error,
.abort = __ide_abort,
.proc = idetape_proc,
.attach = idetape_attach,
.drives = LIST_HEAD_INIT(idetape_driver.drives),
......
......@@ -197,7 +197,6 @@ ide_hwif_t ide_hwifs[MAX_HWIFS]; /* master data repository */
EXPORT_SYMBOL(ide_hwifs);
extern ide_driver_t idedefault_driver;
static void setup_driver_defaults(ide_driver_t *driver);
/*
* Do not even *think* about calling this!
......@@ -301,8 +300,6 @@ static void __init init_ide_data (void)
return; /* already initialized */
magic_cookie = 0;
setup_driver_defaults(&idedefault_driver);
/* Initialise all interface structures */
for (index = 0; index < MAX_HWIFS; ++index) {
hwif = &ide_hwifs[index];
......@@ -2020,38 +2017,6 @@ static void __init probe_for_hwifs (void)
#endif
}
static ide_startstop_t default_do_request (ide_drive_t *drive, struct request *rq, sector_t block)
{
ide_end_request(drive, 0, 0);
return ide_stopped;
}
static int default_end_request (ide_drive_t *drive, int uptodate, int nr_sects)
{
return ide_end_request(drive, uptodate, nr_sects);
}
static ide_startstop_t
default_error(ide_drive_t *drive, struct request *rq, u8 stat, u8 err)
{
return __ide_error(drive, rq, stat, err);
}
static ide_startstop_t default_abort(ide_drive_t *drive, struct request *rq)
{
return __ide_abort(drive, rq);
}
static void setup_driver_defaults (ide_driver_t *d)
{
BUG_ON(d->attach == NULL || d->cleanup == NULL);
if (d->do_request == NULL) d->do_request = default_do_request;
if (d->end_request == NULL) d->end_request = default_end_request;
if (d->error == NULL) d->error = default_error;
if (d->abort == NULL) d->abort = default_abort;
}
int ide_register_subdriver(ide_drive_t *drive, ide_driver_t *driver)
{
unsigned long flags;
......@@ -2150,8 +2115,6 @@ int ide_register_driver(ide_driver_t *driver)
struct list_head *list_loop;
struct list_head *tmp_storage;
setup_driver_defaults(driver);
spin_lock(&drivers_lock);
list_add(&driver->drivers, &drivers);
spin_unlock(&drivers_lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment