Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp1385557pxb; Fri, 1 Apr 2022 11:56:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx7aG3aRIjGvHOO2WRBqZuDOsWotwpvVga06zAHyWa2SXPqeouzHLHLvVNO6xLmjIvqdVjQ X-Received: by 2002:a63:e201:0:b0:382:6afe:f0ec with SMTP id q1-20020a63e201000000b003826afef0ecmr16186189pgh.339.1648839390252; Fri, 01 Apr 2022 11:56:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648839390; cv=none; d=google.com; s=arc-20160816; b=pdY+EQDTmbBpTIfqiZJTXBGJ2rJTSAQqpcigjYJCb7itkqO2im+TuYQbxFz1cWUnda adtKeOP4ebLncKn1mpeVawOJKa2uXdnphT9K/aSpXr+IzFM4X0KMpY+Q1uqGo/lZ8Rlx 3l0pUKxtv7qebzZVHRgXlFSWXhsovn5I1U5wolJa7AtKKerR8u7UyvSyvSdYAcUavh7t l5AGoaWyOibgKn6RZCSh6GpKzOUBu0uHWjnfyRSaEMSPsAD6Aw/2ueu15vwxz1RZSGSr /+HEoiZ1lDqc0mjKswDXkQuoUyyqEd/EkMpP1yBKmy42MdVl11aLHClmarIlLWfw1L2A zNzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version; bh=hAZiVBLmTTYy7ePIwraR10YJk5x7BhfK19+CitnILjg=; b=dzdpqlZQ9adK5m6b2Nv1b4fvzpAWC7mTdljaOqLQ4GIDL9JrG18F5uRmhzGJTqlYLa rAMmrCl3XFOmAKPGeT1kPg/RitLVMM2UY8FNmAcYrW2gGg2E9U1eBHHJPLHmN6+hiNtQ f7Nh0OMlVMjWUcLZxy8czLzFhse6Q3XE0WfSUA6Xrx+ZhR9HeBpa52gEuDSF3quxfWFO +sl4jvbGGaBWGQY2ahgjkQ5iMYLcBwcTmP0ZcF0mTxz7orhxcCG0sIsaADcRLPeug+0t 2Z4J8VnjRWv/wTWmq1N0YyE9wpzgqHoyzhqvhau3nYVfTJiNJlJxIoPuJz/hbdMzvqzy TvfQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id qe4-20020a17090b4f8400b001c6586c5f45si7050055pjb.60.2022.04.01.11.56.14; Fri, 01 Apr 2022 11:56:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238497AbiDAKLs convert rfc822-to-8bit (ORCPT + 99 others); Fri, 1 Apr 2022 06:11:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35974 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230360AbiDAKLq (ORCPT ); Fri, 1 Apr 2022 06:11:46 -0400 Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.126.133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 98EA618EE83; Fri, 1 Apr 2022 03:09:56 -0700 (PDT) Received: from mail-wm1-f44.google.com ([209.85.128.44]) by mrelayeu.kundenserver.de (mreue012 [213.165.67.97]) with ESMTPSA (Nemesis) id 1MeUPU-1o8BXC2q7I-00aWdB; Fri, 01 Apr 2022 12:09:54 +0200 Received: by mail-wm1-f44.google.com with SMTP id i132-20020a1c3b8a000000b0038ce25c870dso3201254wma.1; Fri, 01 Apr 2022 03:09:54 -0700 (PDT) X-Gm-Message-State: AOAM5300FLqhk7MHJ7VpqI0n1lgCekCvKPTQtCjhu8LrWdvuNkUu5jLl /WLcIskzT/+p5X3ECJDLQTTviTYpkxZuaNkMhtk= X-Received: by 2002:a1c:f219:0:b0:38c:782c:3bb with SMTP id s25-20020a1cf219000000b0038c782c03bbmr8009475wmc.94.1648807794169; Fri, 01 Apr 2022 03:09:54 -0700 (PDT) MIME-Version: 1.0 References: <2fa0ce6048f6449d883e2454ceea9540@cqplus1.com> In-Reply-To: <2fa0ce6048f6449d883e2454ceea9540@cqplus1.com> From: Arnd Bergmann Date: Fri, 1 Apr 2022 12:09:38 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v12 5/9] clk: Add Sunplus SP7021 clock driver To: =?UTF-8?B?cWluamlhblvopoPlgaVd?= Cc: Arnd Bergmann , Krzysztof Kozlowski , Rob Herring , Michael Turquette , Stephen Boyd , Thomas Gleixner , Marc Zyngier , Philipp Zabel , Russell King - ARM Linux , Linux ARM , DTML , Linux Kernel Mailing List , linux-clk Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT X-Provags-ID: V03:K1:TJfhkoT13owuLxX72+XrftpY4mBmHY8SnpJTLmFFbgEiz/zazDE 0+0xUB0SCDaAwD9fKPEAG/CGeUezOvORBimaOpZYgdDUo2bQjh+BoEsL8HZxMbXR9rmMyN+ E+ozx9/Tx/Z7kIQ6DBYE7+CNT/adpH7ygYiL67OP7/vyrDMltZGQQRUrvuT1OW2JWh4b38t 8Flr20KY+4DRj9VI9VKNQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:Qma4p1Kf2C4=:ai9TLjlnItrZs5x9f3JQbr UItuX/jl4qCtpoV8Tq0IfIZjl/sONJ/n4TWDsylw4K7EFoztLJ3gET28E+6hQCkoIncZDfL8o UjVhSu2WH0WG7B3sSt+w88aXq0rGcaSlaax3eN8Aqapz9hEXM4LpDoUpx06yEzFGqvXBXuNZ6 sCFgeBlwoMxeDS8CX3cBnsxgPbEhgY46J/A02mXjVdWndN7ygmPGE3itVERx64ZklYp3jff6+ B3I8xfr2doWFOgBUVb6NRiszLfPkd5RHSrkf/BDINXxGuDVVMmw0bAWTzzUTw/ueLOgP1MOAL +T/n8IOzDSTLQKtI3kn8916AH1vU86P9q/zU8zcmloXzRPk7p8mLpf7yBCvc0sfwTeFxREFay ve9lUksIbU2pbYFhfPA8kErNeegXQYz4zrv58FwKLyDW/sm7iqCkX7fRbGYrzDEJZmu8Niczd 9aw2VB79IsjpJNFlAYMkASH06mrz5UvoIj2b4upFLemnuf5u2ZBgnFjnslFCNQAtO9V101r88 Sfxv7xtah9RODVSI9BReQ1I+jBYRbmrBwplgBLc3nB1imvEsmpCIy8QihtHF0rhuSavZgW1Qt h/UyhI2brQoNnaDBguxiGGsEMYhNuYvW28BF7ONdt2gdvARxSrysMy818GHqbh0SgrjA1Y7Gm laHkjs3i3gpih4PEkjMbOcbzIU602/Bh8V4aBMPYeHKEEaoukdFpIhzrEozjOo4R4dhoDLyTL +uHj6uNnKjmYRa4B6Gkf9HKrbvso+I0HdrYK63WaRNFjnmlxOkP04lXWMsmoTre0oAQo5Whsa spGW+nw5PTTaZd+TQQ1MuPJtHfMpsTQC584JaazZayi0EpspYQ= X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Apr 1, 2022 at 11:47 AM qinjian[覃健] wrote: > > > +static int sp_pll_enable(struct clk_hw *hw) > > > +{ > > > + struct sp_pll *clk = to_sp_pll(hw); > > > + unsigned long flags; > > > + > > > + spin_lock_irqsave(clk->lock, flags); > > > + writel(BIT(clk->pd_bit + 16) | BIT(clk->pd_bit), clk->reg); /* power up */ > > > + spin_unlock_irqrestore(clk->lock, flags); > > > + > > > + return 0; > > > +} > > > + > > > +static void sp_pll_disable(struct clk_hw *hw) > > > +{ > > > + struct sp_pll *clk = to_sp_pll(hw); > > > + unsigned long flags; > > > + > > > + spin_lock_irqsave(clk->lock, flags); > > > + writel(BIT(clk->pd_bit + 16), clk->reg); /* power down */ > > > + spin_unlock_irqrestore(clk->lock, flags); > > > +} > > > > What does the spinlock actually protect here? As writel() is posted, it > > can already leak of of the lock, and the inputs would appear to be > > constant. > > > > These code is refered from other clk driver. > But, other driver need read then write, so need lock protected. > Our HW is HIWORD_MASKED_REG, means modify bits no need to read, just 1 write only. > So, the lock is useless. > Did I right? If the read-modify-write is done on a different register, then it is fine to remove the lock. You can also consider having shadow registers to avoid expensive r-m-w cycles and just always write the register directly. > > > + /* This memory region include multi HW regs in discontinuous order. > > > + * clk driver used some discontinuous areas in the memory region. > > > + * Using devm_platform_ioremap_resource() would conflicted with other drivers. > > > + */ > > > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > > > + sp_clk_base = devm_ioremap(dev, res->start, resource_size(res)); > > > + if (!sp_clk_base) > > > + return -ENXIO; > > > > Can you explain this comment in more detail? Generally, the 'reg' properties > > of drivers should not overlap, so it is supposed to be safe to call > > devm_platform_ioremap_resource() here. > > > > We discussed this in the context of the iop driver that did have overlapping > > registers with this driver, and that was incorrect. Are there any other drivers > > that conflict with the clk driver? > > I means, I must split up the origin reg region into 4 small pieces, > and call devm_platform_ioremap_resource() 4 times. > Did I should follow this way? It depends. What are those other registers, and what drivers use them? Arnd