summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorSven Schnelle <svens@linux.ibm.com>2022-11-28 21:42:28 +0300
committerHeiko Carstens <hca@linux.ibm.com>2023-01-09 16:33:59 +0300
commitf08e31558a98383f185dcff0a8d77f1963150156 (patch)
tree9a309f599415ea566888b13e79c8ccc4c279812d /drivers
parente22de7d7910ab9490b191da5fac0592214b340d5 (diff)
downloadlinux-f08e31558a98383f185dcff0a8d77f1963150156.tar.xz
s390/raw3270: add raw3270_start_request() helper
There are a few places (and there would be more with the following commits) like this: raw3270_request_reset(cp->kreset); raw3270_request_set_cmd(cp->kreset, TC_WRITE); raw3270_request_add_data(cp->kreset, &kreset_data, 1); raw3270_start(&cp->view, cp->kreset); i.e reset a request, setting the command, adding payload, and starting the request. Add a helper raw3270_start_request() which takes a command and the payload as argument and calls the approppriate functions. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Tested-by: Niklas Schnelle <schnelle@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/s390/char/con3270.c5
-rw-r--r--drivers/s390/char/raw3270.c14
-rw-r--r--drivers/s390/char/raw3270.h2
3 files changed, 17 insertions, 4 deletions
diff --git a/drivers/s390/char/con3270.c b/drivers/s390/char/con3270.c
index 0dea178c0f56..88e96957cbb2 100644
--- a/drivers/s390/char/con3270.c
+++ b/drivers/s390/char/con3270.c
@@ -591,10 +591,7 @@ static void tty3270_read_tasklet(unsigned long data)
spin_unlock_irq(&tp->view.lock);
/* Start keyboard reset command. */
- raw3270_request_reset(tp->kreset);
- raw3270_request_set_cmd(tp->kreset, TC_WRITE);
- raw3270_request_add_data(tp->kreset, &kreset_data, 1);
- raw3270_start(&tp->view, tp->kreset);
+ raw3270_start_request(&tp->view, tp->kreset, TC_WRITE, &kreset_data, 1);
while (len-- > 0)
kbd_keycode(tp->kbd, *input++);
diff --git a/drivers/s390/char/raw3270.c b/drivers/s390/char/raw3270.c
index f1a817cfe624..68a6c7390c4c 100644
--- a/drivers/s390/char/raw3270.c
+++ b/drivers/s390/char/raw3270.c
@@ -264,6 +264,19 @@ int raw3270_start(struct raw3270_view *view, struct raw3270_request *rq)
return rc;
}
+int raw3270_start_request(struct raw3270_view *view, struct raw3270_request *rq,
+ int cmd, void *data, size_t len)
+{
+ int rc;
+
+ raw3270_request_reset(rq);
+ raw3270_request_set_cmd(rq, cmd);
+ rc = raw3270_request_add_data(rq, data, len);
+ if (rc)
+ return rc;
+ return raw3270_start(view, rq);
+}
+
int raw3270_start_locked(struct raw3270_view *view, struct raw3270_request *rq)
{
struct raw3270 *rp;
@@ -1272,6 +1285,7 @@ EXPORT_SYMBOL(raw3270_find_view);
EXPORT_SYMBOL(raw3270_activate_view);
EXPORT_SYMBOL(raw3270_deactivate_view);
EXPORT_SYMBOL(raw3270_start);
+EXPORT_SYMBOL(raw3270_start_request);
EXPORT_SYMBOL(raw3270_start_locked);
EXPORT_SYMBOL(raw3270_start_irq);
EXPORT_SYMBOL(raw3270_reset);
diff --git a/drivers/s390/char/raw3270.h b/drivers/s390/char/raw3270.h
index 7e0c88e9c3c2..c8e7a596051f 100644
--- a/drivers/s390/char/raw3270.h
+++ b/drivers/s390/char/raw3270.h
@@ -180,6 +180,8 @@ int raw3270_start_irq(struct raw3270_view *, struct raw3270_request *);
int raw3270_reset(struct raw3270_view *);
struct raw3270_view *raw3270_view(struct raw3270_view *);
int raw3270_view_active(struct raw3270_view *);
+int raw3270_start_request(struct raw3270_view *view, struct raw3270_request *rq,
+ int cmd, void *data, size_t len);
/* Reference count inliner for view structures. */
static inline void