1/* 2 * include/linux/platform_data/mlxcpld-hotplug.h 3 * Copyright (c) 2016 Mellanox Technologies. All rights reserved. 4 * Copyright (c) 2016 Vadim Pasternak <vadimp@mellanox.com> 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 3. Neither the names of the copyright holders nor the names of its 15 * contributors may be used to endorse or promote products derived from 16 * this software without specific prior written permission. 17 * 18 * Alternatively, this software may be distributed under the terms of the 19 * GNU General Public License ("GPL") version 2 as published by the Free 20 * Software Foundation. 21 * 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 * POSSIBILITY OF SUCH DAMAGE. 33 */ 34 35#ifndef __LINUX_PLATFORM_DATA_MLXCPLD_HOTPLUG_H 36#define __LINUX_PLATFORM_DATA_MLXCPLD_HOTPLUG_H 37 38/** 39 * struct mlxcpld_hotplug_device - I2C device data: 40 * @adapter: I2C device adapter; 41 * @client: I2C device client; 42 * @brdinfo: device board information; 43 * @bus: I2C bus, where device is attached; 44 * 45 * Structure represents I2C hotplug device static data (board topology) and 46 * dynamic data (related kernel objects handles). 47 */ 48struct mlxcpld_hotplug_device { 49 struct i2c_adapter *adapter; 50 struct i2c_client *client; 51 struct i2c_board_info brdinfo; 52 u16 bus; 53}; 54 55/** 56 * struct mlxcpld_hotplug_platform_data - device platform data: 57 * @top_aggr_offset: offset of top aggregation interrupt register; 58 * @top_aggr_mask: top aggregation interrupt common mask; 59 * @top_aggr_psu_mask: top aggregation interrupt PSU mask; 60 * @psu_reg_offset: offset of PSU interrupt register; 61 * @psu_mask: PSU interrupt mask; 62 * @psu_count: number of equipped replaceable PSUs; 63 * @psu: pointer to PSU devices data array; 64 * @top_aggr_pwr_mask: top aggregation interrupt power mask; 65 * @pwr_reg_offset: offset of power interrupt register 66 * @pwr_mask: power interrupt mask; 67 * @pwr_count: number of power sources; 68 * @pwr: pointer to power devices data array; 69 * @top_aggr_fan_mask: top aggregation interrupt FAN mask; 70 * @fan_reg_offset: offset of FAN interrupt register; 71 * @fan_mask: FAN interrupt mask; 72 * @fan_count: number of equipped replaceable FANs; 73 * @fan: pointer to FAN devices data array; 74 * 75 * Structure represents board platform data, related to system hotplug events, 76 * like FAN, PSU, power cable insertion and removing. This data provides the 77 * number of hot-pluggable devices and hardware description for event handling. 78 */ 79struct mlxcpld_hotplug_platform_data { 80 u16 top_aggr_offset; 81 u8 top_aggr_mask; 82 u8 top_aggr_psu_mask; 83 u16 psu_reg_offset; 84 u8 psu_mask; 85 u8 psu_count; 86 struct mlxcpld_hotplug_device *psu; 87 u8 top_aggr_pwr_mask; 88 u16 pwr_reg_offset; 89 u8 pwr_mask; 90 u8 pwr_count; 91 struct mlxcpld_hotplug_device *pwr; 92 u8 top_aggr_fan_mask; 93 u16 fan_reg_offset; 94 u8 fan_mask; 95 u8 fan_count; 96 struct mlxcpld_hotplug_device *fan; 97}; 98 99#endif /* __LINUX_PLATFORM_DATA_MLXCPLD_HOTPLUG_H */ 100