mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-29 23:53:32 +00:00
soc: amlogic: driver updates for v5.10
- misc. pm-domain updates -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEe4dGDhaSf6n1v/EMWTcYmtP7xmUFAl9t/SQACgkQWTcYmtP7 xmWodQ/+JXt8MojIkCB5+/RmDGpM44cyviNfzG99giyVhtQFtC/N4P3ClOBvjOeC L8dBUjmNccVLgslqzJ8Ok7Vvhwcl5CCcp5MF6TU+RWyod6U5LZkS2dQPhqmBpmSX 0FEPz/S7rscwO4klyXzyYDheqSzNSElDaOSdXd16Qol798LxqzM4Uxe6v9Ur7O4H ikLVxvzFlzm6P1/gc6n0C+vphrH8SHME0uOg+AQlqKdV28Oi2kWqYgkDMa0UPUUU m2sVaaPH3hGkY88IOb0xUm3LFGfqIOrIvvn+QbRxQFT8Pk3p4H73P4FvAk9Bm4xp xQ5eBAkVtTV/eUp7jODXC1yl5PJRoRvWCbssQWepKmLqWW8h4dlyWN5LvF4XTkTe SG9pAN7KCZZLSR9N9t9IseqCMa5K+p7cmn12oe43mmbgrXYfXTqYrTl75DYOoEaW 8czM3RpQhp4Qx3AHpHR4pCxPIeCYazP84y3B/dBGVbRJUouECLwSGNzKh/zwk9nB v+sYSjtIGcqC13BPBWWwNHWOdYF3uGHPKWXiSrzpc7jKeAdKAC/l82Nf3hlLlnYz X3AVCTfP/fFgMjpgXQo+Edl6s5G1Us7Wel5kZ/2Ku9+8uknga2DrGvOjORjbsx9d Q37dqA39zYv5GFh3aaw8siLHz71/JlMd+a5ZmrWZQAEj2YBxas8= =8Lm1 -----END PGP SIGNATURE----- Merge tag 'amlogic-drivers' of https://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-amlogic into arm/drivers soc: amlogic: driver updates for v5.10 - misc. pm-domain updates * tag 'amlogic-drivers' of https://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-amlogic: soc: amlogic: pm-domains: use always-on flag soc: amlogic: meson-ee-pwrc: add support for the Meson AXG SoCs dt-bindings: power: amlogic, meson-ee-pwrc: add Amlogic AXG power controller bindings Link: https://lore.kernel.org/r/7hblhukjzx.fsf@baylibre.com Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
commit
e863e45ef9
4 changed files with 65 additions and 6 deletions
|
@ -27,6 +27,7 @@ properties:
|
|||
- amlogic,meson8b-pwrc
|
||||
- amlogic,meson8m2-pwrc
|
||||
- amlogic,meson-gxbb-pwrc
|
||||
- amlogic,meson-axg-pwrc
|
||||
- amlogic,meson-g12a-pwrc
|
||||
- amlogic,meson-sm1-pwrc
|
||||
|
||||
|
@ -42,11 +43,11 @@ properties:
|
|||
- const: vapb
|
||||
|
||||
resets:
|
||||
minItems: 11
|
||||
minItems: 5
|
||||
maxItems: 12
|
||||
|
||||
reset-names:
|
||||
minItems: 11
|
||||
minItems: 5
|
||||
maxItems: 12
|
||||
|
||||
"#power-domain-cells":
|
||||
|
@ -107,6 +108,24 @@ allOf:
|
|||
- resets
|
||||
- reset-names
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- amlogic,meson-axg-pwrc
|
||||
then:
|
||||
properties:
|
||||
reset-names:
|
||||
items:
|
||||
- const: viu
|
||||
- const: venc
|
||||
- const: vcbus
|
||||
- const: vencl
|
||||
- const: vid_lock
|
||||
required:
|
||||
- resets
|
||||
- reset-names
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include <linux/reset.h>
|
||||
#include <linux/clk.h>
|
||||
#include <dt-bindings/power/meson8-power.h>
|
||||
#include <dt-bindings/power/meson-axg-power.h>
|
||||
#include <dt-bindings/power/meson-g12a-power.h>
|
||||
#include <dt-bindings/power/meson-gxbb-power.h>
|
||||
#include <dt-bindings/power/meson-sm1-power.h>
|
||||
|
@ -134,6 +135,11 @@ static struct meson_ee_pwrc_top_domain sm1_pwrc_ge2d = SM1_EE_PD(19);
|
|||
{ __reg, BIT(14) }, \
|
||||
{ __reg, BIT(15) }
|
||||
|
||||
static struct meson_ee_pwrc_mem_domain axg_pwrc_mem_vpu[] = {
|
||||
VPU_MEMPD(HHI_VPU_MEM_PD_REG0),
|
||||
VPU_HHI_MEMPD(HHI_MEM_PD_REG0),
|
||||
};
|
||||
|
||||
static struct meson_ee_pwrc_mem_domain g12a_pwrc_mem_vpu[] = {
|
||||
VPU_MEMPD(HHI_VPU_MEM_PD_REG0),
|
||||
VPU_MEMPD(HHI_VPU_MEM_PD_REG1),
|
||||
|
@ -190,6 +196,10 @@ static struct meson_ee_pwrc_mem_domain sm1_pwrc_mem_ge2d[] = {
|
|||
{ HHI_MEM_PD_REG0, GENMASK(25, 18) },
|
||||
};
|
||||
|
||||
static struct meson_ee_pwrc_mem_domain axg_pwrc_mem_audio[] = {
|
||||
{ HHI_MEM_PD_REG0, GENMASK(5, 4) },
|
||||
};
|
||||
|
||||
static struct meson_ee_pwrc_mem_domain sm1_pwrc_mem_audio[] = {
|
||||
{ HHI_MEM_PD_REG0, GENMASK(5, 4) },
|
||||
{ HHI_AUDIO_MEM_PD_REG0, GENMASK(1, 0) },
|
||||
|
@ -231,6 +241,13 @@ static struct meson_ee_pwrc_mem_domain sm1_pwrc_mem_audio[] = {
|
|||
|
||||
static bool pwrc_ee_get_power(struct meson_ee_pwrc_domain *pwrc_domain);
|
||||
|
||||
static struct meson_ee_pwrc_domain_desc axg_pwrc_domains[] = {
|
||||
[PWRC_AXG_VPU_ID] = VPU_PD("VPU", &gx_pwrc_vpu, axg_pwrc_mem_vpu,
|
||||
pwrc_ee_get_power, 5, 2),
|
||||
[PWRC_AXG_ETHERNET_MEM_ID] = MEM_PD("ETH", meson_pwrc_mem_eth),
|
||||
[PWRC_AXG_AUDIO_ID] = MEM_PD("AUDIO", axg_pwrc_mem_audio),
|
||||
};
|
||||
|
||||
static struct meson_ee_pwrc_domain_desc g12a_pwrc_domains[] = {
|
||||
[PWRC_G12A_VPU_ID] = VPU_PD("VPU", &gx_pwrc_vpu, g12a_pwrc_mem_vpu,
|
||||
pwrc_ee_get_power, 11, 2),
|
||||
|
@ -433,8 +450,8 @@ static int meson_ee_pwrc_init_domain(struct platform_device *pdev,
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = pm_genpd_init(&dom->base, &pm_domain_always_on_gov,
|
||||
false);
|
||||
dom->base.flags = GENPD_FLAG_ALWAYS_ON;
|
||||
ret = pm_genpd_init(&dom->base, NULL, false);
|
||||
if (ret)
|
||||
return ret;
|
||||
} else {
|
||||
|
@ -529,6 +546,11 @@ static struct meson_ee_pwrc_domain_data meson_ee_g12a_pwrc_data = {
|
|||
.domains = g12a_pwrc_domains,
|
||||
};
|
||||
|
||||
static struct meson_ee_pwrc_domain_data meson_ee_axg_pwrc_data = {
|
||||
.count = ARRAY_SIZE(axg_pwrc_domains),
|
||||
.domains = axg_pwrc_domains,
|
||||
};
|
||||
|
||||
static struct meson_ee_pwrc_domain_data meson_ee_gxbb_pwrc_data = {
|
||||
.count = ARRAY_SIZE(gxbb_pwrc_domains),
|
||||
.domains = gxbb_pwrc_domains,
|
||||
|
@ -562,6 +584,10 @@ static const struct of_device_id meson_ee_pwrc_match_table[] = {
|
|||
.compatible = "amlogic,meson8m2-pwrc",
|
||||
.data = &meson_ee_m8b_pwrc_data,
|
||||
},
|
||||
{
|
||||
.compatible = "amlogic,meson-axg-pwrc",
|
||||
.data = &meson_ee_axg_pwrc_data,
|
||||
},
|
||||
{
|
||||
.compatible = "amlogic,meson-gxbb-pwrc",
|
||||
.data = &meson_ee_gxbb_pwrc_data,
|
||||
|
|
|
@ -339,8 +339,8 @@ static int meson_gx_pwrc_vpu_probe(struct platform_device *pdev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
pm_genpd_init(&vpu_pd->genpd, &pm_domain_always_on_gov,
|
||||
powered_off);
|
||||
vpu_pd->genpd.flags = GENPD_FLAG_ALWAYS_ON;
|
||||
pm_genpd_init(&vpu_pd->genpd, NULL, powered_off);
|
||||
|
||||
return of_genpd_add_provider_simple(pdev->dev.of_node,
|
||||
&vpu_pd->genpd);
|
||||
|
|
14
include/dt-bindings/power/meson-axg-power.h
Normal file
14
include/dt-bindings/power/meson-axg-power.h
Normal file
|
@ -0,0 +1,14 @@
|
|||
/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
|
||||
/*
|
||||
* Copyright (c) 2020 BayLibre, SAS
|
||||
* Author: Neil Armstrong <narmstrong@baylibre.com>
|
||||
*/
|
||||
|
||||
#ifndef _DT_BINDINGS_MESON_AXG_POWER_H
|
||||
#define _DT_BINDINGS_MESON_AXG_POWER_H
|
||||
|
||||
#define PWRC_AXG_VPU_ID 0
|
||||
#define PWRC_AXG_ETHERNET_MEM_ID 1
|
||||
#define PWRC_AXG_AUDIO_ID 2
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue