198d29c41SVadim Pasternak /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
298d29c41SVadim Pasternak /*
398d29c41SVadim Pasternak  * Mellanox I2C multiplexer support in CPLD
498d29c41SVadim Pasternak  *
598d29c41SVadim Pasternak  * Copyright (C) 2016-2020 Mellanox Technologies
698d29c41SVadim Pasternak  */
798d29c41SVadim Pasternak 
898d29c41SVadim Pasternak #ifndef _LINUX_I2C_MLXCPLD_H
998d29c41SVadim Pasternak #define _LINUX_I2C_MLXCPLD_H
1098d29c41SVadim Pasternak 
1198d29c41SVadim Pasternak /* Platform data for the CPLD I2C multiplexers */
1298d29c41SVadim Pasternak 
1398d29c41SVadim Pasternak /* mlxcpld_mux_plat_data - per mux data, used with i2c_register_board_info
14cae52163SVadim Pasternak  * @chan_ids - channels array
1598d29c41SVadim Pasternak  * @num_adaps - number of adapters
1698d29c41SVadim Pasternak  * @sel_reg_addr - mux select register offset in CPLD space
17c52a1c5fSVadim Pasternak  * @reg_size: register size in bytes
18*a39bd92eSVadim Pasternak  * @handle: handle to be passed by callback
19*a39bd92eSVadim Pasternak  * @completion_notify: callback to notify when all the adapters are created
2098d29c41SVadim Pasternak  */
2198d29c41SVadim Pasternak struct mlxcpld_mux_plat_data {
22cae52163SVadim Pasternak 	int *chan_ids;
2398d29c41SVadim Pasternak 	int num_adaps;
2498d29c41SVadim Pasternak 	int sel_reg_addr;
25c52a1c5fSVadim Pasternak 	u8 reg_size;
26*a39bd92eSVadim Pasternak 	void *handle;
27*a39bd92eSVadim Pasternak 	int (*completion_notify)(void *handle, struct i2c_adapter *parent,
28*a39bd92eSVadim Pasternak 				 struct i2c_adapter *adapters[]);
2998d29c41SVadim Pasternak };
3098d29c41SVadim Pasternak 
3198d29c41SVadim Pasternak #endif /* _LINUX_I2C_MLXCPLD_H */
32