blob: 53d118ad5f29ec802517f156471547d777162a56 [file] [log] [blame]
// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2019 MediaTek Inc.
* Author: Argus Lin <argus.lin@mediatek.com>
*/
#define DEBUG
#include <linux/clk.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/regmap.h>
#include <linux/reset.h>
#include <linux/delay.h>
#include <linux/err.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/of_address.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/sched/clock.h>
#include <linux/seq_file.h>
#include <linux/uaccess.h>
#include <linux/debugfs.h>
#include <spmi_sw.h>
#include <mt-plat/aee.h>
enum pmif_dbg_regs {
PMIF_INIT_DONE,
PMIF_INF_BUSY_STA,
PMIF_OTHER_BUSY_STA_0,
PMIF_OTHER_BUSY_STA_1,
PMIF_IRQ_EVENT_EN_0,
PMIF_IRQ_FLAG_0,
PMIF_IRQ_CLR_0,
PMIF_IRQ_EVENT_EN_1,
PMIF_IRQ_FLAG_1,
PMIF_IRQ_CLR_1,
PMIF_IRQ_EVENT_EN_2,
PMIF_IRQ_FLAG_2,
PMIF_IRQ_CLR_2,
PMIF_IRQ_EVENT_EN_3,
PMIF_IRQ_FLAG_3,
PMIF_IRQ_CLR_3,
PMIF_IRQ_EVENT_EN_4,
PMIF_IRQ_FLAG_4,
PMIF_IRQ_CLR_4,
PMIF_WDT_EVENT_EN_0,
PMIF_WDT_FLAG_0,
PMIF_WDT_EVENT_EN_1,
PMIF_WDT_FLAG_1,
PMIF_MONITOR_CTRL,
PMIF_MONITOR_TARGET_CHAN_0,
PMIF_MONITOR_TARGET_CHAN_1,
PMIF_MONITOR_TARGET_CHAN_2,
PMIF_MONITOR_TARGET_CHAN_3,
PMIF_MONITOR_TARGET_CHAN_4,
PMIF_MONITOR_TARGET_CHAN_5,
PMIF_MONITOR_TARGET_CHAN_6,
PMIF_MONITOR_TARGET_CHAN_7,
PMIF_MONITOR_TARGET_WRITE,
PMIF_MONITOR_TARGET_SLVID_0,
PMIF_MONITOR_TARGET_SLVID_1,
PMIF_MONITOR_TARGET_ADDR_0,
PMIF_MONITOR_TARGET_ADDR_1,
PMIF_MONITOR_TARGET_ADDR_2,
PMIF_MONITOR_TARGET_ADDR_3,
PMIF_MONITOR_TARGET_ADDR_4,
PMIF_MONITOR_TARGET_ADDR_5,
PMIF_MONITOR_TARGET_ADDR_6,
PMIF_MONITOR_TARGET_ADDR_7,
PMIF_MONITOR_TARGET_WDATA_0,
PMIF_MONITOR_TARGET_WDATA_1,
PMIF_MONITOR_TARGET_WDATA_2,
PMIF_MONITOR_TARGET_WDATA_3,
PMIF_MONITOR_TARGET_WDATA_4,
PMIF_MONITOR_TARGET_WDATA_5,
PMIF_MONITOR_TARGET_WDATA_6,
PMIF_MONITOR_TARGET_WDATA_7,
PMIF_MONITOR_STA,
PMIF_MONITOR_RECORD_0_0,
PMIF_MONITOR_RECORD_0_1,
PMIF_MONITOR_RECORD_0_2,
PMIF_MONITOR_RECORD_0_3,
PMIF_MONITOR_RECORD_0_4,
PMIF_MONITOR_RECORD_1_0,
PMIF_MONITOR_RECORD_1_1,
PMIF_MONITOR_RECORD_1_2,
PMIF_MONITOR_RECORD_1_3,
PMIF_MONITOR_RECORD_1_4,
PMIF_MONITOR_RECORD_2_0,
PMIF_MONITOR_RECORD_2_1,
PMIF_MONITOR_RECORD_2_2,
PMIF_MONITOR_RECORD_2_3,
PMIF_MONITOR_RECORD_2_4,
PMIF_MONITOR_RECORD_3_0,
PMIF_MONITOR_RECORD_3_1,
PMIF_MONITOR_RECORD_3_2,
PMIF_MONITOR_RECORD_3_3,
PMIF_MONITOR_RECORD_3_4,
PMIF_MONITOR_RECORD_4_0,
PMIF_MONITOR_RECORD_4_1,
PMIF_MONITOR_RECORD_4_2,
PMIF_MONITOR_RECORD_4_3,
PMIF_MONITOR_RECORD_4_4,
PMIF_MONITOR_RECORD_5_0,
PMIF_MONITOR_RECORD_5_1,
PMIF_MONITOR_RECORD_5_2,
PMIF_MONITOR_RECORD_5_3,
PMIF_MONITOR_RECORD_5_4,
PMIF_MONITOR_RECORD_6_0,
PMIF_MONITOR_RECORD_6_1,
PMIF_MONITOR_RECORD_6_2,
PMIF_MONITOR_RECORD_6_3,
PMIF_MONITOR_RECORD_6_4,
PMIF_MONITOR_RECORD_7_0,
PMIF_MONITOR_RECORD_7_1,
PMIF_MONITOR_RECORD_7_2,
PMIF_MONITOR_RECORD_7_3,
PMIF_MONITOR_RECORD_7_4,
PMIF_MONITOR_RECORD_8_0,
PMIF_MONITOR_RECORD_8_1,
PMIF_MONITOR_RECORD_8_2,
PMIF_MONITOR_RECORD_8_3,
PMIF_MONITOR_RECORD_8_4,
PMIF_MONITOR_RECORD_9_0,
PMIF_MONITOR_RECORD_9_1,
PMIF_MONITOR_RECORD_9_2,
PMIF_MONITOR_RECORD_9_3,
PMIF_MONITOR_RECORD_9_4,
PMIF_MONITOR_RECORD_10_0,
PMIF_MONITOR_RECORD_10_1,
PMIF_MONITOR_RECORD_10_2,
PMIF_MONITOR_RECORD_10_3,
PMIF_MONITOR_RECORD_10_4,
PMIF_MONITOR_RECORD_11_0,
PMIF_MONITOR_RECORD_11_1,
PMIF_MONITOR_RECORD_11_2,
PMIF_MONITOR_RECORD_11_3,
PMIF_MONITOR_RECORD_11_4,
PMIF_MONITOR_RECORD_12_0,
PMIF_MONITOR_RECORD_12_1,
PMIF_MONITOR_RECORD_12_2,
PMIF_MONITOR_RECORD_12_3,
PMIF_MONITOR_RECORD_12_4,
PMIF_MONITOR_RECORD_13_0,
PMIF_MONITOR_RECORD_13_1,
PMIF_MONITOR_RECORD_13_2,
PMIF_MONITOR_RECORD_13_3,
PMIF_MONITOR_RECORD_13_4,
PMIF_MONITOR_RECORD_14_0,
PMIF_MONITOR_RECORD_14_1,
PMIF_MONITOR_RECORD_14_2,
PMIF_MONITOR_RECORD_14_3,
PMIF_MONITOR_RECORD_14_4,
PMIF_MONITOR_RECORD_15_0,
PMIF_MONITOR_RECORD_15_1,
PMIF_MONITOR_RECORD_15_2,
PMIF_MONITOR_RECORD_15_3,
PMIF_MONITOR_RECORD_15_4,
PMIF_MONITOR_RECORD_16_0,
PMIF_MONITOR_RECORD_16_1,
PMIF_MONITOR_RECORD_16_2,
PMIF_MONITOR_RECORD_16_3,
PMIF_MONITOR_RECORD_16_4,
PMIF_MONITOR_RECORD_17_0,
PMIF_MONITOR_RECORD_17_1,
PMIF_MONITOR_RECORD_17_2,
PMIF_MONITOR_RECORD_17_3,
PMIF_MONITOR_RECORD_17_4,
PMIF_MONITOR_RECORD_18_0,
PMIF_MONITOR_RECORD_18_1,
PMIF_MONITOR_RECORD_18_2,
PMIF_MONITOR_RECORD_18_3,
PMIF_MONITOR_RECORD_18_4,
PMIF_MONITOR_RECORD_19_0,
PMIF_MONITOR_RECORD_19_1,
PMIF_MONITOR_RECORD_19_2,
PMIF_MONITOR_RECORD_19_3,
PMIF_MONITOR_RECORD_19_4,
PMIF_MONITOR_RECORD_20_0,
PMIF_MONITOR_RECORD_20_1,
PMIF_MONITOR_RECORD_20_2,
PMIF_MONITOR_RECORD_20_3,
PMIF_MONITOR_RECORD_20_4,
PMIF_MONITOR_RECORD_21_0,
PMIF_MONITOR_RECORD_21_1,
PMIF_MONITOR_RECORD_21_2,
PMIF_MONITOR_RECORD_21_3,
PMIF_MONITOR_RECORD_21_4,
PMIF_MONITOR_RECORD_22_0,
PMIF_MONITOR_RECORD_22_1,
PMIF_MONITOR_RECORD_22_2,
PMIF_MONITOR_RECORD_22_3,
PMIF_MONITOR_RECORD_22_4,
PMIF_MONITOR_RECORD_23_0,
PMIF_MONITOR_RECORD_23_1,
PMIF_MONITOR_RECORD_23_2,
PMIF_MONITOR_RECORD_23_3,
PMIF_MONITOR_RECORD_23_4,
PMIF_MONITOR_RECORD_24_0,
PMIF_MONITOR_RECORD_24_1,
PMIF_MONITOR_RECORD_24_2,
PMIF_MONITOR_RECORD_24_3,
PMIF_MONITOR_RECORD_24_4,
PMIF_MONITOR_RECORD_25_0,
PMIF_MONITOR_RECORD_25_1,
PMIF_MONITOR_RECORD_25_2,
PMIF_MONITOR_RECORD_25_3,
PMIF_MONITOR_RECORD_25_4,
PMIF_MONITOR_RECORD_26_0,
PMIF_MONITOR_RECORD_26_1,
PMIF_MONITOR_RECORD_26_2,
PMIF_MONITOR_RECORD_26_3,
PMIF_MONITOR_RECORD_26_4,
PMIF_MONITOR_RECORD_27_0,
PMIF_MONITOR_RECORD_27_1,
PMIF_MONITOR_RECORD_27_2,
PMIF_MONITOR_RECORD_27_3,
PMIF_MONITOR_RECORD_27_4,
PMIF_MONITOR_RECORD_28_0,
PMIF_MONITOR_RECORD_28_1,
PMIF_MONITOR_RECORD_28_2,
PMIF_MONITOR_RECORD_28_3,
PMIF_MONITOR_RECORD_28_4,
PMIF_MONITOR_RECORD_29_0,
PMIF_MONITOR_RECORD_29_1,
PMIF_MONITOR_RECORD_29_2,
PMIF_MONITOR_RECORD_29_3,
PMIF_MONITOR_RECORD_29_4,
PMIF_MONITOR_RECORD_30_0,
PMIF_MONITOR_RECORD_30_1,
PMIF_MONITOR_RECORD_30_2,
PMIF_MONITOR_RECORD_30_3,
PMIF_MONITOR_RECORD_30_4,
PMIF_MONITOR_RECORD_31_0,
PMIF_MONITOR_RECORD_31_1,
PMIF_MONITOR_RECORD_31_2,
PMIF_MONITOR_RECORD_31_3,
PMIF_MONITOR_RECORD_31_4,
PMIF_DEBUG_CTRL,
PMIF_RESERVED_0,
PMIF_SWINF_0_ACC,
PMIF_SWINF_0_WDATA_31_0,
PMIF_SWINF_0_WDATA_63_32,
PMIF_SWINF_0_RDATA_31_0,
PMIF_SWINF_0_RDATA_63_32,
PMIF_SWINF_0_VLD_CLR,
PMIF_SWINF_0_STA,
PMIF_SWINF_1_ACC,
PMIF_SWINF_1_WDATA_31_0,
PMIF_SWINF_1_WDATA_63_32,
PMIF_SWINF_1_RDATA_31_0,
PMIF_SWINF_1_RDATA_63_32,
PMIF_SWINF_1_VLD_CLR,
PMIF_SWINF_1_STA,
PMIF_SWINF_2_ACC,
PMIF_SWINF_2_WDATA_31_0,
PMIF_SWINF_2_WDATA_63_32,
PMIF_SWINF_2_RDATA_31_0,
PMIF_SWINF_2_RDATA_63_32,
PMIF_SWINF_2_VLD_CLR,
PMIF_SWINF_2_STA,
PMIF_SWINF_3_ACC,
PMIF_SWINF_3_WDATA_31_0,
PMIF_SWINF_3_WDATA_63_32,
PMIF_SWINF_3_RDATA_31_0,
PMIF_SWINF_3_RDATA_63_32,
PMIF_SWINF_3_VLD_CLR,
PMIF_SWINF_3_STA,
PMIC_ACC_VIO_INFO_0,
PMIC_ACC_VIO_INFO_1,
PMIC_ACC_VIO_INFO_2,
PMIC_ACC_VIO_INFO_3,
PMIC_ACC_VIO_INFO_4,
PMIC_ACC_VIO_INFO_5,
PMIC_ACC_SCP_VIO_INFO_0,
PMIC_ACC_SCP_VIO_INFO_1,
PMIC_ACC_SCP_VIO_INFO_2,
PMIC_ACC_SCP_VIO_INFO_3,
PMIC_ACC_SCP_VIO_INFO_4,
PMIC_ACC_SCP_VIO_INFO_5,
PMIF_ACC_VIO_INFO_0,
PMIF_ACC_VIO_INFO_1,
PMIF_ACC_VIO_INFO_2,
/* MT6853 new register */
PMIC_ALL_ACC_VIO_INFO_0,
PMIC_ALL_ACC_VIO_INFO_1
};
static const u32 mt6xxx_pmif_dbg_regs[] = {
[PMIF_INIT_DONE] = 0x0000,
[PMIF_INF_BUSY_STA] = 0x0018,
[PMIF_OTHER_BUSY_STA_0] = 0x001C,
[PMIF_OTHER_BUSY_STA_1] = 0x0020,
[PMIF_IRQ_EVENT_EN_0] = 0x0418,
[PMIF_IRQ_FLAG_0] = 0x0420,
[PMIF_IRQ_CLR_0] = 0x0424,
[PMIF_IRQ_EVENT_EN_1] = 0x0428,
[PMIF_IRQ_FLAG_1] = 0x0430,
[PMIF_IRQ_CLR_1] = 0x0434,
[PMIF_IRQ_EVENT_EN_2] = 0x0438,
[PMIF_IRQ_FLAG_2] = 0x0440,
[PMIF_IRQ_CLR_2] = 0x0444,
[PMIF_IRQ_EVENT_EN_3] = 0x0448,
[PMIF_IRQ_FLAG_3] = 0x0450,
[PMIF_IRQ_CLR_3] = 0x0454,
[PMIF_IRQ_EVENT_EN_4] = 0x0458,
[PMIF_IRQ_FLAG_4] = 0x0460,
[PMIF_IRQ_CLR_4] = 0x0464,
[PMIF_WDT_EVENT_EN_0] = 0x046C,
[PMIF_WDT_FLAG_0] = 0x0470,
[PMIF_WDT_EVENT_EN_1] = 0x0474,
[PMIF_WDT_FLAG_1] = 0x0478,
[PMIF_MONITOR_CTRL] = 0x047C,
[PMIF_MONITOR_TARGET_CHAN_0] = 0x0480,
[PMIF_MONITOR_TARGET_CHAN_1] = 0x0484,
[PMIF_MONITOR_TARGET_CHAN_2] = 0x0488,
[PMIF_MONITOR_TARGET_CHAN_3] = 0x048C,
[PMIF_MONITOR_TARGET_CHAN_4] = 0x0490,
[PMIF_MONITOR_TARGET_CHAN_5] = 0x0494,
[PMIF_MONITOR_TARGET_CHAN_6] = 0x0498,
[PMIF_MONITOR_TARGET_CHAN_7] = 0x049C,
[PMIF_MONITOR_TARGET_WRITE] = 0x04A0,
[PMIF_MONITOR_TARGET_SLVID_0] = 0x04A4,
[PMIF_MONITOR_TARGET_SLVID_1] = 0x04A8,
[PMIF_MONITOR_TARGET_ADDR_0] = 0x04AC,
[PMIF_MONITOR_TARGET_ADDR_1] = 0x04B0,
[PMIF_MONITOR_TARGET_ADDR_2] = 0x04B4,
[PMIF_MONITOR_TARGET_ADDR_3] = 0x04B8,
[PMIF_MONITOR_TARGET_ADDR_4] = 0x04BC,
[PMIF_MONITOR_TARGET_ADDR_5] = 0x04C0,
[PMIF_MONITOR_TARGET_ADDR_6] = 0x04C4,
[PMIF_MONITOR_TARGET_ADDR_7] = 0x04C8,
[PMIF_MONITOR_TARGET_WDATA_0] = 0x04CC,
[PMIF_MONITOR_TARGET_WDATA_1] = 0x04D0,
[PMIF_MONITOR_TARGET_WDATA_2] = 0x04D4,
[PMIF_MONITOR_TARGET_WDATA_3] = 0x04D8,
[PMIF_MONITOR_TARGET_WDATA_4] = 0x04DC,
[PMIF_MONITOR_TARGET_WDATA_5] = 0x04E0,
[PMIF_MONITOR_TARGET_WDATA_6] = 0x04E4,
[PMIF_MONITOR_TARGET_WDATA_7] = 0x04E8,
[PMIF_MONITOR_STA] = 0x04EC,
[PMIF_MONITOR_RECORD_0_0] = 0x04F0,
[PMIF_MONITOR_RECORD_0_1] = 0x04F4,
[PMIF_MONITOR_RECORD_0_2] = 0x04F8,
[PMIF_MONITOR_RECORD_0_3] = 0x04FC,
[PMIF_MONITOR_RECORD_0_4] = 0x0500,
[PMIF_MONITOR_RECORD_1_0] = 0x0504,
[PMIF_MONITOR_RECORD_1_1] = 0x0508,
[PMIF_MONITOR_RECORD_1_2] = 0x050C,
[PMIF_MONITOR_RECORD_1_3] = 0x0510,
[PMIF_MONITOR_RECORD_1_4] = 0x0514,
[PMIF_MONITOR_RECORD_2_0] = 0x0518,
[PMIF_MONITOR_RECORD_2_1] = 0x051C,
[PMIF_MONITOR_RECORD_2_2] = 0x0520,
[PMIF_MONITOR_RECORD_2_3] = 0x0524,
[PMIF_MONITOR_RECORD_2_4] = 0x0528,
[PMIF_MONITOR_RECORD_3_0] = 0x052C,
[PMIF_MONITOR_RECORD_3_1] = 0x0530,
[PMIF_MONITOR_RECORD_3_2] = 0x0534,
[PMIF_MONITOR_RECORD_3_3] = 0x0538,
[PMIF_MONITOR_RECORD_3_4] = 0x053C,
[PMIF_MONITOR_RECORD_4_0] = 0x0540,
[PMIF_MONITOR_RECORD_4_1] = 0x0544,
[PMIF_MONITOR_RECORD_4_2] = 0x0548,
[PMIF_MONITOR_RECORD_4_3] = 0x054C,
[PMIF_MONITOR_RECORD_4_4] = 0x0550,
[PMIF_MONITOR_RECORD_5_0] = 0x0554,
[PMIF_MONITOR_RECORD_5_1] = 0x0558,
[PMIF_MONITOR_RECORD_5_2] = 0x055C,
[PMIF_MONITOR_RECORD_5_3] = 0x0560,
[PMIF_MONITOR_RECORD_5_4] = 0x0564,
[PMIF_MONITOR_RECORD_6_0] = 0x0568,
[PMIF_MONITOR_RECORD_6_1] = 0x056C,
[PMIF_MONITOR_RECORD_6_2] = 0x0570,
[PMIF_MONITOR_RECORD_6_3] = 0x0574,
[PMIF_MONITOR_RECORD_6_4] = 0x0578,
[PMIF_MONITOR_RECORD_7_0] = 0x057C,
[PMIF_MONITOR_RECORD_7_1] = 0x0580,
[PMIF_MONITOR_RECORD_7_2] = 0x0584,
[PMIF_MONITOR_RECORD_7_3] = 0x0588,
[PMIF_MONITOR_RECORD_7_4] = 0x058C,
[PMIF_MONITOR_RECORD_8_0] = 0x0590,
[PMIF_MONITOR_RECORD_8_1] = 0x0594,
[PMIF_MONITOR_RECORD_8_2] = 0x0598,
[PMIF_MONITOR_RECORD_8_3] = 0x059C,
[PMIF_MONITOR_RECORD_8_4] = 0x05A0,
[PMIF_MONITOR_RECORD_9_0] = 0x05A4,
[PMIF_MONITOR_RECORD_9_1] = 0x05A8,
[PMIF_MONITOR_RECORD_9_2] = 0x05AC,
[PMIF_MONITOR_RECORD_9_3] = 0x05B0,
[PMIF_MONITOR_RECORD_9_4] = 0x05B4,
[PMIF_MONITOR_RECORD_10_0] = 0x05B8,
[PMIF_MONITOR_RECORD_10_1] = 0x05BC,
[PMIF_MONITOR_RECORD_10_2] = 0x05C0,
[PMIF_MONITOR_RECORD_10_3] = 0x05C4,
[PMIF_MONITOR_RECORD_10_4] = 0x05C8,
[PMIF_MONITOR_RECORD_11_0] = 0x05CC,
[PMIF_MONITOR_RECORD_11_1] = 0x05D0,
[PMIF_MONITOR_RECORD_11_2] = 0x05D4,
[PMIF_MONITOR_RECORD_11_3] = 0x05D8,
[PMIF_MONITOR_RECORD_11_4] = 0x05DC,
[PMIF_MONITOR_RECORD_12_0] = 0x05E0,
[PMIF_MONITOR_RECORD_12_1] = 0x05E4,
[PMIF_MONITOR_RECORD_12_2] = 0x05E8,
[PMIF_MONITOR_RECORD_12_3] = 0x05EC,
[PMIF_MONITOR_RECORD_12_4] = 0x05F0,
[PMIF_MONITOR_RECORD_13_0] = 0x05F4,
[PMIF_MONITOR_RECORD_13_1] = 0x05F8,
[PMIF_MONITOR_RECORD_13_2] = 0x05FC,
[PMIF_MONITOR_RECORD_13_3] = 0x0600,
[PMIF_MONITOR_RECORD_13_4] = 0x0604,
[PMIF_MONITOR_RECORD_14_0] = 0x0608,
[PMIF_MONITOR_RECORD_14_1] = 0x060C,
[PMIF_MONITOR_RECORD_14_2] = 0x0610,
[PMIF_MONITOR_RECORD_14_3] = 0x0614,
[PMIF_MONITOR_RECORD_14_4] = 0x0618,
[PMIF_MONITOR_RECORD_15_0] = 0x061C,
[PMIF_MONITOR_RECORD_15_1] = 0x0620,
[PMIF_MONITOR_RECORD_15_2] = 0x0624,
[PMIF_MONITOR_RECORD_15_3] = 0x0628,
[PMIF_MONITOR_RECORD_15_4] = 0x062C,
[PMIF_MONITOR_RECORD_16_0] = 0x0630,
[PMIF_MONITOR_RECORD_16_1] = 0x0634,
[PMIF_MONITOR_RECORD_16_2] = 0x0638,
[PMIF_MONITOR_RECORD_16_3] = 0x063C,
[PMIF_MONITOR_RECORD_16_4] = 0x0640,
[PMIF_MONITOR_RECORD_17_0] = 0x0644,
[PMIF_MONITOR_RECORD_17_1] = 0x0648,
[PMIF_MONITOR_RECORD_17_2] = 0x064C,
[PMIF_MONITOR_RECORD_17_3] = 0x0650,
[PMIF_MONITOR_RECORD_17_4] = 0x0654,
[PMIF_MONITOR_RECORD_18_0] = 0x0658,
[PMIF_MONITOR_RECORD_18_1] = 0x065C,
[PMIF_MONITOR_RECORD_18_2] = 0x0660,
[PMIF_MONITOR_RECORD_18_3] = 0x0664,
[PMIF_MONITOR_RECORD_18_4] = 0x0668,
[PMIF_MONITOR_RECORD_19_0] = 0x066C,
[PMIF_MONITOR_RECORD_19_1] = 0x0670,
[PMIF_MONITOR_RECORD_19_2] = 0x0674,
[PMIF_MONITOR_RECORD_19_3] = 0x0678,
[PMIF_MONITOR_RECORD_19_4] = 0x067C,
[PMIF_MONITOR_RECORD_20_0] = 0x0680,
[PMIF_MONITOR_RECORD_20_1] = 0x0684,
[PMIF_MONITOR_RECORD_20_2] = 0x0688,
[PMIF_MONITOR_RECORD_20_3] = 0x068C,
[PMIF_MONITOR_RECORD_20_4] = 0x0690,
[PMIF_MONITOR_RECORD_21_0] = 0x0694,
[PMIF_MONITOR_RECORD_21_1] = 0x0698,
[PMIF_MONITOR_RECORD_21_2] = 0x069C,
[PMIF_MONITOR_RECORD_21_3] = 0x06A0,
[PMIF_MONITOR_RECORD_21_4] = 0x06A4,
[PMIF_MONITOR_RECORD_22_0] = 0x06A8,
[PMIF_MONITOR_RECORD_22_1] = 0x06AC,
[PMIF_MONITOR_RECORD_22_2] = 0x06B0,
[PMIF_MONITOR_RECORD_22_3] = 0x06B4,
[PMIF_MONITOR_RECORD_22_4] = 0x06B8,
[PMIF_MONITOR_RECORD_23_0] = 0x06BC,
[PMIF_MONITOR_RECORD_23_1] = 0x06C0,
[PMIF_MONITOR_RECORD_23_2] = 0x06C4,
[PMIF_MONITOR_RECORD_23_3] = 0x06C8,
[PMIF_MONITOR_RECORD_23_4] = 0x06CC,
[PMIF_MONITOR_RECORD_24_0] = 0x06D0,
[PMIF_MONITOR_RECORD_24_1] = 0x06D4,
[PMIF_MONITOR_RECORD_24_2] = 0x06D8,
[PMIF_MONITOR_RECORD_24_3] = 0x06DC,
[PMIF_MONITOR_RECORD_24_4] = 0x06E0,
[PMIF_MONITOR_RECORD_25_0] = 0x06E4,
[PMIF_MONITOR_RECORD_25_1] = 0x06E8,
[PMIF_MONITOR_RECORD_25_2] = 0x06EC,
[PMIF_MONITOR_RECORD_25_3] = 0x06F0,
[PMIF_MONITOR_RECORD_25_4] = 0x06F4,
[PMIF_MONITOR_RECORD_26_0] = 0x06F8,
[PMIF_MONITOR_RECORD_26_1] = 0x06FC,
[PMIF_MONITOR_RECORD_26_2] = 0x0700,
[PMIF_MONITOR_RECORD_26_3] = 0x0704,
[PMIF_MONITOR_RECORD_26_4] = 0x0708,
[PMIF_MONITOR_RECORD_27_0] = 0x070C,
[PMIF_MONITOR_RECORD_27_1] = 0x0710,
[PMIF_MONITOR_RECORD_27_2] = 0x0714,
[PMIF_MONITOR_RECORD_27_3] = 0x0718,
[PMIF_MONITOR_RECORD_27_4] = 0x071C,
[PMIF_MONITOR_RECORD_28_0] = 0x0720,
[PMIF_MONITOR_RECORD_28_1] = 0x0724,
[PMIF_MONITOR_RECORD_28_2] = 0x0728,
[PMIF_MONITOR_RECORD_28_3] = 0x072C,
[PMIF_MONITOR_RECORD_28_4] = 0x0730,
[PMIF_MONITOR_RECORD_29_0] = 0x0734,
[PMIF_MONITOR_RECORD_29_1] = 0x0738,
[PMIF_MONITOR_RECORD_29_2] = 0x073C,
[PMIF_MONITOR_RECORD_29_3] = 0x0740,
[PMIF_MONITOR_RECORD_29_4] = 0x0744,
[PMIF_MONITOR_RECORD_30_0] = 0x0748,
[PMIF_MONITOR_RECORD_30_1] = 0x074C,
[PMIF_MONITOR_RECORD_30_2] = 0x0750,
[PMIF_MONITOR_RECORD_30_3] = 0x0754,
[PMIF_MONITOR_RECORD_30_4] = 0x0758,
[PMIF_MONITOR_RECORD_31_0] = 0x075C,
[PMIF_MONITOR_RECORD_31_1] = 0x0760,
[PMIF_MONITOR_RECORD_31_2] = 0x0764,
[PMIF_MONITOR_RECORD_31_3] = 0x0768,
[PMIF_MONITOR_RECORD_31_4] = 0x076C,
[PMIF_DEBUG_CTRL] = 0x0770,
[PMIF_RESERVED_0] = 0x0778,
[PMIF_SWINF_0_ACC] = 0x0C00,
[PMIF_SWINF_0_WDATA_31_0] = 0x0C04,
[PMIF_SWINF_0_WDATA_63_32] = 0x0C08,
[PMIF_SWINF_0_RDATA_31_0] = 0x0C14,
[PMIF_SWINF_0_RDATA_63_32] = 0x0C18,
[PMIF_SWINF_0_VLD_CLR] = 0x0C24,
[PMIF_SWINF_0_STA] = 0x0C28,
[PMIF_SWINF_1_ACC] = 0x0C40,
[PMIF_SWINF_1_WDATA_31_0] = 0x0C44,
[PMIF_SWINF_1_WDATA_63_32] = 0x0C48,
[PMIF_SWINF_1_RDATA_31_0] = 0x0C54,
[PMIF_SWINF_1_RDATA_63_32] = 0x0C58,
[PMIF_SWINF_1_VLD_CLR] = 0x0C64,
[PMIF_SWINF_1_STA] = 0x0C68,
[PMIF_SWINF_2_ACC] = 0x0C80,
[PMIF_SWINF_2_WDATA_31_0] = 0x0C84,
[PMIF_SWINF_2_WDATA_63_32] = 0x0C88,
[PMIF_SWINF_2_RDATA_31_0] = 0x0C94,
[PMIF_SWINF_2_RDATA_63_32] = 0x0C98,
[PMIF_SWINF_2_VLD_CLR] = 0x0CA4,
[PMIF_SWINF_2_STA] = 0x0CA8,
[PMIF_SWINF_3_ACC] = 0x0CC0,
[PMIF_SWINF_3_WDATA_31_0] = 0x0CC4,
[PMIF_SWINF_3_WDATA_63_32] = 0x0CC8,
[PMIF_SWINF_3_RDATA_31_0] = 0x0CD4,
[PMIF_SWINF_3_RDATA_63_32] = 0x0CD8,
[PMIF_SWINF_3_VLD_CLR] = 0x0CE4,
[PMIF_SWINF_3_STA] = 0x0CE8,
[PMIC_ACC_VIO_INFO_0] = 0x0F50,
[PMIC_ACC_VIO_INFO_1] = 0x0F54,
[PMIC_ACC_VIO_INFO_2] = 0x0F58,
[PMIC_ACC_VIO_INFO_3] = 0x0F5C,
[PMIC_ACC_VIO_INFO_4] = 0x0F60,
[PMIC_ACC_VIO_INFO_5] = 0x0F64,
[PMIC_ACC_SCP_VIO_INFO_0] = 0x0F68,
[PMIC_ACC_SCP_VIO_INFO_1] = 0x0F6C,
[PMIC_ACC_SCP_VIO_INFO_2] = 0x0F70,
[PMIC_ACC_SCP_VIO_INFO_3] = 0x0F74,
[PMIC_ACC_SCP_VIO_INFO_4] = 0x0F78,
[PMIC_ACC_SCP_VIO_INFO_5] = 0x0F7C,
[PMIF_ACC_VIO_INFO_0] = 0x0F80,
[PMIF_ACC_VIO_INFO_1] = 0x0F84,
[PMIF_ACC_VIO_INFO_2] = 0x0F88,
};
static const u32 mt6833_pmif_dbg_regs[] = {
[PMIF_INIT_DONE] = 0x0000,
[PMIF_INF_BUSY_STA] = 0x0018,
[PMIF_OTHER_BUSY_STA_0] = 0x001C,
[PMIF_OTHER_BUSY_STA_1] = 0x0020,
[PMIF_IRQ_EVENT_EN_0] = 0x0420,
[PMIF_IRQ_FLAG_0] = 0x0428,
[PMIF_IRQ_CLR_0] = 0x042C,
[PMIF_IRQ_EVENT_EN_1] = 0x0430,
[PMIF_IRQ_FLAG_1] = 0x0438,
[PMIF_IRQ_CLR_1] = 0x043C,
[PMIF_IRQ_EVENT_EN_2] = 0x0440,
[PMIF_IRQ_FLAG_2] = 0x0448,
[PMIF_IRQ_CLR_2] = 0x044C,
[PMIF_IRQ_EVENT_EN_3] = 0x0450,
[PMIF_IRQ_FLAG_3] = 0x0458,
[PMIF_IRQ_CLR_3] = 0x045C,
[PMIF_IRQ_EVENT_EN_4] = 0x0460,
[PMIF_IRQ_FLAG_4] = 0x0468,
[PMIF_IRQ_CLR_4] = 0x046C,
[PMIF_WDT_EVENT_EN_0] = 0x0474,
[PMIF_WDT_FLAG_0] = 0x0478,
[PMIF_WDT_EVENT_EN_1] = 0x047C,
[PMIF_WDT_FLAG_1] = 0x0480,
[PMIF_MONITOR_CTRL] = 0x0484,
[PMIF_MONITOR_TARGET_CHAN_0] = 0x0488,
[PMIF_MONITOR_TARGET_CHAN_1] = 0x048C,
[PMIF_MONITOR_TARGET_CHAN_2] = 0x0490,
[PMIF_MONITOR_TARGET_CHAN_3] = 0x0494,
[PMIF_MONITOR_TARGET_CHAN_4] = 0x0498,
[PMIF_MONITOR_TARGET_CHAN_5] = 0x049C,
[PMIF_MONITOR_TARGET_CHAN_6] = 0x04A0,
[PMIF_MONITOR_TARGET_CHAN_7] = 0x04A4,
[PMIF_MONITOR_TARGET_WRITE] = 0x04A8,
[PMIF_MONITOR_TARGET_SLVID_0] = 0x04AC,
[PMIF_MONITOR_TARGET_SLVID_1] = 0x04B0,
[PMIF_MONITOR_TARGET_ADDR_0] = 0x04B4,
[PMIF_MONITOR_TARGET_ADDR_1] = 0x04B8,
[PMIF_MONITOR_TARGET_ADDR_2] = 0x04BC,
[PMIF_MONITOR_TARGET_ADDR_3] = 0x04C0,
[PMIF_MONITOR_TARGET_ADDR_4] = 0x04C4,
[PMIF_MONITOR_TARGET_ADDR_5] = 0x04C8,
[PMIF_MONITOR_TARGET_ADDR_6] = 0x04CC,
[PMIF_MONITOR_TARGET_ADDR_7] = 0x04D0,
[PMIF_MONITOR_TARGET_WDATA_0] = 0x04D4,
[PMIF_MONITOR_TARGET_WDATA_1] = 0x04D8,
[PMIF_MONITOR_TARGET_WDATA_2] = 0x04DC,
[PMIF_MONITOR_TARGET_WDATA_3] = 0x04E0,
[PMIF_MONITOR_TARGET_WDATA_4] = 0x04E4,
[PMIF_MONITOR_TARGET_WDATA_5] = 0x04E8,
[PMIF_MONITOR_TARGET_WDATA_6] = 0x04EC,
[PMIF_MONITOR_TARGET_WDATA_7] = 0x04F0,
[PMIF_MONITOR_STA] = 0x04F4,
[PMIF_MONITOR_RECORD_0_0] = 0x04F8,
[PMIF_MONITOR_RECORD_0_1] = 0x04FC,
[PMIF_MONITOR_RECORD_0_2] = 0x0500,
[PMIF_MONITOR_RECORD_0_3] = 0x0504,
[PMIF_MONITOR_RECORD_0_4] = 0x0508,
[PMIF_MONITOR_RECORD_1_0] = 0x050C,
[PMIF_MONITOR_RECORD_1_1] = 0x0510,
[PMIF_MONITOR_RECORD_1_2] = 0x0514,
[PMIF_MONITOR_RECORD_1_3] = 0x0518,
[PMIF_MONITOR_RECORD_1_4] = 0x051C,
[PMIF_MONITOR_RECORD_2_0] = 0x0520,
[PMIF_MONITOR_RECORD_2_1] = 0x0524,
[PMIF_MONITOR_RECORD_2_2] = 0x0528,
[PMIF_MONITOR_RECORD_2_3] = 0x052C,
[PMIF_MONITOR_RECORD_2_4] = 0x0530,
[PMIF_MONITOR_RECORD_3_0] = 0x0534,
[PMIF_MONITOR_RECORD_3_1] = 0x0538,
[PMIF_MONITOR_RECORD_3_2] = 0x053C,
[PMIF_MONITOR_RECORD_3_3] = 0x0540,
[PMIF_MONITOR_RECORD_3_4] = 0x0544,
[PMIF_MONITOR_RECORD_4_0] = 0x0548,
[PMIF_MONITOR_RECORD_4_1] = 0x054C,
[PMIF_MONITOR_RECORD_4_2] = 0x0550,
[PMIF_MONITOR_RECORD_4_3] = 0x0554,
[PMIF_MONITOR_RECORD_4_4] = 0x0558,
[PMIF_MONITOR_RECORD_5_0] = 0x055C,
[PMIF_MONITOR_RECORD_5_1] = 0x0560,
[PMIF_MONITOR_RECORD_5_2] = 0x0564,
[PMIF_MONITOR_RECORD_5_3] = 0x0568,
[PMIF_MONITOR_RECORD_5_4] = 0x056C,
[PMIF_MONITOR_RECORD_6_0] = 0x0570,
[PMIF_MONITOR_RECORD_6_1] = 0x0574,
[PMIF_MONITOR_RECORD_6_2] = 0x0578,
[PMIF_MONITOR_RECORD_6_3] = 0x057C,
[PMIF_MONITOR_RECORD_6_4] = 0x0580,
[PMIF_MONITOR_RECORD_7_0] = 0x0584,
[PMIF_MONITOR_RECORD_7_1] = 0x0588,
[PMIF_MONITOR_RECORD_7_2] = 0x058C,
[PMIF_MONITOR_RECORD_7_3] = 0x0590,
[PMIF_MONITOR_RECORD_7_4] = 0x0594,
[PMIF_MONITOR_RECORD_8_0] = 0x0598,
[PMIF_MONITOR_RECORD_8_1] = 0x059C,
[PMIF_MONITOR_RECORD_8_2] = 0x05A0,
[PMIF_MONITOR_RECORD_8_3] = 0x05A4,
[PMIF_MONITOR_RECORD_8_4] = 0x05A8,
[PMIF_MONITOR_RECORD_9_0] = 0x05AC,
[PMIF_MONITOR_RECORD_9_1] = 0x05B0,
[PMIF_MONITOR_RECORD_9_2] = 0x05B4,
[PMIF_MONITOR_RECORD_9_3] = 0x05B8,
[PMIF_MONITOR_RECORD_9_4] = 0x05BC,
[PMIF_MONITOR_RECORD_10_0] = 0x05C0,
[PMIF_MONITOR_RECORD_10_1] = 0x05C4,
[PMIF_MONITOR_RECORD_10_2] = 0x05C8,
[PMIF_MONITOR_RECORD_10_3] = 0x05CC,
[PMIF_MONITOR_RECORD_10_4] = 0x05D0,
[PMIF_MONITOR_RECORD_11_0] = 0x05D4,
[PMIF_MONITOR_RECORD_11_1] = 0x05D8,
[PMIF_MONITOR_RECORD_11_2] = 0x05DC,
[PMIF_MONITOR_RECORD_11_3] = 0x05E0,
[PMIF_MONITOR_RECORD_11_4] = 0x05E4,
[PMIF_MONITOR_RECORD_12_0] = 0x05E8,
[PMIF_MONITOR_RECORD_12_1] = 0x05EC,
[PMIF_MONITOR_RECORD_12_2] = 0x05F0,
[PMIF_MONITOR_RECORD_12_3] = 0x05F4,
[PMIF_MONITOR_RECORD_12_4] = 0x05F8,
[PMIF_MONITOR_RECORD_13_0] = 0x05FC,
[PMIF_MONITOR_RECORD_13_1] = 0x0600,
[PMIF_MONITOR_RECORD_13_2] = 0x0604,
[PMIF_MONITOR_RECORD_13_3] = 0x0608,
[PMIF_MONITOR_RECORD_13_4] = 0x060C,
[PMIF_MONITOR_RECORD_14_0] = 0x0610,
[PMIF_MONITOR_RECORD_14_1] = 0x0614,
[PMIF_MONITOR_RECORD_14_2] = 0x0618,
[PMIF_MONITOR_RECORD_14_3] = 0x061C,
[PMIF_MONITOR_RECORD_14_4] = 0x0620,
[PMIF_MONITOR_RECORD_15_0] = 0x0624,
[PMIF_MONITOR_RECORD_15_1] = 0x0628,
[PMIF_MONITOR_RECORD_15_2] = 0x062C,
[PMIF_MONITOR_RECORD_15_3] = 0x0630,
[PMIF_MONITOR_RECORD_15_4] = 0x0634,
[PMIF_MONITOR_RECORD_16_0] = 0x0638,
[PMIF_MONITOR_RECORD_16_1] = 0x063C,
[PMIF_MONITOR_RECORD_16_2] = 0x0640,
[PMIF_MONITOR_RECORD_16_3] = 0x0644,
[PMIF_MONITOR_RECORD_16_4] = 0x0648,
[PMIF_MONITOR_RECORD_17_0] = 0x064C,
[PMIF_MONITOR_RECORD_17_1] = 0x0650,
[PMIF_MONITOR_RECORD_17_2] = 0x0654,
[PMIF_MONITOR_RECORD_17_3] = 0x0658,
[PMIF_MONITOR_RECORD_17_4] = 0x065C,
[PMIF_MONITOR_RECORD_18_0] = 0x0660,
[PMIF_MONITOR_RECORD_18_1] = 0x0664,
[PMIF_MONITOR_RECORD_18_2] = 0x0668,
[PMIF_MONITOR_RECORD_18_3] = 0x066C,
[PMIF_MONITOR_RECORD_18_4] = 0x0670,
[PMIF_MONITOR_RECORD_19_0] = 0x0674,
[PMIF_MONITOR_RECORD_19_1] = 0x0678,
[PMIF_MONITOR_RECORD_19_2] = 0x067C,
[PMIF_MONITOR_RECORD_19_3] = 0x0680,
[PMIF_MONITOR_RECORD_19_4] = 0x0684,
[PMIF_MONITOR_RECORD_20_0] = 0x0688,
[PMIF_MONITOR_RECORD_20_1] = 0x068C,
[PMIF_MONITOR_RECORD_20_2] = 0x0690,
[PMIF_MONITOR_RECORD_20_3] = 0x0694,
[PMIF_MONITOR_RECORD_20_4] = 0x0698,
[PMIF_MONITOR_RECORD_21_0] = 0x069C,
[PMIF_MONITOR_RECORD_21_1] = 0x06A0,
[PMIF_MONITOR_RECORD_21_2] = 0x06A4,
[PMIF_MONITOR_RECORD_21_3] = 0x06A8,
[PMIF_MONITOR_RECORD_21_4] = 0x06AC,
[PMIF_MONITOR_RECORD_22_0] = 0x06B0,
[PMIF_MONITOR_RECORD_22_1] = 0x06B4,
[PMIF_MONITOR_RECORD_22_2] = 0x06B8,
[PMIF_MONITOR_RECORD_22_3] = 0x06BC,
[PMIF_MONITOR_RECORD_22_4] = 0x06C0,
[PMIF_MONITOR_RECORD_23_0] = 0x06C4,
[PMIF_MONITOR_RECORD_23_1] = 0x06C8,
[PMIF_MONITOR_RECORD_23_2] = 0x06CC,
[PMIF_MONITOR_RECORD_23_3] = 0x06D0,
[PMIF_MONITOR_RECORD_23_4] = 0x06D4,
[PMIF_MONITOR_RECORD_24_0] = 0x06D8,
[PMIF_MONITOR_RECORD_24_1] = 0x06DC,
[PMIF_MONITOR_RECORD_24_2] = 0x06E0,
[PMIF_MONITOR_RECORD_24_3] = 0x06E4,
[PMIF_MONITOR_RECORD_24_4] = 0x06E8,
[PMIF_MONITOR_RECORD_25_0] = 0x06EC,
[PMIF_MONITOR_RECORD_25_1] = 0x06F0,
[PMIF_MONITOR_RECORD_25_2] = 0x06F4,
[PMIF_MONITOR_RECORD_25_3] = 0x06F8,
[PMIF_MONITOR_RECORD_25_4] = 0x06FC,
[PMIF_MONITOR_RECORD_26_0] = 0x0700,
[PMIF_MONITOR_RECORD_26_1] = 0x0704,
[PMIF_MONITOR_RECORD_26_2] = 0x0708,
[PMIF_MONITOR_RECORD_26_3] = 0x070C,
[PMIF_MONITOR_RECORD_26_4] = 0x0710,
[PMIF_MONITOR_RECORD_27_0] = 0x0714,
[PMIF_MONITOR_RECORD_27_1] = 0x0718,
[PMIF_MONITOR_RECORD_27_2] = 0x071C,
[PMIF_MONITOR_RECORD_27_3] = 0x0720,
[PMIF_MONITOR_RECORD_27_4] = 0x0724,
[PMIF_MONITOR_RECORD_28_0] = 0x0728,
[PMIF_MONITOR_RECORD_28_1] = 0x072C,
[PMIF_MONITOR_RECORD_28_2] = 0x0730,
[PMIF_MONITOR_RECORD_28_3] = 0x0734,
[PMIF_MONITOR_RECORD_28_4] = 0x0738,
[PMIF_MONITOR_RECORD_29_0] = 0x073C,
[PMIF_MONITOR_RECORD_29_1] = 0x0740,
[PMIF_MONITOR_RECORD_29_2] = 0x0744,
[PMIF_MONITOR_RECORD_29_3] = 0x0748,
[PMIF_MONITOR_RECORD_29_4] = 0x074C,
[PMIF_MONITOR_RECORD_30_0] = 0x0750,
[PMIF_MONITOR_RECORD_30_1] = 0x0754,
[PMIF_MONITOR_RECORD_30_2] = 0x0758,
[PMIF_MONITOR_RECORD_30_3] = 0x075C,
[PMIF_MONITOR_RECORD_30_4] = 0x0760,
[PMIF_MONITOR_RECORD_31_0] = 0x0764,
[PMIF_MONITOR_RECORD_31_1] = 0x0768,
[PMIF_MONITOR_RECORD_31_2] = 0x076C,
[PMIF_MONITOR_RECORD_31_3] = 0x0770,
[PMIF_MONITOR_RECORD_31_4] = 0x0774,
[PMIF_DEBUG_CTRL] = 0x0778,
[PMIF_RESERVED_0] = 0x0780,
[PMIF_SWINF_0_ACC] = 0x0800,
[PMIF_SWINF_0_WDATA_31_0] = 0x0804,
[PMIF_SWINF_0_RDATA_31_0] = 0x0814,
[PMIF_SWINF_0_VLD_CLR] = 0x0824,
[PMIF_SWINF_0_STA] = 0x0828,
[PMIF_SWINF_1_ACC] = 0x0840,
[PMIF_SWINF_1_WDATA_31_0] = 0x0844,
[PMIF_SWINF_1_RDATA_31_0] = 0x0854,
[PMIF_SWINF_1_VLD_CLR] = 0x0864,
[PMIF_SWINF_1_STA] = 0x0868,
[PMIF_SWINF_2_ACC] = 0x0880,
[PMIF_SWINF_2_WDATA_31_0] = 0x0884,
[PMIF_SWINF_2_RDATA_31_0] = 0x0894,
[PMIF_SWINF_2_VLD_CLR] = 0x08A4,
[PMIF_SWINF_2_STA] = 0x08A8,
[PMIF_SWINF_3_ACC] = 0x08C0,
[PMIF_SWINF_3_WDATA_31_0] = 0x08C4,
[PMIF_SWINF_3_RDATA_31_0] = 0x08D4,
[PMIF_SWINF_3_VLD_CLR] = 0x08E4,
[PMIF_SWINF_3_STA] = 0x08E8,
[PMIC_ACC_VIO_INFO_0] = 0x0950,
[PMIC_ACC_VIO_INFO_1] = 0x0954,
[PMIC_ACC_VIO_INFO_2] = 0x0958,
[PMIC_ACC_VIO_INFO_3] = 0x095C,
[PMIC_ACC_VIO_INFO_4] = 0x0960,
[PMIC_ACC_VIO_INFO_5] = 0x0964,
[PMIC_ACC_SCP_VIO_INFO_0] = 0x0968,
[PMIC_ACC_SCP_VIO_INFO_1] = 0x096C,
[PMIC_ACC_SCP_VIO_INFO_2] = 0x0970,
[PMIC_ACC_SCP_VIO_INFO_3] = 0x0974,
[PMIC_ACC_SCP_VIO_INFO_4] = 0x0978,
[PMIC_ACC_SCP_VIO_INFO_5] = 0x097C,
[PMIF_ACC_VIO_INFO_0] = 0x0980,
[PMIF_ACC_VIO_INFO_1] = 0x0984,
[PMIF_ACC_VIO_INFO_2] = 0x0988,
[PMIC_ALL_ACC_VIO_INFO_0] = 0x09A4,
[PMIC_ALL_ACC_VIO_INFO_1] = 0x09A8,
};
static const u32 mt6853_pmif_dbg_regs[] = {
[PMIF_INIT_DONE] = 0x0000,
[PMIF_INF_BUSY_STA] = 0x0018,
[PMIF_OTHER_BUSY_STA_0] = 0x001C,
[PMIF_OTHER_BUSY_STA_1] = 0x0020,
[PMIF_IRQ_EVENT_EN_0] = 0x0420,
[PMIF_IRQ_FLAG_0] = 0x0428,
[PMIF_IRQ_CLR_0] = 0x042C,
[PMIF_IRQ_EVENT_EN_1] = 0x0430,
[PMIF_IRQ_FLAG_1] = 0x0438,
[PMIF_IRQ_CLR_1] = 0x043C,
[PMIF_IRQ_EVENT_EN_2] = 0x0440,
[PMIF_IRQ_FLAG_2] = 0x0448,
[PMIF_IRQ_CLR_2] = 0x044C,
[PMIF_IRQ_EVENT_EN_3] = 0x0450,
[PMIF_IRQ_FLAG_3] = 0x0458,
[PMIF_IRQ_CLR_3] = 0x045C,
[PMIF_IRQ_EVENT_EN_4] = 0x0460,
[PMIF_IRQ_FLAG_4] = 0x0468,
[PMIF_IRQ_CLR_4] = 0x046C,
[PMIF_WDT_EVENT_EN_0] = 0x0474,
[PMIF_WDT_FLAG_0] = 0x0478,
[PMIF_WDT_EVENT_EN_1] = 0x047C,
[PMIF_WDT_FLAG_1] = 0x0480,
[PMIF_MONITOR_CTRL] = 0x0484,
[PMIF_MONITOR_TARGET_CHAN_0] = 0x0488,
[PMIF_MONITOR_TARGET_CHAN_1] = 0x048C,
[PMIF_MONITOR_TARGET_CHAN_2] = 0x0490,
[PMIF_MONITOR_TARGET_CHAN_3] = 0x0494,
[PMIF_MONITOR_TARGET_CHAN_4] = 0x0498,
[PMIF_MONITOR_TARGET_CHAN_5] = 0x049C,
[PMIF_MONITOR_TARGET_CHAN_6] = 0x04A0,
[PMIF_MONITOR_TARGET_CHAN_7] = 0x04A4,
[PMIF_MONITOR_TARGET_WRITE] = 0x04A8,
[PMIF_MONITOR_TARGET_SLVID_0] = 0x04AC,
[PMIF_MONITOR_TARGET_SLVID_1] = 0x04B0,
[PMIF_MONITOR_TARGET_ADDR_0] = 0x04B4,
[PMIF_MONITOR_TARGET_ADDR_1] = 0x04B8,
[PMIF_MONITOR_TARGET_ADDR_2] = 0x04BC,
[PMIF_MONITOR_TARGET_ADDR_3] = 0x04C0,
[PMIF_MONITOR_TARGET_ADDR_4] = 0x04C4,
[PMIF_MONITOR_TARGET_ADDR_5] = 0x04C8,
[PMIF_MONITOR_TARGET_ADDR_6] = 0x04CC,
[PMIF_MONITOR_TARGET_ADDR_7] = 0x04D0,
[PMIF_MONITOR_TARGET_WDATA_0] = 0x04D4,
[PMIF_MONITOR_TARGET_WDATA_1] = 0x04D8,
[PMIF_MONITOR_TARGET_WDATA_2] = 0x04DC,
[PMIF_MONITOR_TARGET_WDATA_3] = 0x04E0,
[PMIF_MONITOR_TARGET_WDATA_4] = 0x04E4,
[PMIF_MONITOR_TARGET_WDATA_5] = 0x04E8,
[PMIF_MONITOR_TARGET_WDATA_6] = 0x04EC,
[PMIF_MONITOR_TARGET_WDATA_7] = 0x04F0,
[PMIF_MONITOR_STA] = 0x04F4,
[PMIF_MONITOR_RECORD_0_0] = 0x04F8,
[PMIF_MONITOR_RECORD_0_1] = 0x04FC,
[PMIF_MONITOR_RECORD_0_2] = 0x0500,
[PMIF_MONITOR_RECORD_0_3] = 0x0504,
[PMIF_MONITOR_RECORD_0_4] = 0x0508,
[PMIF_MONITOR_RECORD_1_0] = 0x050C,
[PMIF_MONITOR_RECORD_1_1] = 0x0510,
[PMIF_MONITOR_RECORD_1_2] = 0x0514,
[PMIF_MONITOR_RECORD_1_3] = 0x0518,
[PMIF_MONITOR_RECORD_1_4] = 0x051C,
[PMIF_MONITOR_RECORD_2_0] = 0x0520,
[PMIF_MONITOR_RECORD_2_1] = 0x0524,
[PMIF_MONITOR_RECORD_2_2] = 0x0528,
[PMIF_MONITOR_RECORD_2_3] = 0x052C,
[PMIF_MONITOR_RECORD_2_4] = 0x0530,
[PMIF_MONITOR_RECORD_3_0] = 0x0534,
[PMIF_MONITOR_RECORD_3_1] = 0x0538,
[PMIF_MONITOR_RECORD_3_2] = 0x053C,
[PMIF_MONITOR_RECORD_3_3] = 0x0540,
[PMIF_MONITOR_RECORD_3_4] = 0x0544,
[PMIF_MONITOR_RECORD_4_0] = 0x0548,
[PMIF_MONITOR_RECORD_4_1] = 0x054C,
[PMIF_MONITOR_RECORD_4_2] = 0x0550,
[PMIF_MONITOR_RECORD_4_3] = 0x0554,
[PMIF_MONITOR_RECORD_4_4] = 0x0558,
[PMIF_MONITOR_RECORD_5_0] = 0x055C,
[PMIF_MONITOR_RECORD_5_1] = 0x0560,
[PMIF_MONITOR_RECORD_5_2] = 0x0564,
[PMIF_MONITOR_RECORD_5_3] = 0x0568,
[PMIF_MONITOR_RECORD_5_4] = 0x056C,
[PMIF_MONITOR_RECORD_6_0] = 0x0570,
[PMIF_MONITOR_RECORD_6_1] = 0x0574,
[PMIF_MONITOR_RECORD_6_2] = 0x0578,
[PMIF_MONITOR_RECORD_6_3] = 0x057C,
[PMIF_MONITOR_RECORD_6_4] = 0x0580,
[PMIF_MONITOR_RECORD_7_0] = 0x0584,
[PMIF_MONITOR_RECORD_7_1] = 0x0588,
[PMIF_MONITOR_RECORD_7_2] = 0x058C,
[PMIF_MONITOR_RECORD_7_3] = 0x0590,
[PMIF_MONITOR_RECORD_7_4] = 0x0594,
[PMIF_MONITOR_RECORD_8_0] = 0x0598,
[PMIF_MONITOR_RECORD_8_1] = 0x059C,
[PMIF_MONITOR_RECORD_8_2] = 0x05A0,
[PMIF_MONITOR_RECORD_8_3] = 0x05A4,
[PMIF_MONITOR_RECORD_8_4] = 0x05A8,
[PMIF_MONITOR_RECORD_9_0] = 0x05AC,
[PMIF_MONITOR_RECORD_9_1] = 0x05B0,
[PMIF_MONITOR_RECORD_9_2] = 0x05B4,
[PMIF_MONITOR_RECORD_9_3] = 0x05B8,
[PMIF_MONITOR_RECORD_9_4] = 0x05BC,
[PMIF_MONITOR_RECORD_10_0] = 0x05C0,
[PMIF_MONITOR_RECORD_10_1] = 0x05C4,
[PMIF_MONITOR_RECORD_10_2] = 0x05C8,
[PMIF_MONITOR_RECORD_10_3] = 0x05CC,
[PMIF_MONITOR_RECORD_10_4] = 0x05D0,
[PMIF_MONITOR_RECORD_11_0] = 0x05D4,
[PMIF_MONITOR_RECORD_11_1] = 0x05D8,
[PMIF_MONITOR_RECORD_11_2] = 0x05DC,
[PMIF_MONITOR_RECORD_11_3] = 0x05E0,
[PMIF_MONITOR_RECORD_11_4] = 0x05E4,
[PMIF_MONITOR_RECORD_12_0] = 0x05E8,
[PMIF_MONITOR_RECORD_12_1] = 0x05EC,
[PMIF_MONITOR_RECORD_12_2] = 0x05F0,
[PMIF_MONITOR_RECORD_12_3] = 0x05F4,
[PMIF_MONITOR_RECORD_12_4] = 0x05F8,
[PMIF_MONITOR_RECORD_13_0] = 0x05FC,
[PMIF_MONITOR_RECORD_13_1] = 0x0600,
[PMIF_MONITOR_RECORD_13_2] = 0x0604,
[PMIF_MONITOR_RECORD_13_3] = 0x0608,
[PMIF_MONITOR_RECORD_13_4] = 0x060C,
[PMIF_MONITOR_RECORD_14_0] = 0x0610,
[PMIF_MONITOR_RECORD_14_1] = 0x0614,
[PMIF_MONITOR_RECORD_14_2] = 0x0618,
[PMIF_MONITOR_RECORD_14_3] = 0x061C,
[PMIF_MONITOR_RECORD_14_4] = 0x0620,
[PMIF_MONITOR_RECORD_15_0] = 0x0624,
[PMIF_MONITOR_RECORD_15_1] = 0x0628,
[PMIF_MONITOR_RECORD_15_2] = 0x062C,
[PMIF_MONITOR_RECORD_15_3] = 0x0630,
[PMIF_MONITOR_RECORD_15_4] = 0x0634,
[PMIF_MONITOR_RECORD_16_0] = 0x0638,
[PMIF_MONITOR_RECORD_16_1] = 0x063C,
[PMIF_MONITOR_RECORD_16_2] = 0x0640,
[PMIF_MONITOR_RECORD_16_3] = 0x0644,
[PMIF_MONITOR_RECORD_16_4] = 0x0648,
[PMIF_MONITOR_RECORD_17_0] = 0x064C,
[PMIF_MONITOR_RECORD_17_1] = 0x0650,
[PMIF_MONITOR_RECORD_17_2] = 0x0654,
[PMIF_MONITOR_RECORD_17_3] = 0x0658,
[PMIF_MONITOR_RECORD_17_4] = 0x065C,
[PMIF_MONITOR_RECORD_18_0] = 0x0660,
[PMIF_MONITOR_RECORD_18_1] = 0x0664,
[PMIF_MONITOR_RECORD_18_2] = 0x0668,
[PMIF_MONITOR_RECORD_18_3] = 0x066C,
[PMIF_MONITOR_RECORD_18_4] = 0x0670,
[PMIF_MONITOR_RECORD_19_0] = 0x0674,
[PMIF_MONITOR_RECORD_19_1] = 0x0678,
[PMIF_MONITOR_RECORD_19_2] = 0x067C,
[PMIF_MONITOR_RECORD_19_3] = 0x0680,
[PMIF_MONITOR_RECORD_19_4] = 0x0684,
[PMIF_MONITOR_RECORD_20_0] = 0x0688,
[PMIF_MONITOR_RECORD_20_1] = 0x068C,
[PMIF_MONITOR_RECORD_20_2] = 0x0690,
[PMIF_MONITOR_RECORD_20_3] = 0x0694,
[PMIF_MONITOR_RECORD_20_4] = 0x0698,
[PMIF_MONITOR_RECORD_21_0] = 0x069C,
[PMIF_MONITOR_RECORD_21_1] = 0x06A0,
[PMIF_MONITOR_RECORD_21_2] = 0x06A4,
[PMIF_MONITOR_RECORD_21_3] = 0x06A8,
[PMIF_MONITOR_RECORD_21_4] = 0x06AC,
[PMIF_MONITOR_RECORD_22_0] = 0x06B0,
[PMIF_MONITOR_RECORD_22_1] = 0x06B4,
[PMIF_MONITOR_RECORD_22_2] = 0x06B8,
[PMIF_MONITOR_RECORD_22_3] = 0x06BC,
[PMIF_MONITOR_RECORD_22_4] = 0x06C0,
[PMIF_MONITOR_RECORD_23_0] = 0x06C4,
[PMIF_MONITOR_RECORD_23_1] = 0x06C8,
[PMIF_MONITOR_RECORD_23_2] = 0x06CC,
[PMIF_MONITOR_RECORD_23_3] = 0x06D0,
[PMIF_MONITOR_RECORD_23_4] = 0x06D4,
[PMIF_MONITOR_RECORD_24_0] = 0x06D8,
[PMIF_MONITOR_RECORD_24_1] = 0x06DC,
[PMIF_MONITOR_RECORD_24_2] = 0x06E0,
[PMIF_MONITOR_RECORD_24_3] = 0x06E4,
[PMIF_MONITOR_RECORD_24_4] = 0x06E8,
[PMIF_MONITOR_RECORD_25_0] = 0x06EC,
[PMIF_MONITOR_RECORD_25_1] = 0x06F0,
[PMIF_MONITOR_RECORD_25_2] = 0x06F4,
[PMIF_MONITOR_RECORD_25_3] = 0x06F8,
[PMIF_MONITOR_RECORD_25_4] = 0x06FC,
[PMIF_MONITOR_RECORD_26_0] = 0x0700,
[PMIF_MONITOR_RECORD_26_1] = 0x0704,
[PMIF_MONITOR_RECORD_26_2] = 0x0708,
[PMIF_MONITOR_RECORD_26_3] = 0x070C,
[PMIF_MONITOR_RECORD_26_4] = 0x0710,
[PMIF_MONITOR_RECORD_27_0] = 0x0714,
[PMIF_MONITOR_RECORD_27_1] = 0x0718,
[PMIF_MONITOR_RECORD_27_2] = 0x071C,
[PMIF_MONITOR_RECORD_27_3] = 0x0720,
[PMIF_MONITOR_RECORD_27_4] = 0x0724,
[PMIF_MONITOR_RECORD_28_0] = 0x0728,
[PMIF_MONITOR_RECORD_28_1] = 0x072C,
[PMIF_MONITOR_RECORD_28_2] = 0x0730,
[PMIF_MONITOR_RECORD_28_3] = 0x0734,
[PMIF_MONITOR_RECORD_28_4] = 0x0738,
[PMIF_MONITOR_RECORD_29_0] = 0x073C,
[PMIF_MONITOR_RECORD_29_1] = 0x0740,
[PMIF_MONITOR_RECORD_29_2] = 0x0744,
[PMIF_MONITOR_RECORD_29_3] = 0x0748,
[PMIF_MONITOR_RECORD_29_4] = 0x074C,
[PMIF_MONITOR_RECORD_30_0] = 0x0750,
[PMIF_MONITOR_RECORD_30_1] = 0x0754,
[PMIF_MONITOR_RECORD_30_2] = 0x0758,
[PMIF_MONITOR_RECORD_30_3] = 0x075C,
[PMIF_MONITOR_RECORD_30_4] = 0x0760,
[PMIF_MONITOR_RECORD_31_0] = 0x0764,
[PMIF_MONITOR_RECORD_31_1] = 0x0768,
[PMIF_MONITOR_RECORD_31_2] = 0x076C,
[PMIF_MONITOR_RECORD_31_3] = 0x0770,
[PMIF_MONITOR_RECORD_31_4] = 0x0774,
[PMIF_DEBUG_CTRL] = 0x0778,
[PMIF_RESERVED_0] = 0x0780,
[PMIF_SWINF_0_ACC] = 0x0C00,
[PMIF_SWINF_0_WDATA_31_0] = 0x0C04,
[PMIF_SWINF_0_WDATA_63_32] = 0x0C08,
[PMIF_SWINF_0_RDATA_31_0] = 0x0C14,
[PMIF_SWINF_0_RDATA_63_32] = 0x0C18,
[PMIF_SWINF_0_VLD_CLR] = 0x0C24,
[PMIF_SWINF_0_STA] = 0x0C28,
[PMIF_SWINF_1_ACC] = 0x0C40,
[PMIF_SWINF_1_WDATA_31_0] = 0x0C44,
[PMIF_SWINF_1_WDATA_63_32] = 0x0C48,
[PMIF_SWINF_1_RDATA_31_0] = 0x0C54,
[PMIF_SWINF_1_RDATA_63_32] = 0x0C58,
[PMIF_SWINF_1_VLD_CLR] = 0x0C64,
[PMIF_SWINF_1_STA] = 0x0C68,
[PMIF_SWINF_2_ACC] = 0x0C80,
[PMIF_SWINF_2_WDATA_31_0] = 0x0C84,
[PMIF_SWINF_2_WDATA_63_32] = 0x0C88,
[PMIF_SWINF_2_RDATA_31_0] = 0x0C94,
[PMIF_SWINF_2_RDATA_63_32] = 0x0C98,
[PMIF_SWINF_2_VLD_CLR] = 0x0CA4,
[PMIF_SWINF_2_STA] = 0x0CA8,
[PMIF_SWINF_3_ACC] = 0x0CC0,
[PMIF_SWINF_3_WDATA_31_0] = 0x0CC4,
[PMIF_SWINF_3_WDATA_63_32] = 0x0CC8,
[PMIF_SWINF_3_RDATA_31_0] = 0x0CD4,
[PMIF_SWINF_3_RDATA_63_32] = 0x0CD8,
[PMIF_SWINF_3_VLD_CLR] = 0x0CE4,
[PMIF_SWINF_3_STA] = 0x0CE8,
[PMIC_ACC_VIO_INFO_0] = 0x0F50,
[PMIC_ACC_VIO_INFO_1] = 0x0F54,
[PMIC_ACC_VIO_INFO_2] = 0x0F58,
[PMIC_ACC_VIO_INFO_3] = 0x0F5C,
[PMIC_ACC_VIO_INFO_4] = 0x0F60,
[PMIC_ACC_VIO_INFO_5] = 0x0F64,
[PMIC_ACC_SCP_VIO_INFO_0] = 0x0F68,
[PMIC_ACC_SCP_VIO_INFO_1] = 0x0F6C,
[PMIC_ACC_SCP_VIO_INFO_2] = 0x0F70,
[PMIC_ACC_SCP_VIO_INFO_3] = 0x0F74,
[PMIC_ACC_SCP_VIO_INFO_4] = 0x0F78,
[PMIC_ACC_SCP_VIO_INFO_5] = 0x0F7C,
[PMIF_ACC_VIO_INFO_0] = 0x0F80,
[PMIF_ACC_VIO_INFO_1] = 0x0F84,
[PMIF_ACC_VIO_INFO_2] = 0x0F88,
[PMIC_ALL_ACC_VIO_INFO_0] = 0x0F8C,
[PMIC_ALL_ACC_VIO_INFO_1] = 0x0F90,
};
static const u32 mt6885_pmif_dbg_regs[] = {
[PMIF_INIT_DONE] = 0x0000,
[PMIF_INF_BUSY_STA] = 0x0018,
[PMIF_OTHER_BUSY_STA_0] = 0x001C,
[PMIF_OTHER_BUSY_STA_1] = 0x0020,
[PMIF_IRQ_EVENT_EN_0] = 0x0418,
[PMIF_IRQ_FLAG_0] = 0x0420,
[PMIF_IRQ_CLR_0] = 0x0424,
[PMIF_IRQ_EVENT_EN_1] = 0x0428,
[PMIF_IRQ_FLAG_1] = 0x0430,
[PMIF_IRQ_CLR_1] = 0x0434,
[PMIF_IRQ_EVENT_EN_2] = 0x0438,
[PMIF_IRQ_FLAG_2] = 0x0440,
[PMIF_IRQ_CLR_2] = 0x0444,
[PMIF_IRQ_EVENT_EN_3] = 0x0448,
[PMIF_IRQ_FLAG_3] = 0x0450,
[PMIF_IRQ_CLR_3] = 0x0454,
[PMIF_IRQ_EVENT_EN_4] = 0x0458,
[PMIF_IRQ_FLAG_4] = 0x0460,
[PMIF_IRQ_CLR_4] = 0x0464,
[PMIF_WDT_EVENT_EN_0] = 0x046C,
[PMIF_WDT_FLAG_0] = 0x0470,
[PMIF_WDT_EVENT_EN_1] = 0x0474,
[PMIF_WDT_FLAG_1] = 0x0478,
[PMIF_MONITOR_CTRL] = 0x047C,
[PMIF_MONITOR_TARGET_CHAN_0] = 0x0480,
[PMIF_MONITOR_TARGET_CHAN_1] = 0x0484,
[PMIF_MONITOR_TARGET_CHAN_2] = 0x0488,
[PMIF_MONITOR_TARGET_CHAN_3] = 0x048C,
[PMIF_MONITOR_TARGET_CHAN_4] = 0x0490,
[PMIF_MONITOR_TARGET_CHAN_5] = 0x0494,
[PMIF_MONITOR_TARGET_CHAN_6] = 0x0498,
[PMIF_MONITOR_TARGET_CHAN_7] = 0x049C,
[PMIF_MONITOR_TARGET_WRITE] = 0x04A0,
[PMIF_MONITOR_TARGET_ADDR_0] = 0x04A4,
[PMIF_MONITOR_TARGET_ADDR_1] = 0x04A8,
[PMIF_MONITOR_TARGET_ADDR_2] = 0x04AC,
[PMIF_MONITOR_TARGET_ADDR_3] = 0x04B0,
[PMIF_MONITOR_TARGET_ADDR_4] = 0x04B4,
[PMIF_MONITOR_TARGET_ADDR_5] = 0x04B8,
[PMIF_MONITOR_TARGET_ADDR_6] = 0x04BC,
[PMIF_MONITOR_TARGET_ADDR_7] = 0x04C0,
[PMIF_MONITOR_TARGET_WDATA_0] = 0x04C4,
[PMIF_MONITOR_TARGET_WDATA_1] = 0x04C8,
[PMIF_MONITOR_TARGET_WDATA_2] = 0x04CC,
[PMIF_MONITOR_TARGET_WDATA_3] = 0x04D0,
[PMIF_MONITOR_TARGET_WDATA_4] = 0x04D4,
[PMIF_MONITOR_TARGET_WDATA_5] = 0x04D8,
[PMIF_MONITOR_TARGET_WDATA_6] = 0x04DC,
[PMIF_MONITOR_TARGET_WDATA_7] = 0x04E0,
[PMIF_MONITOR_STA] = 0x04E4,
[PMIF_MONITOR_RECORD_0_0] = 0x04E8,
[PMIF_MONITOR_RECORD_0_1] = 0x04EC,
[PMIF_MONITOR_RECORD_0_2] = 0x04F0,
[PMIF_MONITOR_RECORD_0_3] = 0x04F4,
[PMIF_MONITOR_RECORD_0_4] = 0x04F8,
[PMIF_MONITOR_RECORD_1_0] = 0x04FC,
[PMIF_MONITOR_RECORD_1_1] = 0x0500,
[PMIF_MONITOR_RECORD_1_2] = 0x0504,
[PMIF_MONITOR_RECORD_1_3] = 0x0508,
[PMIF_MONITOR_RECORD_1_4] = 0x050C,
[PMIF_MONITOR_RECORD_2_0] = 0x0510,
[PMIF_MONITOR_RECORD_2_1] = 0x0514,
[PMIF_MONITOR_RECORD_2_2] = 0x0518,
[PMIF_MONITOR_RECORD_2_3] = 0x051C,
[PMIF_MONITOR_RECORD_2_4] = 0x0520,
[PMIF_MONITOR_RECORD_3_0] = 0x0524,
[PMIF_MONITOR_RECORD_3_1] = 0x0528,
[PMIF_MONITOR_RECORD_3_2] = 0x052C,
[PMIF_MONITOR_RECORD_3_3] = 0x0530,
[PMIF_MONITOR_RECORD_3_4] = 0x0534,
[PMIF_MONITOR_RECORD_4_0] = 0x0538,
[PMIF_MONITOR_RECORD_4_1] = 0x053C,
[PMIF_MONITOR_RECORD_4_2] = 0x0540,
[PMIF_MONITOR_RECORD_4_3] = 0x0544,
[PMIF_MONITOR_RECORD_4_4] = 0x0548,
[PMIF_MONITOR_RECORD_5_0] = 0x054C,
[PMIF_MONITOR_RECORD_5_1] = 0x0550,
[PMIF_MONITOR_RECORD_5_2] = 0x0554,
[PMIF_MONITOR_RECORD_5_3] = 0x0558,
[PMIF_MONITOR_RECORD_5_4] = 0x055C,
[PMIF_MONITOR_RECORD_6_0] = 0x0560,
[PMIF_MONITOR_RECORD_6_1] = 0x0564,
[PMIF_MONITOR_RECORD_6_2] = 0x0568,
[PMIF_MONITOR_RECORD_6_3] = 0x056C,
[PMIF_MONITOR_RECORD_6_4] = 0x0570,
[PMIF_MONITOR_RECORD_7_0] = 0x0574,
[PMIF_MONITOR_RECORD_7_1] = 0x0578,
[PMIF_MONITOR_RECORD_7_2] = 0x057C,
[PMIF_MONITOR_RECORD_7_3] = 0x0580,
[PMIF_MONITOR_RECORD_7_4] = 0x0584,
[PMIF_MONITOR_RECORD_8_0] = 0x0588,
[PMIF_MONITOR_RECORD_8_1] = 0x058C,
[PMIF_MONITOR_RECORD_8_2] = 0x0590,
[PMIF_MONITOR_RECORD_8_3] = 0x0594,
[PMIF_MONITOR_RECORD_8_4] = 0x0598,
[PMIF_MONITOR_RECORD_9_0] = 0x059C,
[PMIF_MONITOR_RECORD_9_1] = 0x05A0,
[PMIF_MONITOR_RECORD_9_2] = 0x05A4,
[PMIF_MONITOR_RECORD_9_3] = 0x05A8,
[PMIF_MONITOR_RECORD_9_4] = 0x05AC,
[PMIF_MONITOR_RECORD_10_0] = 0x05B0,
[PMIF_MONITOR_RECORD_10_1] = 0x05B4,
[PMIF_MONITOR_RECORD_10_2] = 0x05B8,
[PMIF_MONITOR_RECORD_10_3] = 0x05BC,
[PMIF_MONITOR_RECORD_10_4] = 0x05C0,
[PMIF_MONITOR_RECORD_11_0] = 0x05C4,
[PMIF_MONITOR_RECORD_11_1] = 0x05C8,
[PMIF_MONITOR_RECORD_11_2] = 0x05CC,
[PMIF_MONITOR_RECORD_11_3] = 0x05D0,
[PMIF_MONITOR_RECORD_11_4] = 0x05D4,
[PMIF_MONITOR_RECORD_12_0] = 0x05D8,
[PMIF_MONITOR_RECORD_12_1] = 0x05DC,
[PMIF_MONITOR_RECORD_12_2] = 0x05E0,
[PMIF_MONITOR_RECORD_12_3] = 0x05E4,
[PMIF_MONITOR_RECORD_12_4] = 0x05E8,
[PMIF_MONITOR_RECORD_13_0] = 0x05EC,
[PMIF_MONITOR_RECORD_13_1] = 0x05F0,
[PMIF_MONITOR_RECORD_13_2] = 0x05F4,
[PMIF_MONITOR_RECORD_13_3] = 0x05F8,
[PMIF_MONITOR_RECORD_13_4] = 0x05FC,
[PMIF_MONITOR_RECORD_14_0] = 0x0600,
[PMIF_MONITOR_RECORD_14_1] = 0x0604,
[PMIF_MONITOR_RECORD_14_2] = 0x0608,
[PMIF_MONITOR_RECORD_14_3] = 0x060C,
[PMIF_MONITOR_RECORD_14_4] = 0x0610,
[PMIF_MONITOR_RECORD_15_0] = 0x0614,
[PMIF_MONITOR_RECORD_15_1] = 0x0618,
[PMIF_MONITOR_RECORD_15_2] = 0x061C,
[PMIF_MONITOR_RECORD_15_3] = 0x0620,
[PMIF_MONITOR_RECORD_15_4] = 0x0624,
[PMIF_MONITOR_RECORD_16_0] = 0x0628,
[PMIF_MONITOR_RECORD_16_1] = 0x062C,
[PMIF_MONITOR_RECORD_16_2] = 0x0630,
[PMIF_MONITOR_RECORD_16_3] = 0x0634,
[PMIF_MONITOR_RECORD_16_4] = 0x0638,
[PMIF_MONITOR_RECORD_17_0] = 0x063C,
[PMIF_MONITOR_RECORD_17_1] = 0x0640,
[PMIF_MONITOR_RECORD_17_2] = 0x0644,
[PMIF_MONITOR_RECORD_17_3] = 0x0648,
[PMIF_MONITOR_RECORD_17_4] = 0x064C,
[PMIF_MONITOR_RECORD_18_0] = 0x0650,
[PMIF_MONITOR_RECORD_18_1] = 0x0654,
[PMIF_MONITOR_RECORD_18_2] = 0x0658,
[PMIF_MONITOR_RECORD_18_3] = 0x065C,
[PMIF_MONITOR_RECORD_18_4] = 0x0660,
[PMIF_MONITOR_RECORD_19_0] = 0x0664,
[PMIF_MONITOR_RECORD_19_1] = 0x0668,
[PMIF_MONITOR_RECORD_19_2] = 0x066C,
[PMIF_MONITOR_RECORD_19_3] = 0x0670,
[PMIF_MONITOR_RECORD_19_4] = 0x0674,
[PMIF_MONITOR_RECORD_20_0] = 0x0678,
[PMIF_MONITOR_RECORD_20_1] = 0x067C,
[PMIF_MONITOR_RECORD_20_2] = 0x0680,
[PMIF_MONITOR_RECORD_20_3] = 0x0684,
[PMIF_MONITOR_RECORD_20_4] = 0x0688,
[PMIF_MONITOR_RECORD_21_0] = 0x068C,
[PMIF_MONITOR_RECORD_21_1] = 0x0690,
[PMIF_MONITOR_RECORD_21_2] = 0x0694,
[PMIF_MONITOR_RECORD_21_3] = 0x0698,
[PMIF_MONITOR_RECORD_21_4] = 0x069C,
[PMIF_MONITOR_RECORD_22_0] = 0x06A0,
[PMIF_MONITOR_RECORD_22_1] = 0x06A4,
[PMIF_MONITOR_RECORD_22_2] = 0x06A8,
[PMIF_MONITOR_RECORD_22_3] = 0x06AC,
[PMIF_MONITOR_RECORD_22_4] = 0x06B0,
[PMIF_MONITOR_RECORD_23_0] = 0x06B4,
[PMIF_MONITOR_RECORD_23_1] = 0x06B8,
[PMIF_MONITOR_RECORD_23_2] = 0x06BC,
[PMIF_MONITOR_RECORD_23_3] = 0x06C0,
[PMIF_MONITOR_RECORD_23_4] = 0x06C4,
[PMIF_MONITOR_RECORD_24_0] = 0x06C8,
[PMIF_MONITOR_RECORD_24_1] = 0x06CC,
[PMIF_MONITOR_RECORD_24_2] = 0x06D0,
[PMIF_MONITOR_RECORD_24_3] = 0x06D4,
[PMIF_MONITOR_RECORD_24_4] = 0x06D8,
[PMIF_MONITOR_RECORD_25_0] = 0x06DC,
[PMIF_MONITOR_RECORD_25_1] = 0x06E0,
[PMIF_MONITOR_RECORD_25_2] = 0x06E4,
[PMIF_MONITOR_RECORD_25_3] = 0x06E8,
[PMIF_MONITOR_RECORD_25_4] = 0x06EC,
[PMIF_MONITOR_RECORD_26_0] = 0x06F0,
[PMIF_MONITOR_RECORD_26_1] = 0x06F4,
[PMIF_MONITOR_RECORD_26_2] = 0x06F8,
[PMIF_MONITOR_RECORD_26_3] = 0x06FC,
[PMIF_MONITOR_RECORD_26_4] = 0x0700,
[PMIF_MONITOR_RECORD_27_0] = 0x0704,
[PMIF_MONITOR_RECORD_27_1] = 0x0708,
[PMIF_MONITOR_RECORD_27_2] = 0x070C,
[PMIF_MONITOR_RECORD_27_3] = 0x0710,
[PMIF_MONITOR_RECORD_27_4] = 0x0714,
[PMIF_MONITOR_RECORD_28_0] = 0x0718,
[PMIF_MONITOR_RECORD_28_1] = 0x071C,
[PMIF_MONITOR_RECORD_28_2] = 0x0720,
[PMIF_MONITOR_RECORD_28_3] = 0x0724,
[PMIF_MONITOR_RECORD_28_4] = 0x0728,
[PMIF_MONITOR_RECORD_29_0] = 0x072C,
[PMIF_MONITOR_RECORD_29_1] = 0x0730,
[PMIF_MONITOR_RECORD_29_2] = 0x0734,
[PMIF_MONITOR_RECORD_29_3] = 0x0738,
[PMIF_MONITOR_RECORD_29_4] = 0x073C,
[PMIF_MONITOR_RECORD_30_0] = 0x0740,
[PMIF_MONITOR_RECORD_30_1] = 0x0744,
[PMIF_MONITOR_RECORD_30_2] = 0x0748,
[PMIF_MONITOR_RECORD_30_3] = 0x074C,
[PMIF_MONITOR_RECORD_30_4] = 0x0750,
[PMIF_MONITOR_RECORD_31_0] = 0x0754,
[PMIF_MONITOR_RECORD_31_1] = 0x0758,
[PMIF_MONITOR_RECORD_31_2] = 0x075C,
[PMIF_MONITOR_RECORD_31_3] = 0x0760,
[PMIF_MONITOR_RECORD_31_4] = 0x0764,
[PMIF_DEBUG_CTRL] = 0x0768,
[PMIF_RESERVED_0] = 0x0770,
[PMIF_SWINF_0_ACC] = 0x0C00,
[PMIF_SWINF_0_WDATA_31_0] = 0x0C04,
[PMIF_SWINF_0_WDATA_63_32] = 0x0C08,
[PMIF_SWINF_0_RDATA_31_0] = 0x0C14,
[PMIF_SWINF_0_RDATA_63_32] = 0x0C18,
[PMIF_SWINF_0_VLD_CLR] = 0x0C24,
[PMIF_SWINF_0_STA] = 0x0C28,
[PMIF_SWINF_1_ACC] = 0x0C40,
[PMIF_SWINF_1_WDATA_31_0] = 0x0C44,
[PMIF_SWINF_1_WDATA_63_32] = 0x0C48,
[PMIF_SWINF_1_RDATA_31_0] = 0x0C54,
[PMIF_SWINF_1_RDATA_63_32] = 0x0C58,
[PMIF_SWINF_1_VLD_CLR] = 0x0C64,
[PMIF_SWINF_1_STA] = 0x0C68,
[PMIF_SWINF_2_ACC] = 0x0C80,
[PMIF_SWINF_2_WDATA_31_0] = 0x0C84,
[PMIF_SWINF_2_WDATA_63_32] = 0x0C88,
[PMIF_SWINF_2_RDATA_31_0] = 0x0C94,
[PMIF_SWINF_2_RDATA_63_32] = 0x0C98,
[PMIF_SWINF_2_VLD_CLR] = 0x0CA4,
[PMIF_SWINF_2_STA] = 0x0CA8,
[PMIF_SWINF_3_ACC] = 0x0CC0,
[PMIF_SWINF_3_WDATA_31_0] = 0x0CC4,
[PMIF_SWINF_3_WDATA_63_32] = 0x0CC8,
[PMIF_SWINF_3_RDATA_31_0] = 0x0CD4,
[PMIF_SWINF_3_RDATA_63_32] = 0x0CD8,
[PMIF_SWINF_3_VLD_CLR] = 0x0CE4,
[PMIF_SWINF_3_STA] = 0x0CE8,
[PMIC_ACC_VIO_INFO_0] = 0x0F50,
[PMIC_ACC_VIO_INFO_1] = 0x0F54,
[PMIC_ACC_VIO_INFO_2] = 0x0F58,
[PMIC_ACC_VIO_INFO_3] = 0x0F5C,
[PMIC_ACC_VIO_INFO_4] = 0x0F60,
[PMIC_ACC_VIO_INFO_5] = 0x0F64,
[PMIC_ACC_SCP_VIO_INFO_0] = 0x0F68,
[PMIC_ACC_SCP_VIO_INFO_1] = 0x0F6C,
[PMIC_ACC_SCP_VIO_INFO_2] = 0x0F70,
[PMIC_ACC_SCP_VIO_INFO_3] = 0x0F74,
[PMIC_ACC_SCP_VIO_INFO_4] = 0x0F78,
[PMIC_ACC_SCP_VIO_INFO_5] = 0x0F7C,
[PMIF_ACC_VIO_INFO_0] = 0x0F80,
[PMIF_ACC_VIO_INFO_1] = 0x0F84,
[PMIF_ACC_VIO_INFO_2] = 0x0F88,
};
static char d_log_buf[1280];
static struct spmi_controller *dbg_ctrl;
static int is_drv_attr;
static char *wp;
/*
* Function : mtk_spmi_readl_d()
* Description : mtk spmi controller read api
* Parameter :
* Return :
*/
static u32 mtk_spmi_readl_d(struct pmif *arb, enum spmi_regs reg)
{
return readl(arb->spmimst_base + arb->spmimst_regs[reg]);
}
#if 0
/*
* Function : mtk_spmi_writel_d()
* Description : mtk spmi controller write api
* Parameter :
* Return :
*/
static void mtk_spmi_writel_d(struct pmif *arb, u32 val,
enum spmi_regs reg)
{
writel(val, arb->spmimst_base + arb->spmimst_regs[reg]);
}
#endif
/* spmi & pmif debug mechanism */
void spmi_dump_wdt_reg(void)
{
struct pmif *arb = spmi_controller_get_drvdata(dbg_ctrl);
unsigned int offset, tmp_dat;
unsigned int start, end, log_size = 0;
start = arb->dbgregs[PMIF_WDT_EVENT_EN_0];
end = arb->dbgregs[PMIF_WDT_FLAG_1];
log_size += sprintf(wp, "");
for (offset = start; offset <= end; offset += 4) {
tmp_dat = readl(arb->base + offset);
log_size += sprintf(wp + log_size, "(0x%x)=0x%x ",
offset, tmp_dat);
}
log_size += sprintf(wp + log_size, "\n");
pr_info("[PMIF] %s", wp);
}
void spmi_dump_pmif_acc_vio_reg(void)
{
struct pmif *arb = spmi_controller_get_drvdata(dbg_ctrl);
unsigned int offset, tmp_dat;
unsigned int start, end, log_size = 0;
start = arb->dbgregs[PMIF_ACC_VIO_INFO_0];
if (arb->dbgver == 2)
end = arb->dbgregs[PMIC_ALL_ACC_VIO_INFO_1];
else
end = arb->dbgregs[PMIF_ACC_VIO_INFO_2];
log_size += sprintf(wp, "");
for (offset = start; offset <= end; offset += 4) {
tmp_dat = readl(arb->base + offset);
log_size += sprintf(wp + log_size, "(0x%x)=0x%x ",
offset, tmp_dat);
}
log_size += sprintf(wp + log_size, "\n");
pr_info("[PMIF] %s %s", __func__, wp);
}
void spmi_dump_pmic_acc_vio_reg(void)
{
struct pmif *arb = spmi_controller_get_drvdata(dbg_ctrl);
unsigned int offset, tmp_dat;
unsigned int start, end, log_size = 0;
start = arb->dbgregs[PMIC_ACC_VIO_INFO_0];
end = arb->dbgregs[PMIC_ACC_VIO_INFO_5];
log_size += sprintf(wp, "");
for (offset = start; offset <= end; offset += 4) {
tmp_dat = readl(arb->base + offset);
log_size += sprintf(wp + log_size, "(0x%x)=0x%x ",
offset, tmp_dat);
}
log_size += sprintf(wp + log_size, "\n");
pr_info("[PMIF] %s %s", __func__, wp);
}
static char *get_pmif_busy_reg_dump(void)
{
struct pmif *arb = spmi_controller_get_drvdata(dbg_ctrl);
unsigned int offset, tmp_dat;
unsigned int start, end, log_size = 0;
start = arb->dbgregs[PMIF_INF_BUSY_STA];
end = arb->dbgregs[PMIF_OTHER_BUSY_STA_1];
log_size += sprintf(wp, "");
for (offset = start; offset <= end; offset += 4) {
tmp_dat = readl(arb->base + offset);
log_size += sprintf(wp + log_size, "(0x%x)=0x%x ",
offset, tmp_dat);
}
log_size += sprintf(wp + log_size, "\n");
return wp;
}
static char *get_pmif_swinf_reg_dump(void)
{
struct pmif *arb = spmi_controller_get_drvdata(dbg_ctrl);
unsigned int swinf = 0, step, offset, tmp_dat, log_size = 0;
unsigned int cmd, is_write, slvid, bytecnt, addr;
unsigned int wd_31_0, rd_31_0;
unsigned int err, sbusy, done, qfillcnt, qfreecnt, qempty, qfull;
unsigned int req, fsm, en;
step = arb->dbgregs[PMIF_SWINF_1_ACC] - arb->dbgregs[PMIF_SWINF_0_ACC];
log_size += sprintf(wp, "");
for (swinf = 0; swinf < 4; swinf++) {
offset = arb->dbgregs[PMIF_SWINF_0_ACC] + swinf * step;
tmp_dat = readl(arb->base + offset);
cmd = (tmp_dat & (0x3 << 30)) >> 30;
is_write = (tmp_dat & (0x1 << 29)) >> 29;
slvid = (tmp_dat & (0xf << 24)) >> 24;
bytecnt = (tmp_dat & (0xf << 16)) >> 16;
addr = (tmp_dat & (0xffff << 0)) >> 0;
offset = arb->dbgregs[PMIF_SWINF_0_WDATA_31_0] + swinf * step;
wd_31_0 = readl(arb->base + offset);
offset = arb->dbgregs[PMIF_SWINF_0_RDATA_31_0] + swinf * step;
rd_31_0 = readl(arb->base + offset);
offset = arb->dbgregs[PMIF_SWINF_0_STA] + swinf * step;
tmp_dat = readl(arb->base + offset);
err = (tmp_dat & (0x1 << 18)) >> 18;
sbusy = (tmp_dat & (0x1 << 17)) >> 17;
done = (tmp_dat & (0x1 << 15)) >> 15;
qfillcnt = (tmp_dat & (0xf << 11)) >> 11;
qfreecnt = (tmp_dat & (0xf << 7)) >> 7;
qempty = (tmp_dat & (0x1 << 6)) >> 6;
qfull = (tmp_dat & (0x1 << 5)) >> 5;
req = (tmp_dat & (0x1 << 4)) >> 4;
fsm = (tmp_dat & (0x7 << 1)) >> 1;
en = (tmp_dat & (0x1 << 0)) >> 0;
log_size += sprintf(
wp + log_size,
"[swinf:%d, cmd:0x%x, is_write:%d, slvid:%d ",
swinf, cmd, is_write, slvid);
if (is_write) {
log_size += sprintf(
wp + log_size,
"bytecnt:%d (write addr 0x%x=0x%x)]\n",
bytecnt, addr, wd_31_0);
} else {
log_size += sprintf(
wp + log_size,
"bytecnt:%d (read addr 0x%x=0x%x)]\n",
bytecnt, addr, rd_31_0);
}
log_size += sprintf(
wp + log_size,
"[err:%d, sbusy:%d, done:%d, qfillcnt:%d ",
err, sbusy, done, qfillcnt);
log_size += sprintf(
wp + log_size,
"qfreecnt:%d, qempty:%d, qfull:%d, req:%d ",
qfreecnt, qempty, qfull, req);
log_size += sprintf(wp + log_size, "fsm:%d, en:%d]\n", fsm, en);
}
log_size += sprintf(wp + log_size, "\n");
return wp;
}
static char *get_spmimst_all_reg_dump(void)
{
struct pmif *arb = spmi_controller_get_drvdata(dbg_ctrl);
unsigned int offset, tmp_dat;
unsigned int start, end, log_size = 0;
int i = 0;
start = arb->spmimst_regs[SPMI_OP_ST_CTRL];
end = arb->spmimst_regs[SPMI_REC4];
log_size += sprintf(wp, "\n[SPMI] ");
for (offset = start; offset <= end; offset += 4) {
tmp_dat = readl(arb->spmimst_base + offset);
log_size += sprintf(wp + log_size,
"(0x%x)=0x%x ", offset, tmp_dat);
i++;
if (i % 8 == 0)
log_size += sprintf(wp + log_size, "\n[SPMI] ");
}
#if SPMI_RCS_SUPPORT
offset = arb->spmimst_regs[SPMI_DEC_DBG];
tmp_dat = readl(arb->spmimst_base + offset);
log_size += sprintf(wp + log_size, "(0x%x)=0x%x ", offset, tmp_dat);
#endif
offset = arb->spmimst_regs[SPMI_MST_DBG];
tmp_dat = readl(arb->spmimst_base + offset);
log_size += sprintf(wp + log_size, "(0x%x)=0x%x\n", offset, tmp_dat);
return wp;
}
void spmi_dump_pmif_busy_reg(void)
{
pr_info("[PMIF] %s", get_pmif_busy_reg_dump());
}
static void spmi_dump_pmif_busy_reg_d(struct seq_file *m)
{
seq_puts(m, get_pmif_busy_reg_dump());
}
void spmi_dump_pmif_swinf_reg(void)
{
pr_info("[PMIF]\n%s", get_pmif_swinf_reg_dump());
}
static void spmi_dump_pmif_swinf_reg_d(struct seq_file *m)
{
seq_puts(m, get_pmif_swinf_reg_dump());
}
void spmi_dump_pmif_all_reg(void)
{
struct pmif *arb = spmi_controller_get_drvdata(dbg_ctrl);
unsigned int offset, tmp_dat, log_size = 0;
unsigned int start, end;
int i = 0;
start = arb->dbgregs[PMIF_INIT_DONE];
end = arb->dbgregs[PMIF_RESERVED_0];
log_size += sprintf(wp, "");
for (offset = start; offset <= end; offset += 4) {
tmp_dat = readl(arb->base + offset);
log_size += sprintf(wp + log_size, "(0x%x)=0x%x ",
offset, tmp_dat);
i++;
if (i % 64 == 0) {
pr_notice("\n[PMIF] %s", wp);
log_size = 0;
} else if (i % 8 == 0)
log_size += sprintf(wp + log_size, "\n[PMIF] ");
}
pr_notice("\n[PMIF] %s", wp);
}
static void spmi_dump_pmif_all_reg_d(struct seq_file *m)
{
struct pmif *arb = spmi_controller_get_drvdata(dbg_ctrl);
unsigned int offset, tmp_dat, log_size = 0;
unsigned int start, end;
int i = 0;
start = arb->dbgregs[PMIF_INIT_DONE];
end = arb->dbgregs[PMIF_RESERVED_0];
for (offset = start; offset <= end; offset += 4) {
tmp_dat = readl(arb->base + offset);
seq_printf(m, "(0x%x)=0x%x ", offset, tmp_dat);
}
seq_puts(m, "\n");
}
void spmi_dump_pmif_record_reg(void)
{
struct pmif *arb = spmi_controller_get_drvdata(dbg_ctrl);
unsigned int i = 0, step, offset, tmp_dat;
unsigned int chan, cmd, is_write, slvid, bytecnt, addr;
unsigned int wd_31_0, log_size = 0;
step = arb->dbgregs[PMIF_MONITOR_RECORD_1_0] -
arb->dbgregs[PMIF_MONITOR_RECORD_0_0];
log_size += sprintf(wp, "");
for (i = 0; i < 32; i++) {
offset = arb->dbgregs[PMIF_MONITOR_RECORD_0_0] + i * step;
tmp_dat = readl(arb->base + offset);
chan = (tmp_dat & (0xf8 << 27)) >> 27;
cmd = (tmp_dat & (0x3 << 25)) >> 25;
is_write = (tmp_dat & (0x1 << 24)) >> 24;
slvid = (tmp_dat & (0xf << 20)) >> 20;
bytecnt = (tmp_dat & (0xf << 16)) >> 16;
addr = (tmp_dat & (0xffff << 0)) >> 0;
offset = arb->dbgregs[PMIF_MONITOR_RECORD_0_1] + i * step;
wd_31_0 = readl(arb->base + offset);
log_size += sprintf(wp + log_size,
"[PMIF] (%d)[swinf:%d, cmd:0x%x, rw:0x%x, slvid:%d, ",
i, chan, cmd, is_write, slvid);
log_size += sprintf(wp + log_size,
"bytecnt:%d, (addr 0x%x=0x%x)]\n",
bytecnt, addr, wd_31_0);
if ((i + 1) % 8 == 0) {
pr_info("\n%s", wp);
log_size = 0;
}
}
/* logging mode no need to clear record */
}
static void spmi_dump_pmif_record_reg_d(struct seq_file *m)
{
struct pmif *arb = spmi_controller_get_drvdata(dbg_ctrl);
unsigned int i = 0, step, offset, tmp_dat;
unsigned int chan, cmd, is_write, slvid, bytecnt, addr;
unsigned int wd_31_0;
step = arb->dbgregs[PMIF_MONITOR_RECORD_1_0] -
arb->dbgregs[PMIF_MONITOR_RECORD_0_0];
for (i = 0; i < 32; i++) {
offset = arb->dbgregs[PMIF_MONITOR_RECORD_0_0] + i * step;
tmp_dat = readl(arb->base + offset);
chan = (tmp_dat & (0xf8 << 27)) >> 27;
cmd = (tmp_dat & (0x3 << 25)) >> 25;
is_write = (tmp_dat & (0x1 << 24)) >> 24;
slvid = (tmp_dat & (0xf << 20)) >> 20;
bytecnt = (tmp_dat & (0xf << 16)) >> 16;
addr = (tmp_dat & (0xffff << 0)) >> 0;
offset = arb->dbgregs[PMIF_MONITOR_RECORD_0_1] + i * step;
wd_31_0 = readl(arb->base + offset);
seq_printf(m, "(%d)[swinf:%d, cmd:0x%x, rw:0x%x, slvid:%d, ",
i, chan, cmd, is_write, slvid);
seq_printf(m, "bytecnt:%d, (addr 0x%x=0x%x)]\n",
bytecnt, addr, wd_31_0);
}
/* logging mode no need to clear record */
}
void spmi_dump_spmimst_all_reg(void)
{
pr_notice("%s", get_spmimst_all_reg_dump());
}
static void spmi_dump_spmimst_all_reg_d(struct seq_file *m)
{
seq_puts(m, get_spmimst_all_reg_dump());
}
/*
* PMIF dump busy register log
*/
static int proc_dump_pmif_busy_reg_show(struct seq_file *m, void *v)
{
seq_puts(m, "********** PMIF dump busy register**********\n");
spmi_dump_pmif_busy_reg();
spmi_dump_pmif_busy_reg_d(m);
return 0;
}
static int proc_dump_pmif_busy_reg_open(struct inode *inode, struct file *file)
{
return single_open(file, proc_dump_pmif_busy_reg_show, NULL);
}
static const struct file_operations dump_pmif_busy_reg_proc_fops = {
.open = proc_dump_pmif_busy_reg_open,
.read = seq_read,
};
/*
* PMIF dump swinf log
*/
static int proc_dump_pmif_swinf_show(struct seq_file *m, void *v)
{
seq_puts(m, "********** PMIF dump swinf register**********\n");
spmi_dump_pmif_swinf_reg();
spmi_dump_pmif_swinf_reg_d(m);
return 0;
}
static int proc_dump_pmif_swinf_open(struct inode *inode, struct file *file)
{
return single_open(file, proc_dump_pmif_swinf_show, NULL);
}
static const struct file_operations dump_pmif_swinf_proc_fops = {
.open = proc_dump_pmif_swinf_open,
.read = seq_read,
};
/*
* PMIF dump all register log
*/
static int proc_dump_pmif_all_reg_show(struct seq_file *m, void *v)
{
seq_puts(m, "********** PMIF dump all register**********\n");
spmi_dump_pmif_all_reg();
spmi_dump_pmif_all_reg_d(m);
return 0;
}
static int proc_dump_pmif_all_reg_open(struct inode *inode, struct file *file)
{
return single_open(file, proc_dump_pmif_all_reg_show, NULL);
}
static const struct file_operations dump_pmif_all_reg_proc_fops = {
.open = proc_dump_pmif_all_reg_open,
.read = seq_read,
};
/*
* PMIF dump record register log
*/
static int proc_dump_pmif_record_reg_show(struct seq_file *m, void *v)
{
seq_puts(m, "********** PMIF dump record register**********\n");
seq_puts(m, "*swinf:4=MD,swinf:5:GZ,swinf:6:AP,swinf:7:RSV\n");
spmi_dump_pmif_record_reg();
spmi_dump_pmif_record_reg_d(m);
return 0;
}
static int proc_dump_pmif_record_reg_open(struct inode *inode,
struct file *file)
{
return single_open(file, proc_dump_pmif_record_reg_show, NULL);
}
static const struct file_operations dump_pmif_record_reg_proc_fops = {
.open = proc_dump_pmif_record_reg_open,
.read = seq_read,
};
/*
* SPMIMST dump all register log
*/
static int proc_dump_spmimst_all_reg_show(struct seq_file *m, void *v)
{
seq_puts(m, "********** SPMIMST dump all register**********\n");
spmi_dump_spmimst_all_reg();
spmi_dump_spmimst_all_reg_d(m);
return 0;
}
static int proc_dump_spmimst_all_reg_open(struct inode *inode,
struct file *file)
{
return single_open(file, proc_dump_spmimst_all_reg_show, NULL);
}
static const struct file_operations dump_spmimst_all_reg_proc_fops = {
.open = proc_dump_spmimst_all_reg_open,
.read = seq_read,
};
static u32 gpmif_of;
static u32 gpmif_val;
static ssize_t pmif_access_show(struct device_driver *ddri, char *buf)
{
int ret = 0;
if (buf == NULL) {
pr_notice("[%s] *buf is NULL!\n", __func__);
return -EINVAL;
}
ret = sprintf(buf, "[%s] [0x%x]=0x%x\n", __func__, gpmif_of, gpmif_val);
if (ret < 0)
pr_notice("sprintf failed\n");
return strlen(buf);
}
static ssize_t pmif_access_store(struct device_driver *ddri,
const char *buf, size_t count)
{
struct pmif *arb = spmi_controller_get_drvdata(dbg_ctrl);
int ret = 0;
u32 offset = 0;
u32 value = 0;
pr_info("[%s]\n", __func__);
if (buf != NULL && count != 0) {
pr_info("[%s] size is %d, buf is %s\n",
__func__, (int)count, buf);
if (strlen(buf) < 3) {
pr_notice("%s() Invalid input!!\n", __func__);
return -EINVAL;
}
ret = sscanf(buf, "0x%x 0x%x", &offset, &value);
if (ret < 0)
return ret;
if (value) {
if (offset > arb->dbgregs[PMIF_SWINF_3_STA]) {
pr_notice("%s() Illegal offset[0x%x]!!\n",
__func__, offset);
} else {
pr_info("%s() set offset[0x%x]=0x%x\n",
__func__, arb->base + offset, value);
writel(value, arb->base + offset);
}
}
gpmif_of = offset;
gpmif_val = readl(arb->base + offset);
}
return count;
}
static u32 gspmi_of;
static u32 gspmi_val;
static ssize_t spmi_access_show(struct device_driver *ddri, char *buf)
{
int ret = 0;
if (buf == NULL) {
pr_notice("[%s] *buf is NULL!\n", __func__);
return -EINVAL;
}
ret = sprintf(buf, "[%s] [0x%x]=0x%x\n", __func__, gspmi_of, gspmi_val);
if (ret < 0)
pr_notice("sprintf failed\n");
return strlen(buf);
}
static ssize_t spmi_access_store(struct device_driver *ddri,
const char *buf, size_t count)
{
struct pmif *arb = spmi_controller_get_drvdata(dbg_ctrl);
int ret = 0;
u32 offset = 0;
u32 value = 0;
pr_info("[%s]\n", __func__);
if (buf != NULL && count != 0) {
pr_info("[%s] size is %d, buf is %s\n",
__func__, (int)count, buf);
if (strlen(buf) < 3) {
pr_notice("%s() Invalid input!!\n", __func__);
return -EINVAL;
}
ret = sscanf(buf, "0x%x 0x%x", &offset, &value);
if (ret < 0)
return ret;
if (value) {
if (offset > arb->spmimst_regs[SPMI_MST_DBG]) {
pr_notice("%s() Illegal offset[0x%x]!!\n",
__func__, offset);
} else {
pr_info("%s() set offset[0x%x]=0x%x\n",
__func__, arb->spmimst_base + offset,
value);
writel(value, arb->spmimst_base + offset);
}
}
gspmi_of = offset;
gspmi_val = readl(arb->spmimst_base + offset);
}
return count;
}
static DRIVER_ATTR_RW(pmif_access);
static DRIVER_ATTR_RW(spmi_access);
static struct driver_attribute *spmi_pmif_attr_list[] = {
&driver_attr_pmif_access,
&driver_attr_spmi_access,
};
int spmi_pmif_create_attr(struct device_driver *driver)
{
int idx, err;
int num = ARRAY_SIZE(spmi_pmif_attr_list);
struct dentry *mtk_spmi_dir;
mtk_spmi_dir = debugfs_create_dir("mtk_spmi", NULL);
if (!mtk_spmi_dir) {
pr_notice("fail to mkdir /sys/kernel/debug/mtk_spmi\n");
return -ENOMEM;
}
/*--/sys/kernel/debug/mtk_spmi--*/
debugfs_create_file("dump_pmif_busy_reg", 0644,
mtk_spmi_dir, NULL,
&dump_pmif_busy_reg_proc_fops);
debugfs_create_file("dump_pmif_swinf", 0644,
mtk_spmi_dir, NULL,
&dump_pmif_swinf_proc_fops);
debugfs_create_file("dump_pmif_all_reg", 0644,
mtk_spmi_dir, NULL,
&dump_pmif_all_reg_proc_fops);
debugfs_create_file("dump_pmif_record_reg", 0644,
mtk_spmi_dir, NULL,
&dump_pmif_record_reg_proc_fops);
debugfs_create_file("dump_spmimst_all_reg", 0644,
mtk_spmi_dir, NULL,
&dump_spmimst_all_reg_proc_fops);
if (driver == NULL)
return -EINVAL;
/*--/sys/devices/platform/10027000.spmi/driver--*/
for (idx = 0; idx < num; idx++) {
err = driver_create_file(driver, spmi_pmif_attr_list[idx]);
if (err) {
pr_notice("%s() driver_create_file %s err:%d\n",
__func__, spmi_pmif_attr_list[idx]->attr.name, err);
break;
}
}
return err;
}
int spmi_pmif_dbg_init(struct spmi_controller *ctrl)
{
struct pmif *arb = spmi_controller_get_drvdata(ctrl);
dbg_ctrl = ctrl;
wp = d_log_buf;
if (of_device_is_compatible(ctrl->dev.parent->of_node,
"mediatek,mt6885-pmif")) {
arb->dbgregs = mt6885_pmif_dbg_regs;
arb->dbgver = 1;
} else if (of_device_is_compatible(ctrl->dev.parent->of_node,
"mediatek,mt6833-pmif-m")) {
arb->dbgregs = mt6833_pmif_dbg_regs;
arb->dbgver = 2;
} else if (of_device_is_compatible(ctrl->dev.parent->of_node,
"mediatek,mt6853-pmif-m")) {
arb->dbgregs = mt6853_pmif_dbg_regs;
arb->dbgver = 2;
} else if (of_device_is_compatible(ctrl->dev.parent->of_node,
"mediatek,mt6853-pmif-p")) {
arb->dbgregs = mt6853_pmif_dbg_regs;
arb->dbgver = 2;
} else {
arb->dbgregs = mt6xxx_pmif_dbg_regs;
arb->dbgver = 1;
}
return 0;
}