OpenBIC
OpenSource Bridge-IC
plat_isr.h
Go to the documentation of this file.
1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#include <kernel.h>
18#include "ioexp_tca9555.h"
19#include "plat_i2c.h"
20
21#ifndef PLAT_ISR_H
22#define PLAT_ISR_H
23
24#define ADDR_IOE1 (0x40 >> 1)
25#define ADDR_IOE2 (0x42 >> 1)
26#define ADDR_IOE3 (0x44 >> 1)
27#define ADDR_IOE4 (0x46 >> 1)
28
29#define CLK_BUFFER_ADDR 0x6B
30#define CLK_BUFFER_BUS I2C_BUS6
31#define PLL_OPERATING_OFFSET 0x00
32
33#define E1S_PRESENT_BIT BIT(2)
34#define ASIC_CLK_BIT BIT(4)
35#define E1S_CLK_BIT BIT(5)
36#define E1S_PE_RESET_BIT BIT(6)
37#define CXL_LED_BIT BIT(2)
38// Only switch VR MUX
39#define IOE_SWITCH_MUX_TO_BIC 0x05
40#define IOE_SWITCH_CXL1_VR_TO_BIC 0x01
41#define IOE_SWITCH_CXL2_VR_TO_BIC 0x04
42
43#define IOE_READY_MSEC 1000
44
45#define SET_CLK_BUF_DELAY_MS 100
46
47#define VR_EVENT_DELAY_MS 10
48
49extern bool is_cxl_power_on_success;
50
54};
55
56typedef struct {
57 uint8_t addr;
58 uint8_t conf_reg;
59 uint8_t conf_dir;
60 uint8_t output_reg;
61 uint8_t output_val;
62} IOE_CFG;
63
64typedef struct _add_vr_sel_info {
65 bool is_init;
66 uint8_t vr_num;
67 uint8_t vr_i2c_bus;
68 uint8_t vr_addr;
69 uint8_t page_cnt;
70 uint8_t gpio_num;
71 uint8_t vr_source;
72 struct k_work_delayable add_sel_work;
75
76#define PMBUS_DRMOS_FAULT 0x80 // MPS MP2971 PMBus Command
77
78typedef struct {
79 uint8_t vr_source;
80 uint8_t ioe_pin_num;
82 uint8_t vr_mux_sel;
83 uint8_t vr_i2c_bus;
84 uint8_t vr_addr;
85 uint8_t vr_page;
87
88typedef enum {
101
103void ISR_MB_PCIE_RST();
109void ISR_IOE1_INT();
116
117void init_vr_event_work();
118void process_pmbus_vr_event_handler(struct k_work *work_item);
119void process_non_pmbus_vr_event_handler(struct k_work *work_item);
120
121#endif
Definition: plat_isr.h:56
uint8_t output_val
Definition: plat_isr.h:61
uint8_t output_reg
Definition: plat_isr.h:60
uint8_t conf_dir
Definition: plat_isr.h:59
uint8_t addr
Definition: plat_isr.h:57
uint8_t conf_reg
Definition: plat_isr.h:58
Definition: vr_fault.h:41
uint8_t page_cnt
Definition: plat_isr.h:34
uint8_t vr_source
Definition: plat_isr.h:71
struct k_work_delayable add_sel_work
Definition: plat_isr.h:36
uint8_t vr_addr
Definition: plat_isr.h:33
bool is_init
Definition: plat_isr.h:31
uint8_t vr_num
Definition: plat_isr.h:66
uint8_t gpio_num
Definition: plat_isr.h:32
uint8_t vr_i2c_bus
Definition: plat_isr.h:67
uint8_t vr_addr
Definition: plat_isr.h:84
uint8_t vr_i2c_bus
Definition: plat_isr.h:83
uint8_t vr_page
Definition: plat_isr.h:85
uint8_t ioe_pin_num
Definition: plat_isr.h:80
uint8_t vr_pwrgd_gpio
Definition: plat_isr.h:81
uint8_t vr_mux_sel
Definition: plat_isr.h:82
uint8_t vr_source
Definition: plat_isr.h:79
void ISR_MB_PCIE_RST()
Definition: plat_isr.c:28
struct _add_vr_sel_info add_vr_sel_info
struct _vr_fault_info vr_fault_info
void init_vr_event_work()
Definition: plat_isr.c:533
void ISR_PVTT_CD_ASIC1_PWR_CHANGE()
Definition: plat_isr.c:504
void ISR_PVTT_AB_ASIC2_VR_FAULT()
Definition: plat_isr.c:559
void ISR_P3V3_E1S_PWR_CHANGE()
Definition: plat_isr.c:471
void ISR_PVPP_CD_ASIC2_VR_FAULT()
Definition: plat_isr.c:591
add_vr_sel_info vr_event_work_items[]
Definition: plat_isr.c:33
void ISR_IOE1_INT()
Definition: plat_isr.c:528
void ISR_P12V_E1S_PWR_CHANGE()
Definition: plat_isr.c:490
vr_event_index_t
Definition: plat_isr.h:88
@ NON_PMBUS_VR_PVTT_AB_ASIC2
Definition: plat_isr.h:91
@ NON_PMBUS_VR_PVTT_CD_ASIC1
Definition: plat_isr.h:92
@ PMBUS_VR_IOE1_INT
Definition: plat_isr.h:89
@ NON_PMBUS_VR_PVPP_CD_ASIC1
Definition: plat_isr.h:96
@ NON_PMBUS_VR_PVPP_AB_ASIC1
Definition: plat_isr.h:94
@ NON_PMBUS_VR_P3V3_E1S_0_R
Definition: plat_isr.h:99
@ NON_PMBUS_VR_PVPP_AB_ASIC2
Definition: plat_isr.h:95
@ NON_PMBUS_VR_P12V_E1S_0_R
Definition: plat_isr.h:98
@ NON_PMBUS_VR_PVPP_CD_ASIC2
Definition: plat_isr.h:97
@ NON_PMBUS_VR_PVTT_AB_ASIC1
Definition: plat_isr.h:90
@ NON_PMBUS_VR_PVTT_CD_ASIC2
Definition: plat_isr.h:93
set_ioe4_cmd
Definition: plat_isr.h:51
@ SET_CLK
Definition: plat_isr.h:52
@ SET_PE_RST
Definition: plat_isr.h:53
void ISR_PVPP_AB_ASIC2_VR_FAULT()
Definition: plat_isr.c:575
void ISR_PVTT_CD_ASIC2_PWR_CHANGE()
Definition: plat_isr.c:516
void process_non_pmbus_vr_event_handler(struct k_work *work_item)
Definition: plat_isr.c:311
void process_pmbus_vr_event_handler(struct k_work *work_item)
Definition: plat_isr.c:149
bool is_cxl_power_on_success
Definition: plat_power_seq.c:57
void ISR_CXL_PG_ON()
void ISR_PVPP_CD_ASIC1_VR_FAULT()
Definition: plat_isr.c:583
void ISR_MB_DC_STAGUS_CHAGNE()
Definition: plat_isr.c:428
void ISR_PVPP_AB_ASIC1_VR_FAULT()
Definition: plat_isr.c:567
void ISR_PVTT_AB_ASIC1_VR_FAULT()
Definition: plat_isr.c:551