From patchwork Wed Feb 1 07:47:31 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrzej Hajda X-Patchwork-Id: 9549017 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A37C460425 for ; Wed, 1 Feb 2017 07:48:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 94DBB28338 for ; Wed, 1 Feb 2017 07:48:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8956D28375; Wed, 1 Feb 2017 07:48:23 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 4CB0028338 for ; Wed, 1 Feb 2017 07:48:23 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id D1E6B6E5F1; Wed, 1 Feb 2017 07:48:00 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by gabe.freedesktop.org (Postfix) with ESMTPS id 332B96E528 for ; Wed, 1 Feb 2017 07:47:58 +0000 (UTC) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OKO00A1UQZT8P60@mailout1.w1.samsung.com> for dri-devel@lists.freedesktop.org; Wed, 01 Feb 2017 07:47:55 +0000 (GMT) Received: from eusmges3.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170201074755eucas1p2de9b7ddcb13c71a8141154cbdf31ee4b~fGkKZw_B81806718067eucas1p2Y; Wed, 1 Feb 2017 07:47:55 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3.samsung.com (EUCPMTA) with SMTP id A3.0D.09557.AA291985; Wed, 1 Feb 2017 07:47:55 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170201074754eucas1p1504fbebcc6700fba653bf2fddb37707c~fGkJpiCX70704907049eucas1p13; Wed, 1 Feb 2017 07:47:54 +0000 (GMT) X-AuditID: cbfec7f2-f790f6d000002555-59-589192aa72fb Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id F2.95.06687.FE291985; Wed, 1 Feb 2017 07:49:03 +0000 (GMT) Received: from AMDC2768.DIGITAL.local ([106.120.43.17]) by eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OKO00GROQZTN370@eusync1.samsung.com>; Wed, 01 Feb 2017 07:47:54 +0000 (GMT) From: Andrzej Hajda To: Archit Taneja , dri-devel@lists.freedesktop.org Subject: [PATCH v3 04/25] drm/bridge/sii8620: add continuations to messages Date: Wed, 01 Feb 2017 08:47:31 +0100 Message-id: <1485935272-17337-5-git-send-email-a.hajda@samsung.com> X-Mailer: git-send-email 2.7.4 In-reply-to: <1485935272-17337-1-git-send-email-a.hajda@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprKIsWRmVeSWpSXmKPExsWy7djP87qrJ02MMPhfY9HU8ZbV4srX92wO TB6X+3qZPO53H2cKYIrisklJzcksSy3St0vgyvg+ZR5bwTr+ih2b57I3MB7j6WLk4JAQMJH4 8iGji5ETyBSTuHBvPVsXIxeHkMBSRomTx2exQDifGSU2dX1hhagykTh75y4TRGIZo0RrWztU 1X9Gia7G3WBVbAKaEn8332QDsUUEvCXmrO5jBFknDGS/XCUDEmYRUJWY3HmQGcTmFXCW+HTw BhvEAjmJm+c6weKcAi4SzxfOAZsvIbCGTeLUlimMEGfLSmw6wAxR7yKx6OB2JghbWOLV8S3s ELaMRGfHQSaI3m5GiU/9J9ghnCmMEv8+zIDqtpY4fPwi2NHMAnwSk7ZNZ4ZYwCvR0SYEUeIh 0fhnJdRQR4ntDRuZIR6ezihx6NF3tgmM0gsYGVYxiqSWFuempxYb6xUn5haX5qXrJefnbmIE Rtbpf8c/7WD8esLqEKMAB6MSD++H0xMihFgTy4orcw8xSnAwK4nwzuifGCHEm5JYWZValB9f VJqTWnyIUZqDRUmcd8+CK+FCAumJJanZqakFqUUwWSYOTqkGRu/NlxLmO3rLlq2cZ9mgwdCw 8/YKI68D0y0q95+pf+Cb3SvvdSf6dfCk5As7LPwnW3XcVnsmwX3YJ7LXuNnvUETArSLZI5s/ HtXTaI4R3P/o7QVp42sZQptWr01x0P5/fHpjt5Yml4TKOz7b2Qc5tZVM7lZ+3W8periNc6en ufXrP9GHP323VWIpzkg01GIuKk4EAIMX7DuoAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrKLMWRmVeSWpSXmKPExsVy+t/xy7rvJ02MMPj7UsiiqeMtq8WVr+/Z HJg8Lvf1Mnnc7z7OFMAU5WaTkZqYklqkkJqXnJ+SmZduqxQa4qZroaSQl5ibaqsUoesbEqSk UJaYUwrkGRmgAQfnAPdgJX27BLeM71PmsRWs46/YsXkuewPjMZ4uRk4OCQETibN37jJB2GIS F+6tZ+ti5OIQEljCKLHxcCMLhNPIJLG9ZzYjSBWbgKbE38032UBsEQFviTmr+4DiHBzCQPbL VTIgYRYBVYnJnQeZQWxeAWeJTwdvsEEskJO4ea4TLM4p4CLxfOEcFhBbCKjm291Z7BMYeRYw MqxiFEktLc5Nzy021CtOzC0uzUvXS87P3cQIDLJtx35u3sF4aWPwIUYBDkYlHt4PpydECLEm lhVX5h5ilOBgVhLhndE/MUKINyWxsiq1KD++qDQntfgQoynQUROZpUST84ERkFcSb2hiaG5p aGRsYWFuZKQkzlvy4Uq4kEB6YklqdmpqQWoRTB8TB6dUA2P1/ah/5evjHtVcOGOU9PbMjEnt t/6pix96VbnE2OdKZaKZeK1/0US+D8sKvU5+Sa16kb/w/7UbnKy38l8ucps9TV7tnGPTzLdB G1/PaN1ooPWx9A37sUST5+3P9Q85Bd8OnGVVcFs2z7DTNuzU20Ox/yee22oZuedR8vryY6ym wXun37ssqZSvxFKckWioxVxUnAgAPLH/hEgCAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170201074754eucas1p1504fbebcc6700fba653bf2fddb37707c X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?UTF-8?B?QW5kcnplaiBIYWpkYRtTUlBPTC1LZXJuZWwgKFRQKRvsgrw=?= =?UTF-8?B?7ISx7KCE7J6QG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Global-Sender: =?UTF-8?B?QW5kcnplaiBIYWpkYRtTUlBPTC1LZXJuZWwgKFRQKRtTYW1z?= =?UTF-8?B?dW5nIEVsZWN0cm9uaWNzG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDAyQ0QwMjczOTI=?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170201074754eucas1p1504fbebcc6700fba653bf2fddb37707c X-RootMTR: 20170201074754eucas1p1504fbebcc6700fba653bf2fddb37707c References: <1485935272-17337-1-git-send-email-a.hajda@samsung.com> X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP Due to asynchronous nature of MHL flow of execution is dispersed. Logical continuation of some actions happens after response of peer, i.e in interrupt handler. To simplify coding continuation mechanism has been added - it is now possible to provide continuation callback, which will be called after peer responds to given action. Signed-off-by: Andrzej Hajda --- drivers/gpu/drm/bridge/sil-sii8620.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/gpu/drm/bridge/sil-sii8620.c b/drivers/gpu/drm/bridge/sil-sii8620.c index 75867c0..cde0074 100644 --- a/drivers/gpu/drm/bridge/sil-sii8620.c +++ b/drivers/gpu/drm/bridge/sil-sii8620.c @@ -78,12 +78,15 @@ struct sii8620_mt_msg; typedef void (*sii8620_mt_msg_cb)(struct sii8620 *ctx, struct sii8620_mt_msg *msg); +typedef void (*sii8620_cb)(struct sii8620 *ctx, int ret); + struct sii8620_mt_msg { struct list_head node; u8 reg[4]; u8 ret; sii8620_mt_msg_cb send; sii8620_mt_msg_cb recv; + sii8620_cb continuation; }; static const u8 sii8620_i2c_page[] = { @@ -258,6 +261,8 @@ static void sii8620_mt_work(struct sii8620 *ctx) node); if (msg->recv) msg->recv(ctx, msg); + if (msg->continuation) + msg->continuation(ctx, msg->ret); list_del(&msg->node); kfree(msg); } @@ -310,6 +315,21 @@ static struct sii8620_mt_msg *sii8620_mt_msg_new(struct sii8620 *ctx) return msg; } +static void sii8620_mt_set_cont(struct sii8620 *ctx, sii8620_cb cont) +{ + struct sii8620_mt_msg *msg; + + if (ctx->error) + return; + + if (list_empty(&ctx->mt_queue)) { + ctx->error = -EINVAL; + return; + } + msg = list_last_entry(&ctx->mt_queue, struct sii8620_mt_msg, node); + msg->continuation = cont; +} + static void sii8620_mt_msc_cmd(struct sii8620 *ctx, u8 cmd, u8 arg1, u8 arg2) { struct sii8620_mt_msg *msg = sii8620_mt_msg_new(ctx);