From nobody Thu Jan 20 10:17:44 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 9A760196AC4A; Thu, 20 Jan 2022 10:17:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Jfdk11dBqz4ZQb; Thu, 20 Jan 2022 10:17:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1642673865; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AmN98SvPNFhLQgs9LwA3nIkUIa1Qr5XTEMCMgyJ231Q=; b=YSlI2fobez30RWOIv6W2O+F9g8LBtJkglpxhaUR3yjvW6x7vuDMQYxWqEU4fMBXcdlXPcT TdR/CB2du+mw3IOyAckSvxata7e0OVHehwQBGFLID6J085PCa6jAatp4y10aK6M8DXi9Ah s89y5bkDh4gzJfPi6tgZOk6BKFX8LhFjhYmkvqKbmoLIzqAR8ryDCPrXG+4Y9seAdMi3Sx 6LjBxxAVJ8lzohMbUSmRcCqA1yx25luPIMFWrT9m0X4+g21bUc+ke0k3SN2uSLO8jmhugQ eoEk6pySNrtRHZafWSZLxlm3ChdemdvAeBEXBio17+gyRfTSxVqxEnjqUuG9Og== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id EF1D226734; Thu, 20 Jan 2022 10:17:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 20KAHixr005310; Thu, 20 Jan 2022 10:17:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 20KAHiB2005309; Thu, 20 Jan 2022 10:17:44 GMT (envelope-from git) Date: Thu, 20 Jan 2022 10:17:44 GMT Message-Id: <202201201017.20KAHiB2005309@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michal Meloun Subject: git: 6f63b227bd2b - stable/13 - tegra210: Implement new get_gate method for tegra210 clocks. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mmel X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 6f63b227bd2b6bf5e62a53f0b8b37414f1f759ba Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1642673865; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=AmN98SvPNFhLQgs9LwA3nIkUIa1Qr5XTEMCMgyJ231Q=; b=fNITwWhivEEQclJsuQfQiYzo2Bt5DtCFn+IhY4veWCj5WcSGIfQ0vtQUezSnrllqP8mIi6 F0qTZoL996SLglBF02Vx/qCGXXJGSaMhaeEO/ocZLOqBKm2Mo8YEp1cN6i8TJLWpOj2I+O RQyddLqnvDwNoFXXHDwNGTOo1mmclOr30/3z/2TRewS796L7beAnHTnu4qa1U9G3InGqfw YCj5TcyhxtIjO52ggg/Pd9gJ5ekReMF8rEoG2hjfIP4QZbqm33ozKBZayglsneSfOPHI0L ZmmF/8xRfYkq+//Cm9Rq/GdPtuR5uLFNPkUCx1sW1pAN0JAwpt+4KYf5papOzQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1642673865; a=rsa-sha256; cv=none; b=WGankxDHOdmtYzdMMoqVrnbT9xccQItN7Y4vRg++quRdNmxhTYPVqELX4yPdUGbdcmH2pp 8dQYzh45RJZN/wGL5RznoDVF791dMVbAi+jhBq1KQNHgzZjQ0TFgWxFiKfe8+zmpR3w94g VQaFtwrd9ygBYbepM7a4e7/LdM0rL8swFuDvgN8V+/ND2wqLkDYV6F4w8pWNwkmIiP+h3t wAUJyFh6gBA/1iPy0nMyhA8QxQahKR2uXTdIzmQ5bsvTwOdcAgqltAqnlhbOr/fljhLjHU RDI7IqvZqC7BZBD9432Jb+0e16pjNOQxQh48G8MqiHSiei+gysNUEF8MxPCY0Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by mmel: URL: https://cgit.FreeBSD.org/src/commit/?id=6f63b227bd2b6bf5e62a53f0b8b37414f1f759ba commit 6f63b227bd2b6bf5e62a53f0b8b37414f1f759ba Author: Michal Meloun AuthorDate: 2021-12-24 17:23:59 +0000 Commit: Michal Meloun CommitDate: 2022-01-20 10:14:53 +0000 tegra210: Implement new get_gate method for tegra210 clocks. MFC after: 1 week (cherry picked from commit 7c0ec6638548e78a4fd85a5a2d811bac7c2da98b) --- sys/arm64/nvidia/tegra210/tegra210_clk_per.c | 20 ++++++++++++++++++++ sys/arm64/nvidia/tegra210/tegra210_clk_pll.c | 15 +++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/sys/arm64/nvidia/tegra210/tegra210_clk_per.c b/sys/arm64/nvidia/tegra210/tegra210_clk_per.c index 302dd1d85fd3..edf842e1afac 100644 --- a/sys/arm64/nvidia/tegra210/tegra210_clk_per.c +++ b/sys/arm64/nvidia/tegra210/tegra210_clk_per.c @@ -811,6 +811,7 @@ periph_register(struct clkdom *clkdom, struct periph_def *clkdef) /* -------------------------------------------------------------------------- */ static int pgate_init(struct clknode *clk, device_t dev); static int pgate_set_gate(struct clknode *clk, bool enable); +static int pgate_get_gate(struct clknode *clk, bool *enabled); struct pgate_sc { device_t clkdev; @@ -824,6 +825,7 @@ static clknode_method_t pgate_methods[] = { /* Device interface */ CLKNODEMETHOD(clknode_init, pgate_init), CLKNODEMETHOD(clknode_set_gate, pgate_set_gate), + CLKNODEMETHOD(clknode_get_gate, pgate_get_gate), CLKNODEMETHOD_END }; DEFINE_CLASS_1(tegra210_pgate, tegra210_pgate_class, pgate_methods, @@ -885,6 +887,24 @@ pgate_set_gate(struct clknode *clk, bool enable) return(0); } +static int +pgate_get_gate(struct clknode *clk, bool *enabled) +{ + struct pgate_sc *sc; + uint32_t reg, mask, base_reg; + + sc = clknode_get_softc(clk); + mask = 1 << (sc->idx % 32); + base_reg = get_enable_reg(sc->idx); + + DEVICE_LOCK(sc); + RD4(sc, base_reg, ®); + DEVICE_UNLOCK(sc); + *enabled = reg & mask ? true: false; + + return(0); +} + int tegra210_hwreset_by_idx(struct tegra210_car_softc *sc, intptr_t idx, bool reset) { diff --git a/sys/arm64/nvidia/tegra210/tegra210_clk_pll.c b/sys/arm64/nvidia/tegra210/tegra210_clk_pll.c index 624404c3e074..64e3f6623d29 100644 --- a/sys/arm64/nvidia/tegra210/tegra210_clk_pll.c +++ b/sys/arm64/nvidia/tegra210/tegra210_clk_pll.c @@ -568,6 +568,7 @@ static struct clk_div_def tegra210_pll_divs[] = { static int tegra210_pll_init(struct clknode *clk, device_t dev); static int tegra210_pll_set_gate(struct clknode *clk, bool enable); +static int tegra210_pll_get_gate(struct clknode *clk, bool *enabled); static int tegra210_pll_recalc(struct clknode *clk, uint64_t *freq); static int tegra210_pll_set_freq(struct clknode *clknode, uint64_t fin, uint64_t *fout, int flags, int *stop); @@ -588,6 +589,7 @@ static clknode_method_t tegra210_pll_methods[] = { /* Device interface */ CLKNODEMETHOD(clknode_init, tegra210_pll_init), CLKNODEMETHOD(clknode_set_gate, tegra210_pll_set_gate), + CLKNODEMETHOD(clknode_get_gate, tegra210_pll_get_gate), CLKNODEMETHOD(clknode_recalc_freq, tegra210_pll_recalc), CLKNODEMETHOD(clknode_set_freq, tegra210_pll_set_freq), CLKNODEMETHOD_END @@ -886,6 +888,19 @@ tegra210_pll_set_gate(struct clknode *clknode, bool enable) return (rv); } +static int +tegra210_pll_get_gate(struct clknode *clknode, bool *enabled) +{ + uint32_t reg; + struct pll_sc *sc; + + sc = clknode_get_softc(clknode); + RD4(sc, sc->base_reg, ®); + *enabled = reg & PLL_BASE_ENABLE ? true: false; + WR4(sc, sc->base_reg, reg); + return (0); +} + static int pll_set_std(struct pll_sc *sc, uint64_t fin, uint64_t *fout, int flags, uint32_t m, uint32_t n, uint32_t p)