Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp5068778rwb; Wed, 21 Sep 2022 02:45:07 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7XsVwQkH3F2putJ9F1tRgBYuN6dcj2ekNGh7s61pPzcC3myLnMRCwpJOneQ2rySGCuIcSw X-Received: by 2002:a17:903:2445:b0:178:38ee:70f with SMTP id l5-20020a170903244500b0017838ee070fmr3853380pls.164.1663753507253; Wed, 21 Sep 2022 02:45:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663753507; cv=none; d=google.com; s=arc-20160816; b=F6hFyb/NNdEF1kdeturqMl1gYkNndxQwtP2eFQs9y7Kg/P9LW4EhbOi7M8nknp5h1d qxPJ+AEyJJFHAXdAD+lSui9S7heWEYGGc8Ouy0uJUl/DwZMvadjZUC7d+rnH3usDTHS0 +dMb1pL9G9dwoUhiZ0+hyy4+Uq0GhlemeqTP5ZC6hrIIIpsr/tJcZrgSFm6CNjGEO+p4 6IA59GymFVjZPYFF43/Httd6w8YckaAB15Wp8aqNknPDqwiNUbbq3DNX3HuvpIhzSCPZ QY69tdO8khOswDGx8w/PwQyTwSu3ib68ACyEfWHrPa/VxK+2i0l0cS/HUtsmiXujsW1Q 4g3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:references :to:from:content-language:subject:user-agent:mime-version:date :message-id; bh=yTBbX4rH92PV4tDEk0qcVecdfgpHU1AfhYleFucc5rM=; b=TSARUeY4DhXqziWIjW7oza+Rge18Gm/QnSj43pP/QtM3dLjN1XybdXfUkkPKclZ8d8 su2cE08B2Lka2kGEwD9EOcKxXxsaVx8GFdWnWitVUPTA0S9hD4gj3P4eQg++f4q0Rhbw EfUA3iFc7DKEHd2aIdOUPrEH4WR3pEw8Zgo3mMsJN62hGILOsST47YsqZJrBm8EGq0aY 82b6vR1KnfIMlneIgwVw4G2V+2xu/JF/JAhnCgJOj7YqaQ6YTcBjoBWy7eULe6RHY4Sr /0FvrbbREFvhRBsIjS1LAuO5f6pjB7XY5gnnVqT4r/5vzc/PNTi+b6bkFHPdrDLJQKdC UZow== 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 y3-20020a17090322c300b0017543def6fbsi2497417plg.60.2022.09.21.02.44.56; Wed, 21 Sep 2022 02:45:07 -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 S229821AbiIUIkm (ORCPT + 99 others); Wed, 21 Sep 2022 04:40:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49006 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229610AbiIUIkk (ORCPT ); Wed, 21 Sep 2022 04:40:40 -0400 Received: from mail-sh.amlogic.com (mail-sh.amlogic.com [58.32.228.43]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 32B9567CAD; Wed, 21 Sep 2022 01:40:38 -0700 (PDT) Received: from [10.18.29.47] (10.18.29.47) by mail-sh.amlogic.com (10.18.11.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.9; Wed, 21 Sep 2022 16:40:35 +0800 Message-ID: <21e14cc1-6b34-e6b0-8da2-ad4b34dac149@amlogic.com> Date: Wed, 21 Sep 2022 16:40:34 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.13.0 Subject: Re: [PATCH V3 3/6] clk: meson: S4: add support for Amlogic S4 SoC PLL clock driver Content-Language: en-US From: Yu Tu To: Jerome Brunet , , , , , , Rob Herring , Neil Armstrong , Kevin Hilman , Michael Turquette , Stephen Boyd , Krzysztof Kozlowski , Martin Blumenstingl References: <20220805085716.5635-1-yu.tu@amlogic.com> <20220805085716.5635-4-yu.tu@amlogic.com> <1jiln0yzgj.fsf@starbuckisacylon.baylibre.com> <4e3cdd6b-5861-8a4f-1df7-af763f77bad5@amlogic.com> <1jsflftm1y.fsf@starbuckisacylon.baylibre.com> <0c7e6d90-2ce3-25ab-84b6-026ce8a238a8@amlogic.com> <1jtu5uz0ry.fsf@starbuckisacylon.baylibre.com> <9f9cf980-c0c6-d5c3-ced8-8ab50e392470@amlogic.com> In-Reply-To: <9f9cf980-c0c6-d5c3-ced8-8ab50e392470@amlogic.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.18.29.47] X-ClientProxiedBy: mail-sh.amlogic.com (10.18.11.5) To mail-sh.amlogic.com (10.18.11.5) X-Spam-Status: No, score=-5.6 required=5.0 tests=BAYES_00,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS 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 Hi Jerome, On 2022/8/30 15:37, Yu Tu wrote: > > > On 2022/8/30 14:44, Jerome Brunet wrote: >> [ EXTERNAL EMAIL ] >> >> >> On Tue 30 Aug 2022 at 14:13, Yu Tu wrote: >> >>> On 2022/8/29 17:48, Jerome Brunet wrote: >>>> [ EXTERNAL EMAIL ] >>>> On Mon 15 Aug 2022 at 21:20, Yu Tu wrote: >>>> >>>>>>>> + >>>>>>>> +static struct clk_regmap s4_hdmi_pll_dco = { >>>>>>>> +    .data = &(struct meson_clk_pll_data){ >>>>>>>> +        .en = { >>>>>>>> +            .reg_off = ANACTRL_HDMIPLL_CTRL0, >>>>>>>> +            .shift   = 28, >>>>>>>> +            .width   = 1, >>>>>>>> +        }, >>>>>>>> +        .m = { >>>>>>>> +            .reg_off = ANACTRL_HDMIPLL_CTRL0, >>>>>>>> +            .shift   = 0, >>>>>>>> +            .width   = 8, >>>>>>>> +        }, >>>>>>>> +        .n = { >>>>>>>> +            .reg_off = ANACTRL_HDMIPLL_CTRL0, >>>>>>>> +            .shift   = 10, >>>>>>>> +            .width   = 5, >>>>>>>> +        }, >>>>>>>> +        .frac = { >>>>>>>> +            .reg_off = ANACTRL_HDMIPLL_CTRL1, >>>>>>>> +            .shift   = 0, >>>>>>>> +            .width   = 17, >>>>>>>> +        }, >>>>>>>> +        .l = { >>>>>>>> +            .reg_off = ANACTRL_HDMIPLL_CTRL0, >>>>>>>> +            .shift   = 31, >>>>>>>> +            .width   = 1, >>>>>>>> +        }, >>>>>>>> +        .rst = { >>>>>>>> +            .reg_off = ANACTRL_HDMIPLL_CTRL0, >>>>>>>> +            .shift   = 29, >>>>>>>> +            .width   = 1, >>>>>>>> +        }, >>>>>>>> +    }, >>>>>>>> +    .hw.init = &(struct clk_init_data){ >>>>>>>> +        .name = "hdmi_pll_dco", >>>>>>>> +        .ops = &meson_clk_pll_ro_ops, >>>>>>>> +        .parent_data = (const struct clk_parent_data []) { >>>>>>>> +            { .fw_name = "xtal", } >>>>>>>> +        }, >>>>>>>> +        .num_parents = 1, >>>>>>>> +        /* >>>>>>>> +         * Display directly handle hdmi pll registers ATM, we need >>>>>>>> +         * NOCACHE to keep our view of the clock as accurate as >>>>>>>> +         * possible >>>>>>>> +         */ >>>>>>> >>>>>>> Is it really ? >>>>>>> >>>>>>> Given that HDMI support for the s4 is there yet, the >>>>>>> addresses have changes and the region is no longer a syscon, it >>>>>>> is time >>>>>>> for the HDMI driver to get fixed. >>>>> The HDMI PLL is configured in the Uboot phase and does not change the >>>>> frequency in the kernel phase. So we use the NOCACHE flag and >>>>> "ro_ops". >>>> That's no reason to put NOCACHE or ro-ops >>>> If you want the frequencies to be statically assinged, the correct way >>>> would be through assigned-rate in DT I guess. >>> >>> Okay. You're right. However, when registering with OPS, HDMI PLL will be >>> reset. It takes time for PLL to stabilize the output frequency, which >>> will >>> lead to the startup screen flashing. >>> >>> I would like to know how to solve this problem if not using ro_ops. >>> >>>> >> >> You can add new ops or tweak the current init function. > > HDMI PLL is not different from other PLLS, so I think adding OPS is weird. > >> >> Safest would be to do the following : >>   * Check if the PLLs is already on. >>   * Check if the 'pll->init_regs' matches what is already set >>     - if so, you can skip the reset >>     - if not, you need to reset as usual > > static int meson_clk_pll_init(struct clk_hw *hw) > { >         struct clk_regmap *clk = to_clk_regmap(hw); >         struct meson_clk_pll_data *pll = meson_clk_pll_data(clk); > > >         if (pll->init_count) { >                 meson_parm_write(clk->map, &pll->rst, 1); >                 regmap_multi_reg_write(clk->map, pll->init_regs, >                                 |      pll->init_count); >                 meson_parm_write(clk->map, &pll->rst, 0); >         } > > >         return 0; > } > > Because the init function looks like this. Therefore, HDMI PLL > init_count is not given. Can I change it like this? I don't know if this change meets your requirements? Please give us your valuable advice.