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,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 B5276C07542 for ; Sat, 25 May 2019 16:38:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 82B82216FD for ; Sat, 25 May 2019 16:38:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="klPyfvEI" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727336AbfEYQif (ORCPT ); Sat, 25 May 2019 12:38:35 -0400 Received: from mail-wr1-f67.google.com ([209.85.221.67]:43912 "EHLO mail-wr1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727320AbfEYQie (ORCPT ); Sat, 25 May 2019 12:38:34 -0400 Received: by mail-wr1-f67.google.com with SMTP id l17so4424847wrm.10; Sat, 25 May 2019 09:38:31 -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=07+2U0H+IBjlhuGrjcqPkQ09B1GGgjfSq3SMD7jPmPk=; b=klPyfvEI/cinBZjUx/j9WztCqHYARfQARCJH1q6MDnkpugFwTZS3mXWJOPhY2kGm9X xvh8y4d29cRIP/haRLAjSm/wPDvhHSowZ9b+BTaxE25Wj94v3Hbhj8NY4kMrQgFFqArj Sdim6YOIeNCEs+B8n78T0DnM3lLO72mOaiTq79RuFx0s/A3FKGT0JMJkoUXlNDNHZkN6 Cz2lzFORDCEjpKz2uQtW61g0f9z1ljIwrqsZZJGWZVQLIxTSlcUFdn3VmkCWavKq473z KIUSwRdjoE66O0i8n7CjJFSoIXC4TKqNnsPlYOj9J9errHJfOr344EHHAnZHXAF3vdEm k+cA== 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=07+2U0H+IBjlhuGrjcqPkQ09B1GGgjfSq3SMD7jPmPk=; b=QzXbfqDaFTU/mtUIipL8eAiqrRBX3PrhgWIKILYtM6gf9bwKXAFFLlvOnqZe50lfRf BYmbRH9KiIbg8YtTjrie8JfwgJnHYRRvn/QVC8vM81c523GKOOIocu9Qx1DotjVYfVe+ 7EsQiMFeZz7MfoQYuNggj9R3JGD+vyDeAHTp9Yek0sEcfLzJUJgqJEZwlAhORq2lfzqx a+jnJvximtwut+3wlHDShiQm4XoR2duhR9ef5WN1hJlnb+js90I4/A0MWfhTM+ILpfy2 9OeNauxnaIW957s5fgU8ChE6mAtfzXvy2nUVJY6MclufS6R/cYq5NxtFm4GrQLziYRi4 1g9g== X-Gm-Message-State: APjAAAUl7QAyT1YCoqeC9D+OL6PHXKDJiNKepvF+GlMh7L1e42C88V9t VTbVAyug9mIX33GZQF0W9Hk= X-Google-Smtp-Source: APXvYqzm/wYeHMQ/bMWtYde+sUwDQUn/a6MwN3kmijYbXweILvEJLFoIryLiSzFlzR9HON9LpbyEqA== X-Received: by 2002:adf:db89:: with SMTP id u9mr30158479wri.294.1558802311115; Sat, 25 May 2019 09:38:31 -0700 (PDT) Received: from localhost.localdomain ([2a01:e0a:1f1:d0f0::4e2b:d7ca]) by smtp.gmail.com with ESMTPSA id f65sm9306498wmg.45.2019.05.25.09.38.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 25 May 2019 09:38:30 -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 v2 5/7] dmaengine: sun6i: Add support for H6 DMA Date: Sat, 25 May 2019 18:38:17 +0200 Message-Id: <20190525163819.21055-6-peron.clem@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190525163819.21055-1-peron.clem@gmail.com> References: <20190525163819.21055-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 | 44 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c index f5cb5e89bf7b..8d44ddae926a 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); @@ -1288,8 +1328,8 @@ static int sun6i_dma_probe(struct platform_device *pdev) ret = of_property_read_u32(np, "dma-requests", &sdc->max_request); if (ret && !sdc->max_request) { dev_info(&pdev->dev, "Missing dma-requests, using %u.\n", - DMA_CHAN_MAX_DRQ_A31); - sdc->max_request = DMA_CHAN_MAX_DRQ_A31; + DMA_CHAN_MAX_DRQ_H6); + sdc->max_request = DMA_CHAN_MAX_DRQ_H6; } /* -- 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 0B79BC07542 for ; Sat, 25 May 2019 16:39:21 +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 CFD3A216E3 for ; Sat, 25 May 2019 16:39:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="leyPYzdY"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="klPyfvEI" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CFD3A216E3 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=rpAC6sFrcYU5Zot490ce2YBO4tREvYlj8XxF9eGdDfc=; b=leyPYzdYeMvxRp AGHAHwI/KCWjuXQZrEcavr3peWzbCE7TZTLRy7DDiVRTr3G+RLvD4pvpakqlpboiPw9yYlXC/hXBQ tkim+pSI9gBzh3atJAkWfrLG+Uscy5dk+yNMINXM7wYRXkjoKy9d2FSnhgIqSzaNZpgALcn5yC2pd t87O5KTXKzeBtsPsDyyK7E6/GjD6nA1mRmmItfl5NSPrYQGdbqy1F09ZT+QeAwba66YveGRmewtZI 6UpHk0s1UZR/TXTp4kbHs4nIvgSIh4yFsAp6k+WgNDyqmZrgmADYiT3UFKltYucTaUxFYFR2mfXAk uyyzb05mDJm8wlkB2CSw==; 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 1hUZhT-0004WA-Kz; Sat, 25 May 2019 16:39:15 +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 1hUZgm-0003c7-Gv for linux-arm-kernel@lists.infradead.org; Sat, 25 May 2019 16:38:36 +0000 Received: by mail-wr1-x444.google.com with SMTP id w13so4463831wru.11 for ; Sat, 25 May 2019 09:38:32 -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=07+2U0H+IBjlhuGrjcqPkQ09B1GGgjfSq3SMD7jPmPk=; b=klPyfvEI/cinBZjUx/j9WztCqHYARfQARCJH1q6MDnkpugFwTZS3mXWJOPhY2kGm9X xvh8y4d29cRIP/haRLAjSm/wPDvhHSowZ9b+BTaxE25Wj94v3Hbhj8NY4kMrQgFFqArj Sdim6YOIeNCEs+B8n78T0DnM3lLO72mOaiTq79RuFx0s/A3FKGT0JMJkoUXlNDNHZkN6 Cz2lzFORDCEjpKz2uQtW61g0f9z1ljIwrqsZZJGWZVQLIxTSlcUFdn3VmkCWavKq473z KIUSwRdjoE66O0i8n7CjJFSoIXC4TKqNnsPlYOj9J9errHJfOr344EHHAnZHXAF3vdEm k+cA== 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=07+2U0H+IBjlhuGrjcqPkQ09B1GGgjfSq3SMD7jPmPk=; b=JDNNFrx1C2jySP9CMwyqgBScYrmWbTmO3NdUBMFDS7A5e8YiDvjOmJMfDArZZk0FIe blIEk3KQ8BT2NqdlcwtWlP6DORlc6F6ax2EnfgqmcJz1SNGf1gYcjcvasT8EtfsT8G6m W+poqw0+tBOM5KpxLifmSH9AOcOUAi/2ndeiUCs0NH/mJsl6q9hxwV0GaRoqLrS8I2EJ CevEqkUFzcgX/UfRbl46X+HNr1sgNmoKO8mSkc9OkcJZEiSF++w9L0SS7zsb24P6Ju5d pVnTenLF2rosTy1bOg95z0o2K/MGFuNctMbUDUPNx6J9vUodVD/xlgmCH4kTU27Qv4L8 3xig== X-Gm-Message-State: APjAAAWMV04nmpHPsNQii519YUiNKDPWzCEpERM+TPw/J6xpaqDXHynw BHYXd5M8cuT/P/UZYH0rnSI= X-Google-Smtp-Source: APXvYqzm/wYeHMQ/bMWtYde+sUwDQUn/a6MwN3kmijYbXweILvEJLFoIryLiSzFlzR9HON9LpbyEqA== X-Received: by 2002:adf:db89:: with SMTP id u9mr30158479wri.294.1558802311115; Sat, 25 May 2019 09:38:31 -0700 (PDT) Received: from localhost.localdomain ([2a01:e0a:1f1:d0f0::4e2b:d7ca]) by smtp.gmail.com with ESMTPSA id f65sm9306498wmg.45.2019.05.25.09.38.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 25 May 2019 09:38:30 -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 v2 5/7] dmaengine: sun6i: Add support for H6 DMA Date: Sat, 25 May 2019 18:38:17 +0200 Message-Id: <20190525163819.21055-6-peron.clem@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190525163819.21055-1-peron.clem@gmail.com> References: <20190525163819.21055-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-20190525_093832_806417_F36013D8 X-CRM114-Status: GOOD ( 17.39 ) 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 L2RtYS9zdW42aS1kbWEuYyB8IDQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9zdW42aS1kbWEuYyBiL2RyaXZlcnMvZG1hL3N1bjZp LWRtYS5jCmluZGV4IGY1Y2I1ZTg5YmY3Yi4uOGQ0NGRkYWU5MjZhIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2RtYS9zdW42aS1kbWEuYworKysgYi9kcml2ZXJzL2RtYS9zdW42aS1kbWEuYwpAQCAtNjks MTQgKzY5LDE5IEBACiAKICNkZWZpbmUgRE1BX0NIQU5fQ1VSX0NGRwkweDBjCiAjZGVmaW5lIERN QV9DSEFOX01BWF9EUlFfQTMxCQkweDFmCisjZGVmaW5lIERNQV9DSEFOX01BWF9EUlFfSDYJCTB4 M2YKICNkZWZpbmUgRE1BX0NIQU5fQ0ZHX1NSQ19EUlFfQTMxKHgpCSgoeCkgJiBETUFfQ0hBTl9N QVhfRFJRX0EzMSkKKyNkZWZpbmUgRE1BX0NIQU5fQ0ZHX1NSQ19EUlFfSDYoeCkJKCh4KSAmIERN QV9DSEFOX01BWF9EUlFfSDYpCiAjZGVmaW5lIERNQV9DSEFOX0NGR19TUkNfTU9ERV9BMzEoeCkJ KCgoeCkgJiAweDEpIDw8IDUpCisjZGVmaW5lIERNQV9DSEFOX0NGR19TUkNfTU9ERV9INih4KQko KCh4KSAmIDB4MSkgPDwgOCkKICNkZWZpbmUgRE1BX0NIQU5fQ0ZHX1NSQ19CVVJTVF9BMzEoeCkJ KCgoeCkgJiAweDMpIDw8IDcpCiAjZGVmaW5lIERNQV9DSEFOX0NGR19TUkNfQlVSU1RfSDMoeCkJ KCgoeCkgJiAweDMpIDw8IDYpCiAjZGVmaW5lIERNQV9DSEFOX0NGR19TUkNfV0lEVEgoeCkJKCgo eCkgJiAweDMpIDw8IDkpCiAKICNkZWZpbmUgRE1BX0NIQU5fQ0ZHX0RTVF9EUlFfQTMxKHgpCShE TUFfQ0hBTl9DRkdfU1JDX0RSUV9BMzEoeCkgPDwgMTYpCisjZGVmaW5lIERNQV9DSEFOX0NGR19E U1RfRFJRX0g2KHgpCShETUFfQ0hBTl9DRkdfU1JDX0RSUV9INih4KSA8PCAxNikKICNkZWZpbmUg RE1BX0NIQU5fQ0ZHX0RTVF9NT0RFX0EzMSh4KQkoRE1BX0NIQU5fQ0ZHX1NSQ19NT0RFX0EzMSh4 KSA8PCAxNikKKyNkZWZpbmUgRE1BX0NIQU5fQ0ZHX0RTVF9NT0RFX0g2KHgpCShETUFfQ0hBTl9D RkdfU1JDX01PREVfSDYoeCkgPDwgMTYpCiAjZGVmaW5lIERNQV9DSEFOX0NGR19EU1RfQlVSU1Rf QTMxKHgpCShETUFfQ0hBTl9DRkdfU1JDX0JVUlNUX0EzMSh4KSA8PCAxNikKICNkZWZpbmUgRE1B X0NIQU5fQ0ZHX0RTVF9CVVJTVF9IMyh4KQkoRE1BX0NIQU5fQ0ZHX1NSQ19CVVJTVF9IMyh4KSA8 PCAxNikKICNkZWZpbmUgRE1BX0NIQU5fQ0ZHX0RTVF9XSURUSCh4KQkoRE1BX0NIQU5fQ0ZHX1NS Q19XSURUSCh4KSA8PCAxNikKQEAgLTMxOSwxMiArMzI0LDI0IEBAIHN0YXRpYyB2b2lkIHN1bjZp X3NldF9kcnFfYTMxKHUzMiAqcF9jZmcsIHM4IHNyY19kcnEsIHM4IGRzdF9kcnEpCiAJCSAgRE1B X0NIQU5fQ0ZHX0RTVF9EUlFfQTMxKGRzdF9kcnEpOwogfQogCitzdGF0aWMgdm9pZCBzdW42aV9z ZXRfZHJxX2g2KHUzMiAqcF9jZmcsIHM4IHNyY19kcnEsIHM4IGRzdF9kcnEpCit7CisJKnBfY2Zn IHw9IERNQV9DSEFOX0NGR19TUkNfRFJRX0g2KHNyY19kcnEpIHwKKwkJICBETUFfQ0hBTl9DRkdf RFNUX0RSUV9INihkc3RfZHJxKTsKK30KKwogc3RhdGljIHZvaWQgc3VuNmlfc2V0X21vZGVfYTMx KHUzMiAqcF9jZmcsIHM4IHNyY19tb2RlLCBzOCBkc3RfbW9kZSkKIHsKIAkqcF9jZmcgfD0gRE1B X0NIQU5fQ0ZHX1NSQ19NT0RFX0EzMShzcmNfbW9kZSkgfAogCQkgIERNQV9DSEFOX0NGR19EU1Rf TU9ERV9BMzEoZHN0X21vZGUpOwogfQogCitzdGF0aWMgdm9pZCBzdW42aV9zZXRfbW9kZV9oNih1 MzIgKnBfY2ZnLCBzOCBzcmNfbW9kZSwgczggZHN0X21vZGUpCit7CisJKnBfY2ZnIHw9IERNQV9D SEFOX0NGR19TUkNfTU9ERV9INihzcmNfbW9kZSkgfAorCQkgIERNQV9DSEFOX0NGR19EU1RfTU9E RV9INihkc3RfbW9kZSk7Cit9CisKIHN0YXRpYyBzaXplX3Qgc3VuNmlfZ2V0X2NoYW5fc2l6ZShz dHJ1Y3Qgc3VuNmlfcGNoYW4gKnBjaGFuKQogewogCXN0cnVjdCBzdW42aV9kZXNjICp0eGQgPSBw Y2hhbi0+ZGVzYzsKQEAgLTExNjAsNiArMTE3NywyOCBAQCBzdGF0aWMgc3RydWN0IHN1bjZpX2Rt YV9jb25maWcgc3VuNTBpX2E2NF9kbWFfY2ZnID0gewogCQkJICAgICBCSVQoRE1BX1NMQVZFX0JV U1dJRFRIXzhfQllURVMpLAogfTsKIAorLyoKKyAqIFRoZSBINiBiaW5kaW5nIHVzZXMgdGhlIG51 bWJlciBvZiBkbWEgY2hhbm5lbHMgZnJvbSB0aGUKKyAqIGRldmljZSB0cmVlIG5vZGUuCisgKi8K K3N0YXRpYyBzdHJ1Y3Qgc3VuNmlfZG1hX2NvbmZpZyBzdW41MGlfaDZfZG1hX2NmZyA9IHsKKwku Y2xvY2tfYXV0b2dhdGVfZW5hYmxlID0gc3VuNmlfZW5hYmxlX2Nsb2NrX2F1dG9nYXRlX2gzLAor CS5zZXRfYnVyc3RfbGVuZ3RoID0gc3VuNmlfc2V0X2J1cnN0X2xlbmd0aF9oMywKKwkuc2V0X2Ry cSAgICAgICAgICA9IHN1bjZpX3NldF9kcnFfaDYsCisJLnNldF9tb2RlICAgICAgICAgPSBzdW42 aV9zZXRfbW9kZV9oNiwKKwkuc3JjX2J1cnN0X2xlbmd0aHMgPSBCSVQoMSkgfCBCSVQoNCkgfCBC SVQoOCkgfCBCSVQoMTYpLAorCS5kc3RfYnVyc3RfbGVuZ3RocyA9IEJJVCgxKSB8IEJJVCg0KSB8 IEJJVCg4KSB8IEJJVCgxNiksCisJLnNyY19hZGRyX3dpZHRocyAgID0gQklUKERNQV9TTEFWRV9C VVNXSURUSF8xX0JZVEUpIHwKKwkJCSAgICAgQklUKERNQV9TTEFWRV9CVVNXSURUSF8yX0JZVEVT KSB8CisJCQkgICAgIEJJVChETUFfU0xBVkVfQlVTV0lEVEhfNF9CWVRFUykgfAorCQkJICAgICBC SVQoRE1BX1NMQVZFX0JVU1dJRFRIXzhfQllURVMpLAorCS5kc3RfYWRkcl93aWR0aHMgICA9IEJJ VChETUFfU0xBVkVfQlVTV0lEVEhfMV9CWVRFKSB8CisJCQkgICAgIEJJVChETUFfU0xBVkVfQlVT V0lEVEhfMl9CWVRFUykgfAorCQkJICAgICBCSVQoRE1BX1NMQVZFX0JVU1dJRFRIXzRfQllURVMp IHwKKwkJCSAgICAgQklUKERNQV9TTEFWRV9CVVNXSURUSF84X0JZVEVTKSwKKwkuaGFzX21idXNf Y2xrID0gdHJ1ZSwKK307CisKIC8qCiAgKiBUaGUgVjNzIGhhdmUgb25seSA4IHBoeXNpY2FsIGNo YW5uZWxzLCBhIG1heGltdW0gRFJRIHBvcnQgaWQgb2YgMjMsCiAgKiBhbmQgYSB0b3RhbCBvZiAy NCB1c2FibGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBlbmRwb2ludHMuCkBAIC0xMTkwLDYgKzEy MjksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW42aV9kbWFfbWF0Y2hb XSA9IHsKIAl7IC5jb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW44aS1oMy1kbWEiLCAuZGF0YSA9 ICZzdW44aV9oM19kbWFfY2ZnIH0sCiAJeyAuY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuOGkt djNzLWRtYSIsIC5kYXRhID0gJnN1bjhpX3Yzc19kbWFfY2ZnIH0sCiAJeyAuY29tcGF0aWJsZSA9 ICJhbGx3aW5uZXIsc3VuNTBpLWE2NC1kbWEiLCAuZGF0YSA9ICZzdW41MGlfYTY0X2RtYV9jZmcg fSwKKwl7IC5jb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW41MGktaDYtZG1hIiwgLmRhdGEgPSAm c3VuNTBpX2g2X2RtYV9jZmcgfSwKIAl7IC8qIHNlbnRpbmVsICovIH0KIH07CiBNT0RVTEVfREVW SUNFX1RBQkxFKG9mLCBzdW42aV9kbWFfbWF0Y2gpOwpAQCAtMTI4OCw4ICsxMzI4LDggQEAgc3Rh dGljIGludCBzdW42aV9kbWFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAly ZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImRtYS1yZXF1ZXN0cyIsICZzZGMtPm1heF9y ZXF1ZXN0KTsKIAlpZiAocmV0ICYmICFzZGMtPm1heF9yZXF1ZXN0KSB7CiAJCWRldl9pbmZvKCZw ZGV2LT5kZXYsICJNaXNzaW5nIGRtYS1yZXF1ZXN0cywgdXNpbmcgJXUuXG4iLAotCQkJIERNQV9D SEFOX01BWF9EUlFfQTMxKTsKLQkJc2RjLT5tYXhfcmVxdWVzdCA9IERNQV9DSEFOX01BWF9EUlFf QTMxOworCQkJIERNQV9DSEFOX01BWF9EUlFfSDYpOworCQlzZGMtPm1heF9yZXF1ZXN0ID0gRE1B X0NIQU5fTUFYX0RSUV9INjsKIAl9CiAKIAkvKgotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5n IGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=