blob: 6b6710c5800705f1ccdb41621f64c8e8f057fd1c [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0+ */
/*
*
* Copyright (C) 2019 Amlogic, Inc. All rights reserved.
*
*/
#ifndef __AML_LCD_DEBUG_H__
#define __AML_LCD_DEBUG_H__
#include <linux/amlogic/media/vout/lcd/lcd_vout.h>
#include "lcd_reg.h"
#define LCD_DEBUG_REG_CNT_MAX 30
#define LCD_DEBUG_REG_END 0xffffffff
/*tcon adb port use */
#define LCD_ADB_TCON_REG_RW_MODE_NULL 0
#define LCD_ADB_TCON_REG_RW_MODE_RN 1
#define LCD_ADB_TCON_REG_RW_MODE_WM 2
#define LCD_ADB_TCON_REG_RW_MODE_WN 3
#define LCD_ADB_TCON_REG_RW_MODE_WS 4
#define LCD_ADB_TCON_REG_RW_MODE_ERR 5
#define ADB_TCON_REG_8_bit 0
#define ADB_TCON_REG_32_bit 1
struct lcd_tcon_adb_reg_s {
unsigned int rw_mode;
unsigned int bit_width;
unsigned int addr;
unsigned int len;
};
struct lcd_debug_info_reg_s {
unsigned int *reg_pll_table;
unsigned int *reg_clk_table;
unsigned int *reg_encl_table;
unsigned int *reg_pinmux_table;
void (*prbs_test)(struct aml_lcd_drv_s *pdrv, unsigned int s,
unsigned int mode_flag);
};
struct lcd_debug_info_if_s {
int (*interface_print)(struct aml_lcd_drv_s *pdrv, char *buf, int offset);
int (*reg_dump_interface)(struct aml_lcd_drv_s *pdrv, char *buf, int offset);
int (*reg_dump_phy)(struct aml_lcd_drv_s *pdrv, char *buf, int offset);
struct device_attribute *attrs;
};
static unsigned int lcd_reg_dump_clk_gp0_g12a[] = {
HHI_GP0_PLL_CNTL0,
HHI_GP0_PLL_CNTL1,
HHI_GP0_PLL_CNTL2,
HHI_GP0_PLL_CNTL3,
HHI_GP0_PLL_CNTL4,
HHI_GP0_PLL_CNTL5,
HHI_GP0_PLL_CNTL6,
HHI_VIID_CLK_DIV,
HHI_VIID_CLK_CNTL,
HHI_VID_CLK_CNTL2,
HHI_MIPIDSI_PHY_CLK_CNTL,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_clk_hpll_g12a[] = {
HHI_HDMI_PLL_CNTL0,
HHI_HDMI_PLL_CNTL1,
HHI_HDMI_PLL_CNTL2,
HHI_HDMI_PLL_CNTL3,
HHI_HDMI_PLL_CNTL4,
HHI_HDMI_PLL_CNTL5,
HHI_HDMI_PLL_CNTL6,
HHI_VID_PLL_CLK_DIV,
HHI_VIID_CLK_DIV,
HHI_VIID_CLK_CNTL,
HHI_VID_CLK_CNTL2,
HHI_MIPIDSI_PHY_CLK_CNTL,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_clk_tl1[] = {
HHI_TCON_PLL_CNTL0,
HHI_TCON_PLL_CNTL1,
HHI_TCON_PLL_CNTL2,
HHI_TCON_PLL_CNTL3,
HHI_TCON_PLL_CNTL4,
HHI_VID_PLL_CLK_DIV,
HHI_VIID_CLK_DIV,
HHI_VIID_CLK_CNTL,
HHI_VID_CLK_CNTL2,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_pll_t5[] = {
HHI_TCON_PLL_CNTL0,
HHI_TCON_PLL_CNTL1,
HHI_TCON_PLL_CNTL2,
HHI_TCON_PLL_CNTL3,
HHI_TCON_PLL_CNTL4,
HHI_VID_PLL_CLK_DIV,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_clk_t5[] = {
HHI_VIID_CLK_DIV,
HHI_VIID_CLK_CNTL,
HHI_VID_CLK_CNTL2,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_clk_t5w[] = {
HHI_VIID_CLK0_DIV,
HHI_VIID_CLK0_CTRL,
HHI_VID_CLK0_CTRL2,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_pll_t7_0[] = {
ANACTRL_TCON_PLL0_CNTL0,
ANACTRL_TCON_PLL0_CNTL1,
ANACTRL_TCON_PLL0_CNTL2,
ANACTRL_TCON_PLL0_CNTL3,
ANACTRL_TCON_PLL0_CNTL4,
ANACTRL_TCON_PLL0_STS,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_pll_t7_1[] = {
ANACTRL_TCON_PLL1_CNTL0,
ANACTRL_TCON_PLL1_CNTL1,
ANACTRL_TCON_PLL1_CNTL2,
ANACTRL_TCON_PLL1_CNTL3,
ANACTRL_TCON_PLL1_CNTL4,
ANACTRL_TCON_PLL1_STS,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_pll_t7_2[] = {
ANACTRL_TCON_PLL2_CNTL0,
ANACTRL_TCON_PLL2_CNTL1,
ANACTRL_TCON_PLL2_CNTL2,
ANACTRL_TCON_PLL2_CNTL3,
ANACTRL_TCON_PLL2_CNTL4,
ANACTRL_TCON_PLL2_STS,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_clk_t7_0[] = {
CLKCTRL_VIID_CLK0_DIV,
CLKCTRL_VIID_CLK0_CTRL,
CLKCTRL_VID_CLK0_CTRL2,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_clk_t7_1[] = {
CLKCTRL_VIID_CLK1_DIV,
CLKCTRL_VIID_CLK1_CTRL,
CLKCTRL_VID_CLK1_CTRL2,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_clk_t7_2[] = {
CLKCTRL_VIID_CLK2_DIV,
CLKCTRL_VIID_CLK2_CTRL,
CLKCTRL_VID_CLK2_CTRL2,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_pll_t3_0[] = {
ANACTRL_TCON_PLL0_CNTL0,
ANACTRL_TCON_PLL0_CNTL1,
ANACTRL_TCON_PLL0_CNTL2,
ANACTRL_TCON_PLL0_CNTL3,
ANACTRL_TCON_PLL0_CNTL4,
ANACTRL_TCON_PLL0_STS,
ANACTRL_VID_PLL_CLK_DIV,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_encl_dft[] = {
VPU_VIU_VENC_MUX_CTRL,
ENCL_VIDEO_EN,
ENCL_VIDEO_MODE,
ENCL_VIDEO_MODE_ADV,
ENCL_VIDEO_MAX_PXCNT,
ENCL_VIDEO_MAX_LNCNT,
ENCL_VIDEO_HAVON_BEGIN,
ENCL_VIDEO_HAVON_END,
ENCL_VIDEO_VAVON_BLINE,
ENCL_VIDEO_VAVON_ELINE,
ENCL_VIDEO_HSO_BEGIN,
ENCL_VIDEO_HSO_END,
ENCL_VIDEO_VSO_BEGIN,
ENCL_VIDEO_VSO_END,
ENCL_VIDEO_VSO_BLINE,
ENCL_VIDEO_VSO_ELINE,
ENCL_VIDEO_RGBIN_CTRL,
L_GAMMA_CNTL_PORT,
L_RGB_BASE_ADDR,
L_RGB_COEFF_ADDR,
L_POL_CNTL_ADDR,
L_DITH_CNTL_ADDR,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_encl_tl1[] = {
VPU_VIU_VENC_MUX_CTRL,
ENCL_VIDEO_EN,
ENCL_VIDEO_MODE,
ENCL_VIDEO_MODE_ADV,
ENCL_VIDEO_MAX_PXCNT,
ENCL_VIDEO_MAX_LNCNT,
ENCL_VIDEO_HAVON_BEGIN,
ENCL_VIDEO_HAVON_END,
ENCL_VIDEO_VAVON_BLINE,
ENCL_VIDEO_VAVON_ELINE,
ENCL_VIDEO_HSO_BEGIN,
ENCL_VIDEO_HSO_END,
ENCL_VIDEO_VSO_BEGIN,
ENCL_VIDEO_VSO_END,
ENCL_VIDEO_VSO_BLINE,
ENCL_VIDEO_VSO_ELINE,
ENCL_VIDEO_RGBIN_CTRL,
ENCL_INBUF_CNTL0,
ENCL_INBUF_CNTL1,
L_GAMMA_CNTL_PORT,
L_RGB_BASE_ADDR,
L_RGB_COEFF_ADDR,
L_POL_CNTL_ADDR,
L_DITH_CNTL_ADDR,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_encl_t7_0[] = {
VPU_VIU_VENC_MUX_CTRL,
ENCL_VIDEO_EN,
ENCL_VIDEO_MODE,
ENCL_VIDEO_MODE_ADV,
ENCL_VIDEO_MAX_PXCNT,
ENCL_VIDEO_MAX_LNCNT,
ENCL_VIDEO_HAVON_BEGIN,
ENCL_VIDEO_HAVON_END,
ENCL_VIDEO_VAVON_BLINE,
ENCL_VIDEO_VAVON_ELINE,
ENCL_VIDEO_HSO_BEGIN,
ENCL_VIDEO_HSO_END,
ENCL_VIDEO_VSO_BEGIN,
ENCL_VIDEO_VSO_END,
ENCL_VIDEO_VSO_BLINE,
ENCL_VIDEO_VSO_ELINE,
ENCL_VIDEO_RGBIN_CTRL,
ENCL_INBUF_CNTL0,
ENCL_INBUF_CNTL1,
VPU_DISP_VIU0_CTRL,
VPU_VENC_CTRL,
LCD_GAMMA_CNTL_PORT0,
LCD_RGB_BASE_ADDR,
LCD_RGB_COEFF_ADDR,
LCD_POL_CNTL_ADDR,
LCD_DITH_CNTL_ADDR,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_encl_t7_1[] = {
VPU_VIU_VENC_MUX_CTRL,
ENCL_VIDEO_EN + 0x600,
ENCL_VIDEO_MODE + 0x600,
ENCL_VIDEO_MODE_ADV + 0x600,
ENCL_VIDEO_MAX_PXCNT + 0x600,
ENCL_VIDEO_MAX_LNCNT + 0x600,
ENCL_VIDEO_HAVON_BEGIN + 0x600,
ENCL_VIDEO_HAVON_END + 0x600,
ENCL_VIDEO_VAVON_BLINE + 0x600,
ENCL_VIDEO_VAVON_ELINE + 0x600,
ENCL_VIDEO_HSO_BEGIN + 0x600,
ENCL_VIDEO_HSO_END + 0x600,
ENCL_VIDEO_VSO_BEGIN + 0x600,
ENCL_VIDEO_VSO_END + 0x600,
ENCL_VIDEO_VSO_BLINE + 0x600,
ENCL_VIDEO_VSO_ELINE + 0x600,
ENCL_VIDEO_RGBIN_CTRL + 0x600,
ENCL_INBUF_CNTL0 + 0x600,
ENCL_INBUF_CNTL1 + 0x600,
VPU_DISP_VIU1_CTRL,
VPU_VENC_CTRL + 0x600,
LCD_GAMMA_CNTL_PORT0 + 0x100,
LCD_RGB_BASE_ADDR + 0x100,
LCD_RGB_COEFF_ADDR + 0x100,
LCD_POL_CNTL_ADDR + 0x100,
LCD_DITH_CNTL_ADDR + 0x100,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_encl_t7_2[] = {
VPU_VIU_VENC_MUX_CTRL,
ENCL_VIDEO_EN + 0x800,
ENCL_VIDEO_MODE + 0x800,
ENCL_VIDEO_MODE_ADV + 0x800,
ENCL_VIDEO_MAX_PXCNT + 0x800,
ENCL_VIDEO_MAX_LNCNT + 0x800,
ENCL_VIDEO_HAVON_BEGIN + 0x800,
ENCL_VIDEO_HAVON_END + 0x800,
ENCL_VIDEO_VAVON_BLINE + 0x800,
ENCL_VIDEO_VAVON_ELINE + 0x800,
ENCL_VIDEO_HSO_BEGIN + 0x800,
ENCL_VIDEO_HSO_END + 0x800,
ENCL_VIDEO_VSO_BEGIN + 0x800,
ENCL_VIDEO_VSO_END + 0x800,
ENCL_VIDEO_VSO_BLINE + 0x800,
ENCL_VIDEO_VSO_ELINE + 0x800,
ENCL_VIDEO_RGBIN_CTRL + 0x800,
ENCL_INBUF_CNTL0 + 0x800,
ENCL_INBUF_CNTL1 + 0x800,
VPU_DISP_VIU2_CTRL,
VPU_VENC_CTRL + 0x800,
LCD_GAMMA_CNTL_PORT0 + 0x200,
LCD_RGB_BASE_ADDR + 0x200,
LCD_RGB_COEFF_ADDR + 0x200,
LCD_POL_CNTL_ADDR + 0x200,
LCD_DITH_CNTL_ADDR + 0x200,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_pinmux_tl1[] = {
PERIPHS_PIN_MUX_7_TL1,
PERIPHS_PIN_MUX_8_TL1,
PERIPHS_PIN_MUX_9_TL1,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_pinmux_t5[] = {
PERIPHS_PIN_MUX_5_TL1,
PERIPHS_PIN_MUX_6_TL1,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_pinmux_t7[] = {
PADCTRL_PIN_MUX_REGK,
LCD_DEBUG_REG_END
};
static unsigned int lcd_reg_dump_pinmux_t3[] = {
PADCTRL_PIN_MUX_REG7,
PADCTRL_PIN_MUX_REG8,
LCD_DEBUG_REG_END
};
#endif