ge2d: add the power domain control [1/1]

PD#SWPL-17634

Problem:
add power domain control

Solution:
add power domain control

Verify:
T962E2 AB319

Change-Id: I1c0f8eef091a57b924c0cb431eb82c290ff56d35
Signed-off-by: Cao Jian <jian.cao@amlogic.com>
This commit is contained in:
Cao Jian
2019-11-29 16:30:30 +08:00
committed by Chris
parent b5c9b6efc3
commit 66e276a00b
2 changed files with 22 additions and 1 deletions

View File

@@ -23,10 +23,13 @@
#include <linux/amlogic/cpu_version.h>
#include <linux/amlogic/media/registers/regs/ao_regs.h>
#include <linux/amlogic/power_ctrl.h>
#include <linux/amlogic/power_domain.h>
#include "ge2d_log.h"
#define GE2DBUS_REG_ADDR(reg) (((reg - 0x1800) << 2))
#define GE2D_PWR_DOMAIN 19
extern unsigned int ge2d_dump_reg_cnt;
extern unsigned int ge2d_dump_reg_enable;
extern void __iomem *ge2d_reg_map;
@@ -178,6 +181,9 @@ static inline void ge2d_set_pwr_tbl_bits(unsigned int table_type,
case MEM_PD_REG0:
power_ctrl_mempd0(val ? 0 : 1, 0xFF, start);
break;
case PWR_DOMAIN_CTRL:
power_domain_switch(GE2D_PWR_DOMAIN, val);
break;
default:
ge2d_log_err("unsupported bus type\n");
break;

View File

@@ -55,6 +55,7 @@
#define MAX_GE2D_CLK 500000000
#define HHI_MEM_PD_REG0 0x40
#define RESET2_LEVEL 0x422
#define GE2D_POWER_DOMAIN_CTRL
struct ge2d_device_s {
char name[20];
@@ -1050,6 +1051,7 @@ static int ge2d_release(struct inode *inode, struct file *file)
return -1;
}
#ifndef GE2D_POWER_DOMAIN_CTRL
static struct ge2d_ctrl_s default_poweron_ctrl[] = {
/* power up ge2d */
{GEN_PWR_SLEEP0, AO_RTI_GEN_PWR_SLEEP0, 0, 19, 1, 0},
@@ -1075,6 +1077,19 @@ static struct ge2d_ctrl_s default_poweroff_ctrl[] = {
struct ge2d_power_table_s default_poweron_table = {5, default_poweron_ctrl};
struct ge2d_power_table_s default_poweroff_table = {4, default_poweroff_ctrl};
#else
static struct ge2d_ctrl_s default_poweron_ctrl[] = {
/* power on */
{PWR_DOMAIN_CTRL, 0, 0, 0, 0, 0},
};
static struct ge2d_ctrl_s default_poweroff_ctrl[] = {
/* power off */
{PWR_DOMAIN_CTRL, 0, 1, 0, 0, 0},
};
struct ge2d_power_table_s default_poweron_table = {1, default_poweron_ctrl};
struct ge2d_power_table_s default_poweroff_table = {1, default_poweroff_ctrl};
#endif
static struct ge2d_device_data_s ge2d_gxl = {
.ge2d_rate = 400000000,
@@ -1287,7 +1302,7 @@ static int ge2d_probe(struct platform_device *pdev)
}
ret = of_reserved_mem_device_init(&(pdev->dev));
if (ret < 0)
ge2d_log_info("reserved mem init failed\n");
ge2d_log_info("reserved mem is not used\n");
ret = ge2d_wq_init(pdev, irq, clk_gate);