OpenBIC
OpenSource Bridge-IC
plat_ioexp.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 "plat_i2c.h"
18
19#ifndef PLAT_IOEXP_H
20#define PLAT_IOEXP_H
21
22/* pca6414a */
23#define PCA6414A_INPUT_PORT_0 0x00
24#define PCA6414A_INPUT_PORT_1 0x01
25#define PCA6414A_OUTPUT_PORT_0 0x02
26#define PCA6414A_OUTPUT_PORT_1 0x03
27#define PCA6414A_CONFIG_0 0x06
28#define PCA6414A_CONFIG_1 0x07
29
30/* tca6424a */
31#define TCA6424A_BUS I2C_BUS1
32#define TCA6424A_ADDR (0x44 >> 1)
33#define TCA6424A_AI_BIT BIT(7) // Auto-Increment bit
34
35#define TCA6424A_INPUT_PORT_0 0x00
36#define TCA6424A_INPUT_PORT_1 0x01
37#define TCA6424A_INPUT_PORT_2 0x02
38#define TCA6424A_OUTPUT_PORT_0 0x04
39#define TCA6424A_OUTPUT_PORT_1 0x05
40#define TCA6424A_OUTPUT_PORT_2 0x06
41#define TCA6424A_CONFIG_0 0x0C
42#define TCA6424A_CONFIG_1 0x0D
43#define TCA6424A_CONFIG_2 0x0E
44
45#define HAMSA_MFIO19_BIT 1
46#define HAMSA_MFIO6_BIT 6
47#define HAMSA_MFIO8_BIT 7
48#define HAMSA_MFIO10_BIT 0
49
50/* pca6554apw */
52#define PCA6414A_BUS I2C_BUS1
53#define PCA6414A_ADDR (0x40 >> 1)
54
55#define U200051_IO_I2C_BUS I2C_BUS1
56#define U200052_IO_I2C_BUS I2C_BUS1
57#define U200053_IO_I2C_BUS I2C_BUS1
58#define U200070_IO_I2C_BUS I2C_BUS1
59#define U200051_IO_ADDR (0x72 >> 1)
60#define U200052_IO_ADDR 0x3A
61#define U200053_IO_ADDR 0x3B
62#define U200070_IO_ADDR 0x3C
63
64#define U200052_IO_INIT_VAL 0xC0
65#define U200053_IO_INIT_VAL 0x40
66#define U200070_IO_INIT_VAL 0x07
67
68/* tcal6408r */
69#define TCAL6408R_BUS I2C_BUS1
70#define TCAL6408R_ADDR (0x43 >> 1) /* 7-bit addr: 0x21 */
71
72#define TCAL6408R_INPUT_PORT_0 0x00
73#define TCAL6408R_OUTPUT_PORT_0 0x01
74#define TCAL6408R_CONFIG_0 0x03
75
76#define NUWA0_MFIO6_BIT 0
77#define NUWA0_MFIO8_BIT 1
78#define NUWA0_MFIO10_BIT 2
79#define NUWA1_MFIO6_BIT 3
80#define NUWA1_MFIO8_BIT 4
81#define NUWA1_MFIO10_BIT 5
82#define NC_NUWA0_MFIO19_BIT 6
83#define NC_NUWA1_MFIO19_BIT 7
84
85/* pca6414a */
86bool pca6416a_i2c_read(uint8_t offset, uint8_t *data, uint8_t len);
87bool pca6416a_i2c_write(uint8_t offset, uint8_t *data, uint8_t len);
88/* tca6424a */
89bool tca6424a_i2c_read(uint8_t offset, uint8_t *data, uint8_t len);
90bool tca6424a_i2c_write(uint8_t offset, uint8_t *data, uint8_t len);
91bool tca6424a_i2c_write_bit(uint8_t offset, uint8_t bit, uint8_t val);
93/* pca6554apw */
94void set_pca6554apw_ioe_value(uint8_t ioe_bus, uint8_t ioe_addr, uint8_t ioe_reg, uint8_t value);
95int get_pca6554apw_ioe_value(uint8_t ioe_bus, uint8_t ioe_addr, uint8_t ioe_reg, uint8_t *value);
96void init_U200051_IO();
97void init_U200052_IO();
98void init_U200053_IO();
99void init_U200070_IO();
100/* tcal6408rr */
101bool tcal6408r_i2c_read(uint8_t offset, uint8_t *data, uint8_t len);
102bool tcal6408r_i2c_write(uint8_t offset, uint8_t *data, uint8_t len);
103bool tcal6408r_i2c_write_bit(uint8_t offset, uint8_t bit, uint8_t val);
109bool tcal6408r_init(void);
110/* other */
112void ioexp_init(void);
113
114#endif
uint32_t val
Definition: plat_util.c:43
uint8_t data[]
Definition: isl69259.c:2
uint32_t offset
Definition: pldm_firmware_update.h:0
void init_U200051_IO()
Definition: plat_ioexp.c:156
bool tca6424a_i2c_write(uint8_t offset, uint8_t *data, uint8_t len)
Definition: plat_ioexp.c:54
PCA9554APW_REG
Definition: plat_ioexp.h:51
@ OUTPUT_PORT
Definition: plat_ioexp.h:51
@ POLARITY_INVERSION
Definition: plat_ioexp.h:51
@ INPUT_PORT
Definition: plat_ioexp.h:51
@ CONFIG
Definition: plat_ioexp.h:51
void set_nuwa1_mfio_6_8_10_input()
Definition: plat_ioexp.c:251
bool pca6416a_i2c_write(uint8_t offset, uint8_t *data, uint8_t len)
Definition: plat_ioexp.c:34
void set_nuwa1_mfio_6_8_10_output()
Definition: plat_ioexp.c:265
void set_pca6554apw_ioe_value(uint8_t ioe_bus, uint8_t ioe_addr, uint8_t ioe_reg, uint8_t value)
Definition: plat_ioexp.c:112
bool tca6424a_i2c_write_bit(uint8_t offset, uint8_t bit, uint8_t val)
Definition: plat_ioexp.c:59
bool tcal6408r_i2c_read(uint8_t offset, uint8_t *data, uint8_t len)
Definition: plat_ioexp.c:196
void ioexp_init(void)
Definition: plat_ioexp.c:291
void init_U200053_IO()
Definition: plat_ioexp.c:175
bool pca6416a_i2c_read(uint8_t offset, uint8_t *data, uint8_t len)
Definition: plat_ioexp.c:29
bool tcal6408r_init(void)
Definition: plat_ioexp.c:272
void set_nuwa0_mfio_6_8_10_output()
Definition: plat_ioexp.c:258
bool tca6424a_i2c_read(uint8_t offset, uint8_t *data, uint8_t len)
Definition: plat_ioexp.c:49
void set_hamsa_mfio_6_8_10_input()
Definition: plat_ioexp.c:82
void set_nuwa0_mfio_6_8_10_input()
Definition: plat_ioexp.c:244
int get_pca6554apw_ioe_value(uint8_t ioe_bus, uint8_t ioe_addr, uint8_t ioe_reg, uint8_t *value)
Definition: plat_ioexp.c:131
void init_U200052_IO()
Definition: plat_ioexp.c:165
bool tcal6408r_i2c_write(uint8_t offset, uint8_t *data, uint8_t len)
Definition: plat_ioexp.c:204
void init_U200070_IO()
Definition: plat_ioexp.c:185
bool is_evb_ioe_accessible()
Definition: plat_ioexp.c:286
bool tcal6408r_i2c_write_bit(uint8_t offset, uint8_t bit, uint8_t val)
Definition: plat_ioexp.c:212
void set_hamsa_mfio_6_8_10_output()
Definition: plat_ioexp.c:89