From: Borislav Petkov <petkovbb@googlemail.com>
To: bzolnier@gmail.com
Cc: linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org,
Borislav Petkov <petkovbb@gmail.com>
Subject: [PATCH 07/10] ide-atapi: prepare ide-cd expiry handler
Date: Sun, 14 Sep 2008 13:35:55 +0200 [thread overview]
Message-ID: <1221392158-3848-8-git-send-email-petkovbb@gmail.com> (raw)
In-Reply-To: <1221392158-3848-1-git-send-email-petkovbb@gmail.com>
Push ide-cd expiry handler into the ide-cd header. Also, pass expiry
handler to ide_execute_command() in ide_issue_pc() for later.
There should be no functional change resulting from this patch.
Signed-off-by: Borislav Petkov <petkovbb@gmail.com>
---
drivers/ide/ide-atapi.c | 6 +++++-
drivers/ide/ide-cd.c | 32 --------------------------------
drivers/ide/ide-cd.h | 29 +++++++++++++++++++++++++++++
3 files changed, 34 insertions(+), 33 deletions(-)
diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c
index e1fa52d..480b9f3 100644
--- a/drivers/ide/ide-atapi.c
+++ b/drivers/ide/ide-atapi.c
@@ -7,6 +7,8 @@
#include <linux/ide.h>
#include <scsi/scsi.h>
+#include "ide-cd.h"
+
#ifdef DEBUG
#define debug_log(fmt, args...) \
printk(KERN_INFO "ide: " fmt, ## args)
@@ -600,8 +602,10 @@ ide_startstop_t ide_issue_pc(ide_drive_t *drive, unsigned int timeout,
if (drive->atapi_flags & IDE_AFLAG_DRQ_INTERRUPT) {
if (drive->dma)
drive->waiting_for_dma = 0;
+
ide_execute_command(drive, ATA_CMD_PACKET, ide_transfer_pc,
- timeout, NULL);
+ timeout, expiry);
+
return ide_started;
} else {
ide_execute_pkt_cmd(drive);
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index 6258c5f..29bd205 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -512,38 +512,6 @@ end_request:
return 1;
}
-static int cdrom_timer_expiry(ide_drive_t *drive)
-{
- struct request *rq = HWGROUP(drive)->rq;
- unsigned long wait = 0;
-
- ide_debug_log(IDE_DBG_RQ, "Call %s: rq->cmd[0]: 0x%x\n", __func__,
- rq->cmd[0]);
-
- /*
- * Some commands are *slow* and normally take a long time to complete.
- * Usually we can use the ATAPI "disconnect" to bypass this, but not all
- * commands/drives support that. Let ide_timer_expiry keep polling us
- * for these.
- */
- switch (rq->cmd[0]) {
- case GPCMD_BLANK:
- case GPCMD_FORMAT_UNIT:
- case GPCMD_RESERVE_RZONE_TRACK:
- case GPCMD_CLOSE_TRACK:
- case GPCMD_FLUSH_CACHE:
- wait = ATAPI_WAIT_PC;
- break;
- default:
- if (!(rq->cmd_flags & REQ_QUIET))
- printk(KERN_INFO PFX "cmd 0x%x timed out\n",
- rq->cmd[0]);
- wait = 0;
- break;
- }
- return wait;
-}
-
/*
* Set up the device registers for transferring a packet command on DEV,
* expecting to later transfer XFERLEN bytes. HANDLER is the routine
diff --git a/drivers/ide/ide-cd.h b/drivers/ide/ide-cd.h
index 5882b9a..69c456f 100644
--- a/drivers/ide/ide-cd.h
+++ b/drivers/ide/ide-cd.h
@@ -126,4 +126,33 @@ int ide_cdrom_reset(struct cdrom_device_info *cdi);
int ide_cdrom_audio_ioctl(struct cdrom_device_info *, unsigned int, void *);
int ide_cdrom_packet(struct cdrom_device_info *, struct packet_command *);
+static inline int cdrom_timer_expiry(ide_drive_t *drive)
+{
+ struct request *rq = drive->hwif->hwgroup->rq;
+ unsigned long wait = 0;
+
+ /*
+ * Some commands are *slow* and normally take a long time to complete.
+ * Usually we can use the ATAPI "disconnect" to bypass this, but not all
+ * commands/drives support that. Let ide_timer_expiry keep polling us
+ * for these.
+ */
+ switch (rq->cmd[0]) {
+ case GPCMD_BLANK:
+ case GPCMD_FORMAT_UNIT:
+ case GPCMD_RESERVE_RZONE_TRACK:
+ case GPCMD_CLOSE_TRACK:
+ case GPCMD_FLUSH_CACHE:
+ wait = ATAPI_WAIT_PC;
+ break;
+ default:
+ if (!(rq->cmd_flags & REQ_QUIET))
+ printk(KERN_INFO "ide-cd: cmd 0x%x timed out\n",
+ rq->cmd[0]);
+ wait = 0;
+ break;
+ }
+ return wait;
+}
+
#endif /* _IDE_CD_H */
--
1.5.5.1
WARNING: multiple messages have this Message-ID (diff)
From: Borislav Petkov <petkovbb@googlemail.com>
To: <bzolnier@gmail.com>
Cc: linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org,
Borislav Petkov <petkovbb@gmail.com>
Subject: [PATCH 07/10] ide-atapi: prepare ide-cd expiry handler
Date: Sun, 14 Sep 2008 13:35:55 +0200 [thread overview]
Message-ID: <1221392158-3848-8-git-send-email-petkovbb@gmail.com> (raw)
In-Reply-To: <1221392158-3848-1-git-send-email-petkovbb@gmail.com>
Push ide-cd expiry handler into the ide-cd header. Also, pass expiry
handler to ide_execute_command() in ide_issue_pc() for later.
There should be no functional change resulting from this patch.
Signed-off-by: Borislav Petkov <petkovbb@gmail.com>
---
drivers/ide/ide-atapi.c | 6 +++++-
drivers/ide/ide-cd.c | 32 --------------------------------
drivers/ide/ide-cd.h | 29 +++++++++++++++++++++++++++++
3 files changed, 34 insertions(+), 33 deletions(-)
diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c
index e1fa52d..480b9f3 100644
--- a/drivers/ide/ide-atapi.c
+++ b/drivers/ide/ide-atapi.c
@@ -7,6 +7,8 @@
#include <linux/ide.h>
#include <scsi/scsi.h>
+#include "ide-cd.h"
+
#ifdef DEBUG
#define debug_log(fmt, args...) \
printk(KERN_INFO "ide: " fmt, ## args)
@@ -600,8 +602,10 @@ ide_startstop_t ide_issue_pc(ide_drive_t *drive, unsigned int timeout,
if (drive->atapi_flags & IDE_AFLAG_DRQ_INTERRUPT) {
if (drive->dma)
drive->waiting_for_dma = 0;
+
ide_execute_command(drive, ATA_CMD_PACKET, ide_transfer_pc,
- timeout, NULL);
+ timeout, expiry);
+
return ide_started;
} else {
ide_execute_pkt_cmd(drive);
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index 6258c5f..29bd205 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -512,38 +512,6 @@ end_request:
return 1;
}
-static int cdrom_timer_expiry(ide_drive_t *drive)
-{
- struct request *rq = HWGROUP(drive)->rq;
- unsigned long wait = 0;
-
- ide_debug_log(IDE_DBG_RQ, "Call %s: rq->cmd[0]: 0x%x\n", __func__,
- rq->cmd[0]);
-
- /*
- * Some commands are *slow* and normally take a long time to complete.
- * Usually we can use the ATAPI "disconnect" to bypass this, but not all
- * commands/drives support that. Let ide_timer_expiry keep polling us
- * for these.
- */
- switch (rq->cmd[0]) {
- case GPCMD_BLANK:
- case GPCMD_FORMAT_UNIT:
- case GPCMD_RESERVE_RZONE_TRACK:
- case GPCMD_CLOSE_TRACK:
- case GPCMD_FLUSH_CACHE:
- wait = ATAPI_WAIT_PC;
- break;
- default:
- if (!(rq->cmd_flags & REQ_QUIET))
- printk(KERN_INFO PFX "cmd 0x%x timed out\n",
- rq->cmd[0]);
- wait = 0;
- break;
- }
- return wait;
-}
-
/*
* Set up the device registers for transferring a packet command on DEV,
* expecting to later transfer XFERLEN bytes. HANDLER is the routine
diff --git a/drivers/ide/ide-cd.h b/drivers/ide/ide-cd.h
index 5882b9a..69c456f 100644
--- a/drivers/ide/ide-cd.h
+++ b/drivers/ide/ide-cd.h
@@ -126,4 +126,33 @@ int ide_cdrom_reset(struct cdrom_device_info *cdi);
int ide_cdrom_audio_ioctl(struct cdrom_device_info *, unsigned int, void *);
int ide_cdrom_packet(struct cdrom_device_info *, struct packet_command *);
+static inline int cdrom_timer_expiry(ide_drive_t *drive)
+{
+ struct request *rq = drive->hwif->hwgroup->rq;
+ unsigned long wait = 0;
+
+ /*
+ * Some commands are *slow* and normally take a long time to complete.
+ * Usually we can use the ATAPI "disconnect" to bypass this, but not all
+ * commands/drives support that. Let ide_timer_expiry keep polling us
+ * for these.
+ */
+ switch (rq->cmd[0]) {
+ case GPCMD_BLANK:
+ case GPCMD_FORMAT_UNIT:
+ case GPCMD_RESERVE_RZONE_TRACK:
+ case GPCMD_CLOSE_TRACK:
+ case GPCMD_FLUSH_CACHE:
+ wait = ATAPI_WAIT_PC;
+ break;
+ default:
+ if (!(rq->cmd_flags & REQ_QUIET))
+ printk(KERN_INFO "ide-cd: cmd 0x%x timed out\n",
+ rq->cmd[0]);
+ wait = 0;
+ break;
+ }
+ return wait;
+}
+
#endif /* _IDE_CD_H */
--
1.5.5.1
next prev parent reply other threads:[~2008-09-14 11:36 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-14 11:35 [PATCH 00/10] ide-cd: use generic ide_issue_pc Borislav Petkov
2008-09-14 11:35 ` Borislav Petkov
2008-09-14 11:35 ` [PATCH 01/10] ide: add ide_drive_t.dma flag Borislav Petkov
2008-09-14 11:35 ` Borislav Petkov
2008-09-15 17:51 ` Bartlomiej Zolnierkiewicz
2008-09-14 11:35 ` [PATCH 02/10] ide-cd: move cdrom_info.dma to ide_drive_t.dma Borislav Petkov
2008-09-14 11:35 ` Borislav Petkov
2008-09-15 17:54 ` Bartlomiej Zolnierkiewicz
2008-09-14 11:35 ` [PATCH 03/10] ide-atapi: teach ide atapi about drive->waiting_for_dma Borislav Petkov
2008-09-14 11:35 ` Borislav Petkov
2008-09-15 18:15 ` Bartlomiej Zolnierkiewicz
2008-09-17 10:05 ` Borislav Petkov
2008-09-17 16:32 ` Bartlomiej Zolnierkiewicz
2008-09-14 11:35 ` [PATCH 04/10] ide-atapi: assign taskfile flags per device type Borislav Petkov
2008-09-14 11:35 ` Borislav Petkov
2008-09-15 17:54 ` Bartlomiej Zolnierkiewicz
2008-09-14 11:35 ` [PATCH 05/10] ide-atapi: accomodate transfer length to ide-cd Borislav Petkov
2008-09-14 11:35 ` Borislav Petkov
2008-09-15 18:15 ` Bartlomiej Zolnierkiewicz
2008-09-14 11:35 ` [PATCH 06/10] ide-atapi: add a DEV_IS_IDECD macro Borislav Petkov
2008-09-14 11:35 ` Borislav Petkov
2008-09-15 18:19 ` Bartlomiej Zolnierkiewicz
2008-09-14 11:35 ` Borislav Petkov [this message]
2008-09-14 11:35 ` [PATCH 07/10] ide-atapi: prepare ide-cd expiry handler Borislav Petkov
2008-09-15 18:25 ` Bartlomiej Zolnierkiewicz
2008-09-14 11:35 ` [PATCH 08/10] ide-atapi: accomodate to ide-cd-specific handlers Borislav Petkov
2008-09-14 11:35 ` Borislav Petkov
2008-09-14 11:35 ` [PATCH 09/10] ide-atapi: protect ide_atapi_pc pointer from ide-cd code path Borislav Petkov
2008-09-14 11:35 ` Borislav Petkov
2008-09-14 11:35 ` [PATCH 10/10] ide-cd: use generic ide_issue_pc Borislav Petkov
2008-09-14 11:35 ` Borislav Petkov
2008-09-15 18:30 ` [PATCH 00/10] " Bartlomiej Zolnierkiewicz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1221392158-3848-8-git-send-email-petkovbb@gmail.com \
--to=petkovbb@googlemail.com \
--cc=bzolnier@gmail.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=petkovbb@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.