From: Tom Rini Date: Tue, 12 Jan 2021 20:46:52 +0000 (-0500) Subject: Merge tag 'u-boot-amlogic-20210112' of https://gitlab.denx.de/u-boot/custodians/u... X-Git-Url: http://git.dujemihanovic.xyz/img/static/git-favicon.png?a=commitdiff_plain;h=795f8fd0b591eef7cf3f8c6fcf9788280029cc4a;p=u-boot.git Merge tag 'u-boot-amlogic-20210112' of https://gitlab.denx.de/u-boot/custodians/u-boot-amlogic - sync amlogic GX & AXG DT to Linux 5.10 - Add new MESON_EE driver support for GXBB & AXG - Add support for Libretech-CC v2, Wetek Core2, Beelink GT-King/Pro boards - add driver for TDO tl070wsh30 panel driver - meson: isolate loading of socinfo - Add soc_rev to environment - Enable G12A support for saradc - Add correct mmcdev on VIM3(L) & Odroid-N2(C4) - Read MAC from fuses for VIM3 & VIM3L boards --- 795f8fd0b591eef7cf3f8c6fcf9788280029cc4a diff --cc drivers/clk/meson/g12a-ao.c index 0000000000,7a0abea77c..0148529e04 mode 000000,100644..100644 --- a/drivers/clk/meson/g12a-ao.c +++ b/drivers/clk/meson/g12a-ao.c @@@ -1,0 -1,83 +1,83 @@@ + // SPDX-License-Identifier: GPL-2.0+ + + #include + #include + #include + #include + #include + #include + #include + #include + + #include "clk_meson.h" + + struct meson_clk { + struct regmap *map; + }; + + #define AO_CLK_GATE0 0x4c + #define AO_SAR_CLK 0x90 + + static struct meson_gate gates[] = { + MESON_GATE(CLKID_AO_SAR_ADC, AO_CLK_GATE0, 8), + MESON_GATE(CLKID_AO_SAR_ADC_CLK, AO_SAR_CLK, 8), + }; + + static int meson_set_gate(struct clk *clk, bool on) + { + struct meson_clk *priv = dev_get_priv(clk->dev); + struct meson_gate *gate; + + if (clk->id >= ARRAY_SIZE(gates)) + return -ENOENT; + + gate = &gates[clk->id]; + + if (gate->reg == 0) + return 0; + + regmap_update_bits(priv->map, gate->reg, + BIT(gate->bit), on ? BIT(gate->bit) : 0); + + return 0; + } + + static int meson_clk_enable(struct clk *clk) + { + return meson_set_gate(clk, true); + } + + static int meson_clk_disable(struct clk *clk) + { + return meson_set_gate(clk, false); + } + + static int meson_clk_probe(struct udevice *dev) + { + struct meson_clk *priv = dev_get_priv(dev); + - priv->map = syscon_node_to_regmap(dev_get_parent(dev)->node); ++ priv->map = syscon_node_to_regmap(dev_ofnode(dev_get_parent(dev))); + if (IS_ERR(priv->map)) + return PTR_ERR(priv->map); + + return 0; + } + + static struct clk_ops meson_clk_ops = { + .disable = meson_clk_disable, + .enable = meson_clk_enable, + }; + + static const struct udevice_id meson_clk_ids[] = { + { .compatible = "amlogic,meson-g12a-aoclkc" }, + { } + }; + + U_BOOT_DRIVER(meson_clk_axg) = { + .name = "meson_clk_g12a_ao", + .id = UCLASS_CLK, + .of_match = meson_clk_ids, - .priv_auto_alloc_size = sizeof(struct meson_clk), ++ .priv_auto = sizeof(struct meson_clk), + .ops = &meson_clk_ops, + .probe = meson_clk_probe, + };