1/* 2 * I2C multiplexer using a single register 3 * 4 * Copyright 2015 Freescale Semiconductor 5 * York Sun <yorksun@freescale.com> 6 * 7 * This program is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU General Public License as published by the 9 * Free Software Foundation; either version 2 of the License, or (at your 10 * option) any later version. 11 */ 12 13#ifndef __LINUX_PLATFORM_DATA_I2C_MUX_REG_H 14#define __LINUX_PLATFORM_DATA_I2C_MUX_REG_H 15 16/** 17 * struct i2c_mux_reg_platform_data - Platform-dependent data for i2c-mux-reg 18 * @parent: Parent I2C bus adapter number 19 * @base_nr: Base I2C bus number to number adapters from or zero for dynamic 20 * @values: Array of value for each channel 21 * @n_values: Number of multiplexer channels 22 * @little_endian: Indicating if the register is in little endian 23 * @write_only: Reading the register is not allowed by hardware 24 * @classes: Optional I2C auto-detection classes 25 * @idle: Value to write to mux when idle 26 * @idle_in_use: indicate if idle value is in use 27 * @reg: Virtual address of the register to switch channel 28 * @reg_size: register size in bytes 29 */ 30struct i2c_mux_reg_platform_data { 31 int parent; 32 int base_nr; 33 const unsigned int *values; 34 int n_values; 35 bool little_endian; 36 bool write_only; 37 const unsigned int *classes; 38 u32 idle; 39 bool idle_in_use; 40 void __iomem *reg; 41 resource_size_t reg_size; 42}; 43 44#endif /* __LINUX_PLATFORM_DATA_I2C_MUX_REG_H */ 45