1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * I2C multiplexer using a single register 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright 2015 Freescale Semiconductor 6*4882a593Smuzhiyun * York Sun <yorksun@freescale.com> 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifndef __LINUX_PLATFORM_DATA_I2C_MUX_REG_H 10*4882a593Smuzhiyun #define __LINUX_PLATFORM_DATA_I2C_MUX_REG_H 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun /** 13*4882a593Smuzhiyun * struct i2c_mux_reg_platform_data - Platform-dependent data for i2c-mux-reg 14*4882a593Smuzhiyun * @parent: Parent I2C bus adapter number 15*4882a593Smuzhiyun * @base_nr: Base I2C bus number to number adapters from or zero for dynamic 16*4882a593Smuzhiyun * @values: Array of value for each channel 17*4882a593Smuzhiyun * @n_values: Number of multiplexer channels 18*4882a593Smuzhiyun * @little_endian: Indicating if the register is in little endian 19*4882a593Smuzhiyun * @write_only: Reading the register is not allowed by hardware 20*4882a593Smuzhiyun * @classes: Optional I2C auto-detection classes 21*4882a593Smuzhiyun * @idle: Value to write to mux when idle 22*4882a593Smuzhiyun * @idle_in_use: indicate if idle value is in use 23*4882a593Smuzhiyun * @reg: Virtual address of the register to switch channel 24*4882a593Smuzhiyun * @reg_size: register size in bytes 25*4882a593Smuzhiyun */ 26*4882a593Smuzhiyun struct i2c_mux_reg_platform_data { 27*4882a593Smuzhiyun int parent; 28*4882a593Smuzhiyun int base_nr; 29*4882a593Smuzhiyun const unsigned int *values; 30*4882a593Smuzhiyun int n_values; 31*4882a593Smuzhiyun bool little_endian; 32*4882a593Smuzhiyun bool write_only; 33*4882a593Smuzhiyun const unsigned int *classes; 34*4882a593Smuzhiyun u32 idle; 35*4882a593Smuzhiyun bool idle_in_use; 36*4882a593Smuzhiyun void __iomem *reg; 37*4882a593Smuzhiyun resource_size_t reg_size; 38*4882a593Smuzhiyun }; 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun #endif /* __LINUX_PLATFORM_DATA_I2C_MUX_REG_H */ 41