blob: d82a709fe90e7fdfe2934505684c40742177d963 [file] [log] [blame]
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#ifndef _OSD_BACKUP_H_
#define _OSD_BACKUP_H_
#include "osd_reg.h"
#define OSD_REG_BACKUP_COUNT 12
#define OSD_AFBC_REG_BACKUP_COUNT 9
#define MALI_AFBC_REG_BACKUP_COUNT 41
#define OSD_VALUE_COUNT (VIU_OSD1_CTRL_STAT2 - VIU_OSD1_CTRL_STAT + 1)
#define OSD_AFBC_VALUE_COUNT (OSD1_AFBCD_PIXEL_VSCOPE - OSD1_AFBCD_ENABLE + 1)
#define MALI_AFBC_VALUE_COUNT \
(VPU_MAFBC_PREFETCH_CFG_S2 - VPU_MAFBC_IRQ_MASK + 1)
extern const u16 osd_reg_backup[OSD_REG_BACKUP_COUNT];
extern const u16 osd_afbc_reg_backup[OSD_AFBC_REG_BACKUP_COUNT];
extern const u16 mali_afbc_reg_backup[MALI_AFBC_REG_BACKUP_COUNT];
extern u32 osd_backup[OSD_VALUE_COUNT];
extern u32 osd_afbc_backup[OSD_AFBC_VALUE_COUNT];
extern u32 mali_afbc_backup[MALI_AFBC_VALUE_COUNT];
enum hw_reset_flag_e {
HW_RESET_NONE = 0,
HW_RESET_AFBCD_REGS = 0x80000000,
HW_RESET_OSD1_REGS = 0x00000001,
HW_RESET_OSD2_REGS = 0x00000002,
HW_RESET_OSD3_REGS = 0x00000004,
HW_RESET_AFBCD_HARDWARE = 0x80000000,
HW_RESET_MALI_AFBCD_REGS = 0x280000,
};
struct reg_item {
u32 addr;
u32 val;
u32 mask;
int recovery;
};
struct reg_recovery_table {
u32 base_addr;
u32 size;
struct reg_item *table;
};
void update_backup_reg(u32 addr, u32 value);
s32 get_backup_reg(u32 addr, u32 *value);
void backup_regs_init(u32 backup_mask);
u32 is_backup(void);
void recovery_regs_init(void);
int update_recovery_item(u32 addr, u32 value);
s32 get_recovery_item(u32 addr, u32 *value, u32 *mask);
#endif