Loading msm/sde/sde_hw_util.h +3 −0 Original line number Diff line number Diff line Loading @@ -178,6 +178,9 @@ int sde_reg_read(struct sde_hw_blk_reg_map *c, u32 reg_off); #define SDE_REG_WRITE(c, off, val) sde_reg_write(c, off, val, #off) #define SDE_REG_READ(c, off) sde_reg_read(c, off) #define SDE_IMEM_WRITE(addr, val) writel_relaxed(val, addr) #define SDE_IMEM_READ(addr) readl_relaxed(addr) #define MISR_FRAME_COUNT_MASK 0xFF #define MISR_CTRL_ENABLE BIT(8) #define MISR_CTRL_STATUS BIT(9) Loading msm/sde/sde_kms.c +30 −4 Original line number Diff line number Diff line Loading @@ -713,13 +713,25 @@ static int sde_kms_prepare_secure_transition(struct msm_kms *kms, return 0; } static int _sde_kms_release_splash_buffer(unsigned int mem_addr, static void _sde_clear_boot_config(struct sde_boot_config *boot_cfg) { if (!boot_cfg) return; SDE_IMEM_WRITE(&boot_cfg->header, 0x0); SDE_IMEM_WRITE(&boot_cfg->addr1, 0x0); SDE_IMEM_WRITE(&boot_cfg->addr2, 0x0); } static int _sde_kms_release_splash_buffer(struct sde_kms *sde_kms, unsigned int mem_addr, unsigned int splash_buffer_size, unsigned int ramdump_base, unsigned int ramdump_buffer_size) { unsigned long pfn_start, pfn_end, pfn_idx; int ret = 0; struct sde_boot_config *boot_cfg = sde_kms->imem; if (!mem_addr || !splash_buffer_size) { SDE_ERROR("invalid params\n"); Loading @@ -733,6 +745,9 @@ static int _sde_kms_release_splash_buffer(unsigned int mem_addr, splash_buffer_size -= ramdump_buffer_size; } if (!ramdump_base) _sde_clear_boot_config(boot_cfg); pfn_start = mem_addr >> PAGE_SHIFT; pfn_end = (mem_addr + splash_buffer_size) >> PAGE_SHIFT; Loading Loading @@ -831,9 +846,9 @@ static int _sde_kms_splash_mem_put(struct sde_kms *sde_kms, if (!splash->ref_cnt) { mmu->funcs->one_to_one_unmap(mmu, splash->splash_buf_base, splash->splash_buf_size); rc = _sde_kms_release_splash_buffer(splash->splash_buf_base, splash->splash_buf_size, splash->ramdump_base, splash->ramdump_size); rc = _sde_kms_release_splash_buffer(sde_kms, splash->splash_buf_base, splash->splash_buf_size, splash->ramdump_base, splash->ramdump_size); splash->splash_buf_base = 0; splash->splash_buf_size = 0; } Loading Loading @@ -3402,6 +3417,17 @@ static int _sde_kms_hw_init_ioremap(struct sde_kms *sde_kms, rc); } sde_kms->imem = msm_ioremap(platformdev, "sde_imem_phys", "sde_imem_phys"); if (IS_ERR(sde_kms->imem)) { sde_kms->imem = NULL; sde_kms->imem_len = 0; } else { sde_kms->imem_len = msm_iomap_size(platformdev, "sde_imem_phys"); } sde_kms->sid = msm_ioremap(platformdev, "sid_phys", "sid_phys"); if (IS_ERR(sde_kms->sid)) { Loading msm/sde/sde_kms.h +19 −2 Original line number Diff line number Diff line Loading @@ -248,8 +248,10 @@ struct sde_kms { struct dentry *debugfs_vbif; /* io/register spaces: */ void __iomem *mmio, *vbif[VBIF_MAX], *reg_dma, *sid; unsigned long mmio_len, vbif_len[VBIF_MAX], reg_dma_len, sid_len; void __iomem *mmio, *vbif[VBIF_MAX], *reg_dma, *sid, *imem; unsigned long mmio_len, vbif_len[VBIF_MAX], reg_dma_len, sid_len, imem_len; struct regulator *vdd; struct regulator *mmagic; Loading Loading @@ -299,6 +301,21 @@ struct sde_kms { struct irq_affinity_notify affinity_notify; }; /** * struct sde_boot_config: display info stored in imem region * @header: header info containing magic ID, frame buffer sizes, * checksum & platformID * @addr1: Lower 32 bits of Frame Buffer Address * @addr2: Higher 32 bits of Frame Buffer Address * @reserved: Reserved */ struct sde_boot_config { u32 header; u32 addr1; u32 addr2; u32 reserved; }; struct vsync_info { u32 frame_count; u32 line_count; Loading Loading
msm/sde/sde_hw_util.h +3 −0 Original line number Diff line number Diff line Loading @@ -178,6 +178,9 @@ int sde_reg_read(struct sde_hw_blk_reg_map *c, u32 reg_off); #define SDE_REG_WRITE(c, off, val) sde_reg_write(c, off, val, #off) #define SDE_REG_READ(c, off) sde_reg_read(c, off) #define SDE_IMEM_WRITE(addr, val) writel_relaxed(val, addr) #define SDE_IMEM_READ(addr) readl_relaxed(addr) #define MISR_FRAME_COUNT_MASK 0xFF #define MISR_CTRL_ENABLE BIT(8) #define MISR_CTRL_STATUS BIT(9) Loading
msm/sde/sde_kms.c +30 −4 Original line number Diff line number Diff line Loading @@ -713,13 +713,25 @@ static int sde_kms_prepare_secure_transition(struct msm_kms *kms, return 0; } static int _sde_kms_release_splash_buffer(unsigned int mem_addr, static void _sde_clear_boot_config(struct sde_boot_config *boot_cfg) { if (!boot_cfg) return; SDE_IMEM_WRITE(&boot_cfg->header, 0x0); SDE_IMEM_WRITE(&boot_cfg->addr1, 0x0); SDE_IMEM_WRITE(&boot_cfg->addr2, 0x0); } static int _sde_kms_release_splash_buffer(struct sde_kms *sde_kms, unsigned int mem_addr, unsigned int splash_buffer_size, unsigned int ramdump_base, unsigned int ramdump_buffer_size) { unsigned long pfn_start, pfn_end, pfn_idx; int ret = 0; struct sde_boot_config *boot_cfg = sde_kms->imem; if (!mem_addr || !splash_buffer_size) { SDE_ERROR("invalid params\n"); Loading @@ -733,6 +745,9 @@ static int _sde_kms_release_splash_buffer(unsigned int mem_addr, splash_buffer_size -= ramdump_buffer_size; } if (!ramdump_base) _sde_clear_boot_config(boot_cfg); pfn_start = mem_addr >> PAGE_SHIFT; pfn_end = (mem_addr + splash_buffer_size) >> PAGE_SHIFT; Loading Loading @@ -831,9 +846,9 @@ static int _sde_kms_splash_mem_put(struct sde_kms *sde_kms, if (!splash->ref_cnt) { mmu->funcs->one_to_one_unmap(mmu, splash->splash_buf_base, splash->splash_buf_size); rc = _sde_kms_release_splash_buffer(splash->splash_buf_base, splash->splash_buf_size, splash->ramdump_base, splash->ramdump_size); rc = _sde_kms_release_splash_buffer(sde_kms, splash->splash_buf_base, splash->splash_buf_size, splash->ramdump_base, splash->ramdump_size); splash->splash_buf_base = 0; splash->splash_buf_size = 0; } Loading Loading @@ -3402,6 +3417,17 @@ static int _sde_kms_hw_init_ioremap(struct sde_kms *sde_kms, rc); } sde_kms->imem = msm_ioremap(platformdev, "sde_imem_phys", "sde_imem_phys"); if (IS_ERR(sde_kms->imem)) { sde_kms->imem = NULL; sde_kms->imem_len = 0; } else { sde_kms->imem_len = msm_iomap_size(platformdev, "sde_imem_phys"); } sde_kms->sid = msm_ioremap(platformdev, "sid_phys", "sid_phys"); if (IS_ERR(sde_kms->sid)) { Loading
msm/sde/sde_kms.h +19 −2 Original line number Diff line number Diff line Loading @@ -248,8 +248,10 @@ struct sde_kms { struct dentry *debugfs_vbif; /* io/register spaces: */ void __iomem *mmio, *vbif[VBIF_MAX], *reg_dma, *sid; unsigned long mmio_len, vbif_len[VBIF_MAX], reg_dma_len, sid_len; void __iomem *mmio, *vbif[VBIF_MAX], *reg_dma, *sid, *imem; unsigned long mmio_len, vbif_len[VBIF_MAX], reg_dma_len, sid_len, imem_len; struct regulator *vdd; struct regulator *mmagic; Loading Loading @@ -299,6 +301,21 @@ struct sde_kms { struct irq_affinity_notify affinity_notify; }; /** * struct sde_boot_config: display info stored in imem region * @header: header info containing magic ID, frame buffer sizes, * checksum & platformID * @addr1: Lower 32 bits of Frame Buffer Address * @addr2: Higher 32 bits of Frame Buffer Address * @reserved: Reserved */ struct sde_boot_config { u32 header; u32 addr1; u32 addr2; u32 reserved; }; struct vsync_info { u32 frame_count; u32 line_count; Loading