From patchwork Sun May 22 16:41:18 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Suchanek X-Patchwork-Id: 9130985 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 1EEBE60761 for ; Sun, 22 May 2016 16:44:19 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C8B73281AC for ; Sun, 22 May 2016 16:44:18 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BD6DF281C1; Sun, 22 May 2016 16:44:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,FREEMAIL_FROM,RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 5B977281AC for ; Sun, 22 May 2016 16:44:17 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1b4WSN-0004y4-AG; Sun, 22 May 2016 16:42:23 +0000 Received: from mail-wm0-x234.google.com ([2a00:1450:400c:c09::234]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1b4WSK-0004w3-FQ for linux-arm-kernel@lists.infradead.org; Sun, 22 May 2016 16:42:21 +0000 Received: by mail-wm0-x234.google.com with SMTP id z87so20851450wmh.0 for ; Sun, 22 May 2016 09:41:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=8zk8tliv/fj+Gshw2QNRXiL7Rf8hxjrvItEhbPkf7tI=; b=HQH2BQBCELHYPPDKoiJoB2idbWiqgDXaAs1gwBMCW1izbEu826jEiMSOR/+mny88U0 pBh4D42vFT3xLpNB4J0KuhyavX3/BIpY+8GWK7fHrPyPfFcsme2pmBVsmRL3D9MJ+nRF prrptLDqJNTqBE0AldYlChPLQPbebVNAtVc51nSY2sl8a0UM5tzyKVKvdbUTYLMGBv1+ 5qfLJdS0cGMhH0vv4ka+reecaNOEIjqQeLyJoYRi/9f10xXecANMzksHYMorLDnRWQMZ 5SdXxEABHePCze7LMuM5EK0hE7CgiHXbzjdfCR7iDxis1Ld3pUjCdw/vU/ocVCmhUsaS TIug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=8zk8tliv/fj+Gshw2QNRXiL7Rf8hxjrvItEhbPkf7tI=; b=ELIhn0PNngo79R8107swzEbe8Xcv8de4WYXMWj7lcJA7BSJbU9HUv92r9KJry+RVBq zhz8+j1R5asHMwG6sf4glwoFNCBjg+cpNF2jyCCNwZ8onvjYqPQJVlQ7GJZ1sFl7iaEO kZM2XVhUpTGgGzpjXIRX5SZNffReAZaBcVqP+wfeHaGasS0uQT2plpYzRQV8qPAf3u86 ipjJHSFSvjki6+AAzK/z3amd/+VFONDJViv3SNV52ujkDcwIvUL7NDz7tMIBcvRmMx6w cbuHunKRMm67CUE57lpFHhRzico4ZZWqPgVruRAKv27sgd0u2W6P3LsYfgJoz4NIpbGb ofMg== X-Gm-Message-State: AOPr4FXYBuOSQpkvfCMpVtVwtGOOLoD9r/mIfDAg/havylRwXhG4HKIoo5pC33XhpBKJl0hS8VbQ7BuulMQRYA== X-Received: by 10.194.55.10 with SMTP id n10mr12285139wjp.28.1463935318211; Sun, 22 May 2016 09:41:58 -0700 (PDT) MIME-Version: 1.0 Received: by 10.194.163.98 with HTTP; Sun, 22 May 2016 09:41:18 -0700 (PDT) In-Reply-To: References: From: Michal Suchanek Date: Sun, 22 May 2016 18:41:18 +0200 Message-ID: Subject: Re: sunxi spi clock problem To: Chen-Yu Tsai X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160522_094220_682519_69107CBE X-CRM114-Status: GOOD ( 18.73 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?Q?Emilio_L=C3=B3pez?= , Michael Turquette , Stephen Boyd , Linux Kernel Mailing List , linux-sunxi , Maxime Ripard , linux-clk , "linux-arm-kernel@lists.infradead.org" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Hello, The debugfs output shows that spi2 is reparented under pll5 and the pll5 frequency remains unchanged. The request to get a 2GHz clock for spi is fulfilled on best-effort basis by giving the 864MHz pll5 clock which should theoretically result in 432MHz SPI clock. On 22 May 2016 at 16:58, Chen-Yu Tsai wrote: > Hi, > > On Sun, May 22, 2016 at 10:18 PM, Michal Suchanek wrote: >> Hello, >> >> I tried running a spidev test program on linux 4.6 and I uncovered a >> problem with the sunxi clk framework. >> >> Basically the system would lock up after running the test program. >> >> Digging deeper I found that it locks up with commit >> [47284e3e0f3c427c93f8583549b6c938e8a18015] spi: sun4i: allow transfers >> to set transmission speed >> >> This exposes a problem with the test program. I try to set the SPI >> sped to 1MHz but at other place the speed is multiplied by 1000 to >> save typing zeros so the actual requested speed is 1GHz. This commit >> probably allows that request to propagate leading to the observed >> system lockup. >> >> Given the parents OSC24M, pll6 and pll5 one of pll6 and pll5 is >> probably set up at 2GHz (or both in turn because due to some rounding >> neither goes fully up to 2GHz resulting in 864000000 SPI clock). Then >> the system locks up. > > IIRC the mod clock does not propagate rate changes up the tree. > But some output from the debugfs would be helpful. See below. > >> >> I can limit the speed in the SPI driver which is rated at 100MHz in >> SoC manual (giving 200MHz pll) but the clk driver should probably >> limit the clock setting to sane speeds itself. >> >> I am not familiar with the sunxi-clk code and it has unfortunately no >> debug prints which would show what is programmed to what speed. > > You can use /sys/kernel/debug/clk/clk_summary, provided you have > debugfs built in and mounted. root@a10s:~/spidisp# ./spitest -d -s 1000000 /dev/spidev2.0 Debug mode. /dev/spidev2.0: spi mode 0x0, 8 bits per word, 1000000000 Hz max Sending 00 clock enable_cnt prepare_cnt rate accuracy phase ---------------------------------------------------------------------------------------- osc32k 0 0 32768 0 0 osc24M 6 6 24000000 0 0 ir0 0 0 24000000 0 0 spi2 0 0 24000000 0 0 spi1 0 0 24000000 0 0 spi0 0 0 24000000 0 0 ... spi_master spi2: spi2.0: timeout transferring 1 bytes@1000000000Hz for 100(100)ms spidev spi2.0: SPI transfer failed: -110 spi_master spi2: failed to transfer one message from queue ... pll5 1 1 864000000 0 0 pll5_other 0 0 864000000 0 0 pll5_ddr 1 1 432000000 0 0 ... xfer: Connection timed out buffer size: 1, result -110 buffer size: 1, result -110, Connection timed out Sending clock enable_cnt prepare_cnt rate accuracy phase ---------------------------------------------------------------------------------------- osc32k 0 0 32768 0 0 osc24M 6 6 24000000 0 0 ir0 0 0 24000000 0 0 spi1 0 0 24000000 0 0 spi0 0 0 24000000 0 0 ss 0 0 24000000 0 0 ... pll5 1 1 864000000 0 0 pll5_other 0 0 864000000 0 0 spi2 0 0 864000000 0 0 pll5_ddr 1 1 432000000 0 0 ... maximum buffer size: 0 Sending 9f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... pll5 1 1 864000000 0 0 pll5_other 0 0 864000000 0 0 spi2 0 0 864000000 0 0 pll5_ddr 1 1 432000000 0 0 pll4 0 0 384000000 0 0 pll2-prediv 0 The system locks up here before finishing the output from debugfs and actually starting the transfer printed above. Thanks Michal --- The diff between the two full outputs shows only spi2 changed: 0 0 spi1 0 0 24000000 0 0 spi0 0 0 24000000 0 0 ss 0 0 24000000 0 0 @@ -69,6 +68,7 @@ pll6_sata 0 0 100000000 0 0 pll5 1 1 864000000 0 0 pll5_other 0 0 864000000 0 0 + spi2 0 0 864000000 0 0 pll5_ddr 1 1 432000000 0 0 pll4 0 0 384000000 0 0 pll2-prediv 0 0 1500000 0 0 --- clk1.txt 2016-05-22 18:38:24.890906037 +0200 +++ clk2.txt 2016-05-22 18:38:15.891003130 +0200 @@ -3,7 +3,6 @@ osc32k 0 0 32768 0 0 osc24M 6 6 24000000 0 0 ir0 0 0 24000000 0 0 - spi2 0 0 24000000