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   * @idle: Value to write to mux when idle
21   * @idle_in_use: indicate if idle value is in use
22   * @reg: Virtual address of the register to switch channel
23   * @reg_size: register size in bytes
24   */
25  struct i2c_mux_reg_platform_data {
26  	int parent;
27  	int base_nr;
28  	const unsigned int *values;
29  	int n_values;
30  	bool little_endian;
31  	bool write_only;
32  	u32 idle;
33  	bool idle_in_use;
34  	void __iomem *reg;
35  	resource_size_t reg_size;
36  };
37  
38  #endif	/* __LINUX_PLATFORM_DATA_I2C_MUX_REG_H */
39