From: Sven Schnelle Date: Mon, 28 Nov 2022 18:42:28 +0000 (+0100) Subject: s390/raw3270: add raw3270_start_request() helper X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=f08e31558a98383f185dcff0a8d77f1963150156;p=linux.git 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 Acked-by: Heiko Carstens Tested-by: Niklas Schnelle Signed-off-by: Heiko Carstens --- diff --git a/drivers/s390/char/con3270.c b/drivers/s390/char/con3270.c index 0dea178c0f56c..88e96957cbb28 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 f1a817cfe624e..68a6c7390c4c2 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 7e0c88e9c3c21..c8e7a596051f6 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