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