[{"id":1769446,"web_url":"http://patchwork.ozlabs.org/comment/1769446/","msgid":"<20170915210347.GA1831@mai>","list_archive_url":null,"date":"2017-09-15T21:03:47","subject":"Re: [PATCH 2/2] arm: dts: stm32: remove useless clocksource nodes","submitter":{"id":13265,"url":"http://patchwork.ozlabs.org/api/people/13265/","name":"Daniel Lezcano","email":"daniel.lezcano@linaro.org"},"content":"On Thu, Sep 14, 2017 at 09:56:52AM +0200, Benjamin Gaignard wrote:\n> 16 bits timers aren't accurate enough to be used as\n> clocksource, remove them from stm32f4 and stm32f7 devicetree.\n\nDo you really want to remove the description? The timers are disabled, aren't they?","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"bt+BwFDH\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"bDN0Pzu3\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xv7Dz2v7Hz9s3w\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tSat, 16 Sep 2017 07:04:19 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dsxma-0008RO-45; Fri, 15 Sep 2017 21:04:16 +0000","from mail-pf0-x230.google.com ([2607:f8b0:400e:c00::230])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dsxmW-0008Nh-Vk for linux-arm-kernel@lists.infradead.org;\n\tFri, 15 Sep 2017 21:04:14 +0000","by mail-pf0-x230.google.com with SMTP id d187so2030966pfg.11\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tFri, 15 Sep 2017 14:03:52 -0700 (PDT)","from mai ([12.145.98.253]) by smtp.gmail.com with ESMTPSA id\n\te69sm3496913pfc.79.2017.09.15.14.03.50\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tFri, 15 Sep 2017 14:03:51 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=ep0rDMYNXuFZU+IbarKUyazMf6/qDAJUmPi8E6y8/Ag=;\n\tb=bt+BwFDH7tMHdD\n\tKNdcgQeRQdE4dRXKaj9wtNiy+VsGnElh7EcdYOZA8tzlkTiybv04ulRk27+6lUYgrs7hwwlpbaGxW\n\tIVwDPRuI9HRutH6Eq2sXL9E5A49Gt8C7NCHRey/ILpoi4oAxPEJCujetazc1T6FMs32cx9i56fljc\n\tfAfTE0cerq7nz4hUMxAipY0TKo+IykTd0XArtIw+ypXGZWacOTFFGG5278bmnHDHefbXBBLKlagXV\n\tUWkOfbJUnAqzvbGxnqu0yhMi4c80jrM1FUXlHozRItEEqBAtTcGAvwIIKzAuEaAieEmxWADERKQ48\n\tly67J5teXQmATM+0AyFQ==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:in-reply-to:user-agent;\n\tbh=62MvALYR9Au9mKwngPS6dfYMTOAjo2ChPMYJWqSO2Ws=;\n\tb=bDN0Pzu3EBOBKZLjkQ+LZcgtKUrKZVZWBqo8CF0te4tBpoErYkrBuepnQmjKbB3EOX\n\ttApH5Gf/3ncCoDaRMW1dBhj5QXzF0P77IjWzgWAN7zSp5Ehv2/ugxSdcXOV3gizmKQ4t\n\tprI8H0mFk0I10xRUhsMew6XzGPwGW4XRXRnuI="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:in-reply-to:user-agent;\n\tbh=62MvALYR9Au9mKwngPS6dfYMTOAjo2ChPMYJWqSO2Ws=;\n\tb=MANwAIIAbuyCuQl8pWJ2gM5Ww0fgxQJjrIh9II2Bq9j5lyWBs7/clqxo1N3j2WbYEF\n\tuA/a/s5gGodTlaNwR0IycoHLQt/YsPyCrJ49woHYNGORrWKaJOV7MOg2/+josFsEUNz9\n\tn4Pkd+zqD2HJf8h2/D/nh2QSHRMI4EqwnU51D6RT/+b6DD4OoFOClZ4mdlfxlndKELVy\n\tTP1ZvkGn76i+7WB4+m+JLSqOndfp2tHYYqwQ8EhldNF6d1/s5Xd+6T+jwmEWhgCZbKUc\n\t3zZB1fKN2giVfbGS3saLZZr2CZqDqpweNZJZckJzV6wgbtjBSfkYzEYNea9GpV7nlV6H\n\tRvIw==","X-Gm-Message-State":"AHPjjUit2ZSMIS+VHHACId9YUUIgzpSB99lt2ovkgfcgg25uVYhoUk4l\n\tF6QNGl80cZP/3f42","X-Google-Smtp-Source":"AOwi7QCHlIzhKsKrt+vXMZP2CBXYstPmCYVzv90AcByZy9NZceDcMU35hd67Mz6vuU+BrG313ek5Nw==","X-Received":"by 10.84.240.137 with SMTP id z9mr13324964plk.114.1505509431802; \n\tFri, 15 Sep 2017 14:03:51 -0700 (PDT)","Date":"Fri, 15 Sep 2017 23:03:47 +0200","From":"Daniel Lezcano <daniel.lezcano@linaro.org>","To":"Benjamin Gaignard <benjamin.gaignard@linaro.org>","Subject":"Re: [PATCH 2/2] arm: dts: stm32: remove useless clocksource nodes","Message-ID":"<20170915210347.GA1831@mai>","References":"<1505375812-19037-1-git-send-email-benjamin.gaignard@linaro.org>\n\t<1505375812-19037-3-git-send-email-benjamin.gaignard@linaro.org>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<1505375812-19037-3-git-send-email-benjamin.gaignard@linaro.org>","User-Agent":"Mutt/1.5.24 (2015-08-30)","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170915_140413_053819_A76B3242 ","X-CRM114-Status":"UNSURE (   9.12  )","X-CRM114-Notice":"Please train this message.","X-Spam-Score":"-2.0 (--)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.0 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno\n\ttrust [2607:f8b0:400e:c00:0:0:0:230 listed in] [list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n\tauthor's domain","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"mark.rutland@arm.com, devicetree@vger.kernel.org, alexandre.torgue@st.com,\n\tlinux@armlinux.org.uk, linux-kernel@vger.kernel.org, robh+dt@kernel.org, \n\tlinux-arm-kernel@lists.infradead.org, mcoquelin.stm32@gmail.com,\n\ttglx@linutronix.de, ludovic.barre@st.com","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1769708,"web_url":"http://patchwork.ozlabs.org/comment/1769708/","msgid":"<CA+M3ks6WjdJ-z5pcfXDk7va5CS0zQ6gud85GGHRS9zh2d6YSuQ@mail.gmail.com>","list_archive_url":null,"date":"2017-09-17T13:34:23","subject":"Re: [PATCH 2/2] arm: dts: stm32: remove useless clocksource nodes","submitter":{"id":66874,"url":"http://patchwork.ozlabs.org/api/people/66874/","name":"Benjamin Gaignard","email":"benjamin.gaignard@linaro.org"},"content":"2017-09-15 23:03 GMT+02:00 Daniel Lezcano <daniel.lezcano@linaro.org>:\n> On Thu, Sep 14, 2017 at 09:56:52AM +0200, Benjamin Gaignard wrote:\n>> 16 bits timers aren't accurate enough to be used as\n>> clocksource, remove them from stm32f4 and stm32f7 devicetree.\n>\n> Do you really want to remove the description? The timers are disabled, aren't they?\n\nYes because they are 16 bits timers and they won't be accepted anymore in\ndriver's probe function.","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"KGF9L1Ch\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"MQMYhv3K\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xw99Y63VXz9s81\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tSun, 17 Sep 2017 23:34:57 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dtZio-0008Tl-7n; Sun, 17 Sep 2017 13:34:54 +0000","from mail-qt0-x22e.google.com ([2607:f8b0:400d:c0d::22e])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dtZig-0007uZ-E1 for linux-arm-kernel@lists.infradead.org;\n\tSun, 17 Sep 2017 13:34:50 +0000","by mail-qt0-x22e.google.com with SMTP id s18so5507728qta.3\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tSun, 17 Sep 2017 06:34:24 -0700 (PDT)","by 10.140.41.133 with HTTP; Sun, 17 Sep 2017 06:34:23 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:\n\tReferences:In-Reply-To:MIME-Version:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=nkCh+E2cP/zggO9Lt5WhXg5frGZb24o4bBBPmrS/mBE=;\n\tb=KGF9L1ChYh9sEX\n\ttuOpJyW/RILNpoLTzdjcIzHimfR7kmnSfOTu3WhUTkCt/PejXN2AugPM6cg3UtBtSE2ASEnG+KrYJ\n\t/29JpQtFTlhqWKrSwzXFofilEKZaGM4+VAJq+vlcpWOzAtlMm0eweQdsZ0KlKzyb8pXPYUT2Ix3Ez\n\tLBh0ftSJAnFUUIA/o/sH4rH0hK4zyWC8NjBwqxq5H/oW9RdFeIWhLPiaUq86OJfnYK1Gg0UEYu11a\n\twHNhqqzipKbRn61Ndpjrs+hbClFfS7pCA6lY7C7nUcKADG91sPZT02CVsmRwB0UIEzz5m3m2iJOr8\n\t/DxPaVMj/St0WehDltwQ==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;\n\th=mime-version:in-reply-to:references:from:date:message-id:subject:to\n\t:cc; bh=lyPJNdh4zTssnyzaBWeOeGuBUDbWkT0B7Od1D4wN1a8=;\n\tb=MQMYhv3K4GZ75MxuYvfRlBibGs6Zezljk1xW1xMwMVc/47FEjJTH01YsVvvAszqkQq\n\tSHI9X/85vz4ALxQ69QNZLaGEZMzgGOoErkjmpBH/ZoqCDG0lXa0y7cb9AtAc9iOrkYZ6\n\tG62N9HdULJZMmayENVxPBDWlXcHA4G6N8wuig="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc;\n\tbh=lyPJNdh4zTssnyzaBWeOeGuBUDbWkT0B7Od1D4wN1a8=;\n\tb=UtAVXvO03YQtA/PLvkXgida7TB8r/Gur5IQJaAcY8icE+juFHExgherRSka9IWCeSw\n\t+0zNu6t83Xms+m1BbIiddnhi/JUppfl5tNJt1/N1l/4VjDq3n3VU67rMwuZYNNrPE0Pb\n\thyQmNg15lygHBOgk0hEdYZ+fUkDuVp3V4i2qO3zgwotF/GTCshpb1QQn+End0lw1k/XM\n\tpzCG8m1ZCDwT4lqzzJEqjeDniZ2L18rG2bCAhT2pfuZy4/u9PJ7Fwt3DZZM0ST9Qx27b\n\t+EqzdrOEmwppJ2RnX/Gzl/byXfctVWN8OfWjqOPn+2Ac60J3FMMJl80buJ5lmBxJBkh1\n\tk2mg==","X-Gm-Message-State":"AHPjjUjmvYrI+LzpxuyveMCaiRJWwetcIHGCZJYjT7FUn4D6ahbEkL3r\n\tzNOQ2WJa4HE2hwUJGV/wegZOmbADpWp+trTGHgwB4Q==","X-Google-Smtp-Source":"AOwi7QBcBO2lL7UfAmHhItzyFDFPrMu8+qp4Wta6YAQrVBOC6CMvW3v9VhM7NeQ7B2VElwyS0I8AvPgukW6XDXHOyvY=","X-Received":"by 10.200.7.200 with SMTP id m8mr23186429qth.12.1505655263624;\n\tSun, 17 Sep 2017 06:34:23 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<20170915210347.GA1831@mai>","References":"<1505375812-19037-1-git-send-email-benjamin.gaignard@linaro.org>\n\t<1505375812-19037-3-git-send-email-benjamin.gaignard@linaro.org>\n\t<20170915210347.GA1831@mai>","From":"Benjamin Gaignard <benjamin.gaignard@linaro.org>","Date":"Sun, 17 Sep 2017 15:34:23 +0200","Message-ID":"<CA+M3ks6WjdJ-z5pcfXDk7va5CS0zQ6gud85GGHRS9zh2d6YSuQ@mail.gmail.com>","Subject":"Re: [PATCH 2/2] arm: dts: stm32: remove useless clocksource nodes","To":"Daniel Lezcano <daniel.lezcano@linaro.org>","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170917_063446_758600_57620E56 ","X-CRM114-Status":"UNSURE (   9.45  )","X-CRM114-Notice":"Please train this message.","X-Spam-Score":"-2.0 (--)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.0 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno\n\ttrust [2607:f8b0:400d:c0d:0:0:0:22e listed in] [list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n\tauthor's domain","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>, devicetree@vger.kernel.org,\n\tAlexandre Torgue <alexandre.torgue@st.com>,\n\tRussell King - ARM Linux <linux@armlinux.org.uk>,\n\tLinux Kernel Mailing List <linux-kernel@vger.kernel.org>,\n\tRob Herring <robh+dt@kernel.org>, linux-arm-kernel@lists.infradead.org,\n\tMaxime Coquelin <mcoquelin.stm32@gmail.com>,\n\tThomas Gleixner <tglx@linutronix.de>,\n\tLudovic Barre <ludovic.barre@st.com>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1770534,"web_url":"http://patchwork.ozlabs.org/comment/1770534/","msgid":"<9e5cae53-0a57-f2e9-cbb1-dde484619fca@linaro.org>","list_archive_url":null,"date":"2017-09-18T21:30:41","subject":"Re: [PATCH 1/2] clocksource: stm32: rework driver to use only one\n\ttimer","submitter":{"id":13265,"url":"http://patchwork.ozlabs.org/api/people/13265/","name":"Daniel Lezcano","email":"daniel.lezcano@linaro.org"},"content":"On 14/09/2017 09:56, Benjamin Gaignard wrote:\n> Rework driver code to use only one timer for both clocksource\n> and clockevent.\n> This patch also forbids to use 16 bits timers because they are\n> not enough accurate.\n> Do some clean up in structures and functions names too.\n> \n> Signed-off-by: Ludovic Barre <ludovic.barre@st.com>\n> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>\n\nHi Benjamin,\n\nI have a few comments below. Can you when reposting split this patch\ninto smaller changes ?\n\nAlso, can you consider using the timer-of API ?\n\nThanks.\n\n  -- Daniel\n\n> ---\n>  drivers/clocksource/timer-stm32.c | 259 +++++++++++++++++++++++---------------\n>  1 file changed, 155 insertions(+), 104 deletions(-)\n> \n> diff --git a/drivers/clocksource/timer-stm32.c b/drivers/clocksource/timer-stm32.c\n> index 8f24237..648c10a 100644\n> --- a/drivers/clocksource/timer-stm32.c\n> +++ b/drivers/clocksource/timer-stm32.c\n> @@ -16,175 +16,226 @@\n>  #include <linux/of_irq.h>\n>  #include <linux/clk.h>\n>  #include <linux/reset.h>\n> +#include <linux/sched_clock.h>\n> +#include <linux/slab.h>\n>  \n>  #define TIM_CR1\t\t0x00\n>  #define TIM_DIER\t0x0c\n>  #define TIM_SR\t\t0x10\n>  #define TIM_EGR\t\t0x14\n> +#define TIM_CNT\t\t0x24\n>  #define TIM_PSC\t\t0x28\n>  #define TIM_ARR\t\t0x2c\n> +#define TIM_CCR1\t0x34\n>  \n>  #define TIM_CR1_CEN\tBIT(0)\n> -#define TIM_CR1_OPM\tBIT(3)\n> +#define TIM_CR1_UDIS\tBIT(1)\n>  #define TIM_CR1_ARPE\tBIT(7)\n>  \n> -#define TIM_DIER_UIE\tBIT(0)\n> -\n> -#define TIM_SR_UIF\tBIT(0)\n> +#define TIM_DIER_CC1IE\tBIT(1)\n>  \n>  #define TIM_EGR_UG\tBIT(0)\n>  \n> -struct stm32_clock_event_ddata {\n> +struct stm32_clock_event {\n>  \tstruct clock_event_device evtdev;\n>  \tunsigned periodic_top;\n> -\tvoid __iomem *base;\n> +\tvoid __iomem *regs;\n>  };\n>  \n>  static int stm32_clock_event_shutdown(struct clock_event_device *evtdev)\n>  {\n> -\tstruct stm32_clock_event_ddata *data =\n> -\t\tcontainer_of(evtdev, struct stm32_clock_event_ddata, evtdev);\n> -\tvoid *base = data->base;\n> +\tstruct stm32_clock_event *ce =\n> +\t\tcontainer_of(evtdev, struct stm32_clock_event, evtdev);\n> +\n> +\twritel_relaxed(0, ce->regs + TIM_DIER);\n>  \n> -\twritel_relaxed(0, base + TIM_CR1);\n\nWhy this change? TIM_CR1 -> TIM_DIER? A 16b to 32b change?\n\n>  \treturn 0;\n>  }\n>  \n> -static int stm32_clock_event_set_periodic(struct clock_event_device *evtdev)\n> +static int stm32_clock_event_set_next_event(unsigned long evt,\n> +\t\t\t\t\t    struct clock_event_device *evtdev)\n>  {\n> -\tstruct stm32_clock_event_ddata *data =\n> -\t\tcontainer_of(evtdev, struct stm32_clock_event_ddata, evtdev);\n> -\tvoid *base = data->base;\n> +\tstruct stm32_clock_event *ce =\n> +\t\tcontainer_of(evtdev, struct stm32_clock_event, evtdev);\n> +\tunsigned long cnt;\n> +\n> +\tcnt = readl_relaxed(ce->regs + TIM_CNT);\n> +\twritel_relaxed(cnt + evt, ce->regs + TIM_CCR1);\n> +\twritel_relaxed(TIM_DIER_CC1IE, ce->regs + TIM_DIER);\n>  \n> -\twritel_relaxed(data->periodic_top, base + TIM_ARR);\n> -\twritel_relaxed(TIM_CR1_ARPE | TIM_CR1_CEN, base + TIM_CR1);\n>  \treturn 0;\n>  }\n>  \n> -static int stm32_clock_event_set_next_event(unsigned long evt,\n> -\t\t\t\t\t    struct clock_event_device *evtdev)\n> +static int stm32_clock_event_set_periodic(struct clock_event_device *evtdev)\n>  {\n> -\tstruct stm32_clock_event_ddata *data =\n> -\t\tcontainer_of(evtdev, struct stm32_clock_event_ddata, evtdev);\n> +\tstruct stm32_clock_event *ce =\n> +\t\tcontainer_of(evtdev, struct stm32_clock_event, evtdev);\n>  \n> -\twritel_relaxed(evt, data->base + TIM_ARR);\n> -\twritel_relaxed(TIM_CR1_ARPE | TIM_CR1_OPM | TIM_CR1_CEN,\n> -\t\t       data->base + TIM_CR1);\n> +\treturn stm32_clock_event_set_next_event(ce->periodic_top, evtdev);\n> +}\n>  \n> -\treturn 0;\n> +static int stm32_clock_event_set_oneshot(struct clock_event_device *evtdev)\n> +{\n> +\treturn stm32_clock_event_set_next_event(0, evtdev);\n>  }\n>  \n>  static irqreturn_t stm32_clock_event_handler(int irq, void *dev_id)\n>  {\n> -\tstruct stm32_clock_event_ddata *data = dev_id;\n> +\tstruct stm32_clock_event *ce = dev_id;\n> +\n> +\twritel_relaxed(0, ce->regs + TIM_SR);\n>  \n> -\twritel_relaxed(0, data->base + TIM_SR);\n> +\tif (clockevent_state_periodic(&ce->evtdev))\n> +\t\tstm32_clock_event_set_periodic(&ce->evtdev);\n\nnit: else condition to prevent an extra check\n\n> -\tdata->evtdev.event_handler(&data->evtdev);\n> +\tif (clockevent_state_oneshot(&ce->evtdev))\n> +\t\tstm32_clock_event_shutdown(&ce->evtdev);\n> +\n> +\tce->evtdev.event_handler(&ce->evtdev);\n>  \n>  \treturn IRQ_HANDLED;\n>  }\n>  \n> -static struct stm32_clock_event_ddata clock_event_ddata = {\n> -\t.evtdev = {\n> -\t\t.name = \"stm32 clockevent\",\n> -\t\t.features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC,\n> -\t\t.set_state_shutdown = stm32_clock_event_shutdown,\n> -\t\t.set_state_periodic = stm32_clock_event_set_periodic,\n> -\t\t.set_state_oneshot = stm32_clock_event_shutdown,\n> -\t\t.tick_resume = stm32_clock_event_shutdown,\n> -\t\t.set_next_event = stm32_clock_event_set_next_event,\n> -\t\t.rating = 200,\n> -\t},\n> -};\n> +static int __init stm32_clockevent_init(struct device_node *np,\n> +\t\t\t\t\tvoid __iomem *base,\n> +\t\t\t\t\tstruct clk *clk, int irq)\n> +{\n> +\tstruct stm32_clock_event *ce;\n> +\tunsigned long rate;\n> +\tint err;\n> +\n> +\tce = kzalloc(sizeof(*ce), GFP_KERNEL);\n> +\tif (!ce)\n> +\t\treturn -ENOMEM;\n> +\n> +\tce->regs = base;\n> +\tce->evtdev.name = \"stm32_clockevent\";\n> +\tce->evtdev.features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC;\n> +\tce->evtdev.set_state_shutdown = stm32_clock_event_shutdown;\n> +\tce->evtdev.set_state_periodic = stm32_clock_event_set_periodic;\n> +\tce->evtdev.set_state_oneshot = stm32_clock_event_set_oneshot;\n> +\tce->evtdev.tick_resume = stm32_clock_event_shutdown;\n> +\tce->evtdev.set_next_event = stm32_clock_event_set_next_event;\n> +\tce->evtdev.rating = 200;\n>  \n> -static int __init stm32_clockevent_init(struct device_node *np)\n> +\trate = clk_get_rate(clk);\n> +\tce->periodic_top = DIV_ROUND_CLOSEST(rate, HZ);\n> +\n> +\twritel_relaxed(0, ce->regs + TIM_DIER);\n> +\twritel_relaxed(0, ce->regs + TIM_SR);\n> +\n> +\terr = request_irq(irq, stm32_clock_event_handler, IRQF_TIMER,\n> +\t\t\t  \"stm32 clockevent\", ce);\n> +\tif (err) {\n> +\t\tkfree(ce);\n> +\t\treturn err;\n> +\t}\n> +\n> +\tclockevents_config_and_register(&ce->evtdev, rate, 0x60, ~0U);\n> +\n> +\treturn 0;\n> +}\n> +\n> +static void __iomem *stm32_timer_cnt __read_mostly;\n> +static u64 notrace stm32_read_sched_clock(void)\n> +{\n> +\treturn readl_relaxed(stm32_timer_cnt);\n> +}\n> +\n> +static int __init stm32_clocksource_init(struct device_node *node,\n> +\t\t\t\t\t void __iomem *regs,\n> +\t\t\t\t\t struct clk *clk)\n> +{\n> +\tunsigned long rate;\n> +\n> +\trate = clk_get_rate(clk);\n> +\n> +\twritel_relaxed(~0U, regs + TIM_ARR);\n> +\twritel_relaxed(0, regs + TIM_PSC);\n> +\twritel_relaxed(0, regs + TIM_SR);\n> +\twritel_relaxed(0, regs + TIM_DIER);\n> +\twritel_relaxed(0, regs + TIM_SR);\n> +\twritel_relaxed(TIM_CR1_ARPE | TIM_CR1_UDIS, regs + TIM_CR1);\n> +\n> +\t/* Make sure that registers are updated */\n> +\twritel_relaxed(TIM_EGR_UG, regs + TIM_EGR);\n> +\n> +\t/* Enable controller */\n> +\twritel_relaxed(TIM_CR1_ARPE | TIM_CR1_UDIS | TIM_CR1_CEN,\n> +\t\t       regs + TIM_CR1);\n> +\n> +\tstm32_timer_cnt = regs + TIM_CNT;\n> +\tsched_clock_register(stm32_read_sched_clock, 32, rate);\n> +\n> +\treturn clocksource_mmio_init(stm32_timer_cnt, \"stm32_timer\",\n> +\t\t\t\t     rate, 250, 32, clocksource_mmio_readl_up);\n> +}\n> +\n> +static int __init stm32_timer_init(struct device_node *node)\n>  {\n> -\tstruct stm32_clock_event_ddata *data = &clock_event_ddata;\n> -\tstruct clk *clk;\n>  \tstruct reset_control *rstc;\n> -\tunsigned long rate, max_delta;\n> -\tint irq, ret, bits, prescaler = 1;\n> +\tvoid __iomem *timer_base;\n> +\tunsigned long max_arr;\n> +\tstruct clk *clk;\n> +\tint irq, err;\n>  \n> -\tclk = of_clk_get(np, 0);\n> -\tif (IS_ERR(clk)) {\n> -\t\tret = PTR_ERR(clk);\n> -\t\tpr_err(\"failed to get clock for clockevent (%d)\\n\", ret);\n> -\t\tgoto err_clk_get;\n> +\ttimer_base = of_io_request_and_map(node, 0, of_node_full_name(node));\n> +\tif (IS_ERR(timer_base)) {\n> +\t\tpr_err(\"Can't map registers\\n\");\n> +\t\tgoto out;\n>  \t}\n>  \n> -\tret = clk_prepare_enable(clk);\n> -\tif (ret) {\n> -\t\tpr_err(\"failed to enable timer clock for clockevent (%d)\\n\",\n> -\t\t       ret);\n> -\t\tgoto err_clk_enable;\n> +\tirq = irq_of_parse_and_map(node, 0);\n> +\tif (irq <= 0) {\n> +\t\tpr_err(\"Can't parse IRQ\\n\");\n> +\t\tgoto out_unmap;\n>  \t}\n>  \n> -\trate = clk_get_rate(clk);\n\nWhy not pass the rate to clkevt_init and clksrc_init instead of clk? So\nclk_get_rate() is not called twice.\n\n> +\tclk = of_clk_get(node, 0);\n> +\tif (IS_ERR(clk)) {\n> +\t\tpr_err(\"Can't get timer clock\\n\");\n> +\t\tgoto out_unmap;\n> +\t}\n>  \n> -\trstc = of_reset_control_get(np, NULL);\n> +\trstc = of_reset_control_get(node, NULL);\n>  \tif (!IS_ERR(rstc)) {\n>  \t\treset_control_assert(rstc);\n>  \t\treset_control_deassert(rstc);\n>  \t}\n>  \n> -\tdata->base = of_iomap(np, 0);\n> -\tif (!data->base) {\n> -\t\tret = -ENXIO;\n> -\t\tpr_err(\"failed to map registers for clockevent\\n\");\n> -\t\tgoto err_iomap;\n> -\t}\n> -\n> -\tirq = irq_of_parse_and_map(np, 0);\n> -\tif (!irq) {\n> -\t\tret = -EINVAL;\n> -\t\tpr_err(\"%pOF: failed to get irq.\\n\", np);\n> -\t\tgoto err_get_irq;\n> +\terr = clk_prepare_enable(clk);\n> +\tif (err) {\n> +\t\tpr_err(\"Couldn't enable parent clock\\n\");\n> +\t\tgoto out_clk;\n>  \t}\n>  \n>  \t/* Detect whether the timer is 16 or 32 bits */\n> -\twritel_relaxed(~0U, data->base + TIM_ARR);\n> -\tmax_delta = readl_relaxed(data->base + TIM_ARR);\n> -\tif (max_delta == ~0U) {\n> -\t\tprescaler = 1;\n> -\t\tbits = 32;\n> -\t} else {\n> -\t\tprescaler = 1024;\n> -\t\tbits = 16;\n> +\twritel_relaxed(~0U, timer_base + TIM_ARR);\n> +\tmax_arr = readl_relaxed(timer_base + TIM_ARR);\n> +\tif (max_arr != ~0U) {\n> +\t\terr = -EINVAL;\n> +\t\tpr_err(\"32 bits timer is needed\\n\");\n> +\t\tgoto out_unprepare;\n>  \t}\n> -\twritel_relaxed(0, data->base + TIM_ARR);\n> -\n> -\twritel_relaxed(prescaler - 1, data->base + TIM_PSC);\n> -\twritel_relaxed(TIM_EGR_UG, data->base + TIM_EGR);\n> -\twritel_relaxed(TIM_DIER_UIE, data->base + TIM_DIER);\n> -\twritel_relaxed(0, data->base + TIM_SR);\n> -\n> -\tdata->periodic_top = DIV_ROUND_CLOSEST(rate, prescaler * HZ);\n>  \n> -\tclockevents_config_and_register(&data->evtdev,\n> -\t\t\t\t\tDIV_ROUND_CLOSEST(rate, prescaler),\n> -\t\t\t\t\t0x1, max_delta);\n> +\terr = stm32_clocksource_init(node, timer_base, clk);\n> +\tif (err)\n> +\t\tgoto out_unprepare;\n>  \n> -\tret = request_irq(irq, stm32_clock_event_handler, IRQF_TIMER,\n> -\t\t\t\"stm32 clockevent\", data);\n> -\tif (ret) {\n> -\t\tpr_err(\"%pOF: failed to request irq.\\n\", np);\n> -\t\tgoto err_get_irq;\n> -\t}\n> -\n> -\tpr_info(\"%pOF: STM32 clockevent driver initialized (%d bits)\\n\",\n> -\t\t\tnp, bits);\n> +\terr = stm32_clockevent_init(node, timer_base, clk, irq);\n> +\tif (err)\n> +\t\tgoto out_unprepare;\n>  \n> -\treturn ret;\n> +\treturn 0;\n>  \n> -err_get_irq:\n> -\tiounmap(data->base);\n> -err_iomap:\n> +out_unprepare:\n>  \tclk_disable_unprepare(clk);\n> -err_clk_enable:\n> +out_clk:\n>  \tclk_put(clk);\n> -err_clk_get:\n> -\treturn ret;\n> +out_unmap:\n> +\tiounmap(timer_base);\n> +out:\n> +\treturn err;\n>  }\n>  \n> -TIMER_OF_DECLARE(stm32, \"st,stm32-timer\", stm32_clockevent_init);\n> +CLOCKSOURCE_OF_DECLARE(stm32, \"st,stm32-timer\", stm32_timer_init);\n\nCLOCKSOURCE_OF_DECLARE is deprecated, keep using TIMER_OF_DECLARE.","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"PUgdpeSW\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"YxXKWRkf\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xx0CY3jsJz9s7G\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tTue, 19 Sep 2017 07:54:33 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1du3zr-0001ba-Be; Mon, 18 Sep 2017 21:54:31 +0000","from mail-pg0-x232.google.com ([2607:f8b0:400e:c05::232])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1du3dA-0001OA-UO for linux-arm-kernel@lists.infradead.org;\n\tMon, 18 Sep 2017 21:31:12 +0000","by mail-pg0-x232.google.com with SMTP id 188so864060pgb.2\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tMon, 18 Sep 2017 14:30:43 -0700 (PDT)","from [192.168.0.5] (cpe-66-75-63-57.san.res.rr.com. [66.75.63.57])\n\tby smtp.googlemail.com with ESMTPSA id\n\tc7sm538363pfg.85.2017.09.18.14.30.41\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tMon, 18 Sep 2017 14:30:42 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:\n\tMessage-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description\n\t:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=mx9uvKZoh42fTYiEVeP7qt4TSHgDg/gwdYwoNljWde8=;\n\tb=PUgdpeSWuij5lI\n\t9HLQiRoD0/yJJNPk2l6IV7jQlmnCVLC8yAkfDkgbaMiIkKWjlrbXjqHKREN3tr3UivGgYty+HQ33i\n\toOuTQs5al7LW6HIR6Kxkmy1N6UZTJy7axPEDfO+BQSZzQVHAYrbe2IfMq2aVZD6v7APeJkQm6YQpF\n\t80iFZHlbOrkrubVbztId8WOaY3ExVtH1jMeV9qowyBLZP0gUGTNLTdgOlwL3jUjq2k1JYNndyDVLV\n\tCfmWp/S8ggSYYIL6cWIcBqRLKPKTMvcu3DQ8AEswIsRincpkPVCv9wrJr619Vl00XR1gZv3FrpV0U\n\t4JHS4FeYApDm0KxCFV3w==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;\n\th=subject:to:cc:references:from:message-id:date:user-agent\n\t:mime-version:in-reply-to:content-language:content-transfer-encoding; \n\tbh=TOKst3JqwZ/z5N9C1agodfghp/nReanjvozWeC2M08s=;\n\tb=YxXKWRkfyYXe5wP1INxtyVKNv/uEigbxlvnfXYI0XPLMNb1NWt0KA9qq1CRaT1Bg4q\n\tex85a2MVFugeNK8vmEpPIuHGuXvUQdJfCIMm4HQ7MPRZif6yS5g8tWcjE58wPrUgg/Lh\n\tdUrAe6UXSuNUXA0kNqxXt3ejv1TMxlchGZU74="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:subject:to:cc:references:from:message-id:date\n\t:user-agent:mime-version:in-reply-to:content-language\n\t:content-transfer-encoding;\n\tbh=TOKst3JqwZ/z5N9C1agodfghp/nReanjvozWeC2M08s=;\n\tb=Anqx+zgYViqUVy7ZGYd03E/4a6n0CTOSqUgcUgLJZj8t7Cfs6dfYAtEdqhy6dOYzuT\n\t/eSgotuaA7X+oXhzqFgbxN9uUCdzKm2R7tPu8dNO+7CrDn46Z6ciDAIeZCQrmG8xFuwh\n\thGJrzp9ncwnbnJb4c9Qz/sZX1yOaRA+cqJz+QLsK24GtXjzFMI5C4oRwsVpBOOfB4lV/\n\tfNnSSFOWXKxsol2DjaMh+iWQsNs1qZqrMrIn3gNTITtGcLOuVZj28TZs5/Q1RoFr1Alf\n\te+IHnSLHpxsQqfdWdGWF/zFzr6XM4rbEv7afTF9yY3xDSRSoREagkOZu1rnnwSXhT8m+\n\tiaEw==","X-Gm-Message-State":"AHPjjUg2F0zamzZS0pfZQ7VtHP2kfNilVaSapjhGBpLkKuDlhTYBELGU\n\tHBmXoeuc6zV/Wr5q","X-Google-Smtp-Source":"ADKCNb5zIVGRjNQ9TbZdVZ9DxPNwWJe1oKw5f0sqEd3k+FjZq85SE6kWRHdmderG2B6WEKKBC6ZYvg==","X-Received":"by 10.84.238.204 with SMTP id l12mr37363699pln.196.1505770243190;\n\tMon, 18 Sep 2017 14:30:43 -0700 (PDT)","Subject":"Re: [PATCH 1/2] clocksource: stm32: rework driver to use only one\n\ttimer","To":"Benjamin Gaignard <benjamin.gaignard@linaro.org>, robh+dt@kernel.org,\n\tmark.rutland@arm.com, linux@armlinux.org.uk, mcoquelin.stm32@gmail.com,\n\talexandre.torgue@st.com, tglx@linutronix.de, ludovic.barre@st.com","References":"<1505375812-19037-1-git-send-email-benjamin.gaignard@linaro.org>\n\t<1505375812-19037-2-git-send-email-benjamin.gaignard@linaro.org>","From":"Daniel Lezcano <daniel.lezcano@linaro.org>","Message-ID":"<9e5cae53-0a57-f2e9-cbb1-dde484619fca@linaro.org>","Date":"Mon, 18 Sep 2017 23:30:41 +0200","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.3.0","MIME-Version":"1.0","In-Reply-To":"<1505375812-19037-2-git-send-email-benjamin.gaignard@linaro.org>","Content-Language":"en-US","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170918_143105_156678_1D17AABF ","X-CRM114-Status":"GOOD (  23.85  )","X-Spam-Score":"-2.0 (--)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.0 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno\n\ttrust [2607:f8b0:400e:c05:0:0:0:232 listed in] [list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n\tauthor's domain","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,\n\tlinux-arm-kernel@lists.infradead.org","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1770718,"web_url":"http://patchwork.ozlabs.org/comment/1770718/","msgid":"<CA+M3ks45pUwv=dL6Gd6=Nvm1y5zRvtsFEU1bFoHht0xUDc3UVw@mail.gmail.com>","list_archive_url":null,"date":"2017-09-19T07:59:03","subject":"Re: [PATCH 1/2] clocksource: stm32: rework driver to use only one\n\ttimer","submitter":{"id":66874,"url":"http://patchwork.ozlabs.org/api/people/66874/","name":"Benjamin Gaignard","email":"benjamin.gaignard@linaro.org"},"content":"2017-09-18 23:30 GMT+02:00 Daniel Lezcano <daniel.lezcano@linaro.org>:\n> On 14/09/2017 09:56, Benjamin Gaignard wrote:\n>> Rework driver code to use only one timer for both clocksource\n>> and clockevent.\n>> This patch also forbids to use 16 bits timers because they are\n>> not enough accurate.\n>> Do some clean up in structures and functions names too.\n>>\n>> Signed-off-by: Ludovic Barre <ludovic.barre@st.com>\n>> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>\n>\n> Hi Benjamin,\n>\n> I have a few comments below. Can you when reposting split this patch\n> into smaller changes ?\n\nNot so easy because I change the way of how the hardware is used to be able\nto provide clocksource and clockevent on the same hardware block.\n\n>\n> Also, can you consider using the timer-of API ?\n\nIs it just about using TIMER_OF_DECLARE ? or do you have something\nelse in mind ?\n\n>\n> Thanks.\n>\n>   -- Daniel\n>\n>> ---\n>>  drivers/clocksource/timer-stm32.c | 259 +++++++++++++++++++++++---------------\n>>  1 file changed, 155 insertions(+), 104 deletions(-)\n>>\n>> diff --git a/drivers/clocksource/timer-stm32.c b/drivers/clocksource/timer-stm32.c\n>> index 8f24237..648c10a 100644\n>> --- a/drivers/clocksource/timer-stm32.c\n>> +++ b/drivers/clocksource/timer-stm32.c\n>> @@ -16,175 +16,226 @@\n>>  #include <linux/of_irq.h>\n>>  #include <linux/clk.h>\n>>  #include <linux/reset.h>\n>> +#include <linux/sched_clock.h>\n>> +#include <linux/slab.h>\n>>\n>>  #define TIM_CR1              0x00\n>>  #define TIM_DIER     0x0c\n>>  #define TIM_SR               0x10\n>>  #define TIM_EGR              0x14\n>> +#define TIM_CNT              0x24\n>>  #define TIM_PSC              0x28\n>>  #define TIM_ARR              0x2c\n>> +#define TIM_CCR1     0x34\n>>\n>>  #define TIM_CR1_CEN  BIT(0)\n>> -#define TIM_CR1_OPM  BIT(3)\n>> +#define TIM_CR1_UDIS BIT(1)\n>>  #define TIM_CR1_ARPE BIT(7)\n>>\n>> -#define TIM_DIER_UIE BIT(0)\n>> -\n>> -#define TIM_SR_UIF   BIT(0)\n>> +#define TIM_DIER_CC1IE       BIT(1)\n>>\n>>  #define TIM_EGR_UG   BIT(0)\n>>\n>> -struct stm32_clock_event_ddata {\n>> +struct stm32_clock_event {\n>>       struct clock_event_device evtdev;\n>>       unsigned periodic_top;\n>> -     void __iomem *base;\n>> +     void __iomem *regs;\n>>  };\n>>\n>>  static int stm32_clock_event_shutdown(struct clock_event_device *evtdev)\n>>  {\n>> -     struct stm32_clock_event_ddata *data =\n>> -             container_of(evtdev, struct stm32_clock_event_ddata, evtdev);\n>> -     void *base = data->base;\n>> +     struct stm32_clock_event *ce =\n>> +             container_of(evtdev, struct stm32_clock_event, evtdev);\n>> +\n>> +     writel_relaxed(0, ce->regs + TIM_DIER);\n>>\n>> -     writel_relaxed(0, base + TIM_CR1);\n>\n> Why this change? TIM_CR1 -> TIM_DIER? A 16b to 32b change?\n\nNo it is because I use the interrupt from the comparator instead of the counter.\nWith this patch clocksource will use the 32 bits counter of the hardware block\nto provide the clock and comparator is generate interrupt for the event.\nThat change quite a lot the code, sorry.\n\n\n>\n>>       return 0;\n>>  }\n>>\n>> -static int stm32_clock_event_set_periodic(struct clock_event_device *evtdev)\n>> +static int stm32_clock_event_set_next_event(unsigned long evt,\n>> +                                         struct clock_event_device *evtdev)\n>>  {\n>> -     struct stm32_clock_event_ddata *data =\n>> -             container_of(evtdev, struct stm32_clock_event_ddata, evtdev);\n>> -     void *base = data->base;\n>> +     struct stm32_clock_event *ce =\n>> +             container_of(evtdev, struct stm32_clock_event, evtdev);\n>> +     unsigned long cnt;\n>> +\n>> +     cnt = readl_relaxed(ce->regs + TIM_CNT);\n>> +     writel_relaxed(cnt + evt, ce->regs + TIM_CCR1);\n>> +     writel_relaxed(TIM_DIER_CC1IE, ce->regs + TIM_DIER);\n>>\n>> -     writel_relaxed(data->periodic_top, base + TIM_ARR);\n>> -     writel_relaxed(TIM_CR1_ARPE | TIM_CR1_CEN, base + TIM_CR1);\n>>       return 0;\n>>  }\n>>\n>> -static int stm32_clock_event_set_next_event(unsigned long evt,\n>> -                                         struct clock_event_device *evtdev)\n>> +static int stm32_clock_event_set_periodic(struct clock_event_device *evtdev)\n>>  {\n>> -     struct stm32_clock_event_ddata *data =\n>> -             container_of(evtdev, struct stm32_clock_event_ddata, evtdev);\n>> +     struct stm32_clock_event *ce =\n>> +             container_of(evtdev, struct stm32_clock_event, evtdev);\n>>\n>> -     writel_relaxed(evt, data->base + TIM_ARR);\n>> -     writel_relaxed(TIM_CR1_ARPE | TIM_CR1_OPM | TIM_CR1_CEN,\n>> -                    data->base + TIM_CR1);\n>> +     return stm32_clock_event_set_next_event(ce->periodic_top, evtdev);\n>> +}\n>>\n>> -     return 0;\n>> +static int stm32_clock_event_set_oneshot(struct clock_event_device *evtdev)\n>> +{\n>> +     return stm32_clock_event_set_next_event(0, evtdev);\n>>  }\n>>\n>>  static irqreturn_t stm32_clock_event_handler(int irq, void *dev_id)\n>>  {\n>> -     struct stm32_clock_event_ddata *data = dev_id;\n>> +     struct stm32_clock_event *ce = dev_id;\n>> +\n>> +     writel_relaxed(0, ce->regs + TIM_SR);\n>>\n>> -     writel_relaxed(0, data->base + TIM_SR);\n>> +     if (clockevent_state_periodic(&ce->evtdev))\n>> +             stm32_clock_event_set_periodic(&ce->evtdev);\n>\n> nit: else condition to prevent an extra check\n\nOK\n\n>\n>> -     data->evtdev.event_handler(&data->evtdev);\n>> +     if (clockevent_state_oneshot(&ce->evtdev))\n>> +             stm32_clock_event_shutdown(&ce->evtdev);\n>> +\n>> +     ce->evtdev.event_handler(&ce->evtdev);\n>>\n>>       return IRQ_HANDLED;\n>>  }\n>>\n>> -static struct stm32_clock_event_ddata clock_event_ddata = {\n>> -     .evtdev = {\n>> -             .name = \"stm32 clockevent\",\n>> -             .features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC,\n>> -             .set_state_shutdown = stm32_clock_event_shutdown,\n>> -             .set_state_periodic = stm32_clock_event_set_periodic,\n>> -             .set_state_oneshot = stm32_clock_event_shutdown,\n>> -             .tick_resume = stm32_clock_event_shutdown,\n>> -             .set_next_event = stm32_clock_event_set_next_event,\n>> -             .rating = 200,\n>> -     },\n>> -};\n>> +static int __init stm32_clockevent_init(struct device_node *np,\n>> +                                     void __iomem *base,\n>> +                                     struct clk *clk, int irq)\n>> +{\n>> +     struct stm32_clock_event *ce;\n>> +     unsigned long rate;\n>> +     int err;\n>> +\n>> +     ce = kzalloc(sizeof(*ce), GFP_KERNEL);\n>> +     if (!ce)\n>> +             return -ENOMEM;\n>> +\n>> +     ce->regs = base;\n>> +     ce->evtdev.name = \"stm32_clockevent\";\n>> +     ce->evtdev.features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC;\n>> +     ce->evtdev.set_state_shutdown = stm32_clock_event_shutdown;\n>> +     ce->evtdev.set_state_periodic = stm32_clock_event_set_periodic;\n>> +     ce->evtdev.set_state_oneshot = stm32_clock_event_set_oneshot;\n>> +     ce->evtdev.tick_resume = stm32_clock_event_shutdown;\n>> +     ce->evtdev.set_next_event = stm32_clock_event_set_next_event;\n>> +     ce->evtdev.rating = 200;\n>>\n>> -static int __init stm32_clockevent_init(struct device_node *np)\n>> +     rate = clk_get_rate(clk);\n>> +     ce->periodic_top = DIV_ROUND_CLOSEST(rate, HZ);\n>> +\n>> +     writel_relaxed(0, ce->regs + TIM_DIER);\n>> +     writel_relaxed(0, ce->regs + TIM_SR);\n>> +\n>> +     err = request_irq(irq, stm32_clock_event_handler, IRQF_TIMER,\n>> +                       \"stm32 clockevent\", ce);\n>> +     if (err) {\n>> +             kfree(ce);\n>> +             return err;\n>> +     }\n>> +\n>> +     clockevents_config_and_register(&ce->evtdev, rate, 0x60, ~0U);\n>> +\n>> +     return 0;\n>> +}\n>> +\n>> +static void __iomem *stm32_timer_cnt __read_mostly;\n>> +static u64 notrace stm32_read_sched_clock(void)\n>> +{\n>> +     return readl_relaxed(stm32_timer_cnt);\n>> +}\n>> +\n>> +static int __init stm32_clocksource_init(struct device_node *node,\n>> +                                      void __iomem *regs,\n>> +                                      struct clk *clk)\n>> +{\n>> +     unsigned long rate;\n>> +\n>> +     rate = clk_get_rate(clk);\n>> +\n>> +     writel_relaxed(~0U, regs + TIM_ARR);\n>> +     writel_relaxed(0, regs + TIM_PSC);\n>> +     writel_relaxed(0, regs + TIM_SR);\n>> +     writel_relaxed(0, regs + TIM_DIER);\n>> +     writel_relaxed(0, regs + TIM_SR);\n>> +     writel_relaxed(TIM_CR1_ARPE | TIM_CR1_UDIS, regs + TIM_CR1);\n>> +\n>> +     /* Make sure that registers are updated */\n>> +     writel_relaxed(TIM_EGR_UG, regs + TIM_EGR);\n>> +\n>> +     /* Enable controller */\n>> +     writel_relaxed(TIM_CR1_ARPE | TIM_CR1_UDIS | TIM_CR1_CEN,\n>> +                    regs + TIM_CR1);\n>> +\n>> +     stm32_timer_cnt = regs + TIM_CNT;\n>> +     sched_clock_register(stm32_read_sched_clock, 32, rate);\n>> +\n>> +     return clocksource_mmio_init(stm32_timer_cnt, \"stm32_timer\",\n>> +                                  rate, 250, 32, clocksource_mmio_readl_up);\n>> +}\n>> +\n>> +static int __init stm32_timer_init(struct device_node *node)\n>>  {\n>> -     struct stm32_clock_event_ddata *data = &clock_event_ddata;\n>> -     struct clk *clk;\n>>       struct reset_control *rstc;\n>> -     unsigned long rate, max_delta;\n>> -     int irq, ret, bits, prescaler = 1;\n>> +     void __iomem *timer_base;\n>> +     unsigned long max_arr;\n>> +     struct clk *clk;\n>> +     int irq, err;\n>>\n>> -     clk = of_clk_get(np, 0);\n>> -     if (IS_ERR(clk)) {\n>> -             ret = PTR_ERR(clk);\n>> -             pr_err(\"failed to get clock for clockevent (%d)\\n\", ret);\n>> -             goto err_clk_get;\n>> +     timer_base = of_io_request_and_map(node, 0, of_node_full_name(node));\n>> +     if (IS_ERR(timer_base)) {\n>> +             pr_err(\"Can't map registers\\n\");\n>> +             goto out;\n>>       }\n>>\n>> -     ret = clk_prepare_enable(clk);\n>> -     if (ret) {\n>> -             pr_err(\"failed to enable timer clock for clockevent (%d)\\n\",\n>> -                    ret);\n>> -             goto err_clk_enable;\n>> +     irq = irq_of_parse_and_map(node, 0);\n>> +     if (irq <= 0) {\n>> +             pr_err(\"Can't parse IRQ\\n\");\n>> +             goto out_unmap;\n>>       }\n>>\n>> -     rate = clk_get_rate(clk);\n>\n> Why not pass the rate to clkevt_init and clksrc_init instead of clk? So\n> clk_get_rate() is not called twice.\n\nI will change that in v3\n\n>\n>> +     clk = of_clk_get(node, 0);\n>> +     if (IS_ERR(clk)) {\n>> +             pr_err(\"Can't get timer clock\\n\");\n>> +             goto out_unmap;\n>> +     }\n>>\n>> -     rstc = of_reset_control_get(np, NULL);\n>> +     rstc = of_reset_control_get(node, NULL);\n>>       if (!IS_ERR(rstc)) {\n>>               reset_control_assert(rstc);\n>>               reset_control_deassert(rstc);\n>>       }\n>>\n>> -     data->base = of_iomap(np, 0);\n>> -     if (!data->base) {\n>> -             ret = -ENXIO;\n>> -             pr_err(\"failed to map registers for clockevent\\n\");\n>> -             goto err_iomap;\n>> -     }\n>> -\n>> -     irq = irq_of_parse_and_map(np, 0);\n>> -     if (!irq) {\n>> -             ret = -EINVAL;\n>> -             pr_err(\"%pOF: failed to get irq.\\n\", np);\n>> -             goto err_get_irq;\n>> +     err = clk_prepare_enable(clk);\n>> +     if (err) {\n>> +             pr_err(\"Couldn't enable parent clock\\n\");\n>> +             goto out_clk;\n>>       }\n>>\n>>       /* Detect whether the timer is 16 or 32 bits */\n>> -     writel_relaxed(~0U, data->base + TIM_ARR);\n>> -     max_delta = readl_relaxed(data->base + TIM_ARR);\n>> -     if (max_delta == ~0U) {\n>> -             prescaler = 1;\n>> -             bits = 32;\n>> -     } else {\n>> -             prescaler = 1024;\n>> -             bits = 16;\n>> +     writel_relaxed(~0U, timer_base + TIM_ARR);\n>> +     max_arr = readl_relaxed(timer_base + TIM_ARR);\n>> +     if (max_arr != ~0U) {\n>> +             err = -EINVAL;\n>> +             pr_err(\"32 bits timer is needed\\n\");\n>> +             goto out_unprepare;\n>>       }\n>> -     writel_relaxed(0, data->base + TIM_ARR);\n>> -\n>> -     writel_relaxed(prescaler - 1, data->base + TIM_PSC);\n>> -     writel_relaxed(TIM_EGR_UG, data->base + TIM_EGR);\n>> -     writel_relaxed(TIM_DIER_UIE, data->base + TIM_DIER);\n>> -     writel_relaxed(0, data->base + TIM_SR);\n>> -\n>> -     data->periodic_top = DIV_ROUND_CLOSEST(rate, prescaler * HZ);\n>>\n>> -     clockevents_config_and_register(&data->evtdev,\n>> -                                     DIV_ROUND_CLOSEST(rate, prescaler),\n>> -                                     0x1, max_delta);\n>> +     err = stm32_clocksource_init(node, timer_base, clk);\n>> +     if (err)\n>> +             goto out_unprepare;\n>>\n>> -     ret = request_irq(irq, stm32_clock_event_handler, IRQF_TIMER,\n>> -                     \"stm32 clockevent\", data);\n>> -     if (ret) {\n>> -             pr_err(\"%pOF: failed to request irq.\\n\", np);\n>> -             goto err_get_irq;\n>> -     }\n>> -\n>> -     pr_info(\"%pOF: STM32 clockevent driver initialized (%d bits)\\n\",\n>> -                     np, bits);\n>> +     err = stm32_clockevent_init(node, timer_base, clk, irq);\n>> +     if (err)\n>> +             goto out_unprepare;\n>>\n>> -     return ret;\n>> +     return 0;\n>>\n>> -err_get_irq:\n>> -     iounmap(data->base);\n>> -err_iomap:\n>> +out_unprepare:\n>>       clk_disable_unprepare(clk);\n>> -err_clk_enable:\n>> +out_clk:\n>>       clk_put(clk);\n>> -err_clk_get:\n>> -     return ret;\n>> +out_unmap:\n>> +     iounmap(timer_base);\n>> +out:\n>> +     return err;\n>>  }\n>>\n>> -TIMER_OF_DECLARE(stm32, \"st,stm32-timer\", stm32_clockevent_init);\n>> +CLOCKSOURCE_OF_DECLARE(stm32, \"st,stm32-timer\", stm32_timer_init);\n>\n> CLOCKSOURCE_OF_DECLARE is deprecated, keep using TIMER_OF_DECLARE.\n\nOK\n>\n>\n> --\n>  <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs\n>\n> Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |\n> <http://twitter.com/#!/linaroorg> Twitter |\n> <http://www.linaro.org/linaro-blog/> Blog\n>","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"irtdqCIq\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"AusQIe6Q\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xxFdg09zmz9s7M\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tTue, 19 Sep 2017 17:59:35 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1duDRL-0004Dl-3g; Tue, 19 Sep 2017 07:59:31 +0000","from mail-qk0-x230.google.com ([2607:f8b0:400d:c09::230])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1duDRF-00046V-LT for linux-arm-kernel@lists.infradead.org;\n\tTue, 19 Sep 2017 07:59:29 +0000","by mail-qk0-x230.google.com with SMTP id z143so2829933qkb.3\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tTue, 19 Sep 2017 00:59:04 -0700 (PDT)","by 10.140.41.133 with HTTP; Tue, 19 Sep 2017 00:59:03 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:\n\tReferences:In-Reply-To:MIME-Version:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=RH2MF0ugenSqJyMuog1S1FPR987b9FTGbI0qFlKZiO8=;\n\tb=irtdqCIqmjH/DO\n\tB5oM5GDHUBLt0tZuXDtsjc1FIds/srzIrs4DOrAFIoXZ+ew3oLyVDLLDdzjVKcD8eDoDrcw847S+Y\n\txub9UOvK1UoAWNBHr8WkWc26lNHCgwIsA1jXPZWh5X+eti4DN4PbCS+gsmsr/aHmPLE2yoWnoeuzQ\n\tBD87M53vjNS+3ySLIGEzkqnARY++XhJtZh051uKw7L/K7vpzL5Z5F90kAkmjcqXplIY2q3bXRcPYz\n\t2839enrDbnZxkI6gRtMJLnnJDc9KE783gnPY3VpqScRkBGy8RsXrZxaVducoksRdk0acoMW+kIFG3\n\t0LNnU3LdcOl5L0qX2HdQ==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;\n\th=mime-version:in-reply-to:references:from:date:message-id:subject:to\n\t:cc:content-transfer-encoding;\n\tbh=y3nkEKGoQ7BExGwORyuPRvoJ4SsPnag6FpY5xdvJDPs=;\n\tb=AusQIe6Qat7ahxgCyfbl8ndYBmv6axnsTnNtzxz6Mt8j3TZBEp2pnIi5LwOj99PhMD\n\tGeLVcmiCjyok6s6+I4ai69FFhVqacrjwJc1gMRKI3fCLO5+Sx/K7BUiVkI70uCAlC6zA\n\tWDJV9ygkMt6ppkQP+IbW6ud9lTnZfe8VCGAWs="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc:content-transfer-encoding;\n\tbh=y3nkEKGoQ7BExGwORyuPRvoJ4SsPnag6FpY5xdvJDPs=;\n\tb=GMS7VCBOqh447xeOh8Nqx9DSCzSlxz/sc1TMYXwr68C5upim7I93V912mO6v8MpiXz\n\tltAmx5O/3LCUq+2jOaxVpZdHVZwBiAS3T1KQoRGJLePvZ/GvHFA1ZqrIXIhoLhX4H7JA\n\to68XbNPcQhE2/eY3xqd7rbXItPtaiocAzfaQSTynYw6Lb3lVA9zWBQTzzyA3ALRmPjKd\n\tcdsyDU2KqHJAlubHymTcwZ4m8ZZu19oqDtJKfNMnkZucQ+qO5jEKCkcRlKl7kj7p+X6x\n\tVY8zs7ENxfcY7wJF9UWNvgUrZ8TQdAEfEz92liBQSx0v7KiiWmpDFtovE73mZuGrje+y\n\tPb0g==","X-Gm-Message-State":"AHPjjUib6R0C13jaOyxccwiEJGIbJ38/lh+DPc2w42ESFWTtQw/jGjep\n\tOFt4dw8EyR3HRPNbDqFg9Ql/xd+EdiixXaxl9k3/rg==","X-Google-Smtp-Source":"AOwi7QCsjAB2FB2FbVcOWMYQURuCWhFWTjW3ryh/05c+8vD07Q0PiC/gacWZ7OSk6xkf1V52sQySPexH6cR15bIpEM4=","X-Received":"by 10.55.141.1 with SMTP id p1mr695959qkd.358.1505807943752; Tue,\n\t19 Sep 2017 00:59:03 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<9e5cae53-0a57-f2e9-cbb1-dde484619fca@linaro.org>","References":"<1505375812-19037-1-git-send-email-benjamin.gaignard@linaro.org>\n\t<1505375812-19037-2-git-send-email-benjamin.gaignard@linaro.org>\n\t<9e5cae53-0a57-f2e9-cbb1-dde484619fca@linaro.org>","From":"Benjamin Gaignard <benjamin.gaignard@linaro.org>","Date":"Tue, 19 Sep 2017 09:59:03 +0200","Message-ID":"<CA+M3ks45pUwv=dL6Gd6=Nvm1y5zRvtsFEU1bFoHht0xUDc3UVw@mail.gmail.com>","Subject":"Re: [PATCH 1/2] clocksource: stm32: rework driver to use only one\n\ttimer","To":"Daniel Lezcano <daniel.lezcano@linaro.org>","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170919_005925_880141_D3A1B410 ","X-CRM114-Status":"GOOD (  25.47  )","X-Spam-Score":"-2.7 (--)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.7 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/,\n\tlow\n\ttrust [2607:f8b0:400d:c09:0:0:0:230 listed in] [list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n\tauthor's domain","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>, devicetree@vger.kernel.org,\n\tAlexandre Torgue <alexandre.torgue@st.com>,\n\tRussell King - ARM Linux <linux@armlinux.org.uk>,\n\tLinux Kernel Mailing List <linux-kernel@vger.kernel.org>,\n\tRob Herring <robh+dt@kernel.org>, linux-arm-kernel@lists.infradead.org,\n\tMaxime Coquelin <mcoquelin.stm32@gmail.com>,\n\tThomas Gleixner <tglx@linutronix.de>,\n\tLudovic Barre <ludovic.barre@st.com>","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1771175,"web_url":"http://patchwork.ozlabs.org/comment/1771175/","msgid":"<cb440fab-b2a9-13ff-6f8a-4bce2eb2bc54@linaro.org>","list_archive_url":null,"date":"2017-09-19T15:54:37","subject":"Re: [PATCH 1/2] clocksource: stm32: rework driver to use only one\n\ttimer","submitter":{"id":13265,"url":"http://patchwork.ozlabs.org/api/people/13265/","name":"Daniel Lezcano","email":"daniel.lezcano@linaro.org"},"content":"On 19/09/2017 09:59, Benjamin Gaignard wrote:\n> 2017-09-18 23:30 GMT+02:00 Daniel Lezcano <daniel.lezcano@linaro.org>:\n>> On 14/09/2017 09:56, Benjamin Gaignard wrote:\n>>> Rework driver code to use only one timer for both clocksource\n>>> and clockevent.\n>>> This patch also forbids to use 16 bits timers because they are\n>>> not enough accurate.\n>>> Do some clean up in structures and functions names too.\n>>>\n>>> Signed-off-by: Ludovic Barre <ludovic.barre@st.com>\n>>> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>\n>>\n>> Hi Benjamin,\n>>\n>> I have a few comments below. Can you when reposting split this patch\n>> into smaller changes ?\n> \n> Not so easy because I change the way of how the hardware is used to be able\n> to provide clocksource and clockevent on the same hardware block.\n> \n>>\n>> Also, can you consider using the timer-of API ?\n> \n> Is it just about using TIMER_OF_DECLARE ? or do you have something\n> else in mind ?\n\nIt is something else, see commit dc11bae785.","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"SNMXbCbw\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"OtiPv+Nt\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xxSBf2qF9z9s7h\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tWed, 20 Sep 2017 01:55:22 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1duKrm-0003PP-B6; Tue, 19 Sep 2017 15:55:18 +0000","from mail-pf0-x235.google.com ([2607:f8b0:400e:c00::235])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1duKrV-0002PG-PV for linux-arm-kernel@lists.infradead.org;\n\tTue, 19 Sep 2017 15:55:04 +0000","by mail-pf0-x235.google.com with SMTP id z84so32718pfi.2\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tTue, 19 Sep 2017 08:54:40 -0700 (PDT)","from [192.168.0.5] (cpe-66-75-63-57.san.res.rr.com. [66.75.63.57])\n\tby smtp.googlemail.com with ESMTPSA id\n\tc2sm4557993pgq.61.2017.09.19.08.54.38\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tTue, 19 Sep 2017 08:54:39 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:\n\tMessage-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description\n\t:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=ZPixJApEvahtCCcjgYhHUW0PJOlmxWUnj/7m2CVh1XU=;\n\tb=SNMXbCbwSDjkgs\n\tMJitFUll6IJC5H4p2LmjNTpHxtkpgWH7WFlWjv6YsBCRXFelynEwEai1dvrwOyDg/D7DO34x9sq1f\n\ttHEpnxq0lLcV4muwBfHxUDk5eJL5YI3fli1MsqKOg7uIJaUeVki6gKy/n/qXATiHy8aSJ4Ieh9wNf\n\tzpZQBcTvXGoeFEzqxBFQtX9PkU8iL4fwDNm/gEAh4x1nX05wUxSKlI4xUcAP/sdTkG6gxZWW9GFRD\n\tE2GnnPvQRpFCuYojK0R8fsNlcL4jDykdiMTuOLo61ks178AzFXOL1mEeEKHqoPVKyEqthwZSLfPWM\n\tkBn+70FPXJijEqcOWiWw==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;\n\th=subject:to:cc:references:from:message-id:date:user-agent\n\t:mime-version:in-reply-to:content-language:content-transfer-encoding; \n\tbh=yY7Dj98pie+fHhaqKi5QeBunZ2Nq5QScaG9h5zTFf34=;\n\tb=OtiPv+NtF7KCasTdWIJu+VowvbpSoV0pQfyV/KYXxclDP6OcE6WrpYybzf3pNqzrp+\n\tNYiNNDShvaPAFjVESNfydms7yVEAI70jUuPJOPRqa+xPg7NQfD358TC55TlUSO1q+yxP\n\t2SJ6JUWg1/umPgGMoDbPni+c4rwl7idd4seiQ="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:subject:to:cc:references:from:message-id:date\n\t:user-agent:mime-version:in-reply-to:content-language\n\t:content-transfer-encoding;\n\tbh=yY7Dj98pie+fHhaqKi5QeBunZ2Nq5QScaG9h5zTFf34=;\n\tb=UKllLwrW3gNnkk61/ElH4G2szqT66e87JK2KwDaapX7v06UXpQS9qrtQdo8Jk5QeOb\n\tO06/9iXBko9ONsU2NhL0tgK6iJZvqUzgchVGujoyNT2FMD+5LEh5X3HtJqNej85tdyzv\n\thgtbrgzoil+EbIMdq92KP6Ib91xRG4CUueBvE51shiCtL8L0qxLJVwK/HzaDeYsQKYQc\n\t9RpLEwB0/qs4xQfq9j8Viuit0i5TSOCiYvw284Th6y7TdUx/ip4SWTzL1sqIqMiA5mTx\n\tNgEdj4GVHg9rrKUki5DPq/aNk4oW2I+UIrksaySmU0h9ZPO2NUb0zxRhiVCEj61RzVRi\n\tSFLw==","X-Gm-Message-State":"AHPjjUiy9s0+uThIrDPTQDYmrxOzeZFP6jCKtjyBsIMVHm37QeDHO46C\n\ttKgd2vFxesKheZblPFeQ1XT8sg==","X-Google-Smtp-Source":"AOwi7QBoLWJcqWolUCAos/5idSyqtZOmMkaFIE5jbCzZuhUt0iBkkhQIR1PSQiVn2yE/pFc1+atvBg==","X-Received":"by 10.99.123.79 with SMTP id k15mr1764170pgn.33.1505836479893;\n\tTue, 19 Sep 2017 08:54:39 -0700 (PDT)","Subject":"Re: [PATCH 1/2] clocksource: stm32: rework driver to use only one\n\ttimer","To":"Benjamin Gaignard <benjamin.gaignard@linaro.org>","References":"<1505375812-19037-1-git-send-email-benjamin.gaignard@linaro.org>\n\t<1505375812-19037-2-git-send-email-benjamin.gaignard@linaro.org>\n\t<9e5cae53-0a57-f2e9-cbb1-dde484619fca@linaro.org>\n\t<CA+M3ks45pUwv=dL6Gd6=Nvm1y5zRvtsFEU1bFoHht0xUDc3UVw@mail.gmail.com>","From":"Daniel Lezcano <daniel.lezcano@linaro.org>","Message-ID":"<cb440fab-b2a9-13ff-6f8a-4bce2eb2bc54@linaro.org>","Date":"Tue, 19 Sep 2017 17:54:37 +0200","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.3.0","MIME-Version":"1.0","In-Reply-To":"<CA+M3ks45pUwv=dL6Gd6=Nvm1y5zRvtsFEU1bFoHht0xUDc3UVw@mail.gmail.com>","Content-Language":"en-US","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170919_085501_898353_14ECAD79 ","X-CRM114-Status":"GOOD (  15.29  )","X-Spam-Score":"-2.0 (--)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.0 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno\n\ttrust [2607:f8b0:400e:c00:0:0:0:235 listed in] [list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n\tauthor's domain","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>, devicetree@vger.kernel.org,\n\tAlexandre Torgue <alexandre.torgue@st.com>,\n\tRussell King - ARM Linux <linux@armlinux.org.uk>,\n\tLinux Kernel Mailing List <linux-kernel@vger.kernel.org>,\n\tRob Herring <robh+dt@kernel.org>, linux-arm-kernel@lists.infradead.org,\n\tMaxime Coquelin <mcoquelin.stm32@gmail.com>,\n\tThomas Gleixner <tglx@linutronix.de>,\n\tLudovic Barre <ludovic.barre@st.com>","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}}]