forked from luck/tmp_suning_uos_patched
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
|
@ -27,6 +27,7 @@ properties:
|
||||||
- amlogic,meson8b-pwrc
|
- amlogic,meson8b-pwrc
|
||||||
- amlogic,meson8m2-pwrc
|
- amlogic,meson8m2-pwrc
|
||||||
- amlogic,meson-gxbb-pwrc
|
- amlogic,meson-gxbb-pwrc
|
||||||
|
- amlogic,meson-axg-pwrc
|
||||||
- amlogic,meson-g12a-pwrc
|
- amlogic,meson-g12a-pwrc
|
||||||
- amlogic,meson-sm1-pwrc
|
- amlogic,meson-sm1-pwrc
|
||||||
|
|
||||||
|
@ -42,11 +43,11 @@ properties:
|
||||||
- const: vapb
|
- const: vapb
|
||||||
|
|
||||||
resets:
|
resets:
|
||||||
minItems: 11
|
minItems: 5
|
||||||
maxItems: 12
|
maxItems: 12
|
||||||
|
|
||||||
reset-names:
|
reset-names:
|
||||||
minItems: 11
|
minItems: 5
|
||||||
maxItems: 12
|
maxItems: 12
|
||||||
|
|
||||||
"#power-domain-cells":
|
"#power-domain-cells":
|
||||||
|
@ -107,6 +108,24 @@ allOf:
|
||||||
- resets
|
- resets
|
||||||
- reset-names
|
- 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:
|
- if:
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include <linux/reset.h>
|
#include <linux/reset.h>
|
||||||
#include <linux/clk.h>
|
#include <linux/clk.h>
|
||||||
#include <dt-bindings/power/meson8-power.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-g12a-power.h>
|
||||||
#include <dt-bindings/power/meson-gxbb-power.h>
|
#include <dt-bindings/power/meson-gxbb-power.h>
|
||||||
#include <dt-bindings/power/meson-sm1-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(14) }, \
|
||||||
{ __reg, BIT(15) }
|
{ __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[] = {
|
static struct meson_ee_pwrc_mem_domain g12a_pwrc_mem_vpu[] = {
|
||||||
VPU_MEMPD(HHI_VPU_MEM_PD_REG0),
|
VPU_MEMPD(HHI_VPU_MEM_PD_REG0),
|
||||||
VPU_MEMPD(HHI_VPU_MEM_PD_REG1),
|
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) },
|
{ 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[] = {
|
static struct meson_ee_pwrc_mem_domain sm1_pwrc_mem_audio[] = {
|
||||||
{ HHI_MEM_PD_REG0, GENMASK(5, 4) },
|
{ HHI_MEM_PD_REG0, GENMASK(5, 4) },
|
||||||
{ HHI_AUDIO_MEM_PD_REG0, GENMASK(1, 0) },
|
{ 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 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[] = {
|
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_G12A_VPU_ID] = VPU_PD("VPU", &gx_pwrc_vpu, g12a_pwrc_mem_vpu,
|
||||||
pwrc_ee_get_power, 11, 2),
|
pwrc_ee_get_power, 11, 2),
|
||||||
|
@ -433,8 +450,8 @@ static int meson_ee_pwrc_init_domain(struct platform_device *pdev,
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = pm_genpd_init(&dom->base, &pm_domain_always_on_gov,
|
dom->base.flags = GENPD_FLAG_ALWAYS_ON;
|
||||||
false);
|
ret = pm_genpd_init(&dom->base, NULL, false);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
} else {
|
} else {
|
||||||
|
@ -529,6 +546,11 @@ static struct meson_ee_pwrc_domain_data meson_ee_g12a_pwrc_data = {
|
||||||
.domains = g12a_pwrc_domains,
|
.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 = {
|
static struct meson_ee_pwrc_domain_data meson_ee_gxbb_pwrc_data = {
|
||||||
.count = ARRAY_SIZE(gxbb_pwrc_domains),
|
.count = ARRAY_SIZE(gxbb_pwrc_domains),
|
||||||
.domains = 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",
|
.compatible = "amlogic,meson8m2-pwrc",
|
||||||
.data = &meson_ee_m8b_pwrc_data,
|
.data = &meson_ee_m8b_pwrc_data,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.compatible = "amlogic,meson-axg-pwrc",
|
||||||
|
.data = &meson_ee_axg_pwrc_data,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.compatible = "amlogic,meson-gxbb-pwrc",
|
.compatible = "amlogic,meson-gxbb-pwrc",
|
||||||
.data = &meson_ee_gxbb_pwrc_data,
|
.data = &meson_ee_gxbb_pwrc_data,
|
||||||
|
|
|
@ -339,8 +339,8 @@ static int meson_gx_pwrc_vpu_probe(struct platform_device *pdev)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
pm_genpd_init(&vpu_pd->genpd, &pm_domain_always_on_gov,
|
vpu_pd->genpd.flags = GENPD_FLAG_ALWAYS_ON;
|
||||||
powered_off);
|
pm_genpd_init(&vpu_pd->genpd, NULL, powered_off);
|
||||||
|
|
||||||
return of_genpd_add_provider_simple(pdev->dev.of_node,
|
return of_genpd_add_provider_simple(pdev->dev.of_node,
|
||||||
&vpu_pd->genpd);
|
&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 New Issue
Block a user