Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp4380118rwd; Sat, 17 Jun 2023 12:26:14 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4rjqf6gxfDHng/ljSvOosl560LIapV4H48z+zHkztYUMSrlg53OQbt5N4w0EOLfDkLcyr2 X-Received: by 2002:a17:90a:f284:b0:25e:93ee:ac0d with SMTP id fs4-20020a17090af28400b0025e93eeac0dmr2882108pjb.42.1687029973812; Sat, 17 Jun 2023 12:26:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687029973; cv=none; d=google.com; s=arc-20160816; b=r1KlYwaDmUBVLmC0SvTBRvWtV1wI1GuYPAVwXnecbgpFGtPQq1LYMj/xBsD5Df/M0J 66pV/QXFkk8ir3EK8rgdtJXV1ZrbC90HxdQgglOh9yIPlwhASdfxLYKyDevm3136v6w+ rGzSA109mcgosgvcXqWvnbPhawE3RGTL7ouSXVdiWumh+wsfG7nTwov5L7WACTaoFfRz l61CI8OmC6cKKspc4rWEAKDZb+fy4qHGRyLFAwWUSKprvnnQyCQQD9N3k933megefylq ynDrxYoZG3jrOLSVAf9ERv2EH+lg/f5PSsxmmaS3MD68Eq++BV/dFtt75ExegrWNgfvt i8vg== 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 :dkim-signature; bh=o9zYN1s6aJ0LEi8KHBtKqVNpKfhxjbsJ2S0b8cW5gUk=; b=KGyNeqs+QS9bkugovQt0p/v+avPdvgSGxOWeNfTXzsh8IBALvpQRZIzen/FK90zsH0 9atGZ4RCpV812+BCGgPSkM6HRn+3d8Pe+CTCcGVA+qLgUCC0YepxqLgX3IZWgsOW+vHv 5uulNKnohB6zToIwpnBwp49JuSxGhWid428GKO67THmgK6mkeyhrLdet30Bqs2gMLP9u OTMSM/gi5qEOZyHpoyyHT8IKvIPyI9PbdEq+VSLJZBg4ilLTOf++8WSORzxwG5qcN3pf IfZk7DTYy4C1sm5tFFyJaQ+Yji8VhCt7lfsyBIPVQdbdDeoBo9piitgTNkzjtx1SuRsP hW0A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=ei2g1Tda; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id mm3-20020a17090b358300b0025eb0c1f787si4226311pjb.163.2023.06.17.12.25.59; Sat, 17 Jun 2023 12:26:13 -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; dkim=pass header.i=@gmail.com header.s=20221208 header.b=ei2g1Tda; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233497AbjFQTB0 (ORCPT + 99 others); Sat, 17 Jun 2023 15:01:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55756 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229446AbjFQTBY (ORCPT ); Sat, 17 Jun 2023 15:01:24 -0400 Received: from mail-oo1-xc2a.google.com (mail-oo1-xc2a.google.com [IPv6:2607:f8b0:4864:20::c2a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6305319BE; Sat, 17 Jun 2023 12:01:22 -0700 (PDT) Received: by mail-oo1-xc2a.google.com with SMTP id 006d021491bc7-55b3b3e2928so1453359eaf.2; Sat, 17 Jun 2023 12:01:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687028481; x=1689620481; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=o9zYN1s6aJ0LEi8KHBtKqVNpKfhxjbsJ2S0b8cW5gUk=; b=ei2g1Tda9xPPuzWdfE0kdTxLxyTjEePRpmC8O3phoxF/ad5eJ/QhfYkNEpUDn1AUNj ii2rkio3ptUDSI/JVwKh/+PnQqUD1y2yStkw6UOVY6vyYQUZW6119MGZ34ivdUB4qs0V 1Kn2koCXwLVOWxW5xC1a0c0M/Yo85i2nNQjT1NEvax6fGz22GV4sZTLo+z8R3vFUumyJ vKOl322oqVvMU4yp7rOidil04c1kiuBxIpCmt88M6IBHiwIqpxOiRa89AieTjOjXNwzx 4j7A5hxEEnWs5gXdGeH7YF4TeVkdJO9g+yxIvtOk1kuQfszGMj6mHFSAPDLlsh4o12fo C65w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687028481; x=1689620481; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=o9zYN1s6aJ0LEi8KHBtKqVNpKfhxjbsJ2S0b8cW5gUk=; b=WW6uRgXK6aEzLryT3KQOJdw5COj3vlENLtoroaSWPiV4N1e0cibT1pzwjj0lyKZ9sq 3A8X12DZ5BRaWZ2Ed24IcHJol8+fOLM1ZFl9xB53h7LziytJugBqH43IcyLPGrC3E6dy igwDI77Kf8KvrSfcyqNq6JmcnZPtb9vLjvR6ldWpH9SGWPKxiRI+9gQeCTQ6B3PbNJFM qatlSLvwCXa0EAKasG877j8AXfSDcA7t/hZg9PRrVlvYrElzw7vv7464JMDoAWGjbIKz sIG3YORGFHpNIwDOQfKy7NuNX+iykYhBR7bKdk6FO7NPwyDIESsjhrV2NKdATakcWjDt lqYQ== X-Gm-Message-State: AC+VfDyAkP3ohcrRFIPPOBKsr8b4ZId9fHbfupihGJJo1hc5KZWXfPQx xaW6jQvWiA2u42Ty+eEpcrLBsQ847ZqwyLX09wvwi1dKdRI= X-Received: by 2002:a4a:de82:0:b0:55c:6812:27c5 with SMTP id v2-20020a4ade82000000b0055c681227c5mr2920690oou.9.1687028481556; Sat, 17 Jun 2023 12:01:21 -0700 (PDT) MIME-Version: 1.0 References: <20230617052435.359177-1-sergio.paracuellos@gmail.com> <20230617052435.359177-9-sergio.paracuellos@gmail.com> In-Reply-To: From: Sergio Paracuellos Date: Sat, 17 Jun 2023 21:01:09 +0200 Message-ID: Subject: Re: [PATCH v4 8/9] mips: ralink: get cpu rate from new driver code To: Krzysztof Kozlowski Cc: linux-clk@vger.kernel.org, linux-mips@vger.kernel.org, tsbogend@alpha.franken.de, john@phrozen.org, linux-kernel@vger.kernel.org, p.zabel@pengutronix.de, mturquette@baylibre.com, sboyd@kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, matthias.bgg@gmail.com, devicetree@vger.kernel.org, arinc.unal@arinc9.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, URIBL_BLOCKED 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 Sat, Jun 17, 2023 at 7:27=E2=80=AFPM Krzysztof Kozlowski wrote: > > On 17/06/2023 17:35, Sergio Paracuellos wrote: > > On Sat, Jun 17, 2023 at 4:48=E2=80=AFPM Krzysztof Kozlowski > > wrote: > >> > >> On 17/06/2023 07:24, Sergio Paracuellos wrote: > >>> At very early stage on boot, there is a need to set 'mips_hpt_frequen= cy'. > >>> This timer frequency is a half of the CPU frequency. To get clocks pr= operly > >>> set we need to call to 'of_clk_init()' and properly get cpu clock fre= quency > >>> afterwards. Depending on the SoC, CPU clock index in the clock provid= er is > >>> different being two for MT7620 SoC and one for the rest. Hence, adapt= code > >>> to be aligned with new clock driver. > >> > >> > >>> void __init plat_time_init(void) > >>> { > >>> + struct of_phandle_args clkspec; > >>> struct clk *clk; > >>> + int cpu_clk_idx; > >>> > >>> ralink_of_remap(); > >>> > >>> - ralink_clk_init(); > >>> - clk =3D clk_get_sys("cpu", NULL); > >>> + cpu_clk_idx =3D clk_cpu_index(); > >>> + if (cpu_clk_idx =3D=3D -1) > >>> + panic("unable to get CPU clock index"); > >>> + > >>> + of_clk_init(NULL); > >>> + clkspec.np =3D of_find_node_by_name(NULL, "sysc"); > >>> + clkspec.args_count =3D 1; > >>> + clkspec.args[0] =3D cpu_clk_idx; > >>> + clk =3D of_clk_get_from_provider(&clkspec); > >> > >> This is very obfuscated way of getting clock. Why can't you get it fro= m > >> "clocks" property of "cpu", like every other recent platform? > > > > I did not find any other approach that works for me. So I ended up in t= his one. > > Can you point me out in a sample of code doing the same so I can check > > if it works for me then? > > You mean bindings? > git grep cpus.yaml > > Driver? > git grep clk_get_rate > clk_get > eventually of_clk_get > > It all depends on the context. > > Anyway, it is very easy to find existing solutions not using > of_find_node_by_name for your platform: > > git grep mips_hpt_frequency > > First result. I have tested before all of these and got into panic because clock cannot get retrieved: For example first result is to make use of clk_get so change the code into: void __init plat_time_init(void) { struct clk *clk; of_clk_init(NULL); clk =3D clk_get(NULL, "cpu"); if (IS_ERR(clk)) panic("unable to get CPU clock, err=3D%ld", PTR_ERR(clk)); pr_info("CPU Clock: %ldMHz\n", clk_get_rate(clk) / 1000000); mips_hpt_frequency =3D clk_get_rate(clk) / 2; clk_put(clk); timer_probe(); } And I panic because I cannot get the cpu clock... > > > Best regards, > Krzysztof > Thanks, Sergio Paracuellos