soc: starfive: jh71xx_pmu: Add EVENT_TURN_OFF register writing support

Add and export starfive_pmu_hw_event_turn_off_mask() to
write EVENT_TURN_OFF register.

Signed-off-by: Hal Feng <hal.feng@starfivetech.com>
This commit is contained in:
Hal Feng
2023-10-13 14:10:24 +08:00
parent c8bc7c051d
commit f1605a717f
2 changed files with 40 additions and 0 deletions

View File

@@ -16,6 +16,7 @@
#include <dt-bindings/power/starfive,jh7110-pmu.h>
/* register offset */
#define JH71XX_PMU_HW_EVENT_TURN_OFF 0x08
#define JH71XX_PMU_SW_TURN_ON_POWER 0x0C
#define JH71XX_PMU_SW_TURN_OFF_POWER 0x10
#define JH71XX_PMU_SW_ENCOURAGE 0x44
@@ -83,6 +84,14 @@ struct jh71xx_pmu_dev {
struct generic_pm_domain genpd;
};
static void __iomem *pmu_base;
void starfive_pmu_hw_event_turn_off_mask(u32 mask)
{
writel(mask, pmu_base + JH71XX_PMU_HW_EVENT_TURN_OFF);
}
EXPORT_SYMBOL(starfive_pmu_hw_event_turn_off_mask);
static int jh71xx_pmu_get_state(struct jh71xx_pmu_dev *pmd, u32 mask, bool *is_on)
{
struct jh71xx_pmu *pmu = pmd->pmu;
@@ -334,6 +343,8 @@ static int jh71xx_pmu_probe(struct platform_device *pdev)
if (IS_ERR(pmu->base))
return PTR_ERR(pmu->base);
pmu_base = pmu->base;
spin_lock_init(&pmu->lock);
match_data = of_device_get_match_data(dev);

View File

@@ -0,0 +1,29 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* PMU driver for the StarFive JH7110 SoC
*
* Copyright (C) 2022 samin <samin.guo@starfivetech.com>
*/
#ifndef __SOC_STARFIVE_JH7110_PMU_H__
#define __SOC_STARFIVE_JH7110_PMU_H__
#include <linux/bits.h>
#include <linux/types.h>
enum PMU_HARD_EVENT {
PMU_HW_EVENT_RTC = BIT(0),
PMU_HW_EVENT_GMAC = BIT(1),
PMU_HW_EVENT_RFU = BIT(2),
PMU_HW_EVENT_RGPIO0 = BIT(3),
PMU_HW_EVENT_RGPIO1 = BIT(4),
PMU_HW_EVENT_RGPIO2 = BIT(5),
PMU_HW_EVENT_RGPIO3 = BIT(6),
PMU_HW_EVENT_GPU = BIT(7),
PMU_HW_EVENT_ALL = GENMASK(7, 0),
};
void starfive_pmu_hw_event_turn_off_mask(u32 mask);
#endif /* __SOC_STARFIVE_JH7110_PMU_H__ */