Commit 47c7b3c2 authored by Finley Xiao's avatar Finley Xiao Committed by Ulf Hansson
Browse files

pmdomain: rockchip: Add support for RV1126B



Add configuration and power domains for RV1126 SoC.

Signed-off-by: default avatarFinley Xiao <finley.xiao@rock-chips.com>
Reviewed-by: default avatarHeiko Stuebner <heiko@sntech.de>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 56b0d230
Loading
Loading
Loading
Loading
+41 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
#include <soc/rockchip/rockchip_sip.h>
#include <dt-bindings/power/px30-power.h>
#include <dt-bindings/power/rockchip,rv1126-power.h>
#include <dt-bindings/power/rockchip,rv1126b-power-controller.h>
#include <dt-bindings/power/rk3036-power.h>
#include <dt-bindings/power/rk3066-power.h>
#include <dt-bindings/power/rk3128-power.h>
@@ -137,6 +138,20 @@ struct rockchip_pmu {
	.active_wakeup = wakeup,			\
}

#define DOMAIN_M_G(_name, pwr, status, req, idle, ack, g_mask, wakeup, keepon)	\
{							\
	.name = _name,					\
	.pwr_w_mask = (pwr) << 16,			\
	.pwr_mask = (pwr),				\
	.status_mask = (status),			\
	.req_w_mask = (req) << 16,			\
	.req_mask = (req),				\
	.idle_mask = (idle),				\
	.ack_mask = (ack),				\
	.clk_ungate_mask = (g_mask),			\
	.active_wakeup = wakeup,			\
}

#define DOMAIN_M_G_SD(_name, pwr, status, req, idle, ack, g_mask, mem, wakeup, keepon)	\
{							\
	.name = _name,					\
@@ -205,6 +220,9 @@ struct rockchip_pmu {
#define DOMAIN_RV1126(name, pwr, req, idle, wakeup)		\
	DOMAIN_M(name, pwr, pwr, req, idle, idle, wakeup)

#define DOMAIN_RV1126B(name, pwr, req, wakeup)			\
	DOMAIN_M_G(name, pwr, pwr, req, req, req, req, wakeup, true)

#define DOMAIN_RK3288(name, pwr, status, req, wakeup)		\
	DOMAIN(name, pwr, status, req, req, (req) << 16, wakeup)

@@ -1104,6 +1122,13 @@ static const struct rockchip_domain_info rv1126_pm_domains[] = {
	[RV1126_PD_USB]		= DOMAIN_RV1126("usb", BIT(9), BIT(15), BIT(15),  false),
};

static const struct rockchip_domain_info rv1126b_pm_domains[] = {
					      /* name     pwr     req      wakeup */
	[RV1126B_PD_NPU]	= DOMAIN_RV1126B("npu",   BIT(0), BIT(8),  false),
	[RV1126B_PD_VDO]	= DOMAIN_RV1126B("vdo",   BIT(1), BIT(9),  false),
	[RV1126B_PD_AIISP]	= DOMAIN_RV1126B("aiisp", BIT(2), BIT(10), false),
};

static const struct rockchip_domain_info rk3036_pm_domains[] = {
	[RK3036_PD_MSCH]	= DOMAIN_RK3036("msch", BIT(14), BIT(23), BIT(30), true),
	[RK3036_PD_CORE]	= DOMAIN_RK3036("core", BIT(13), BIT(17), BIT(24), false),
@@ -1516,6 +1541,18 @@ static const struct rockchip_pmu_info rv1126_pmu = {
	.domain_info = rv1126_pm_domains,
};

static const struct rockchip_pmu_info rv1126b_pmu = {
	.pwr_offset = 0x210,
	.status_offset = 0x230,
	.req_offset = 0x110,
	.idle_offset = 0x128,
	.ack_offset = 0x120,
	.clk_ungate_offset = 0x140,

	.num_domains = ARRAY_SIZE(rv1126b_pm_domains),
	.domain_info = rv1126b_pm_domains,
};

static const struct of_device_id rockchip_pm_domain_dt_match[] = {
	{
		.compatible = "rockchip,px30-power-controller",
@@ -1585,6 +1622,10 @@ static const struct of_device_id rockchip_pm_domain_dt_match[] = {
		.compatible = "rockchip,rv1126-power-controller",
		.data = (void *)&rv1126_pmu,
	},
	{
		.compatible = "rockchip,rv1126b-power-controller",
		.data = (void *)&rv1126b_pmu,
	},
	{ /* sentinel */ },
};