225 lines
8.5 KiB
C
225 lines
8.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/* Copyright (C) 2023--2024 Intel Corporation */
|
|
|
|
#ifndef IPU6_PLATFORM_BUTTRESS_REGS_H
|
|
#define IPU6_PLATFORM_BUTTRESS_REGS_H
|
|
|
|
#include <linux/bits.h>
|
|
|
|
/* IS_WORKPOINT_REQ */
|
|
#define IPU6_BUTTRESS_REG_IS_FREQ_CTL 0x34
|
|
/* PS_WORKPOINT_REQ */
|
|
#define IPU6_BUTTRESS_REG_PS_FREQ_CTL 0x38
|
|
|
|
/* should be tuned for real silicon */
|
|
#define IPU6_IS_FREQ_CTL_DEFAULT_RATIO 0x08
|
|
#define IPU6SE_IS_FREQ_CTL_DEFAULT_RATIO 0x0a
|
|
#define IPU6_PS_FREQ_CTL_DEFAULT_RATIO 0x0d
|
|
|
|
#define IPU6_IS_FREQ_CTL_DEFAULT_QOS_FLOOR_RATIO 0x10
|
|
#define IPU6_PS_FREQ_CTL_DEFAULT_QOS_FLOOR_RATIO 0x0708
|
|
|
|
#define IPU6_BUTTRESS_PWR_STATE_IS_PWR_SHIFT 3
|
|
#define IPU6_BUTTRESS_PWR_STATE_IS_PWR_MASK GENMASK(4, 3)
|
|
|
|
#define IPU6_BUTTRESS_PWR_STATE_PS_PWR_SHIFT 6
|
|
#define IPU6_BUTTRESS_PWR_STATE_PS_PWR_MASK GENMASK(7, 6)
|
|
|
|
#define IPU6_BUTTRESS_PWR_STATE_DN_DONE 0x0
|
|
#define IPU6_BUTTRESS_PWR_STATE_UP_PROCESS 0x1
|
|
#define IPU6_BUTTRESS_PWR_STATE_DN_PROCESS 0x2
|
|
#define IPU6_BUTTRESS_PWR_STATE_UP_DONE 0x3
|
|
|
|
#define IPU6_BUTTRESS_REG_FPGA_SUPPORT_0 0x270
|
|
#define IPU6_BUTTRESS_REG_FPGA_SUPPORT_1 0x274
|
|
#define IPU6_BUTTRESS_REG_FPGA_SUPPORT_2 0x278
|
|
#define IPU6_BUTTRESS_REG_FPGA_SUPPORT_3 0x27c
|
|
#define IPU6_BUTTRESS_REG_FPGA_SUPPORT_4 0x280
|
|
#define IPU6_BUTTRESS_REG_FPGA_SUPPORT_5 0x284
|
|
#define IPU6_BUTTRESS_REG_FPGA_SUPPORT_6 0x288
|
|
#define IPU6_BUTTRESS_REG_FPGA_SUPPORT_7 0x28c
|
|
|
|
#define BUTTRESS_REG_WDT 0x8
|
|
#define BUTTRESS_REG_BTRS_CTRL 0xc
|
|
#define BUTTRESS_REG_BTRS_CTRL_STALL_MODE_VC0 BIT(0)
|
|
#define BUTTRESS_REG_BTRS_CTRL_STALL_MODE_VC1 BIT(1)
|
|
#define BUTTRESS_REG_BTRS_CTRL_REF_CLK_IND GENMASK(9, 8)
|
|
|
|
#define BUTTRESS_REG_FW_RESET_CTL 0x30
|
|
#define BUTTRESS_FW_RESET_CTL_START BIT(0)
|
|
#define BUTTRESS_FW_RESET_CTL_DONE BIT(1)
|
|
|
|
#define BUTTRESS_REG_IS_FREQ_CTL 0x34
|
|
#define BUTTRESS_REG_PS_FREQ_CTL 0x38
|
|
|
|
#define BUTTRESS_FREQ_CTL_START BIT(31)
|
|
#define BUTTRESS_FREQ_CTL_ICCMAX_LEVEL GENMASK(19, 16)
|
|
#define BUTTRESS_FREQ_CTL_QOS_FLOOR_MASK GENMASK(15, 8)
|
|
#define BUTTRESS_FREQ_CTL_RATIO_MASK GENMASK(7, 0)
|
|
|
|
#define BUTTRESS_REG_PWR_STATE 0x5c
|
|
|
|
#define BUTTRESS_PWR_STATE_RESET 0x0
|
|
#define BUTTRESS_PWR_STATE_PWR_ON_DONE 0x1
|
|
#define BUTTRESS_PWR_STATE_PWR_RDY 0x3
|
|
#define BUTTRESS_PWR_STATE_PWR_IDLE 0x4
|
|
|
|
#define BUTTRESS_PWR_STATE_HH_STATUS_MASK GENMASK(12, 11)
|
|
|
|
enum {
|
|
BUTTRESS_PWR_STATE_HH_STATE_IDLE,
|
|
BUTTRESS_PWR_STATE_HH_STATE_IN_PRGS,
|
|
BUTTRESS_PWR_STATE_HH_STATE_DONE,
|
|
BUTTRESS_PWR_STATE_HH_STATE_ERR,
|
|
};
|
|
|
|
#define BUTTRESS_PWR_STATE_IS_PWR_FSM_MASK GENMASK(23, 19)
|
|
|
|
#define BUTTRESS_PWR_STATE_IS_PWR_FSM_IDLE 0x0
|
|
#define BUTTRESS_PWR_STATE_IS_PWR_FSM_WAIT_4_PLL_CMP 0x1
|
|
#define BUTTRESS_PWR_STATE_IS_PWR_FSM_WAIT_4_CLKACK 0x2
|
|
#define BUTTRESS_PWR_STATE_IS_PWR_FSM_WAIT_4_PG_ACK 0x3
|
|
#define BUTTRESS_PWR_STATE_IS_PWR_FSM_RST_ASSRT_CYCLES 0x4
|
|
#define BUTTRESS_PWR_STATE_IS_PWR_FSM_STOP_CLK_CYCLES1 0x5
|
|
#define BUTTRESS_PWR_STATE_IS_PWR_FSM_STOP_CLK_CYCLES2 0x6
|
|
#define BUTTRESS_PWR_STATE_IS_PWR_FSM_RST_DEASSRT_CYCLES 0x7
|
|
#define BUTTRESS_PWR_STATE_IS_PWR_FSM_WAIT_4_FUSE_WR_CMP 0x8
|
|
#define BUTTRESS_PWR_STATE_IS_PWR_FSM_BRK_POINT 0x9
|
|
#define BUTTRESS_PWR_STATE_IS_PWR_FSM_IS_RDY 0xa
|
|
#define BUTTRESS_PWR_STATE_IS_PWR_FSM_HALT_HALTED 0xb
|
|
#define BUTTRESS_PWR_STATE_IS_PWR_FSM_RST_DURATION_CNT3 0xc
|
|
#define BUTTRESS_PWR_STATE_IS_PWR_FSM_WAIT_4_CLKACK_PD 0xd
|
|
#define BUTTRESS_PWR_STATE_IS_PWR_FSM_PD_BRK_POINT 0xe
|
|
#define BUTTRESS_PWR_STATE_IS_PWR_FSM_WAIT_4_PD_PG_ACK0 0xf
|
|
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_MASK GENMASK(28, 24)
|
|
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_IDLE 0x0
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_PU_PLL_IP_RDY 0x1
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_RO_PRE_CNT_EXH 0x2
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_PU_VGI_PWRGOOD 0x3
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_RO_POST_CNT_EXH 0x4
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_WR_PLL_RATIO 0x5
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_PU_PLL_CMP 0x6
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_PU_CLKACK 0x7
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_RST_ASSRT_CYCLES 0x8
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_STOP_CLK_CYCLES1 0x9
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_STOP_CLK_CYCLES2 0xa
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_RST_DEASSRT_CYCLES 0xb
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_PU_BRK_PNT 0xc
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_FUSE_ACCPT 0xd
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_PS_PWR_UP 0xf
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_4_HALTED 0x10
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_RESET_CNT3 0x11
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_PD_CLKACK 0x12
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_PD_OFF_IND 0x13
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_DVFS_PH4 0x14
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_DVFS_PLL_CMP 0x15
|
|
#define BUTTRESS_PWR_STATE_PS_PWR_FSM_WAIT_DVFS_CLKACK 0x16
|
|
|
|
#define BUTTRESS_REG_SECURITY_CTL 0x300
|
|
#define BUTTRESS_REG_SKU 0x314
|
|
#define BUTTRESS_REG_SECURITY_TOUCH 0x318
|
|
#define BUTTRESS_REG_CAMERA_MASK 0x84
|
|
|
|
#define BUTTRESS_SECURITY_CTL_FW_SECURE_MODE BIT(16)
|
|
#define BUTTRESS_SECURITY_CTL_FW_SETUP_MASK GENMASK(4, 0)
|
|
|
|
#define BUTTRESS_SECURITY_CTL_FW_SETUP_DONE BIT(0)
|
|
#define BUTTRESS_SECURITY_CTL_AUTH_DONE BIT(1)
|
|
#define BUTTRESS_SECURITY_CTL_AUTH_FAILED BIT(3)
|
|
|
|
#define BUTTRESS_REG_FW_SOURCE_BASE_LO 0x78
|
|
#define BUTTRESS_REG_FW_SOURCE_BASE_HI 0x7C
|
|
#define BUTTRESS_REG_FW_SOURCE_SIZE 0x80
|
|
|
|
#define BUTTRESS_REG_ISR_STATUS 0x90
|
|
#define BUTTRESS_REG_ISR_ENABLED_STATUS 0x94
|
|
#define BUTTRESS_REG_ISR_ENABLE 0x98
|
|
#define BUTTRESS_REG_ISR_CLEAR 0x9C
|
|
|
|
#define BUTTRESS_ISR_IS_IRQ BIT(0)
|
|
#define BUTTRESS_ISR_PS_IRQ BIT(1)
|
|
#define BUTTRESS_ISR_IPC_EXEC_DONE_BY_CSE BIT(2)
|
|
#define BUTTRESS_ISR_IPC_EXEC_DONE_BY_ISH BIT(3)
|
|
#define BUTTRESS_ISR_IPC_FROM_CSE_IS_WAITING BIT(4)
|
|
#define BUTTRESS_ISR_IPC_FROM_ISH_IS_WAITING BIT(5)
|
|
#define BUTTRESS_ISR_CSE_CSR_SET BIT(6)
|
|
#define BUTTRESS_ISR_ISH_CSR_SET BIT(7)
|
|
#define BUTTRESS_ISR_SPURIOUS_CMP BIT(8)
|
|
#define BUTTRESS_ISR_WATCHDOG_EXPIRED BIT(9)
|
|
#define BUTTRESS_ISR_PUNIT_2_IUNIT_IRQ BIT(10)
|
|
#define BUTTRESS_ISR_SAI_VIOLATION BIT(11)
|
|
#define BUTTRESS_ISR_HW_ASSERTION BIT(12)
|
|
#define BUTTRESS_ISR_IS_CORRECTABLE_MEM_ERR BIT(13)
|
|
#define BUTTRESS_ISR_IS_FATAL_MEM_ERR BIT(14)
|
|
#define BUTTRESS_ISR_IS_NON_FATAL_MEM_ERR BIT(15)
|
|
#define BUTTRESS_ISR_PS_CORRECTABLE_MEM_ERR BIT(16)
|
|
#define BUTTRESS_ISR_PS_FATAL_MEM_ERR BIT(17)
|
|
#define BUTTRESS_ISR_PS_NON_FATAL_MEM_ERR BIT(18)
|
|
#define BUTTRESS_ISR_PS_FAST_THROTTLE BIT(19)
|
|
#define BUTTRESS_ISR_UFI_ERROR BIT(20)
|
|
|
|
#define BUTTRESS_REG_IU2CSEDB0 0x100
|
|
|
|
#define BUTTRESS_IU2CSEDB0_BUSY BIT(31)
|
|
#define BUTTRESS_IU2CSEDB0_IPC_CLIENT_ID_VAL 2
|
|
|
|
#define BUTTRESS_REG_IU2CSEDATA0 0x104
|
|
|
|
#define BUTTRESS_IU2CSEDATA0_IPC_BOOT_LOAD 1
|
|
#define BUTTRESS_IU2CSEDATA0_IPC_AUTH_RUN 2
|
|
#define BUTTRESS_IU2CSEDATA0_IPC_AUTH_REPLACE 3
|
|
#define BUTTRESS_IU2CSEDATA0_IPC_UPDATE_SECURE_TOUCH 16
|
|
|
|
#define BUTTRESS_CSE2IUDATA0_IPC_BOOT_LOAD_DONE BIT(0)
|
|
#define BUTTRESS_CSE2IUDATA0_IPC_AUTH_RUN_DONE BIT(1)
|
|
#define BUTTRESS_CSE2IUDATA0_IPC_AUTH_REPLACE_DONE BIT(2)
|
|
#define BUTTRESS_CSE2IUDATA0_IPC_UPDATE_SECURE_TOUCH_DONE BIT(4)
|
|
|
|
#define BUTTRESS_REG_IU2CSECSR 0x108
|
|
|
|
#define BUTTRESS_IU2CSECSR_IPC_PEER_COMP_ACTIONS_RST_PHASE1 BIT(0)
|
|
#define BUTTRESS_IU2CSECSR_IPC_PEER_COMP_ACTIONS_RST_PHASE2 BIT(1)
|
|
#define BUTTRESS_IU2CSECSR_IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE BIT(2)
|
|
#define BUTTRESS_IU2CSECSR_IPC_PEER_ASSERTED_REG_VALID_REQ BIT(3)
|
|
#define BUTTRESS_IU2CSECSR_IPC_PEER_ACKED_REG_VALID BIT(4)
|
|
#define BUTTRESS_IU2CSECSR_IPC_PEER_DEASSERTED_REG_VALID_REQ BIT(5)
|
|
|
|
#define BUTTRESS_REG_CSE2IUDB0 0x304
|
|
#define BUTTRESS_REG_CSE2IUCSR 0x30C
|
|
#define BUTTRESS_REG_CSE2IUDATA0 0x308
|
|
|
|
/* 0x20 == NACK, 0xf == unknown command */
|
|
#define BUTTRESS_CSE2IUDATA0_IPC_NACK 0xf20
|
|
#define BUTTRESS_CSE2IUDATA0_IPC_NACK_MASK GENMASK(15, 0)
|
|
|
|
#define BUTTRESS_REG_ISH2IUCSR 0x50
|
|
#define BUTTRESS_REG_ISH2IUDB0 0x54
|
|
#define BUTTRESS_REG_ISH2IUDATA0 0x58
|
|
|
|
#define BUTTRESS_REG_IU2ISHDB0 0x10C
|
|
#define BUTTRESS_REG_IU2ISHDATA0 0x110
|
|
#define BUTTRESS_REG_IU2ISHDATA1 0x114
|
|
#define BUTTRESS_REG_IU2ISHCSR 0x118
|
|
|
|
#define BUTTRESS_REG_FABRIC_CMD 0x88
|
|
|
|
#define BUTTRESS_FABRIC_CMD_START_TSC_SYNC BIT(0)
|
|
#define BUTTRESS_FABRIC_CMD_IS_DRAIN BIT(4)
|
|
|
|
#define BUTTRESS_REG_TSW_CTL 0x120
|
|
#define BUTTRESS_TSW_CTL_SOFT_RESET BIT(8)
|
|
|
|
#define BUTTRESS_REG_TSC_LO 0x164
|
|
#define BUTTRESS_REG_TSC_HI 0x168
|
|
|
|
#define BUTTRESS_IRQS (BUTTRESS_ISR_IPC_FROM_CSE_IS_WAITING | \
|
|
BUTTRESS_ISR_IPC_EXEC_DONE_BY_CSE | \
|
|
BUTTRESS_ISR_IS_IRQ | BUTTRESS_ISR_PS_IRQ)
|
|
|
|
#define BUTTRESS_EVENT (BUTTRESS_ISR_IPC_FROM_CSE_IS_WAITING | \
|
|
BUTTRESS_ISR_IPC_EXEC_DONE_BY_CSE | \
|
|
BUTTRESS_ISR_SAI_VIOLATION)
|
|
#endif /* IPU6_PLATFORM_BUTTRESS_REGS_H */
|