From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BE233C04AB3 for ; Mon, 27 May 2019 20:15:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 984FB2133F for ; Mon, 27 May 2019 20:15:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="j1RhxcrH" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727422AbfE0UPP (ORCPT ); Mon, 27 May 2019 16:15:15 -0400 Received: from mail-wr1-f65.google.com ([209.85.221.65]:34061 "EHLO mail-wr1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726839AbfE0UPO (ORCPT ); Mon, 27 May 2019 16:15:14 -0400 Received: by mail-wr1-f65.google.com with SMTP id f8so17903341wrt.1; Mon, 27 May 2019 13:15:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/RSImjt1MT5jNgXT02dp2eGPf34Z2Wdqx9gtfcpPm7g=; b=j1RhxcrH/N+9Ow/PCDAcz1k+O+wxeOBPcXR0m/HOh5BSUxpGZOhHgQ9Ni4wXoaoTik XhAPQIOLP0kFGjls25OEGiqpJk6GotNQjjAfHQMURNtZRPHzkiLq23DTzvyoKV5xWLyG PeGk1Cw/Au+3HHuOUUOERXKwAerjPvSm8NxLBS0mE42oJK87mKuff+TOf1sUUA58ofNc ozTjV1ySjvc9BXBVe8SDlRhUU2LILsfUf8e1aVCpnDKss/SuPHVK/bQ6/srHSf6aeMFe nKBQ3oYqSiY38YCW0wJbcvDKJrWJd6bK4CTWwRu1U+esP84T7jN/NvNoAk2IJBMm+UZo RIrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/RSImjt1MT5jNgXT02dp2eGPf34Z2Wdqx9gtfcpPm7g=; b=mB2ZN2oebpJRrgdwZY65/IF0fzOCZ7oChZY4n10/EOe5MycG+5ieW6Ct3QK5q8eCmB XXFgpdBvY/rBL8/cQsqVpcVMRL4xgHqoBRqBhiODSe4nmwSOEx0TyGUqlyB5NrAzTpDt f7naK8sD9d1KwjOx61IMysgl6U6nc2s07ASn0ViFmX3s3u5awMtPjW/sCBkxzqkz3voq 3NISlYQSDNsUSSbm5EdBv3musSEW6grtdS0VvJfydYdho64uYTIAQU/siTcBvKuN8Ctp lXPGVRd6sKUhuywPTOFVorl+Jfqp3hhVvy60Kx/N2ePvIooK6n3kJtlF1EB8yUTiHHj9 oVug== X-Gm-Message-State: APjAAAVJV2Qiji9sbatlIlcod+at4URrho8JdMKn/OEuWkVYQuLdaEby mqSjxCTm2kXVYWHbuKDflbI= X-Google-Smtp-Source: APXvYqzz59ZYxa8nz3xorjK/8PfM5uWPDyZWddCQbGkV+SR0p/w9DtKgq3idupsG6jrWDKxVrXTIGw== X-Received: by 2002:adf:e408:: with SMTP id g8mr9354316wrm.143.1558988111544; Mon, 27 May 2019 13:15:11 -0700 (PDT) Received: from localhost.localdomain ([2a01:e0a:1f1:d0f0::4e2b:d7ca]) by smtp.gmail.com with ESMTPSA id i27sm347146wmb.16.2019.05.27.13.15.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 27 May 2019 13:15:10 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= To: Vinod Koul , Rob Herring , Mark Rutland , Maxime Ripard , Chen-Yu Tsai , Dan Williams Cc: dmaengine@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jernej Skrabec , =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= Subject: [PATCH v3 5/7] dmaengine: sun6i: Add support for H6 DMA Date: Mon, 27 May 2019 22:14:57 +0200 Message-Id: <20190527201459.20130-6-peron.clem@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190527201459.20130-1-peron.clem@gmail.com> References: <20190527201459.20130-1-peron.clem@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: dmaengine-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org From: Jernej Skrabec H6 DMA has more than 32 supported DRQs, which means that configuration register is slightly rearranged. It also needs additional clock to be enabled. Add support for it. Signed-off-by: Jernej Skrabec Signed-off-by: Clément Péron --- drivers/dma/sun6i-dma.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c index f5cb5e89bf7b..ddef87ebdfdb 100644 --- a/drivers/dma/sun6i-dma.c +++ b/drivers/dma/sun6i-dma.c @@ -69,14 +69,19 @@ #define DMA_CHAN_CUR_CFG 0x0c #define DMA_CHAN_MAX_DRQ_A31 0x1f +#define DMA_CHAN_MAX_DRQ_H6 0x3f #define DMA_CHAN_CFG_SRC_DRQ_A31(x) ((x) & DMA_CHAN_MAX_DRQ_A31) +#define DMA_CHAN_CFG_SRC_DRQ_H6(x) ((x) & DMA_CHAN_MAX_DRQ_H6) #define DMA_CHAN_CFG_SRC_MODE_A31(x) (((x) & 0x1) << 5) +#define DMA_CHAN_CFG_SRC_MODE_H6(x) (((x) & 0x1) << 8) #define DMA_CHAN_CFG_SRC_BURST_A31(x) (((x) & 0x3) << 7) #define DMA_CHAN_CFG_SRC_BURST_H3(x) (((x) & 0x3) << 6) #define DMA_CHAN_CFG_SRC_WIDTH(x) (((x) & 0x3) << 9) #define DMA_CHAN_CFG_DST_DRQ_A31(x) (DMA_CHAN_CFG_SRC_DRQ_A31(x) << 16) +#define DMA_CHAN_CFG_DST_DRQ_H6(x) (DMA_CHAN_CFG_SRC_DRQ_H6(x) << 16) #define DMA_CHAN_CFG_DST_MODE_A31(x) (DMA_CHAN_CFG_SRC_MODE_A31(x) << 16) +#define DMA_CHAN_CFG_DST_MODE_H6(x) (DMA_CHAN_CFG_SRC_MODE_H6(x) << 16) #define DMA_CHAN_CFG_DST_BURST_A31(x) (DMA_CHAN_CFG_SRC_BURST_A31(x) << 16) #define DMA_CHAN_CFG_DST_BURST_H3(x) (DMA_CHAN_CFG_SRC_BURST_H3(x) << 16) #define DMA_CHAN_CFG_DST_WIDTH(x) (DMA_CHAN_CFG_SRC_WIDTH(x) << 16) @@ -319,12 +324,24 @@ static void sun6i_set_drq_a31(u32 *p_cfg, s8 src_drq, s8 dst_drq) DMA_CHAN_CFG_DST_DRQ_A31(dst_drq); } +static void sun6i_set_drq_h6(u32 *p_cfg, s8 src_drq, s8 dst_drq) +{ + *p_cfg |= DMA_CHAN_CFG_SRC_DRQ_H6(src_drq) | + DMA_CHAN_CFG_DST_DRQ_H6(dst_drq); +} + static void sun6i_set_mode_a31(u32 *p_cfg, s8 src_mode, s8 dst_mode) { *p_cfg |= DMA_CHAN_CFG_SRC_MODE_A31(src_mode) | DMA_CHAN_CFG_DST_MODE_A31(dst_mode); } +static void sun6i_set_mode_h6(u32 *p_cfg, s8 src_mode, s8 dst_mode) +{ + *p_cfg |= DMA_CHAN_CFG_SRC_MODE_H6(src_mode) | + DMA_CHAN_CFG_DST_MODE_H6(dst_mode); +} + static size_t sun6i_get_chan_size(struct sun6i_pchan *pchan) { struct sun6i_desc *txd = pchan->desc; @@ -1160,6 +1177,28 @@ static struct sun6i_dma_config sun50i_a64_dma_cfg = { BIT(DMA_SLAVE_BUSWIDTH_8_BYTES), }; +/* + * The H6 binding uses the number of dma channels from the + * device tree node. + */ +static struct sun6i_dma_config sun50i_h6_dma_cfg = { + .clock_autogate_enable = sun6i_enable_clock_autogate_h3, + .set_burst_length = sun6i_set_burst_length_h3, + .set_drq = sun6i_set_drq_h6, + .set_mode = sun6i_set_mode_h6, + .src_burst_lengths = BIT(1) | BIT(4) | BIT(8) | BIT(16), + .dst_burst_lengths = BIT(1) | BIT(4) | BIT(8) | BIT(16), + .src_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | + BIT(DMA_SLAVE_BUSWIDTH_2_BYTES) | + BIT(DMA_SLAVE_BUSWIDTH_4_BYTES) | + BIT(DMA_SLAVE_BUSWIDTH_8_BYTES), + .dst_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | + BIT(DMA_SLAVE_BUSWIDTH_2_BYTES) | + BIT(DMA_SLAVE_BUSWIDTH_4_BYTES) | + BIT(DMA_SLAVE_BUSWIDTH_8_BYTES), + .has_mbus_clk = true, +}; + /* * The V3s have only 8 physical channels, a maximum DRQ port id of 23, * and a total of 24 usable source and destination endpoints. @@ -1190,6 +1229,7 @@ static const struct of_device_id sun6i_dma_match[] = { { .compatible = "allwinner,sun8i-h3-dma", .data = &sun8i_h3_dma_cfg }, { .compatible = "allwinner,sun8i-v3s-dma", .data = &sun8i_v3s_dma_cfg }, { .compatible = "allwinner,sun50i-a64-dma", .data = &sun50i_a64_dma_cfg }, + { .compatible = "allwinner,sun50i-h6-dma", .data = &sun50i_h6_dma_cfg }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, sun6i_dma_match); -- 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.8 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A5ECEC04AB3 for ; Mon, 27 May 2019 20:16:22 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 729FF20859 for ; Mon, 27 May 2019 20:16:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="RPkqWlSX"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="j1RhxcrH" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 729FF20859 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=S98iCCeA3pzKVKKrn8P0sh1bJ5JA0cwAedjNbEIDA7Y=; b=RPkqWlSXBdIdgX ay1Ky26rWvaSMyH9ThVDfd9UqD+bwxqPSIS2sAfWLLZOjC+WXFcxhF0nXOGMLH8CuiGHNYUk8ZgoE T1twvWD1C/p/jwcQ2JdkX1K35iBfkgE8Hs81CrAovpOPj6emjJfTjaDleYHOa4oAexiG7oYwAUfk/ xvc9Fn/GtoXjGAIx4J/67VL7x2on+xNKxdrkqJovgtjB61143tNSX0+NXvSYFexDTz1U7ICXNf4pO b8OHelo7F/nEQtJ883IhsXBSy3u6+hzu5BcFGOYqORlUZAtj4vwF/XWjZzyZgYybOpeiuJBV845w3 sc7aL405pnkA/jvQeyWA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hVM2a-0007nl-BD; Mon, 27 May 2019 20:16:16 +0000 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hVM1Z-0006UN-4G for linux-arm-kernel@lists.infradead.org; Mon, 27 May 2019 20:15:18 +0000 Received: by mail-wr1-x444.google.com with SMTP id h1so3743374wro.4 for ; Mon, 27 May 2019 13:15:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/RSImjt1MT5jNgXT02dp2eGPf34Z2Wdqx9gtfcpPm7g=; b=j1RhxcrH/N+9Ow/PCDAcz1k+O+wxeOBPcXR0m/HOh5BSUxpGZOhHgQ9Ni4wXoaoTik XhAPQIOLP0kFGjls25OEGiqpJk6GotNQjjAfHQMURNtZRPHzkiLq23DTzvyoKV5xWLyG PeGk1Cw/Au+3HHuOUUOERXKwAerjPvSm8NxLBS0mE42oJK87mKuff+TOf1sUUA58ofNc ozTjV1ySjvc9BXBVe8SDlRhUU2LILsfUf8e1aVCpnDKss/SuPHVK/bQ6/srHSf6aeMFe nKBQ3oYqSiY38YCW0wJbcvDKJrWJd6bK4CTWwRu1U+esP84T7jN/NvNoAk2IJBMm+UZo RIrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/RSImjt1MT5jNgXT02dp2eGPf34Z2Wdqx9gtfcpPm7g=; b=B/FBw4vfmJwPS67fccZGJ2BzT4XbcF/JPSE5Y0yMTp3jcqubHi7hYMNUD/w6rcm6os /8Wg/QkjGE+5/iVW9oaswUcffzgmVfsgyIcASAjTnbrvNK7xJZBhnfrPn2uTZoIFG/F2 ueYYzkSZHZHfnPL2VWLYBbVCH4eXiQAf7sDMREZJf01hH2/kT9DvG+OZSPxXj89PtO0L rqazNGiA4mXKKrstTM4z+0bO3F/ovJQd/w5uiL7LWc3kRVFnXFkGUYW39PG8+RfHFWDc mZPUCW8dhnQaP34mvRmwRMy3E+IdrOm61Roaj8K4CCiLNakVulkERPXmm2iS+Ff2Fxj2 jyCg== X-Gm-Message-State: APjAAAVxCWYnxjFIx7+5YwuPDQmKBod9jSgSpOT0fuscOrZnJ0AFMwzR UTXlezz14PXF5BqsSxHOKK0= X-Google-Smtp-Source: APXvYqzz59ZYxa8nz3xorjK/8PfM5uWPDyZWddCQbGkV+SR0p/w9DtKgq3idupsG6jrWDKxVrXTIGw== X-Received: by 2002:adf:e408:: with SMTP id g8mr9354316wrm.143.1558988111544; Mon, 27 May 2019 13:15:11 -0700 (PDT) Received: from localhost.localdomain ([2a01:e0a:1f1:d0f0::4e2b:d7ca]) by smtp.gmail.com with ESMTPSA id i27sm347146wmb.16.2019.05.27.13.15.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 27 May 2019 13:15:10 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= To: Vinod Koul , Rob Herring , Mark Rutland , Maxime Ripard , Chen-Yu Tsai , Dan Williams Subject: [PATCH v3 5/7] dmaengine: sun6i: Add support for H6 DMA Date: Mon, 27 May 2019 22:14:57 +0200 Message-Id: <20190527201459.20130-6-peron.clem@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190527201459.20130-1-peron.clem@gmail.com> References: <20190527201459.20130-1-peron.clem@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190527_131513_606488_1C3FABC3 X-CRM114-Status: GOOD ( 15.93 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Jernej Skrabec , linux-kernel@vger.kernel.org, =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= , dmaengine@vger.kernel.org, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org RnJvbTogSmVybmVqIFNrcmFiZWMgPGplcm5lai5za3JhYmVjQHNpb2wubmV0PgoKSDYgRE1BIGhh cyBtb3JlIHRoYW4gMzIgc3VwcG9ydGVkIERSUXMsIHdoaWNoIG1lYW5zIHRoYXQgY29uZmlndXJh dGlvbgpyZWdpc3RlciBpcyBzbGlnaHRseSByZWFycmFuZ2VkLiBJdCBhbHNvIG5lZWRzIGFkZGl0 aW9uYWwgY2xvY2sgdG8gYmUKZW5hYmxlZC4KCkFkZCBzdXBwb3J0IGZvciBpdC4KClNpZ25lZC1v ZmYtYnk6IEplcm5laiBTa3JhYmVjIDxqZXJuZWouc2tyYWJlY0BzaW9sLm5ldD4KU2lnbmVkLW9m Zi1ieTogQ2zDqW1lbnQgUMOpcm9uIDxwZXJvbi5jbGVtQGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJz L2RtYS9zdW42aS1kbWEuYyB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIDEgZmlsZSBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9kbWEvc3VuNmktZG1hLmMgYi9kcml2ZXJzL2RtYS9zdW42aS1kbWEuYwppbmRleCBmNWNi NWU4OWJmN2IuLmRkZWY4N2ViZGZkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEvc3VuNmktZG1h LmMKKysrIGIvZHJpdmVycy9kbWEvc3VuNmktZG1hLmMKQEAgLTY5LDE0ICs2OSwxOSBAQAogCiAj ZGVmaW5lIERNQV9DSEFOX0NVUl9DRkcJMHgwYwogI2RlZmluZSBETUFfQ0hBTl9NQVhfRFJRX0Ez MQkJMHgxZgorI2RlZmluZSBETUFfQ0hBTl9NQVhfRFJRX0g2CQkweDNmCiAjZGVmaW5lIERNQV9D SEFOX0NGR19TUkNfRFJRX0EzMSh4KQkoKHgpICYgRE1BX0NIQU5fTUFYX0RSUV9BMzEpCisjZGVm aW5lIERNQV9DSEFOX0NGR19TUkNfRFJRX0g2KHgpCSgoeCkgJiBETUFfQ0hBTl9NQVhfRFJRX0g2 KQogI2RlZmluZSBETUFfQ0hBTl9DRkdfU1JDX01PREVfQTMxKHgpCSgoKHgpICYgMHgxKSA8PCA1 KQorI2RlZmluZSBETUFfQ0hBTl9DRkdfU1JDX01PREVfSDYoeCkJKCgoeCkgJiAweDEpIDw8IDgp CiAjZGVmaW5lIERNQV9DSEFOX0NGR19TUkNfQlVSU1RfQTMxKHgpCSgoKHgpICYgMHgzKSA8PCA3 KQogI2RlZmluZSBETUFfQ0hBTl9DRkdfU1JDX0JVUlNUX0gzKHgpCSgoKHgpICYgMHgzKSA8PCA2 KQogI2RlZmluZSBETUFfQ0hBTl9DRkdfU1JDX1dJRFRIKHgpCSgoKHgpICYgMHgzKSA8PCA5KQog CiAjZGVmaW5lIERNQV9DSEFOX0NGR19EU1RfRFJRX0EzMSh4KQkoRE1BX0NIQU5fQ0ZHX1NSQ19E UlFfQTMxKHgpIDw8IDE2KQorI2RlZmluZSBETUFfQ0hBTl9DRkdfRFNUX0RSUV9INih4KQkoRE1B X0NIQU5fQ0ZHX1NSQ19EUlFfSDYoeCkgPDwgMTYpCiAjZGVmaW5lIERNQV9DSEFOX0NGR19EU1Rf TU9ERV9BMzEoeCkJKERNQV9DSEFOX0NGR19TUkNfTU9ERV9BMzEoeCkgPDwgMTYpCisjZGVmaW5l IERNQV9DSEFOX0NGR19EU1RfTU9ERV9INih4KQkoRE1BX0NIQU5fQ0ZHX1NSQ19NT0RFX0g2KHgp IDw8IDE2KQogI2RlZmluZSBETUFfQ0hBTl9DRkdfRFNUX0JVUlNUX0EzMSh4KQkoRE1BX0NIQU5f Q0ZHX1NSQ19CVVJTVF9BMzEoeCkgPDwgMTYpCiAjZGVmaW5lIERNQV9DSEFOX0NGR19EU1RfQlVS U1RfSDMoeCkJKERNQV9DSEFOX0NGR19TUkNfQlVSU1RfSDMoeCkgPDwgMTYpCiAjZGVmaW5lIERN QV9DSEFOX0NGR19EU1RfV0lEVEgoeCkJKERNQV9DSEFOX0NGR19TUkNfV0lEVEgoeCkgPDwgMTYp CkBAIC0zMTksMTIgKzMyNCwyNCBAQCBzdGF0aWMgdm9pZCBzdW42aV9zZXRfZHJxX2EzMSh1MzIg KnBfY2ZnLCBzOCBzcmNfZHJxLCBzOCBkc3RfZHJxKQogCQkgIERNQV9DSEFOX0NGR19EU1RfRFJR X0EzMShkc3RfZHJxKTsKIH0KIAorc3RhdGljIHZvaWQgc3VuNmlfc2V0X2RycV9oNih1MzIgKnBf Y2ZnLCBzOCBzcmNfZHJxLCBzOCBkc3RfZHJxKQoreworCSpwX2NmZyB8PSBETUFfQ0hBTl9DRkdf U1JDX0RSUV9INihzcmNfZHJxKSB8CisJCSAgRE1BX0NIQU5fQ0ZHX0RTVF9EUlFfSDYoZHN0X2Ry cSk7Cit9CisKIHN0YXRpYyB2b2lkIHN1bjZpX3NldF9tb2RlX2EzMSh1MzIgKnBfY2ZnLCBzOCBz cmNfbW9kZSwgczggZHN0X21vZGUpCiB7CiAJKnBfY2ZnIHw9IERNQV9DSEFOX0NGR19TUkNfTU9E RV9BMzEoc3JjX21vZGUpIHwKIAkJICBETUFfQ0hBTl9DRkdfRFNUX01PREVfQTMxKGRzdF9tb2Rl KTsKIH0KIAorc3RhdGljIHZvaWQgc3VuNmlfc2V0X21vZGVfaDYodTMyICpwX2NmZywgczggc3Jj X21vZGUsIHM4IGRzdF9tb2RlKQoreworCSpwX2NmZyB8PSBETUFfQ0hBTl9DRkdfU1JDX01PREVf SDYoc3JjX21vZGUpIHwKKwkJICBETUFfQ0hBTl9DRkdfRFNUX01PREVfSDYoZHN0X21vZGUpOwor fQorCiBzdGF0aWMgc2l6ZV90IHN1bjZpX2dldF9jaGFuX3NpemUoc3RydWN0IHN1bjZpX3BjaGFu ICpwY2hhbikKIHsKIAlzdHJ1Y3Qgc3VuNmlfZGVzYyAqdHhkID0gcGNoYW4tPmRlc2M7CkBAIC0x MTYwLDYgKzExNzcsMjggQEAgc3RhdGljIHN0cnVjdCBzdW42aV9kbWFfY29uZmlnIHN1bjUwaV9h NjRfZG1hX2NmZyA9IHsKIAkJCSAgICAgQklUKERNQV9TTEFWRV9CVVNXSURUSF84X0JZVEVTKSwK IH07CiAKKy8qCisgKiBUaGUgSDYgYmluZGluZyB1c2VzIHRoZSBudW1iZXIgb2YgZG1hIGNoYW5u ZWxzIGZyb20gdGhlCisgKiBkZXZpY2UgdHJlZSBub2RlLgorICovCitzdGF0aWMgc3RydWN0IHN1 bjZpX2RtYV9jb25maWcgc3VuNTBpX2g2X2RtYV9jZmcgPSB7CisJLmNsb2NrX2F1dG9nYXRlX2Vu YWJsZSA9IHN1bjZpX2VuYWJsZV9jbG9ja19hdXRvZ2F0ZV9oMywKKwkuc2V0X2J1cnN0X2xlbmd0 aCA9IHN1bjZpX3NldF9idXJzdF9sZW5ndGhfaDMsCisJLnNldF9kcnEgICAgICAgICAgPSBzdW42 aV9zZXRfZHJxX2g2LAorCS5zZXRfbW9kZSAgICAgICAgID0gc3VuNmlfc2V0X21vZGVfaDYsCisJ LnNyY19idXJzdF9sZW5ndGhzID0gQklUKDEpIHwgQklUKDQpIHwgQklUKDgpIHwgQklUKDE2KSwK KwkuZHN0X2J1cnN0X2xlbmd0aHMgPSBCSVQoMSkgfCBCSVQoNCkgfCBCSVQoOCkgfCBCSVQoMTYp LAorCS5zcmNfYWRkcl93aWR0aHMgICA9IEJJVChETUFfU0xBVkVfQlVTV0lEVEhfMV9CWVRFKSB8 CisJCQkgICAgIEJJVChETUFfU0xBVkVfQlVTV0lEVEhfMl9CWVRFUykgfAorCQkJICAgICBCSVQo RE1BX1NMQVZFX0JVU1dJRFRIXzRfQllURVMpIHwKKwkJCSAgICAgQklUKERNQV9TTEFWRV9CVVNX SURUSF84X0JZVEVTKSwKKwkuZHN0X2FkZHJfd2lkdGhzICAgPSBCSVQoRE1BX1NMQVZFX0JVU1dJ RFRIXzFfQllURSkgfAorCQkJICAgICBCSVQoRE1BX1NMQVZFX0JVU1dJRFRIXzJfQllURVMpIHwK KwkJCSAgICAgQklUKERNQV9TTEFWRV9CVVNXSURUSF80X0JZVEVTKSB8CisJCQkgICAgIEJJVChE TUFfU0xBVkVfQlVTV0lEVEhfOF9CWVRFUyksCisJLmhhc19tYnVzX2NsayA9IHRydWUsCit9Owor CiAvKgogICogVGhlIFYzcyBoYXZlIG9ubHkgOCBwaHlzaWNhbCBjaGFubmVscywgYSBtYXhpbXVt IERSUSBwb3J0IGlkIG9mIDIzLAogICogYW5kIGEgdG90YWwgb2YgMjQgdXNhYmxlIHNvdXJjZSBh bmQgZGVzdGluYXRpb24gZW5kcG9pbnRzLgpAQCAtMTE5MCw2ICsxMjI5LDcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3VuNmlfZG1hX21hdGNoW10gPSB7CiAJeyAuY29tcGF0 aWJsZSA9ICJhbGx3aW5uZXIsc3VuOGktaDMtZG1hIiwgLmRhdGEgPSAmc3VuOGlfaDNfZG1hX2Nm ZyB9LAogCXsgLmNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjhpLXYzcy1kbWEiLCAuZGF0YSA9 ICZzdW44aV92M3NfZG1hX2NmZyB9LAogCXsgLmNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjUw aS1hNjQtZG1hIiwgLmRhdGEgPSAmc3VuNTBpX2E2NF9kbWFfY2ZnIH0sCisJeyAuY29tcGF0aWJs ZSA9ICJhbGx3aW5uZXIsc3VuNTBpLWg2LWRtYSIsIC5kYXRhID0gJnN1bjUwaV9oNl9kbWFfY2Zn IH0sCiAJeyAvKiBzZW50aW5lbCAqLyB9CiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3Vu NmlfZG1hX21hdGNoKTsKLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK