From 66e276a00bb59b79139ee9e91395d3fd21867b36 Mon Sep 17 00:00:00 2001 From: Cao Jian Date: Fri, 29 Nov 2019 16:30:30 +0800 Subject: [PATCH] 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 --- drivers/amlogic/media/common/ge2d/ge2d_io.h | 6 ++++++ drivers/amlogic/media/common/ge2d/ge2d_main.c | 17 ++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/drivers/amlogic/media/common/ge2d/ge2d_io.h b/drivers/amlogic/media/common/ge2d/ge2d_io.h index f5f69df58ca1..9f629495b95c 100644 --- a/drivers/amlogic/media/common/ge2d/ge2d_io.h +++ b/drivers/amlogic/media/common/ge2d/ge2d_io.h @@ -23,10 +23,13 @@ #include #include #include +#include #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; diff --git a/drivers/amlogic/media/common/ge2d/ge2d_main.c b/drivers/amlogic/media/common/ge2d/ge2d_main.c index 3af17151f87a..1c6ce9a18498 100644 --- a/drivers/amlogic/media/common/ge2d/ge2d_main.c +++ b/drivers/amlogic/media/common/ge2d/ge2d_main.c @@ -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);