From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752627AbcBAG5G (ORCPT ); Mon, 1 Feb 2016 01:57:06 -0500 Received: from mail-pf0-f194.google.com ([209.85.192.194]:35116 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751315AbcBAG5D (ORCPT ); Mon, 1 Feb 2016 01:57:03 -0500 Subject: Re: [PATCH v7 0/9] Fix broken DMAFLUSHP on Rockchips platform To: Vinod Koul References: <1453460812-8498-1-git-send-email-wxt@rock-chips.com> Cc: Caesar Wang , Heiko Stuebner , Mark Rutland , devicetree@vger.kernel.org, Russell King , Pawel Moll , Ian Campbell , linux-kernel@vger.kernel.org, shawn.lin@rock-chips.com, dianders@chromium.org, Rob Herring , linux-spi@vger.kernel.org, linux-rockchip@lists.infradead.org, Mark Brown , Kumar Gala , dmaengine@vger.kernel.org, Dan Williams , Sonny Rao , linux-arm-kernel@lists.infradead.org From: Caesar Wang Message-ID: <56AF01B6.6030204@gmail.com> Date: Mon, 1 Feb 2016 14:56:54 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0 MIME-Version: 1.0 In-Reply-To: <1453460812-8498-1-git-send-email-wxt@rock-chips.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello Vinod, Is there any chance apply the DMA patches?:-) - Caesar 在 2016年01月22日 19:06, Caesar Wang 写道: > This series patches are apply on linus master branch. > Okay, this series patches verified on my github. > (https://github.com/Caesar-github/rockchip/commits/for-dma-tests) > > Linux version 4.4.0+ (wxt@ubuntu) (Ubuntu/Linaro 4.7.3-12ubuntu1) ) #14 > SMP Fri Jan 22 18:13:12 CST 2016 > > The perious version 6 from Shawn. > (http://www.spinics.net/lists/dmaengine/msg06606.html) > I pick them up to go on upstream since Shawn hasn't much time to track them. > ---- > > The purpose of the DMAFLUSHP instruction: > - Tell the peripheral to clear its status and control registers. > - Send a message to the peripheral to resend its level status. > > There are 3 timings described in PL330 Technical Reference Manual: > - Timing 1: Burst request, can work well without DMAFLUSHP. > - Timing 2: Single and burst request, DMAC will ignore the single > transfer request. This timing happens if there are single > and burst request. > - Timing 3: Single transfers for a burst request, DMAC should signals > datype to request the peripheral to flush the contents of > any control registers. This timing happens if there is > not enough MFIFO to places the burst data. > > A peripheral may signal a DMA request during the execution of > DMAFLUSHP instruction, that cause DMA request being ignored by DMAC. > > But DMAC and all peripherals on RK3X SoCs DO NOT support DMAFLUSHP. > It can't send a message to the peripheral to resend DMA request, > and the peripheral can't acknowledge a flush request from DMAC. > So all DMA requests should NOT be ignored by DMAC, and DMAC will not > notify the peripheral to flush. > > To fix this problem, we need: > - Do NOT execute DMAFLUSHP instruction. > - Timing 2 and timing 3 should not happen. > > Because on RK3X SoCs, there are 6 or below channels and 32 MFIFO depth > for DMAC_BUS, and 8 channels and 64 MFIFO depth for DMAC_PERI, it is > impossible to hit the timing 3 if burst length is equal or less than 4. > > Since the request type signal by the peripheral can only be set by > software. We can set Rockchip Soc's GRF_PERIDMAC_CON0[2:1] to select single > or burst request, if it is set b01, all of the peripharals will signal a brust > request. So the timing 2 will not happen, too. > > So DMAC on RK3X can support single or burst transfer, but can't support > mixed transfer. > > Because burst transfer is more efficient than single transfer, this is > confirmed by our ASIC team, who strongly suggest to use burst transfer. > And this is confirmed by Addy's test on RK3288-Pink2 board, the speed of > spi flash burst transfer will increase about two times than single transfer. > Also, I have tested dw_mmc with pl330 on RK3188 platform to double confirm > the result. That means burst transfer is reansonable. > > So we need a quirk not to execute DMAFLUSHP instruction and to use burst > transfer. > > Note: > - The Rockchip Soc default value of GRF_PERIDMAC_CON0[2:1] is b01. To > support brust transfer, these bits should not be changed in bootloader. > > Todo: > remove the patches releated to i2s, that will send them at later. > - https://patchwork.kernel.org/patch/7399581/ > - https://patchwork.kernel.org/patch/7399671/ > > > Changes in v7: > - As vinod comments, fix the subsystem name. > - modify the subject to be better match. > - fix the subsystem. > - fix the subject. > - fix the subject. > > Changes in v6: > - remove expose quirk and add dma max_burst caps for clients > - remove expose quirks and add max_burst for dmaengine > - remove quirks and get dma caps in order to limit burst > > Changes in v5: > - add Mark's tag for spi changes > - remove unnecessary whitespace change > - use switch statement for i2s quirk > > Changes in v4: > - remove spi & i2s dts changes and query quirk from dmaengine API > suggeseted by Mark. > - fix typo > - Add dmaengine_get_quirk hook and implement it for pl330 > > Changes in v3: > - add Sunny's tag > - add more rockchip drivers' changes in this patchset > - add Reviewed-by: Sonny Rao > - add Reviewed-by: Sonny Rao > - add Reviewed-by: Sonny Rao > > Changes in v2: > - amend the author > - reorder the patches suggested by Doug > - add Reviewed-by: Doug Anderson for > rk3288.dtsi patch and arm-pl330.txt patch > - add Reviewed-by: Doug Anderson > - amend the author > - fix Olof's mail address > - amend the author > - add Reviewed-by: Doug Anderson > - amend Olof's mail address > > Changes in v1: > - rename broken-no-flushp to "arm,pl330-broken-no-flushp" suggested > by Krzysztof. > - add From original author. > - remove Sunny's tag > - rename broken-no-flushp to "arm,pl330-broken-no-flushp" suggested > by Krzysztof. > - rename broken-no-flushp to "arm,pl330-broken-no-flushp" suggested > by Krzysztof. > - remove Sunny's tag > - rename broken-no-flushp to "arm,pl330-broken-no-flushp" suggested > by Krzysztof. > - remove Sunny's tag > - rename broken-no-flushp to "arm,pl330-broken-no-flushp" suggested > by Krzysztof. > > Addy Ke (3): > dmaengine: pl330: add quirk for broken no flushp > ARM: dts: Add arm, pl330-broken-no-flushp quirk for rk3288 platform > spi: rockchip: modify DMA max burst to 1 > > Boojin Kim (1): > dmaengine: pl330: support burst mode for dev-to-mem and mem-to-dev > transmit > > Caesar Wang (1): > ARM: dts: add pl330-broken-no-flushp quirk for rk3036 SoCs > > Shawn Lin (4): > dt/bindings: arm-pl330: add description of arm, pl330-broken-no-flushp > ARM: dts: Add arm, pl330-broken-no-flushp quirk for rk3xxx platform > dmaengine: core: expose max burst capability to clients > dmaengine: pl330: add max burst for dmaengine > > .../devicetree/bindings/dma/arm-pl330.txt | 1 + > arch/arm/boot/dts/rk3036.dtsi | 1 + > arch/arm/boot/dts/rk3288.dtsi | 3 + > arch/arm/boot/dts/rk3xxx.dtsi | 3 + > drivers/dma/dmaengine.c | 1 + > drivers/dma/pl330.c | 106 +++++++++++++++------ > drivers/spi/spi-rockchip.c | 12 ++- > include/linux/dmaengine.h | 4 + > 8 files changed, 99 insertions(+), 32 deletions(-) > -- Thanks, Caesar From mboxrd@z Thu Jan 1 00:00:00 1970 From: Caesar Wang Subject: Re: [PATCH v7 0/9] Fix broken DMAFLUSHP on Rockchips platform Date: Mon, 1 Feb 2016 14:56:54 +0800 Message-ID: <56AF01B6.6030204@gmail.com> References: <1453460812-8498-1-git-send-email-wxt@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1453460812-8498-1-git-send-email-wxt-TNX95d0MmH7DzftRWevZcw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+glpar-linux-rockchip=m.gmane.org-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org To: Vinod Koul Cc: Mark Rutland , devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Russell King , Heiko Stuebner , Pawel Moll , Ian Campbell , shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, Rob Herring , Mark Brown , Kumar Gala , dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Dan Williams , linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Sonny Rao , linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, Caesar Wang List-Id: devicetree@vger.kernel.org SGVsbG8gVmlub2QsCgpJcyB0aGVyZSBhbnkgY2hhbmNlIGFwcGx5IHRoZSBETUEgcGF0Y2hlcz86 LSkKCgotCkNhZXNhcgoK5ZyoIDIwMTblubQwMeaciDIy5pelIDE5OjA2LCBDYWVzYXIgV2FuZyDl hpnpgZM6Cj4gVGhpcyBzZXJpZXMgcGF0Y2hlcyBhcmUgYXBwbHkgb24gbGludXMgbWFzdGVyIGJy YW5jaC4KPiBPa2F5LCB0aGlzIHNlcmllcyBwYXRjaGVzIHZlcmlmaWVkIG9uIG15IGdpdGh1Yi4K PiAoaHR0cHM6Ly9naXRodWIuY29tL0NhZXNhci1naXRodWIvcm9ja2NoaXAvY29tbWl0cy9mb3It ZG1hLXRlc3RzKQo+Cj4gTGludXggdmVyc2lvbiA0LjQuMCsgKHd4dEB1YnVudHUpICAoVWJ1bnR1 L0xpbmFybyA0LjcuMy0xMnVidW50dTEpICkgIzE0Cj4gU01QIEZyaSBKYW4gMjIgMTg6MTM6MTIg Q1NUIDIwMTYKPgo+IFRoZSBwZXJpb3VzIHZlcnNpb24gNiBmcm9tIFNoYXduLgo+IChodHRwOi8v d3d3LnNwaW5pY3MubmV0L2xpc3RzL2RtYWVuZ2luZS9tc2cwNjYwNi5odG1sKQo+IEkgcGljayB0 aGVtIHVwIHRvIGdvIG9uIHVwc3RyZWFtIHNpbmNlIFNoYXduIGhhc24ndCBtdWNoIHRpbWUgdG8g dHJhY2sgdGhlbS4KPiAtLS0tCj4KPiBUaGUgcHVycG9zZSBvZiB0aGUgRE1BRkxVU0hQIGluc3Ry dWN0aW9uOgo+IC0gVGVsbCB0aGUgcGVyaXBoZXJhbCB0byBjbGVhciBpdHMgc3RhdHVzIGFuZCBj b250cm9sIHJlZ2lzdGVycy4KPiAtIFNlbmQgYSBtZXNzYWdlIHRvIHRoZSBwZXJpcGhlcmFsIHRv IHJlc2VuZCBpdHMgbGV2ZWwgc3RhdHVzLgo+Cj4gVGhlcmUgYXJlIDMgdGltaW5ncyBkZXNjcmli ZWQgaW4gUEwzMzAgVGVjaG5pY2FsIFJlZmVyZW5jZSBNYW51YWw6Cj4gLSBUaW1pbmcgMTogQnVy c3QgcmVxdWVzdCwgY2FuIHdvcmsgd2VsbCB3aXRob3V0IERNQUZMVVNIUC4KPiAtIFRpbWluZyAy OiBTaW5nbGUgYW5kIGJ1cnN0IHJlcXVlc3QsIERNQUMgd2lsbCBpZ25vcmUgdGhlIHNpbmdsZQo+ ICAgICAgICAgICAgICB0cmFuc2ZlciByZXF1ZXN0LiBUaGlzIHRpbWluZyBoYXBwZW5zIGlmIHRo ZXJlIGFyZSBzaW5nbGUKPiAgICAgICAgICAgICAgYW5kIGJ1cnN0IHJlcXVlc3QuCj4gLSBUaW1p bmcgMzogU2luZ2xlIHRyYW5zZmVycyBmb3IgYSBidXJzdCByZXF1ZXN0LCBETUFDIHNob3VsZCBz aWduYWxzCj4gICAgICAgICAgICAgIGRhdHlwZSB0byByZXF1ZXN0IHRoZSBwZXJpcGhlcmFsIHRv IGZsdXNoIHRoZSBjb250ZW50cyBvZgo+ICAgICAgICAgICAgICBhbnkgY29udHJvbCByZWdpc3Rl cnMuIFRoaXMgdGltaW5nIGhhcHBlbnMgaWYgdGhlcmUgaXMKPiAgICAgICAgICAgICAgbm90IGVu b3VnaCBNRklGTyB0byBwbGFjZXMgdGhlIGJ1cnN0IGRhdGEuCj4KPiBBIHBlcmlwaGVyYWwgbWF5 IHNpZ25hbCBhIERNQSByZXF1ZXN0IGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mCj4gRE1BRkxVU0hQ IGluc3RydWN0aW9uLCB0aGF0IGNhdXNlIERNQSByZXF1ZXN0IGJlaW5nIGlnbm9yZWQgYnkgRE1B Qy4KPgo+IEJ1dCBETUFDIGFuZCBhbGwgcGVyaXBoZXJhbHMgb24gUkszWCBTb0NzIERPIE5PVCBz dXBwb3J0IERNQUZMVVNIUC4KPiBJdCBjYW4ndCBzZW5kIGEgbWVzc2FnZSB0byB0aGUgcGVyaXBo ZXJhbCB0byByZXNlbmQgRE1BIHJlcXVlc3QsCj4gYW5kIHRoZSBwZXJpcGhlcmFsIGNhbid0IGFj a25vd2xlZGdlIGEgZmx1c2ggcmVxdWVzdCBmcm9tIERNQUMuCj4gU28gYWxsIERNQSByZXF1ZXN0 cyBzaG91bGQgTk9UIGJlIGlnbm9yZWQgYnkgRE1BQywgYW5kIERNQUMgd2lsbCBub3QKPiBub3Rp ZnkgdGhlIHBlcmlwaGVyYWwgdG8gZmx1c2guCj4KPiBUbyBmaXggdGhpcyBwcm9ibGVtLCB3ZSBu ZWVkOgo+IC0gRG8gTk9UIGV4ZWN1dGUgRE1BRkxVU0hQIGluc3RydWN0aW9uLgo+IC0gVGltaW5n IDIgYW5kIHRpbWluZyAzIHNob3VsZCBub3QgaGFwcGVuLgo+Cj4gQmVjYXVzZSBvbiBSSzNYIFNv Q3MsIHRoZXJlIGFyZSA2IG9yIGJlbG93ICBjaGFubmVscyBhbmQgMzIgTUZJRk8gZGVwdGgKPiBm b3IgRE1BQ19CVVMsIGFuZCA4IGNoYW5uZWxzIGFuZCA2NCBNRklGTyBkZXB0aCBmb3IgRE1BQ19Q RVJJLCBpdCBpcwo+IGltcG9zc2libGUgdG8gaGl0IHRoZSB0aW1pbmcgMyBpZiBidXJzdCBsZW5n dGggaXMgZXF1YWwgb3IgbGVzcyB0aGFuIDQuCj4KPiBTaW5jZSB0aGUgcmVxdWVzdCB0eXBlIHNp Z25hbCBieSB0aGUgcGVyaXBoZXJhbCBjYW4gb25seSBiZSBzZXQgYnkKPiBzb2Z0d2FyZS4gV2Ug Y2FuIHNldCBSb2NrY2hpcCBTb2MncyBHUkZfUEVSSURNQUNfQ09OMFsyOjFdIHRvIHNlbGVjdCBz aW5nbGUKPiBvciBidXJzdCByZXF1ZXN0LCBpZiBpdCBpcyBzZXQgYjAxLCAgYWxsIG9mIHRoZSBw ZXJpcGhhcmFscyB3aWxsIHNpZ25hbCBhIGJydXN0Cj4gcmVxdWVzdC4gU28gdGhlIHRpbWluZyAy IHdpbGwgbm90IGhhcHBlbiwgdG9vLgo+Cj4gU28gRE1BQyBvbiBSSzNYIGNhbiBzdXBwb3J0IHNp bmdsZSBvciBidXJzdCB0cmFuc2ZlciwgYnV0IGNhbid0IHN1cHBvcnQKPiBtaXhlZCB0cmFuc2Zl ci4KPgo+IEJlY2F1c2UgYnVyc3QgdHJhbnNmZXIgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBzaW5n bGUgdHJhbnNmZXIsIHRoaXMgaXMKPiBjb25maXJtZWQgYnkgb3VyIEFTSUMgdGVhbSwgd2hvIHN0 cm9uZ2x5IHN1Z2dlc3QgdG8gdXNlIGJ1cnN0IHRyYW5zZmVyLgo+IEFuZCB0aGlzIGlzIGNvbmZp cm1lZCBieSBBZGR5J3MgdGVzdCBvbiBSSzMyODgtUGluazIgYm9hcmQsIHRoZSBzcGVlZCBvZgo+ IHNwaSBmbGFzaCBidXJzdCB0cmFuc2ZlciB3aWxsIGluY3JlYXNlIGFib3V0IHR3byB0aW1lcyB0 aGFuIHNpbmdsZSB0cmFuc2Zlci4KPiBBbHNvLCBJIGhhdmUgdGVzdGVkIGR3X21tYyB3aXRoIHBs MzMwIG9uIFJLMzE4OCBwbGF0Zm9ybSB0byBkb3VibGUgY29uZmlybQo+IHRoZSByZXN1bHQuIFRo YXQgbWVhbnMgYnVyc3QgdHJhbnNmZXIgaXMgcmVhbnNvbmFibGUuCj4KPiBTbyB3ZSBuZWVkIGEg cXVpcmsgbm90IHRvIGV4ZWN1dGUgRE1BRkxVU0hQIGluc3RydWN0aW9uIGFuZCB0byB1c2UgYnVy c3QKPiB0cmFuc2Zlci4KPgo+IE5vdGU6Cj4gLSBUaGUgUm9ja2NoaXAgU29jIGRlZmF1bHQgdmFs dWUgb2YgR1JGX1BFUklETUFDX0NPTjBbMjoxXSBpcyBiMDEuIFRvCj4gICAgc3VwcG9ydCBicnVz dCB0cmFuc2ZlciwgdGhlc2UgYml0cyBzaG91bGQgbm90IGJlIGNoYW5nZWQgaW4gYm9vdGxvYWRl ci4KPgo+IFRvZG86Cj4gcmVtb3ZlIHRoZSBwYXRjaGVzIHJlbGVhdGVkIHRvIGkycywgdGhhdCB3 aWxsIHNlbmQgdGhlbSBhdCBsYXRlci4KPiAtIGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcv cGF0Y2gvNzM5OTU4MS8KPiAtIGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvNzM5 OTY3MS8KPgo+Cj4gQ2hhbmdlcyBpbiB2NzoKPiAtIEFzIHZpbm9kIGNvbW1lbnRzLCBmaXggdGhl IHN1YnN5c3RlbSBuYW1lLgo+IC0gbW9kaWZ5IHRoZSBzdWJqZWN0IHRvIGJlIGJldHRlciBtYXRj aC4KPiAtIGZpeCB0aGUgc3Vic3lzdGVtLgo+IC0gZml4IHRoZSBzdWJqZWN0Lgo+IC0gZml4IHRo ZSBzdWJqZWN0Lgo+Cj4gQ2hhbmdlcyBpbiB2NjoKPiAtIHJlbW92ZSBleHBvc2UgcXVpcmsgYW5k IGFkZCBkbWEgbWF4X2J1cnN0IGNhcHMgZm9yIGNsaWVudHMKPiAtIHJlbW92ZSBleHBvc2UgcXVp cmtzIGFuZCBhZGQgbWF4X2J1cnN0IGZvciBkbWFlbmdpbmUKPiAtIHJlbW92ZSBxdWlya3MgYW5k IGdldCBkbWEgY2FwcyBpbiBvcmRlciB0byBsaW1pdCBidXJzdAo+Cj4gQ2hhbmdlcyBpbiB2NToK PiAtIGFkZCBNYXJrJ3MgdGFnIGZvciBzcGkgY2hhbmdlcwo+IC0gcmVtb3ZlIHVubmVjZXNzYXJ5 IHdoaXRlc3BhY2UgY2hhbmdlCj4gLSB1c2Ugc3dpdGNoIHN0YXRlbWVudCBmb3IgaTJzIHF1aXJr Cj4KPiBDaGFuZ2VzIGluIHY0Ogo+IC0gcmVtb3ZlIHNwaSAmIGkycyBkdHMgY2hhbmdlcyBhbmQg cXVlcnkgcXVpcmsgZnJvbSBkbWFlbmdpbmUgQVBJCj4gICAgc3VnZ2VzZXRlZCBieSBNYXJrLgo+ IC0gZml4IHR5cG8KPiAtIEFkZCBkbWFlbmdpbmVfZ2V0X3F1aXJrIGhvb2sgYW5kIGltcGxlbWVu dCBpdCBmb3IgcGwzMzAKPgo+IENoYW5nZXMgaW4gdjM6Cj4gLSBhZGQgU3VubnkncyB0YWcKPiAt IGFkZCBtb3JlIHJvY2tjaGlwIGRyaXZlcnMnIGNoYW5nZXMgaW4gdGhpcyBwYXRjaHNldAo+IC0g YWRkIFJldmlld2VkLWJ5OiBTb25ueSBSYW8gPHNvbm55cmFvQGNocm9taXVtLm9yZz4KPiAtIGFk ZCBSZXZpZXdlZC1ieTogU29ubnkgUmFvIDxzb25ueXJhb0BjaHJvbWl1bS5vcmc+Cj4gLSBhZGQg UmV2aWV3ZWQtYnk6IFNvbm55IFJhbyA8c29ubnlyYW9AY2hyb21pdW0ub3JnPgo+Cj4gQ2hhbmdl cyBpbiB2MjoKPiAtIGFtZW5kIHRoZSBhdXRob3IKPiAtIHJlb3JkZXIgdGhlIHBhdGNoZXMgc3Vn Z2VzdGVkIGJ5IERvdWcKPiAtIGFkZCBSZXZpZXdlZC1ieTogRG91ZyBBbmRlcnNvbiA8ZGlhbmRl cnNAY2hyb21pdW0ub3JnPiBmb3IKPiAgICByazMyODguZHRzaSBwYXRjaCBhbmQgYXJtLXBsMzMw LnR4dCBwYXRjaAo+IC0gYWRkIFJldmlld2VkLWJ5OiBEb3VnIEFuZGVyc29uIDxkaWFuZGVyc0Bj aHJvbWl1bS5vcmc+Cj4gLSBhbWVuZCB0aGUgYXV0aG9yCj4gLSBmaXggT2xvZidzIG1haWwgYWRk cmVzcwo+IC0gYW1lbmQgdGhlIGF1dGhvcgo+IC0gYWRkIFJldmlld2VkLWJ5OiBEb3VnIEFuZGVy c29uIDxkaWFuZGVyc0BjaHJvbWl1bS5vcmc+Cj4gLSBhbWVuZCBPbG9mJ3MgbWFpbCBhZGRyZXNz Cj4KPiBDaGFuZ2VzIGluIHYxOgo+IC0gcmVuYW1lIGJyb2tlbi1uby1mbHVzaHAgdG8gImFybSxw bDMzMC1icm9rZW4tbm8tZmx1c2hwIiBzdWdnZXN0ZWQKPiAgICBieSBLcnp5c3p0b2YuCj4gLSBh ZGQgRnJvbSBvcmlnaW5hbCBhdXRob3IuCj4gLSByZW1vdmUgU3VubnkncyB0YWcKPiAtIHJlbmFt ZSBicm9rZW4tbm8tZmx1c2hwIHRvICJhcm0scGwzMzAtYnJva2VuLW5vLWZsdXNocCIgc3VnZ2Vz dGVkCj4gICAgYnkgS3J6eXN6dG9mLgo+IC0gcmVuYW1lIGJyb2tlbi1uby1mbHVzaHAgdG8gImFy bSxwbDMzMC1icm9rZW4tbm8tZmx1c2hwIiBzdWdnZXN0ZWQKPiAgICBieSBLcnp5c3p0b2YuCj4g LSByZW1vdmUgU3VubnkncyB0YWcKPiAtIHJlbmFtZSBicm9rZW4tbm8tZmx1c2hwIHRvICJhcm0s cGwzMzAtYnJva2VuLW5vLWZsdXNocCIgc3VnZ2VzdGVkCj4gICAgYnkgS3J6eXN6dG9mLgo+ICAg IC0gcmVtb3ZlIFN1bm55J3MgdGFnCj4gLSByZW5hbWUgYnJva2VuLW5vLWZsdXNocCB0byAiYXJt LHBsMzMwLWJyb2tlbi1uby1mbHVzaHAiIHN1Z2dlc3RlZAo+ICAgIGJ5IEtyenlzenRvZi4KPgo+ IEFkZHkgS2UgKDMpOgo+ICAgIGRtYWVuZ2luZTogcGwzMzA6IGFkZCBxdWlyayBmb3IgYnJva2Vu IG5vIGZsdXNocAo+ICAgIEFSTTogZHRzOiBBZGQgYXJtLCBwbDMzMC1icm9rZW4tbm8tZmx1c2hw IHF1aXJrIGZvciByazMyODggcGxhdGZvcm0KPiAgICBzcGk6IHJvY2tjaGlwOiBtb2RpZnkgRE1B IG1heCBidXJzdCB0byAxCj4KPiBCb29qaW4gS2ltICgxKToKPiAgICBkbWFlbmdpbmU6IHBsMzMw OiBzdXBwb3J0IGJ1cnN0IG1vZGUgZm9yIGRldi10by1tZW0gYW5kIG1lbS10by1kZXYKPiAgICAg IHRyYW5zbWl0Cj4KPiBDYWVzYXIgV2FuZyAoMSk6Cj4gICAgQVJNOiBkdHM6IGFkZCBwbDMzMC1i cm9rZW4tbm8tZmx1c2hwIHF1aXJrIGZvciByazMwMzYgU29Dcwo+Cj4gU2hhd24gTGluICg0KToK PiAgICBkdC9iaW5kaW5nczogYXJtLXBsMzMwOiBhZGQgZGVzY3JpcHRpb24gb2YgYXJtLCBwbDMz MC1icm9rZW4tbm8tZmx1c2hwCj4gICAgQVJNOiBkdHM6IEFkZCBhcm0sIHBsMzMwLWJyb2tlbi1u by1mbHVzaHAgcXVpcmsgZm9yIHJrM3h4eCBwbGF0Zm9ybQo+ICAgIGRtYWVuZ2luZTogY29yZTog ZXhwb3NlIG1heCBidXJzdCBjYXBhYmlsaXR5IHRvIGNsaWVudHMKPiAgICBkbWFlbmdpbmU6IHBs MzMwOiBhZGQgbWF4IGJ1cnN0IGZvciBkbWFlbmdpbmUKPgo+ICAgLi4uL2RldmljZXRyZWUvYmlu ZGluZ3MvZG1hL2FybS1wbDMzMC50eHQgICAgICAgICAgfCAgIDEgKwo+ICAgYXJjaC9hcm0vYm9v dC9kdHMvcmszMDM2LmR0c2kgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwo+ICAgYXJjaC9h cm0vYm9vdC9kdHMvcmszMjg4LmR0c2kgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwo+ICAg YXJjaC9hcm0vYm9vdC9kdHMvcmszeHh4LmR0c2kgICAgICAgICAgICAgICAgICAgICAgfCAgIDMg Kwo+ICAgZHJpdmVycy9kbWEvZG1hZW5naW5lLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDEgKwo+ICAgZHJpdmVycy9kbWEvcGwzMzAuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAxMDYgKysrKysrKysrKysrKysrLS0tLS0tCj4gICBkcml2ZXJzL3NwaS9zcGktcm9j a2NoaXAuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiArKy0KPiAgIGluY2x1ZGUvbGlu dXgvZG1hZW5naW5lLmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKPiAgIDggZmls ZXMgY2hhbmdlZCwgOTkgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCj4KCgotLSAKVGhh bmtzLApDYWVzYXIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgtcm9ja2NoaXBAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LXJvY2tjaGlwCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: caesar.upstream@gmail.com (Caesar Wang) Date: Mon, 1 Feb 2016 14:56:54 +0800 Subject: [PATCH v7 0/9] Fix broken DMAFLUSHP on Rockchips platform In-Reply-To: <1453460812-8498-1-git-send-email-wxt@rock-chips.com> References: <1453460812-8498-1-git-send-email-wxt@rock-chips.com> Message-ID: <56AF01B6.6030204@gmail.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hello Vinod, Is there any chance apply the DMA patches?:-) - Caesar ? 2016?01?22? 19:06, Caesar Wang ??: > This series patches are apply on linus master branch. > Okay, this series patches verified on my github. > (https://github.com/Caesar-github/rockchip/commits/for-dma-tests) > > Linux version 4.4.0+ (wxt at ubuntu) (Ubuntu/Linaro 4.7.3-12ubuntu1) ) #14 > SMP Fri Jan 22 18:13:12 CST 2016 > > The perious version 6 from Shawn. > (http://www.spinics.net/lists/dmaengine/msg06606.html) > I pick them up to go on upstream since Shawn hasn't much time to track them. > ---- > > The purpose of the DMAFLUSHP instruction: > - Tell the peripheral to clear its status and control registers. > - Send a message to the peripheral to resend its level status. > > There are 3 timings described in PL330 Technical Reference Manual: > - Timing 1: Burst request, can work well without DMAFLUSHP. > - Timing 2: Single and burst request, DMAC will ignore the single > transfer request. This timing happens if there are single > and burst request. > - Timing 3: Single transfers for a burst request, DMAC should signals > datype to request the peripheral to flush the contents of > any control registers. This timing happens if there is > not enough MFIFO to places the burst data. > > A peripheral may signal a DMA request during the execution of > DMAFLUSHP instruction, that cause DMA request being ignored by DMAC. > > But DMAC and all peripherals on RK3X SoCs DO NOT support DMAFLUSHP. > It can't send a message to the peripheral to resend DMA request, > and the peripheral can't acknowledge a flush request from DMAC. > So all DMA requests should NOT be ignored by DMAC, and DMAC will not > notify the peripheral to flush. > > To fix this problem, we need: > - Do NOT execute DMAFLUSHP instruction. > - Timing 2 and timing 3 should not happen. > > Because on RK3X SoCs, there are 6 or below channels and 32 MFIFO depth > for DMAC_BUS, and 8 channels and 64 MFIFO depth for DMAC_PERI, it is > impossible to hit the timing 3 if burst length is equal or less than 4. > > Since the request type signal by the peripheral can only be set by > software. We can set Rockchip Soc's GRF_PERIDMAC_CON0[2:1] to select single > or burst request, if it is set b01, all of the peripharals will signal a brust > request. So the timing 2 will not happen, too. > > So DMAC on RK3X can support single or burst transfer, but can't support > mixed transfer. > > Because burst transfer is more efficient than single transfer, this is > confirmed by our ASIC team, who strongly suggest to use burst transfer. > And this is confirmed by Addy's test on RK3288-Pink2 board, the speed of > spi flash burst transfer will increase about two times than single transfer. > Also, I have tested dw_mmc with pl330 on RK3188 platform to double confirm > the result. That means burst transfer is reansonable. > > So we need a quirk not to execute DMAFLUSHP instruction and to use burst > transfer. > > Note: > - The Rockchip Soc default value of GRF_PERIDMAC_CON0[2:1] is b01. To > support brust transfer, these bits should not be changed in bootloader. > > Todo: > remove the patches releated to i2s, that will send them at later. > - https://patchwork.kernel.org/patch/7399581/ > - https://patchwork.kernel.org/patch/7399671/ > > > Changes in v7: > - As vinod comments, fix the subsystem name. > - modify the subject to be better match. > - fix the subsystem. > - fix the subject. > - fix the subject. > > Changes in v6: > - remove expose quirk and add dma max_burst caps for clients > - remove expose quirks and add max_burst for dmaengine > - remove quirks and get dma caps in order to limit burst > > Changes in v5: > - add Mark's tag for spi changes > - remove unnecessary whitespace change > - use switch statement for i2s quirk > > Changes in v4: > - remove spi & i2s dts changes and query quirk from dmaengine API > suggeseted by Mark. > - fix typo > - Add dmaengine_get_quirk hook and implement it for pl330 > > Changes in v3: > - add Sunny's tag > - add more rockchip drivers' changes in this patchset > - add Reviewed-by: Sonny Rao > - add Reviewed-by: Sonny Rao > - add Reviewed-by: Sonny Rao > > Changes in v2: > - amend the author > - reorder the patches suggested by Doug > - add Reviewed-by: Doug Anderson for > rk3288.dtsi patch and arm-pl330.txt patch > - add Reviewed-by: Doug Anderson > - amend the author > - fix Olof's mail address > - amend the author > - add Reviewed-by: Doug Anderson > - amend Olof's mail address > > Changes in v1: > - rename broken-no-flushp to "arm,pl330-broken-no-flushp" suggested > by Krzysztof. > - add From original author. > - remove Sunny's tag > - rename broken-no-flushp to "arm,pl330-broken-no-flushp" suggested > by Krzysztof. > - rename broken-no-flushp to "arm,pl330-broken-no-flushp" suggested > by Krzysztof. > - remove Sunny's tag > - rename broken-no-flushp to "arm,pl330-broken-no-flushp" suggested > by Krzysztof. > - remove Sunny's tag > - rename broken-no-flushp to "arm,pl330-broken-no-flushp" suggested > by Krzysztof. > > Addy Ke (3): > dmaengine: pl330: add quirk for broken no flushp > ARM: dts: Add arm, pl330-broken-no-flushp quirk for rk3288 platform > spi: rockchip: modify DMA max burst to 1 > > Boojin Kim (1): > dmaengine: pl330: support burst mode for dev-to-mem and mem-to-dev > transmit > > Caesar Wang (1): > ARM: dts: add pl330-broken-no-flushp quirk for rk3036 SoCs > > Shawn Lin (4): > dt/bindings: arm-pl330: add description of arm, pl330-broken-no-flushp > ARM: dts: Add arm, pl330-broken-no-flushp quirk for rk3xxx platform > dmaengine: core: expose max burst capability to clients > dmaengine: pl330: add max burst for dmaengine > > .../devicetree/bindings/dma/arm-pl330.txt | 1 + > arch/arm/boot/dts/rk3036.dtsi | 1 + > arch/arm/boot/dts/rk3288.dtsi | 3 + > arch/arm/boot/dts/rk3xxx.dtsi | 3 + > drivers/dma/dmaengine.c | 1 + > drivers/dma/pl330.c | 106 +++++++++++++++------ > drivers/spi/spi-rockchip.c | 12 ++- > include/linux/dmaengine.h | 4 + > 8 files changed, 99 insertions(+), 32 deletions(-) > -- Thanks, Caesar