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