static int pd_release(struct inode *inode, struct file *file);
static int pd_revalidate(struct gendisk *p);
static int pd_detect(void);
-static void do_pd_read(void);
+static void do_pd_io(void);
+static void do_pd_io_start(void);
static void do_pd_read_start(void);
-static void do_pd_write(void);
static void do_pd_write_start(void);
static void do_pd_read_drq(void);
static void do_pd_write_done(void);
pd_buf = pd_req->buffer;
pd_retries = 0;
- if (pd_cmd == READ)
- pi_do_claimed(pd_current->pi, do_pd_read);
- else if (pd_cmd == WRITE)
- pi_do_claimed(pd_current->pi, do_pd_write);
+ if (pd_cmd == READ || pd_cmd == WRITE)
+ pi_do_claimed(pd_current->pi, do_pd_io);
else {
end_request(pd_req, 0);
goto repeat;
spin_unlock_irqrestore(&pd_lock, saved_flags);
}
-static void do_pd_read(void)
+static void do_pd_io(void)
{
- ps_continuation = do_pd_read_start;
+ ps_continuation = do_pd_io_start;
ps_set_intr();
}
+static void do_pd_io_start(void)
+{
+ if (pd_cmd == READ) {
+ do_pd_read_start();
+ } else {
+ do_pd_write_start();
+ }
+}
+
static void do_pd_read_start(void)
{
pi_connect(pd_current->pi);
next_request(1);
}
-static void do_pd_write(void)
-{
- ps_continuation = do_pd_write_start;
- ps_set_intr();
-}
-
static void do_pd_write_start(void)
{
pi_connect(pd_current->pi);