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 356CFC282E5 for ; Sat, 25 May 2019 16:39:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id F037621707 for ; Sat, 25 May 2019 16:39:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mTcvddz0" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727122AbfEYQi5 (ORCPT ); Sat, 25 May 2019 12:38:57 -0400 Received: from mail-wm1-f65.google.com ([209.85.128.65]:56299 "EHLO mail-wm1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727296AbfEYQic (ORCPT ); Sat, 25 May 2019 12:38:32 -0400 Received: by mail-wm1-f65.google.com with SMTP id x64so12192836wmb.5; Sat, 25 May 2019 09:38:29 -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=mTcvddz0XcibZ3dW3f4N8uXFhnz7fogCCDUIFdrndnnXbdTikw3uZG0UtL5RQlWKOs 4tdMjLOsysWv7fH+K6RvwgniT98XlzPPGLlXYZyjVmJNhQ5GZ5pBdgtS9bpj6c8XpYv2 wuwGiKfERiDipuLYHpCPLWoFMsRDKMInxJSfvS2vJUCDZroPN++/mnwPxFYvd0QXTT1G IAMjK5jQbq3lf1uCkOodzavLWQ7vaLjW77M/nGyjeZ+7VY0IrlSEM40h5P8qWhGT6m9H nbfjdbf2kHESORj8b/LBwtWPG/TXv/vEMCqNisa36DTOPvU9sMJgPxsr2bfe1aZxR6+P Q9QA== 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=KwBLKxrlbEVlbKcW/rTmZn1HTaNFbFBgvsdSzaMx6+nQoQOTFtkDb/EyDYAvaPfbDb mtOsNN0UmdR6kniHBdCnVhMy8KawmVr8E2kvwjoRwcHcL0SH8ua+1sOSLCV/3Xx3jiEL 0aEeVwCv9KgwfFs0hrpuiLZG5ykrR58oKa5haHWVoixjLu0FZtCccNMx9vrXcaFPoKQP laDHLEw7V3uOyp4iW32FX/M5D1QyfzJh9j+beeYGBmiEXvC6md7EDa/ddU3chJl/H1BE 7H5nxX72cFVzQl8A4ceuiokc08BX7GAVlE9D3USu8KkdQtqcZ6I6tWiMH9hm33vq4xJp +4hQ== X-Gm-Message-State: APjAAAU1NhDqTUbKnurnDIk/5T17yr7T4SxiZh/WKJVaO1L2/RZmVAp0 XuhQsfAHLXyEVIfYfSQJEfU= X-Google-Smtp-Source: APXvYqyIDb7uyjWR/w+plQC+2B2pKmgtuDoNw4hZKbBn1h/VgoBnSi985a57pCweTPaf1dOwcsDB7w== X-Received: by 2002:a05:600c:288:: with SMTP id 8mr11739711wmk.63.1558802309076; Sat, 25 May 2019 09:38:29 -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.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 25 May 2019 09:38:28 -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 3/7] dmaengine: sun6i: Add a quirk for setting DRQ fields Date: Sat, 25 May 2019 18:38:15 +0200 Message-Id: <20190525163819.21055-4-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 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 18154C07542 for ; Sat, 25 May 2019 16:39:13 +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 E1B9721707 for ; Sat, 25 May 2019 16:39:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="YfuUSuDY"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mTcvddz0" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E1B9721707 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=YfuUSuDYTpev1y 2eNitGcG8A/j3Al/bBPi05u5rrfI3qFk8UOJjBo+pA1UXudNJLLPh53kHmia/SSNpLekOkSBg7Nx1 EEJavAo5MvhCDBSUnyF7qBOYZXGQRPYAMgwMAbv4oCnz9YyXtrRAAZxpLJve59pOC2E5el1ZrzZYV 6zK/VKNO/qfqe4b6oPn9HBju9Y6iZ4KQFzfnjvwV1G3AJI1Cjyrb+MAHfPXRsICS10qdvxFpNM1Zv METxYicI5t5CC3spKdMfWCOFxKM/wy9+D8Nmqpnve80s3vQ0hy+q8vjuyb4meeiKhygYhgD/FjXV7 EHyOucW9krJFvTjBCkyQ==; 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 1hUZhJ-0004IP-Hl; Sat, 25 May 2019 16:39:05 +0000 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hUZgk-0003bP-Mp for linux-arm-kernel@lists.infradead.org; Sat, 25 May 2019 16:38:32 +0000 Received: by mail-wm1-x343.google.com with SMTP id y3so12234365wmm.2 for ; Sat, 25 May 2019 09:38:30 -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=mTcvddz0XcibZ3dW3f4N8uXFhnz7fogCCDUIFdrndnnXbdTikw3uZG0UtL5RQlWKOs 4tdMjLOsysWv7fH+K6RvwgniT98XlzPPGLlXYZyjVmJNhQ5GZ5pBdgtS9bpj6c8XpYv2 wuwGiKfERiDipuLYHpCPLWoFMsRDKMInxJSfvS2vJUCDZroPN++/mnwPxFYvd0QXTT1G IAMjK5jQbq3lf1uCkOodzavLWQ7vaLjW77M/nGyjeZ+7VY0IrlSEM40h5P8qWhGT6m9H nbfjdbf2kHESORj8b/LBwtWPG/TXv/vEMCqNisa36DTOPvU9sMJgPxsr2bfe1aZxR6+P Q9QA== 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=fyLkmcb5F5FSFyvhtfhRNJG5Xz5FwW6Sqso2HNDrw9XfoX3KSgTgh/Dg+Y5+QQ0cOp 2uQ65tVvJsG/IrC6xBnErUIpUHWZNHsjJ4ScDm6ppQVhv6BwKr84twx8lmuNmQYcazpm jU12zbtRlbo+mc9vVHFgNVmkw15lo/fvIXgbd6RmeSgoAgsQX1o6Ds6Go+c+fGJcbr4Q Luoav2SXxVn+Q3YhWNZXi9DJ7fp9HA7nni1WfD7BESo2tokgy+utGDHFr/mLOBxK9d3I srlpcHtnsPHelbjlvQJ6excLAkYzGVab77N0J+LRFS9PFQU1ALY/B89krHRdtdPDRkzx +0dQ== X-Gm-Message-State: APjAAAX3K1JNieKzY3qZqWvT1ZJNNyE/CAqfehuTmpXB1KJSdawc4885 vmAyFqcLjQ9XCLLNX6P2Z6Q= X-Google-Smtp-Source: APXvYqyIDb7uyjWR/w+plQC+2B2pKmgtuDoNw4hZKbBn1h/VgoBnSi985a57pCweTPaf1dOwcsDB7w== X-Received: by 2002:a05:600c:288:: with SMTP id 8mr11739711wmk.63.1558802309076; Sat, 25 May 2019 09:38:29 -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.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 25 May 2019 09:38:28 -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 3/7] dmaengine: sun6i: Add a quirk for setting DRQ fields Date: Sat, 25 May 2019 18:38:15 +0200 Message-Id: <20190525163819.21055-4-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_093830_744747_AA388E17 X-CRM114-Status: GOOD ( 15.38 ) 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