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 58648C07542 for ; Mon, 27 May 2019 20:15:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 293C721530 for ; Mon, 27 May 2019 20:15:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="g7yV4C4n" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727394AbfE0UPN (ORCPT ); Mon, 27 May 2019 16:15:13 -0400 Received: from mail-wm1-f67.google.com ([209.85.128.67]:54117 "EHLO mail-wm1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727351AbfE0UPM (ORCPT ); Mon, 27 May 2019 16:15:12 -0400 Received: by mail-wm1-f67.google.com with SMTP id d17so538594wmb.3; Mon, 27 May 2019 13:15:10 -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=9BvgB0y69e26fHuK5bMjd373fveSMgBcyqBpevwu2Pk=; b=g7yV4C4nR6jQkrnEHUzuhHEu7MT37q6Xug90j9dqaWfqLU72K0V5akejaTtrohvODs i1YLTlXtl4ygVsJLKh0Z4AwH0bb6zHXLkizvPOJPKW8vQk/unhEnEAig6uYekUX0ReXd itzr1R5v8raKj+pq0kzpcGpLXXpXlhjdDEKi8JYBZyuVVElultbZv1MkMtt4rDqJSOvz iFeVHYiYDW+MWgxgBFbJozyT3tN9RRwnxxvdsYwxNhvFYIJOdn9Do9t6hxFD4mmq0k1Y QjPbTcPN1HxB3u4mEtdbnzL+lKLTxOWbQWAv5biCxQ1wOzU6k8KAadbfnx8sp9m2pUG8 XZ8w== 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=9BvgB0y69e26fHuK5bMjd373fveSMgBcyqBpevwu2Pk=; b=uTIJucwFPfP7kbgBw5wB4/33s60B0p1gPEXXmLsr+MJZIusyN6850VsiKsWYe7jniB hPq+WG9hpLU/pFeEm4xlTtvxxjTWx8TbX9KRCvl/4qfx2UjTcZQSlnGouYpEUeGGOowU cbuaJu2i8J62uoDMktZmJsKXBLQliV76FTsY42qjauPHg0gSfmgl+X7olLxiP7iaE3nU ylTq+ebZonmOLSjUmi3cH82RsOw3cN6teBKBsA+oEjST2p6pcGJULMD0pnpwn0jSV5Ds w4xbnp33IeLt2UH6VwVgMjVAQr5gPoD07J9zHnwY8x9tOBQbshmMx5pXFNtMd2QZyLvJ kHNg== X-Gm-Message-State: APjAAAXy0/HWWVL0m/wbqxjp3F9+XWecYoOCih44uOterGRPUc/1UVHm 3RRNd/z6YpErb+uTSmjNTSk= X-Google-Smtp-Source: APXvYqwWj1Jne/AvrBhR+KYfQenhvePNq7fRvDkUq38f7DeaAfwNu0S0CcBVsfFDjhwyc8kzHN3/pw== X-Received: by 2002:a1c:c5cf:: with SMTP id v198mr503790wmf.84.1558988109293; Mon, 27 May 2019 13:15:09 -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.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 27 May 2019 13:15:08 -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 3/7] dmaengine: sun6i: Add a quirk for setting DRQ fields Date: Mon, 27 May 2019 22:14:55 +0200 Message-Id: <20190527201459.20130-4-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 possible DRQs. That means that current maximum of 31 DRQs is not enough anymore. Add a quirk which will set source and destination DRQ number. Signed-off-by: Jernej Skrabec Signed-off-by: Clément Péron --- drivers/dma/sun6i-dma.c | 48 ++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c index 7d9606997251..f725b93fd21a 100644 --- a/drivers/dma/sun6i-dma.c +++ b/drivers/dma/sun6i-dma.c @@ -68,15 +68,15 @@ #define DMA_CHAN_LLI_ADDR 0x08 #define DMA_CHAN_CUR_CFG 0x0c -#define DMA_CHAN_MAX_DRQ 0x1f -#define DMA_CHAN_CFG_SRC_DRQ(x) ((x) & DMA_CHAN_MAX_DRQ) +#define DMA_CHAN_MAX_DRQ_A31 0x1f +#define DMA_CHAN_CFG_SRC_DRQ_A31(x) ((x) & DMA_CHAN_MAX_DRQ_A31) #define DMA_CHAN_CFG_SRC_IO_MODE BIT(5) #define DMA_CHAN_CFG_SRC_LINEAR_MODE (0 << 5) #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(x) (DMA_CHAN_CFG_SRC_DRQ(x) << 16) +#define DMA_CHAN_CFG_DST_DRQ_A31(x) (DMA_CHAN_CFG_SRC_DRQ_A31(x) << 16) #define DMA_CHAN_CFG_DST_IO_MODE (DMA_CHAN_CFG_SRC_IO_MODE << 16) #define DMA_CHAN_CFG_DST_LINEAR_MODE (DMA_CHAN_CFG_SRC_LINEAR_MODE << 16) #define DMA_CHAN_CFG_DST_BURST_A31(x) (DMA_CHAN_CFG_SRC_BURST_A31(x) << 16) @@ -125,6 +125,7 @@ struct sun6i_dma_config { */ void (*clock_autogate_enable)(struct sun6i_dma_dev *); void (*set_burst_length)(u32 *p_cfg, s8 src_burst, s8 dst_burst); + void (*set_drq)(u32 *p_cfg, s8 src_drq, s8 dst_drq); u32 src_burst_lengths; u32 dst_burst_lengths; u32 src_addr_widths; @@ -311,6 +312,12 @@ static void sun6i_set_burst_length_h3(u32 *p_cfg, s8 src_burst, s8 dst_burst) DMA_CHAN_CFG_DST_BURST_H3(dst_burst); } +static void sun6i_set_drq_a31(u32 *p_cfg, s8 src_drq, s8 dst_drq) +{ + *p_cfg |= DMA_CHAN_CFG_SRC_DRQ_A31(src_drq) | + DMA_CHAN_CFG_DST_DRQ_A31(dst_drq); +} + static size_t sun6i_get_chan_size(struct sun6i_pchan *pchan) { struct sun6i_desc *txd = pchan->desc; @@ -634,14 +641,13 @@ static struct dma_async_tx_descriptor *sun6i_dma_prep_dma_memcpy( burst = convert_burst(8); width = convert_buswidth(DMA_SLAVE_BUSWIDTH_4_BYTES); - v_lli->cfg = DMA_CHAN_CFG_SRC_DRQ(DRQ_SDRAM) | - DMA_CHAN_CFG_DST_DRQ(DRQ_SDRAM) | - DMA_CHAN_CFG_DST_LINEAR_MODE | + v_lli->cfg = DMA_CHAN_CFG_DST_LINEAR_MODE | DMA_CHAN_CFG_SRC_LINEAR_MODE | DMA_CHAN_CFG_SRC_WIDTH(width) | DMA_CHAN_CFG_DST_WIDTH(width); sdev->cfg->set_burst_length(&v_lli->cfg, burst, burst); + sdev->cfg->set_drq(&v_lli->cfg, DRQ_SDRAM, DRQ_SDRAM); sun6i_dma_lli_add(NULL, v_lli, p_lli, txd); @@ -695,9 +701,8 @@ static struct dma_async_tx_descriptor *sun6i_dma_prep_slave_sg( v_lli->dst = sconfig->dst_addr; v_lli->cfg = lli_cfg | DMA_CHAN_CFG_DST_IO_MODE | - DMA_CHAN_CFG_SRC_LINEAR_MODE | - DMA_CHAN_CFG_SRC_DRQ(DRQ_SDRAM) | - DMA_CHAN_CFG_DST_DRQ(vchan->port); + DMA_CHAN_CFG_SRC_LINEAR_MODE; + sdev->cfg->set_drq(&v_lli->cfg, DRQ_SDRAM, vchan->port); dev_dbg(chan2dev(chan), "%s; chan: %d, dest: %pad, src: %pad, len: %u. flags: 0x%08lx\n", @@ -710,9 +715,8 @@ static struct dma_async_tx_descriptor *sun6i_dma_prep_slave_sg( v_lli->dst = sg_dma_address(sg); v_lli->cfg = lli_cfg | DMA_CHAN_CFG_DST_LINEAR_MODE | - DMA_CHAN_CFG_SRC_IO_MODE | - DMA_CHAN_CFG_DST_DRQ(DRQ_SDRAM) | - DMA_CHAN_CFG_SRC_DRQ(vchan->port); + DMA_CHAN_CFG_SRC_IO_MODE; + sdev->cfg->set_drq(&v_lli->cfg, vchan->port, DRQ_SDRAM); dev_dbg(chan2dev(chan), "%s; chan: %d, dest: %pad, src: %pad, len: %u. flags: 0x%08lx\n", @@ -780,17 +784,15 @@ static struct dma_async_tx_descriptor *sun6i_dma_prep_dma_cyclic( v_lli->dst = sconfig->dst_addr; v_lli->cfg = lli_cfg | DMA_CHAN_CFG_DST_IO_MODE | - DMA_CHAN_CFG_SRC_LINEAR_MODE | - DMA_CHAN_CFG_SRC_DRQ(DRQ_SDRAM) | - DMA_CHAN_CFG_DST_DRQ(vchan->port); + DMA_CHAN_CFG_SRC_LINEAR_MODE; + sdev->cfg->set_drq(&v_lli->cfg, DRQ_SDRAM, vchan->port); } else { v_lli->src = sconfig->src_addr; v_lli->dst = buf_addr + period_len * i; v_lli->cfg = lli_cfg | DMA_CHAN_CFG_DST_LINEAR_MODE | - DMA_CHAN_CFG_SRC_IO_MODE | - DMA_CHAN_CFG_DST_DRQ(DRQ_SDRAM) | - DMA_CHAN_CFG_SRC_DRQ(vchan->port); + DMA_CHAN_CFG_SRC_IO_MODE; + sdev->cfg->set_drq(&v_lli->cfg, vchan->port, DRQ_SDRAM); } prev = sun6i_dma_lli_add(prev, v_lli, p_lli, txd); @@ -1055,6 +1057,7 @@ static struct sun6i_dma_config sun6i_a31_dma_cfg = { .nr_max_requests = 30, .nr_max_vchans = 53, .set_burst_length = sun6i_set_burst_length_a31, + .set_drq = sun6i_set_drq_a31, .src_burst_lengths = BIT(1) | BIT(8), .dst_burst_lengths = BIT(1) | BIT(8), .src_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | @@ -1076,6 +1079,7 @@ static struct sun6i_dma_config sun8i_a23_dma_cfg = { .nr_max_vchans = 37, .clock_autogate_enable = sun6i_enable_clock_autogate_a23, .set_burst_length = sun6i_set_burst_length_a31, + .set_drq = sun6i_set_drq_a31, .src_burst_lengths = BIT(1) | BIT(8), .dst_burst_lengths = BIT(1) | BIT(8), .src_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | @@ -1092,6 +1096,7 @@ static struct sun6i_dma_config sun8i_a83t_dma_cfg = { .nr_max_vchans = 39, .clock_autogate_enable = sun6i_enable_clock_autogate_a23, .set_burst_length = sun6i_set_burst_length_a31, + .set_drq = sun6i_set_drq_a31, .src_burst_lengths = BIT(1) | BIT(8), .dst_burst_lengths = BIT(1) | BIT(8), .src_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | @@ -1115,6 +1120,7 @@ static struct sun6i_dma_config sun8i_h3_dma_cfg = { .nr_max_vchans = 34, .clock_autogate_enable = sun6i_enable_clock_autogate_h3, .set_burst_length = sun6i_set_burst_length_h3, + .set_drq = sun6i_set_drq_a31, .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) | @@ -1134,6 +1140,7 @@ static struct sun6i_dma_config sun8i_h3_dma_cfg = { static struct sun6i_dma_config sun50i_a64_dma_cfg = { .clock_autogate_enable = sun6i_enable_clock_autogate_h3, .set_burst_length = sun6i_set_burst_length_h3, + .set_drq = sun6i_set_drq_a31, .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) | @@ -1157,6 +1164,7 @@ static struct sun6i_dma_config sun8i_v3s_dma_cfg = { .nr_max_vchans = 24, .clock_autogate_enable = sun6i_enable_clock_autogate_a23, .set_burst_length = sun6i_set_burst_length_a31, + .set_drq = sun6i_set_drq_a31, .src_burst_lengths = BIT(1) | BIT(8), .dst_burst_lengths = BIT(1) | BIT(8), .src_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | @@ -1272,8 +1280,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); - sdc->max_request = DMA_CHAN_MAX_DRQ; + DMA_CHAN_MAX_DRQ_A31); + sdc->max_request = DMA_CHAN_MAX_DRQ_A31; } /* -- 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 5437FC072B1 for ; Mon, 27 May 2019 20:15:50 +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 1B758208C3 for ; Mon, 27 May 2019 20:15:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="CMWJ/g5q"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="g7yV4C4n" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1B758208C3 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=Xl2DDX5fHgR9b7ObvxH6FlWsueLKYDBCAjxJ65eQTHU=; b=CMWJ/g5qT9RgUH RgCUqzrbzNwalKS45PyTrGUFRDVHrkXhNKptu9KnNv92dLzPlvlamE1iYVrtTgj61/0ah7zStuk72 QzphvieJgerZNVcfPdgoNK7TRN3pCQjhJAdxSlk6BNgowlYgLh8WgvlzN4T+GrK12sU8LzM9NzwQU 3yn+SOClhn3jy0POqgEKA21Jd+d7bEWuU5WlJ/9Ceu8HglpomaC8lAvoITAWLTyV6VGMvxnxMlnKg YVS7qBr4/7Rz6sPGFm9vXmf7Nj2249iU+nLrhylzWcQvYoseDvKNspBtS08OyUbi5vuIjJ8Yl8rxq fSAQHXLajDAsrnJ//Pfw==; 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 1hVM23-00074j-4F; Mon, 27 May 2019 20:15:43 +0000 Received: from mail-wm1-x342.google.com ([2a00:1450:4864:20::342]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hVM1W-0006QW-SF for linux-arm-kernel@lists.infradead.org; Mon, 27 May 2019 20:15:16 +0000 Received: by mail-wm1-x342.google.com with SMTP id u78so529143wmu.5 for ; Mon, 27 May 2019 13:15:10 -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=9BvgB0y69e26fHuK5bMjd373fveSMgBcyqBpevwu2Pk=; b=g7yV4C4nR6jQkrnEHUzuhHEu7MT37q6Xug90j9dqaWfqLU72K0V5akejaTtrohvODs i1YLTlXtl4ygVsJLKh0Z4AwH0bb6zHXLkizvPOJPKW8vQk/unhEnEAig6uYekUX0ReXd itzr1R5v8raKj+pq0kzpcGpLXXpXlhjdDEKi8JYBZyuVVElultbZv1MkMtt4rDqJSOvz iFeVHYiYDW+MWgxgBFbJozyT3tN9RRwnxxvdsYwxNhvFYIJOdn9Do9t6hxFD4mmq0k1Y QjPbTcPN1HxB3u4mEtdbnzL+lKLTxOWbQWAv5biCxQ1wOzU6k8KAadbfnx8sp9m2pUG8 XZ8w== 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=9BvgB0y69e26fHuK5bMjd373fveSMgBcyqBpevwu2Pk=; b=qshs4WmxebhjL5sjBzJwGqX/2ZGo7QekikgNmQjDVHrahV1Cxiq/229XkHKDsBe8OX jJ4hWrSnHbZzQH9ALnNopkTb17gXnfDwzjqnUt7Ss0S70JG+bTbNjqABszdh1Bgkrgk/ nj/96YBWGfstb6nmf+n+LzrrudF7iqiraKJW+09vN0W0nDNm30q+kZ5LfbCyQ4HsKcl4 ZOL2OHWUYhudWHa0Rkvc9qno25e5Yyqn9t1i1d/Qi2Eblp/aHfXiiwQ5zZ3W15zO2fft wX0XalGcViqfmSadT6BBxn8UX6zTAVuA8MmM51pxIit+W/pYiB+gkkzaWrfpUu1n/l5M 8jXA== X-Gm-Message-State: APjAAAWNFLiVHDAL/GHisesfy7/TrNPdFL6oG/gXKcy7ro02nTQTd69l 5YRCBhcUE+ut5F69++vci7g= X-Google-Smtp-Source: APXvYqwWj1Jne/AvrBhR+KYfQenhvePNq7fRvDkUq38f7DeaAfwNu0S0CcBVsfFDjhwyc8kzHN3/pw== X-Received: by 2002:a1c:c5cf:: with SMTP id v198mr503790wmf.84.1558988109293; Mon, 27 May 2019 13:15:09 -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.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 27 May 2019 13:15:08 -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 3/7] dmaengine: sun6i: Add a quirk for setting DRQ fields Date: Mon, 27 May 2019 22:14:55 +0200 Message-Id: <20190527201459.20130-4-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_131511_160147_F42D0FA3 X-CRM114-Status: GOOD ( 15.53 ) 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 cyBtb3JlIHRoYW4gMzIgcG9zc2libGUgRFJRcy4gVGhhdCBtZWFucyB0aGF0IGN1cnJlbnQgbWF4 aW11bQpvZiAzMSBEUlFzIGlzIG5vdCBlbm91Z2ggYW55bW9yZS4KCkFkZCBhIHF1aXJrIHdoaWNo IHdpbGwgc2V0IHNvdXJjZSBhbmQgZGVzdGluYXRpb24gRFJRIG51bWJlci4KClNpZ25lZC1vZmYt Ynk6IEplcm5laiBTa3JhYmVjIDxqZXJuZWouc2tyYWJlY0BzaW9sLm5ldD4KU2lnbmVkLW9mZi1i eTogQ2zDqW1lbnQgUMOpcm9uIDxwZXJvbi5jbGVtQGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL2Rt YS9zdW42aS1kbWEuYyB8IDQ4ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvc3VuNmktZG1hLmMgYi9kcml2ZXJzL2RtYS9zdW42aS1k bWEuYwppbmRleCA3ZDk2MDY5OTcyNTEuLmY3MjViOTNmZDIxYSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9kbWEvc3VuNmktZG1hLmMKKysrIGIvZHJpdmVycy9kbWEvc3VuNmktZG1hLmMKQEAgLTY4LDE1 ICs2OCwxNSBAQAogI2RlZmluZSBETUFfQ0hBTl9MTElfQUREUgkweDA4CiAKICNkZWZpbmUgRE1B X0NIQU5fQ1VSX0NGRwkweDBjCi0jZGVmaW5lIERNQV9DSEFOX01BWF9EUlEJCTB4MWYKLSNkZWZp bmUgRE1BX0NIQU5fQ0ZHX1NSQ19EUlEoeCkJCSgoeCkgJiBETUFfQ0hBTl9NQVhfRFJRKQorI2Rl ZmluZSBETUFfQ0hBTl9NQVhfRFJRX0EzMQkJMHgxZgorI2RlZmluZSBETUFfQ0hBTl9DRkdfU1JD X0RSUV9BMzEoeCkJKCh4KSAmIERNQV9DSEFOX01BWF9EUlFfQTMxKQogI2RlZmluZSBETUFfQ0hB Tl9DRkdfU1JDX0lPX01PREUJQklUKDUpCiAjZGVmaW5lIERNQV9DSEFOX0NGR19TUkNfTElORUFS X01PREUJKDAgPDwgNSkKICNkZWZpbmUgRE1BX0NIQU5fQ0ZHX1NSQ19CVVJTVF9BMzEoeCkJKCgo eCkgJiAweDMpIDw8IDcpCiAjZGVmaW5lIERNQV9DSEFOX0NGR19TUkNfQlVSU1RfSDMoeCkJKCgo eCkgJiAweDMpIDw8IDYpCiAjZGVmaW5lIERNQV9DSEFOX0NGR19TUkNfV0lEVEgoeCkJKCgoeCkg JiAweDMpIDw8IDkpCiAKLSNkZWZpbmUgRE1BX0NIQU5fQ0ZHX0RTVF9EUlEoeCkJCShETUFfQ0hB Tl9DRkdfU1JDX0RSUSh4KSA8PCAxNikKKyNkZWZpbmUgRE1BX0NIQU5fQ0ZHX0RTVF9EUlFfQTMx KHgpCShETUFfQ0hBTl9DRkdfU1JDX0RSUV9BMzEoeCkgPDwgMTYpCiAjZGVmaW5lIERNQV9DSEFO X0NGR19EU1RfSU9fTU9ERQkoRE1BX0NIQU5fQ0ZHX1NSQ19JT19NT0RFIDw8IDE2KQogI2RlZmlu ZSBETUFfQ0hBTl9DRkdfRFNUX0xJTkVBUl9NT0RFCShETUFfQ0hBTl9DRkdfU1JDX0xJTkVBUl9N T0RFIDw8IDE2KQogI2RlZmluZSBETUFfQ0hBTl9DRkdfRFNUX0JVUlNUX0EzMSh4KQkoRE1BX0NI QU5fQ0ZHX1NSQ19CVVJTVF9BMzEoeCkgPDwgMTYpCkBAIC0xMjUsNiArMTI1LDcgQEAgc3RydWN0 IHN1bjZpX2RtYV9jb25maWcgewogCSAqLwogCXZvaWQgKCpjbG9ja19hdXRvZ2F0ZV9lbmFibGUp KHN0cnVjdCBzdW42aV9kbWFfZGV2ICopOwogCXZvaWQgKCpzZXRfYnVyc3RfbGVuZ3RoKSh1MzIg KnBfY2ZnLCBzOCBzcmNfYnVyc3QsIHM4IGRzdF9idXJzdCk7CisJdm9pZCAoKnNldF9kcnEpKHUz MiAqcF9jZmcsIHM4IHNyY19kcnEsIHM4IGRzdF9kcnEpOwogCXUzMiBzcmNfYnVyc3RfbGVuZ3Ro czsKIAl1MzIgZHN0X2J1cnN0X2xlbmd0aHM7CiAJdTMyIHNyY19hZGRyX3dpZHRoczsKQEAgLTMx MSw2ICszMTIsMTIgQEAgc3RhdGljIHZvaWQgc3VuNmlfc2V0X2J1cnN0X2xlbmd0aF9oMyh1MzIg KnBfY2ZnLCBzOCBzcmNfYnVyc3QsIHM4IGRzdF9idXJzdCkKIAkJICBETUFfQ0hBTl9DRkdfRFNU X0JVUlNUX0gzKGRzdF9idXJzdCk7CiB9CiAKK3N0YXRpYyB2b2lkIHN1bjZpX3NldF9kcnFfYTMx KHUzMiAqcF9jZmcsIHM4IHNyY19kcnEsIHM4IGRzdF9kcnEpCit7CisJKnBfY2ZnIHw9IERNQV9D SEFOX0NGR19TUkNfRFJRX0EzMShzcmNfZHJxKSB8CisJCSAgRE1BX0NIQU5fQ0ZHX0RTVF9EUlFf QTMxKGRzdF9kcnEpOworfQorCiBzdGF0aWMgc2l6ZV90IHN1bjZpX2dldF9jaGFuX3NpemUoc3Ry dWN0IHN1bjZpX3BjaGFuICpwY2hhbikKIHsKIAlzdHJ1Y3Qgc3VuNmlfZGVzYyAqdHhkID0gcGNo YW4tPmRlc2M7CkBAIC02MzQsMTQgKzY0MSwxMyBAQCBzdGF0aWMgc3RydWN0IGRtYV9hc3luY190 eF9kZXNjcmlwdG9yICpzdW42aV9kbWFfcHJlcF9kbWFfbWVtY3B5KAogCiAJYnVyc3QgPSBjb252 ZXJ0X2J1cnN0KDgpOwogCXdpZHRoID0gY29udmVydF9idXN3aWR0aChETUFfU0xBVkVfQlVTV0lE VEhfNF9CWVRFUyk7Ci0Jdl9sbGktPmNmZyA9IERNQV9DSEFOX0NGR19TUkNfRFJRKERSUV9TRFJB TSkgfAotCQlETUFfQ0hBTl9DRkdfRFNUX0RSUShEUlFfU0RSQU0pIHwKLQkJRE1BX0NIQU5fQ0ZH X0RTVF9MSU5FQVJfTU9ERSB8CisJdl9sbGktPmNmZyA9IERNQV9DSEFOX0NGR19EU1RfTElORUFS X01PREUgfAogCQlETUFfQ0hBTl9DRkdfU1JDX0xJTkVBUl9NT0RFIHwKIAkJRE1BX0NIQU5fQ0ZH X1NSQ19XSURUSCh3aWR0aCkgfAogCQlETUFfQ0hBTl9DRkdfRFNUX1dJRFRIKHdpZHRoKTsKIAog CXNkZXYtPmNmZy0+c2V0X2J1cnN0X2xlbmd0aCgmdl9sbGktPmNmZywgYnVyc3QsIGJ1cnN0KTsK KwlzZGV2LT5jZmctPnNldF9kcnEoJnZfbGxpLT5jZmcsIERSUV9TRFJBTSwgRFJRX1NEUkFNKTsK IAogCXN1bjZpX2RtYV9sbGlfYWRkKE5VTEwsIHZfbGxpLCBwX2xsaSwgdHhkKTsKIApAQCAtNjk1 LDkgKzcwMSw4IEBAIHN0YXRpYyBzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKnN1bjZp X2RtYV9wcmVwX3NsYXZlX3NnKAogCQkJdl9sbGktPmRzdCA9IHNjb25maWctPmRzdF9hZGRyOwog CQkJdl9sbGktPmNmZyA9IGxsaV9jZmcgfAogCQkJCURNQV9DSEFOX0NGR19EU1RfSU9fTU9ERSB8 Ci0JCQkJRE1BX0NIQU5fQ0ZHX1NSQ19MSU5FQVJfTU9ERSB8Ci0JCQkJRE1BX0NIQU5fQ0ZHX1NS Q19EUlEoRFJRX1NEUkFNKSB8Ci0JCQkJRE1BX0NIQU5fQ0ZHX0RTVF9EUlEodmNoYW4tPnBvcnQp OworCQkJCURNQV9DSEFOX0NGR19TUkNfTElORUFSX01PREU7CisJCQlzZGV2LT5jZmctPnNldF9k cnEoJnZfbGxpLT5jZmcsIERSUV9TRFJBTSwgdmNoYW4tPnBvcnQpOwogCiAJCQlkZXZfZGJnKGNo YW4yZGV2KGNoYW4pLAogCQkJCSIlczsgY2hhbjogJWQsIGRlc3Q6ICVwYWQsIHNyYzogJXBhZCwg bGVuOiAldS4gZmxhZ3M6IDB4JTA4bHhcbiIsCkBAIC03MTAsOSArNzE1LDggQEAgc3RhdGljIHN0 cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciAqc3VuNmlfZG1hX3ByZXBfc2xhdmVfc2coCiAJ CQl2X2xsaS0+ZHN0ID0gc2dfZG1hX2FkZHJlc3Moc2cpOwogCQkJdl9sbGktPmNmZyA9IGxsaV9j ZmcgfAogCQkJCURNQV9DSEFOX0NGR19EU1RfTElORUFSX01PREUgfAotCQkJCURNQV9DSEFOX0NG R19TUkNfSU9fTU9ERSB8Ci0JCQkJRE1BX0NIQU5fQ0ZHX0RTVF9EUlEoRFJRX1NEUkFNKSB8Ci0J CQkJRE1BX0NIQU5fQ0ZHX1NSQ19EUlEodmNoYW4tPnBvcnQpOworCQkJCURNQV9DSEFOX0NGR19T UkNfSU9fTU9ERTsKKwkJCXNkZXYtPmNmZy0+c2V0X2RycSgmdl9sbGktPmNmZywgdmNoYW4tPnBv cnQsIERSUV9TRFJBTSk7CiAKIAkJCWRldl9kYmcoY2hhbjJkZXYoY2hhbiksCiAJCQkJIiVzOyBj aGFuOiAlZCwgZGVzdDogJXBhZCwgc3JjOiAlcGFkLCBsZW46ICV1LiBmbGFnczogMHglMDhseFxu IiwKQEAgLTc4MCwxNyArNzg0LDE1IEBAIHN0YXRpYyBzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2Ny aXB0b3IgKnN1bjZpX2RtYV9wcmVwX2RtYV9jeWNsaWMoCiAJCQl2X2xsaS0+ZHN0ID0gc2NvbmZp Zy0+ZHN0X2FkZHI7CiAJCQl2X2xsaS0+Y2ZnID0gbGxpX2NmZyB8CiAJCQkJRE1BX0NIQU5fQ0ZH X0RTVF9JT19NT0RFIHwKLQkJCQlETUFfQ0hBTl9DRkdfU1JDX0xJTkVBUl9NT0RFIHwKLQkJCQlE TUFfQ0hBTl9DRkdfU1JDX0RSUShEUlFfU0RSQU0pIHwKLQkJCQlETUFfQ0hBTl9DRkdfRFNUX0RS USh2Y2hhbi0+cG9ydCk7CisJCQkJRE1BX0NIQU5fQ0ZHX1NSQ19MSU5FQVJfTU9ERTsKKwkJCXNk ZXYtPmNmZy0+c2V0X2RycSgmdl9sbGktPmNmZywgRFJRX1NEUkFNLCB2Y2hhbi0+cG9ydCk7CiAJ CX0gZWxzZSB7CiAJCQl2X2xsaS0+c3JjID0gc2NvbmZpZy0+c3JjX2FkZHI7CiAJCQl2X2xsaS0+ ZHN0ID0gYnVmX2FkZHIgKyBwZXJpb2RfbGVuICogaTsKIAkJCXZfbGxpLT5jZmcgPSBsbGlfY2Zn IHwKIAkJCQlETUFfQ0hBTl9DRkdfRFNUX0xJTkVBUl9NT0RFIHwKLQkJCQlETUFfQ0hBTl9DRkdf U1JDX0lPX01PREUgfAotCQkJCURNQV9DSEFOX0NGR19EU1RfRFJRKERSUV9TRFJBTSkgfAotCQkJ CURNQV9DSEFOX0NGR19TUkNfRFJRKHZjaGFuLT5wb3J0KTsKKwkJCQlETUFfQ0hBTl9DRkdfU1JD X0lPX01PREU7CisJCQlzZGV2LT5jZmctPnNldF9kcnEoJnZfbGxpLT5jZmcsIHZjaGFuLT5wb3J0 LCBEUlFfU0RSQU0pOwogCQl9CiAKIAkJcHJldiA9IHN1bjZpX2RtYV9sbGlfYWRkKHByZXYsIHZf bGxpLCBwX2xsaSwgdHhkKTsKQEAgLTEwNTUsNiArMTA1Nyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3Vu NmlfZG1hX2NvbmZpZyBzdW42aV9hMzFfZG1hX2NmZyA9IHsKIAkubnJfbWF4X3JlcXVlc3RzID0g MzAsCiAJLm5yX21heF92Y2hhbnMgICA9IDUzLAogCS5zZXRfYnVyc3RfbGVuZ3RoID0gc3VuNmlf c2V0X2J1cnN0X2xlbmd0aF9hMzEsCisJLnNldF9kcnEgICAgICAgICAgPSBzdW42aV9zZXRfZHJx X2EzMSwKIAkuc3JjX2J1cnN0X2xlbmd0aHMgPSBCSVQoMSkgfCBCSVQoOCksCiAJLmRzdF9idXJz dF9sZW5ndGhzID0gQklUKDEpIHwgQklUKDgpLAogCS5zcmNfYWRkcl93aWR0aHMgICA9IEJJVChE TUFfU0xBVkVfQlVTV0lEVEhfMV9CWVRFKSB8CkBAIC0xMDc2LDYgKzEwNzksNyBAQCBzdGF0aWMg c3RydWN0IHN1bjZpX2RtYV9jb25maWcgc3VuOGlfYTIzX2RtYV9jZmcgPSB7CiAJLm5yX21heF92 Y2hhbnMgICA9IDM3LAogCS5jbG9ja19hdXRvZ2F0ZV9lbmFibGUgPSBzdW42aV9lbmFibGVfY2xv Y2tfYXV0b2dhdGVfYTIzLAogCS5zZXRfYnVyc3RfbGVuZ3RoID0gc3VuNmlfc2V0X2J1cnN0X2xl bmd0aF9hMzEsCisJLnNldF9kcnEgICAgICAgICAgPSBzdW42aV9zZXRfZHJxX2EzMSwKIAkuc3Jj X2J1cnN0X2xlbmd0aHMgPSBCSVQoMSkgfCBCSVQoOCksCiAJLmRzdF9idXJzdF9sZW5ndGhzID0g QklUKDEpIHwgQklUKDgpLAogCS5zcmNfYWRkcl93aWR0aHMgICA9IEJJVChETUFfU0xBVkVfQlVT V0lEVEhfMV9CWVRFKSB8CkBAIC0xMDkyLDYgKzEwOTYsNyBAQCBzdGF0aWMgc3RydWN0IHN1bjZp X2RtYV9jb25maWcgc3VuOGlfYTgzdF9kbWFfY2ZnID0gewogCS5ucl9tYXhfdmNoYW5zICAgPSAz OSwKIAkuY2xvY2tfYXV0b2dhdGVfZW5hYmxlID0gc3VuNmlfZW5hYmxlX2Nsb2NrX2F1dG9nYXRl X2EyMywKIAkuc2V0X2J1cnN0X2xlbmd0aCA9IHN1bjZpX3NldF9idXJzdF9sZW5ndGhfYTMxLAor CS5zZXRfZHJxICAgICAgICAgID0gc3VuNmlfc2V0X2RycV9hMzEsCiAJLnNyY19idXJzdF9sZW5n dGhzID0gQklUKDEpIHwgQklUKDgpLAogCS5kc3RfYnVyc3RfbGVuZ3RocyA9IEJJVCgxKSB8IEJJ VCg4KSwKIAkuc3JjX2FkZHJfd2lkdGhzICAgPSBCSVQoRE1BX1NMQVZFX0JVU1dJRFRIXzFfQllU RSkgfApAQCAtMTExNSw2ICsxMTIwLDcgQEAgc3RhdGljIHN0cnVjdCBzdW42aV9kbWFfY29uZmln IHN1bjhpX2gzX2RtYV9jZmcgPSB7CiAJLm5yX21heF92Y2hhbnMgICA9IDM0LAogCS5jbG9ja19h dXRvZ2F0ZV9lbmFibGUgPSBzdW42aV9lbmFibGVfY2xvY2tfYXV0b2dhdGVfaDMsCiAJLnNldF9i dXJzdF9sZW5ndGggPSBzdW42aV9zZXRfYnVyc3RfbGVuZ3RoX2gzLAorCS5zZXRfZHJxICAgICAg ICAgID0gc3VuNmlfc2V0X2RycV9hMzEsCiAJLnNyY19idXJzdF9sZW5ndGhzID0gQklUKDEpIHwg QklUKDQpIHwgQklUKDgpIHwgQklUKDE2KSwKIAkuZHN0X2J1cnN0X2xlbmd0aHMgPSBCSVQoMSkg fCBCSVQoNCkgfCBCSVQoOCkgfCBCSVQoMTYpLAogCS5zcmNfYWRkcl93aWR0aHMgICA9IEJJVChE TUFfU0xBVkVfQlVTV0lEVEhfMV9CWVRFKSB8CkBAIC0xMTM0LDYgKzExNDAsNyBAQCBzdGF0aWMg c3RydWN0IHN1bjZpX2RtYV9jb25maWcgc3VuOGlfaDNfZG1hX2NmZyA9IHsKIHN0YXRpYyBzdHJ1 Y3Qgc3VuNmlfZG1hX2NvbmZpZyBzdW41MGlfYTY0X2RtYV9jZmcgPSB7CiAJLmNsb2NrX2F1dG9n YXRlX2VuYWJsZSA9IHN1bjZpX2VuYWJsZV9jbG9ja19hdXRvZ2F0ZV9oMywKIAkuc2V0X2J1cnN0 X2xlbmd0aCA9IHN1bjZpX3NldF9idXJzdF9sZW5ndGhfaDMsCisJLnNldF9kcnEgICAgICAgICAg PSBzdW42aV9zZXRfZHJxX2EzMSwKIAkuc3JjX2J1cnN0X2xlbmd0aHMgPSBCSVQoMSkgfCBCSVQo NCkgfCBCSVQoOCkgfCBCSVQoMTYpLAogCS5kc3RfYnVyc3RfbGVuZ3RocyA9IEJJVCgxKSB8IEJJ VCg0KSB8IEJJVCg4KSB8IEJJVCgxNiksCiAJLnNyY19hZGRyX3dpZHRocyAgID0gQklUKERNQV9T TEFWRV9CVVNXSURUSF8xX0JZVEUpIHwKQEAgLTExNTcsNiArMTE2NCw3IEBAIHN0YXRpYyBzdHJ1 Y3Qgc3VuNmlfZG1hX2NvbmZpZyBzdW44aV92M3NfZG1hX2NmZyA9IHsKIAkubnJfbWF4X3ZjaGFu cyAgID0gMjQsCiAJLmNsb2NrX2F1dG9nYXRlX2VuYWJsZSA9IHN1bjZpX2VuYWJsZV9jbG9ja19h dXRvZ2F0ZV9hMjMsCiAJLnNldF9idXJzdF9sZW5ndGggPSBzdW42aV9zZXRfYnVyc3RfbGVuZ3Ro X2EzMSwKKwkuc2V0X2RycSAgICAgICAgICA9IHN1bjZpX3NldF9kcnFfYTMxLAogCS5zcmNfYnVy c3RfbGVuZ3RocyA9IEJJVCgxKSB8IEJJVCg4KSwKIAkuZHN0X2J1cnN0X2xlbmd0aHMgPSBCSVQo MSkgfCBCSVQoOCksCiAJLnNyY19hZGRyX3dpZHRocyAgID0gQklUKERNQV9TTEFWRV9CVVNXSURU SF8xX0JZVEUpIHwKQEAgLTEyNzIsOCArMTI4MCw4IEBAIHN0YXRpYyBpbnQgc3VuNmlfZG1hX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJcmV0ID0gb2ZfcHJvcGVydHlfcmVh ZF91MzIobnAsICJkbWEtcmVxdWVzdHMiLCAmc2RjLT5tYXhfcmVxdWVzdCk7CiAJaWYgKHJldCAm JiAhc2RjLT5tYXhfcmVxdWVzdCkgewogCQlkZXZfaW5mbygmcGRldi0+ZGV2LCAiTWlzc2luZyBk bWEtcmVxdWVzdHMsIHVzaW5nICV1LlxuIiwKLQkJCSBETUFfQ0hBTl9NQVhfRFJRKTsKLQkJc2Rj LT5tYXhfcmVxdWVzdCA9IERNQV9DSEFOX01BWF9EUlE7CisJCQkgRE1BX0NIQU5fTUFYX0RSUV9B MzEpOworCQlzZGMtPm1heF9yZXF1ZXN0ID0gRE1BX0NIQU5fTUFYX0RSUV9BMzE7CiAJfQogCiAJ LyoKLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LWFybS1rZXJuZWwK