mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
clk: tegra: Changes for v6.2-rc1
Implements new ABI flags for certain clocks for which the parent rate or clock state cannot be changed. -----BEGIN PGP SIGNATURE----- iQJHBAABCAAxFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAmN7rmATHHRyZWRpbmdA bnZpZGlhLmNvbQAKCRDdI6zXfz6zoaKpD/4xuSXf6Q8oqeGNvayhv7T0xMV+EYT2 Y1ZGSPLBgst/vOr7H+6zlaZbBFQmvdg7fsngusfsdH5v8jFuf2WBHn6LahTz3nb7 nolGFoInhRBhK8svM61MWdTMIi7iv6Jkh+Ql5w21QTNO0pVrN4hW2vmq5QfHVFVW jdHJwHuylv3/9G4fBaKK8OYXjeGtGadsBkrZH4e+rBhF2UTudTmOBerwjVUd3K8O r2nUGv7wgyIn2S7ekii/QUblh6hMeOkknj054IzMZp3XjnzzjFBdP7JvzFOWl8Bk sephIuM09Umob77nAC2y3ORXAzXmEifuTlD1RAHE5mcXg4EjGjGIP3CMRtaNG6ef RRHA3KGeG4+hdBg9NR7HJoUq1veGwLVXg/dIKQVvhh0i59HDh38B/DNSYIllUaox yZRcwIQRH9tN9pLgHkPr3ryUqpNGKpcrK+T6Jbdtls78vYeZjMjeLGWHxU8v6+Fd yh+HFbJ076Cc/PL1taN2N/u5QRsV0JpgwDhN3Y5grHEOoLSL8f5F/cT213PmIuIs UBeJ/9fnuXf5ncWjGjmbKjiJg105IclwitIpGFSfiAs+fNcDnCRHxukFU7uJ8ib0 eLdGzyyV3Iov5cqCsjg3ePDhB5xPm8qi6qtyHmWXJV5gpkSgF9tOEF79D8cUl/E2 SLV9makKRYCpSQ== =8chU -----END PGP SIGNATURE----- gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmN9QMUACgkQmmx57+YA GNl+vw/8DbdHVkv7ZMrSKvJCffjpPb7DoO4/tfspD0fD6AOy1PgN+zSKL+bf3XLe Rn/csrMmaDT5EXshucUYsRFhW/TXn4K1qZ5kiENtadEfo5zqee0/yRSHg4NyDUD6 3gFr5kIl75bVbIkyMVMs30yGzS0t8WnksPe8b3j6+Ij4SxuX6q3diBACldXSPRy3 qAFQO3sZH9AhGGzA24ShKa5niGJRPGyaL6vBPdkeoVaVGf8kI0BKnfIKD6hEdvbp 8NSUodxi2aFxt7AijhxmiwWNGaRREv6/4YpXg6rVEOC9fBdPlBFN+yjwHeVV8CsX vvFuIRZkxYItSRsNRwogfJsADPEYeBGePnjSKR5NoIfKQ9aV4gnN40+RDAXFm2s1 6WW+/geEKMEHt38jeZdkE4f36R5GM6x4snedF0N5id4yg+1y3H+6oG/FRhn/oZ7m fpmBkHR/84H2kif29roaxV5cZjQev6+l384ixe4ba5cee0rORkGl77S/k2dllXHZ bihbws2USeYEzvr8fcDUVATrKpOsSntmxPMQ81loL24+VD5v6Ri1wh8onFCPI0V5 sHExJKDR6suLyXdkscJtZ0lhv/laPbexzvT8iKN6aU1yIXXsr0q7hWQOid4mYfi/ J49awSK3oGlEkVshApG5UXKlU13IsEvZ8FWDlSA095DBBdIaFCM= =5hng -----END PGP SIGNATURE----- Merge tag 'tegra-for-6.2-clk-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/drivers clk: tegra: Changes for v6.2-rc1 Implements new ABI flags for certain clocks for which the parent rate or clock state cannot be changed. * tag 'tegra-for-6.2-clk-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux: clk: tegra: Support BPMP-FW ABI deny flags Link: https://lore.kernel.org/r/20221121171239.2041835-3-thierry.reding@gmail.com Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
commit
381abc230b
|
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2016-2020 NVIDIA Corporation
|
||||
* Copyright (C) 2016-2022 NVIDIA Corporation
|
||||
*/
|
||||
|
||||
#include <linux/clk-provider.h>
|
||||
|
|
@ -310,6 +310,23 @@ static const struct clk_ops tegra_bpmp_clk_mux_rate_ops = {
|
|||
.set_rate = tegra_bpmp_clk_set_rate,
|
||||
};
|
||||
|
||||
static const struct clk_ops tegra_bpmp_clk_mux_read_only_ops = {
|
||||
.get_parent = tegra_bpmp_clk_get_parent,
|
||||
.recalc_rate = tegra_bpmp_clk_recalc_rate,
|
||||
};
|
||||
|
||||
static const struct clk_ops tegra_bpmp_clk_read_only_ops = {
|
||||
.recalc_rate = tegra_bpmp_clk_recalc_rate,
|
||||
};
|
||||
|
||||
static const struct clk_ops tegra_bpmp_clk_gate_mux_read_only_ops = {
|
||||
.prepare = tegra_bpmp_clk_prepare,
|
||||
.unprepare = tegra_bpmp_clk_unprepare,
|
||||
.is_prepared = tegra_bpmp_clk_is_prepared,
|
||||
.recalc_rate = tegra_bpmp_clk_recalc_rate,
|
||||
.get_parent = tegra_bpmp_clk_get_parent,
|
||||
};
|
||||
|
||||
static int tegra_bpmp_clk_get_max_id(struct tegra_bpmp *bpmp)
|
||||
{
|
||||
struct cmd_clk_get_max_clk_id_response response;
|
||||
|
|
@ -510,8 +527,22 @@ tegra_bpmp_clk_register(struct tegra_bpmp *bpmp,
|
|||
memset(&init, 0, sizeof(init));
|
||||
init.name = info->name;
|
||||
clk->hw.init = &init;
|
||||
|
||||
if (info->flags & TEGRA_BPMP_CLK_HAS_MUX) {
|
||||
if (info->flags & BPMP_CLK_STATE_CHANGE_DENIED) {
|
||||
if ((info->flags & BPMP_CLK_RATE_PARENT_CHANGE_DENIED) == 0) {
|
||||
dev_WARN(bpmp->dev,
|
||||
"Firmware bug! Inconsistent permission bits for clock %s. State and parent/rate changes disabled.",
|
||||
init.name);
|
||||
}
|
||||
if (info->flags & TEGRA_BPMP_CLK_HAS_MUX)
|
||||
init.ops = &tegra_bpmp_clk_mux_read_only_ops;
|
||||
else
|
||||
init.ops = &tegra_bpmp_clk_read_only_ops;
|
||||
} else if (info->flags & BPMP_CLK_RATE_PARENT_CHANGE_DENIED) {
|
||||
if (info->flags & TEGRA_BPMP_CLK_HAS_MUX)
|
||||
init.ops = &tegra_bpmp_clk_gate_mux_read_only_ops;
|
||||
else
|
||||
init.ops = &tegra_bpmp_clk_gate_ops;
|
||||
} else if (info->flags & TEGRA_BPMP_CLK_HAS_MUX) {
|
||||
if (info->flags & TEGRA_BPMP_CLK_HAS_SET_RATE)
|
||||
init.ops = &tegra_bpmp_clk_mux_rate_ops;
|
||||
else
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user