mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 12:17:12 +09:00
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:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user