disp: msm: fix rscc branch offset for lito
Branch address offset for TCS sleep/wake has changed for lito, add changes to support it. Change-Id: Id938c4c85df17f6709b9533ff737cf5a0186bc09 Signed-off-by: Animesh Kishore <animeshk@codeaurora.org>
This commit is contained in:
@@ -11,6 +11,7 @@
|
|||||||
#include <linux/sde_rsc.h>
|
#include <linux/sde_rsc.h>
|
||||||
|
|
||||||
/* display rsc offset */
|
/* display rsc offset */
|
||||||
|
#define SDE_RSCC_RSC_ID_DRV0 0x0
|
||||||
#define SDE_RSCC_PDC_SEQ_START_ADDR_REG_OFFSET_DRV0 0x020
|
#define SDE_RSCC_PDC_SEQ_START_ADDR_REG_OFFSET_DRV0 0x020
|
||||||
#define SDE_RSCC_PDC_MATCH_VALUE_LO_REG_OFFSET_DRV0 0x024
|
#define SDE_RSCC_PDC_MATCH_VALUE_LO_REG_OFFSET_DRV0 0x024
|
||||||
#define SDE_RSCC_PDC_MATCH_VALUE_HI_REG_OFFSET_DRV0 0x028
|
#define SDE_RSCC_PDC_MATCH_VALUE_HI_REG_OFFSET_DRV0 0x028
|
||||||
|
@@ -84,6 +84,7 @@ static int _rsc_hw_seq_memory_init_v3(struct sde_rsc_priv *rsc)
|
|||||||
const u32 mode_0_start_addr = 0x0;
|
const u32 mode_0_start_addr = 0x0;
|
||||||
const u32 mode_1_start_addr = 0xc;
|
const u32 mode_1_start_addr = 0xc;
|
||||||
const u32 mode_2_start_addr = 0x18;
|
const u32 mode_2_start_addr = 0x18;
|
||||||
|
u32 br_offset = 0;
|
||||||
|
|
||||||
pr_debug("rsc sequencer memory init v2\n");
|
pr_debug("rsc sequencer memory init v2\n");
|
||||||
|
|
||||||
@@ -130,9 +131,12 @@ static int _rsc_hw_seq_memory_init_v3(struct sde_rsc_priv *rsc)
|
|||||||
0x00209ce7, rsc->debug_mode);
|
0x00209ce7, rsc->debug_mode);
|
||||||
|
|
||||||
/* branch address */
|
/* branch address */
|
||||||
dss_reg_w(&rsc->drv_io, SDE_RSCC_SEQ_CFG_BR_ADDR_0_DRV0,
|
if (rsc->hw_drv_ver >= SDE_RSC_HW_MAJOR_MINOR_STEP(2,0,5))
|
||||||
|
br_offset = 0xf0;
|
||||||
|
|
||||||
|
dss_reg_w(&rsc->drv_io, SDE_RSCC_SEQ_CFG_BR_ADDR_0_DRV0 + br_offset,
|
||||||
0x34, rsc->debug_mode);
|
0x34, rsc->debug_mode);
|
||||||
dss_reg_w(&rsc->drv_io, SDE_RSCC_SEQ_CFG_BR_ADDR_1_DRV0,
|
dss_reg_w(&rsc->drv_io, SDE_RSCC_SEQ_CFG_BR_ADDR_1_DRV0 + br_offset,
|
||||||
0x3c, rsc->debug_mode);
|
0x3c, rsc->debug_mode);
|
||||||
|
|
||||||
/* start address */
|
/* start address */
|
||||||
@@ -477,6 +481,9 @@ int rsc_hw_init_v3(struct sde_rsc_priv *rsc)
|
|||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
|
rsc->hw_drv_ver = dss_reg_r(&rsc->drv_io,
|
||||||
|
SDE_RSCC_RSC_ID_DRV0, rsc->debug_mode);
|
||||||
|
|
||||||
rc = _rsc_hw_qtimer_init(rsc);
|
rc = _rsc_hw_qtimer_init(rsc);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
pr_err("rsc hw qtimer init failed\n");
|
pr_err("rsc hw qtimer init failed\n");
|
||||||
|
@@ -28,6 +28,11 @@
|
|||||||
#define SDE_RSC_REV_2 0x2
|
#define SDE_RSC_REV_2 0x2
|
||||||
#define SDE_RSC_REV_3 0x3
|
#define SDE_RSC_REV_3 0x3
|
||||||
|
|
||||||
|
#define SDE_RSC_HW_MAJOR_MINOR_STEP(major, minor, step) \
|
||||||
|
(((major & 0xff) << 16) |\
|
||||||
|
((minor & 0xff) << 8) | \
|
||||||
|
(step & 0xff))
|
||||||
|
|
||||||
struct sde_rsc_priv;
|
struct sde_rsc_priv;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -140,6 +145,7 @@ struct sde_rsc_bw_config {
|
|||||||
/**
|
/**
|
||||||
* struct sde_rsc_priv: sde resource state coordinator(rsc) private handle
|
* struct sde_rsc_priv: sde resource state coordinator(rsc) private handle
|
||||||
* @version: rsc sequence version
|
* @version: rsc sequence version
|
||||||
|
* @hw_drv_ver: rscc hw version
|
||||||
* @phandle: module power handle for clocks
|
* @phandle: module power handle for clocks
|
||||||
* @fs: "MDSS GDSC" handle
|
* @fs: "MDSS GDSC" handle
|
||||||
* @sw_fs_enabled: track "MDSS GDSC" sw vote during probe
|
* @sw_fs_enabled: track "MDSS GDSC" sw vote during probe
|
||||||
@@ -182,6 +188,7 @@ struct sde_rsc_bw_config {
|
|||||||
*/
|
*/
|
||||||
struct sde_rsc_priv {
|
struct sde_rsc_priv {
|
||||||
u32 version;
|
u32 version;
|
||||||
|
u32 hw_drv_ver;
|
||||||
struct sde_power_handle phandle;
|
struct sde_power_handle phandle;
|
||||||
struct regulator *fs;
|
struct regulator *fs;
|
||||||
bool sw_fs_enabled;
|
bool sw_fs_enabled;
|
||||||
|
Reference in New Issue
Block a user