aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/platform_data
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/platform_data')
-rw-r--r--include/linux/platform_data/mlxreg.h126
1 files changed, 86 insertions, 40 deletions
diff --git a/include/linux/platform_data/mlxreg.h b/include/linux/platform_data/mlxreg.h
index ffbcb7886c62..fcdc707eab99 100644
--- a/include/linux/platform_data/mlxreg.h
+++ b/include/linux/platform_data/mlxreg.h
@@ -34,8 +34,11 @@
34#ifndef __LINUX_PLATFORM_DATA_MLXREG_H 34#ifndef __LINUX_PLATFORM_DATA_MLXREG_H
35#define __LINUX_PLATFORM_DATA_MLXREG_H 35#define __LINUX_PLATFORM_DATA_MLXREG_H
36 36
37#define MLXREG_CORE_LABEL_MAX_SIZE 32
38
37/** 39/**
38 * struct mlxreg_hotplug_device - I2C device data: 40 * struct mlxreg_hotplug_device - I2C device data:
41 *
39 * @adapter: I2C device adapter; 42 * @adapter: I2C device adapter;
40 * @client: I2C device client; 43 * @client: I2C device client;
41 * @brdinfo: device board information; 44 * @brdinfo: device board information;
@@ -47,52 +50,95 @@
47struct mlxreg_hotplug_device { 50struct mlxreg_hotplug_device {
48 struct i2c_adapter *adapter; 51 struct i2c_adapter *adapter;
49 struct i2c_client *client; 52 struct i2c_client *client;
50 struct i2c_board_info brdinfo; 53 struct i2c_board_info *brdinfo;
51 int nr; 54 int nr;
52}; 55};
53 56
54/** 57/**
55 * struct mlxreg_hotplug_platform_data - device platform data: 58 * struct mlxreg_core_data - attributes control data:
56 * @top_aggr_offset: offset of top aggregation interrupt register; 59 *
57 * @top_aggr_mask: top aggregation interrupt common mask; 60 * @label: attribute label;
58 * @top_aggr_psu_mask: top aggregation interrupt PSU mask; 61 * @label: attribute register offset;
59 * @psu_reg_offset: offset of PSU interrupt register; 62 * @reg: attribute register;
60 * @psu_mask: PSU interrupt mask; 63 * @mask: attribute access mask;
61 * @psu_count: number of equipped replaceable PSUs; 64 * @mode: access mode;
62 * @psu: pointer to PSU devices data array; 65 * @bit: attribute effective bit;
63 * @top_aggr_pwr_mask: top aggregation interrupt power mask; 66 * @np - pointer to node platform associated with attribute;
64 * @pwr_reg_offset: offset of power interrupt register 67 * @hpdev - hotplug device data;
65 * @pwr_mask: power interrupt mask; 68 * @health_cntr: dynamic device health indication counter;
66 * @pwr_count: number of power sources; 69 * @attached: true if device has been attached after good health indication;
67 * @pwr: pointer to power devices data array; 70 */
68 * @top_aggr_fan_mask: top aggregation interrupt FAN mask; 71struct mlxreg_core_data {
69 * @fan_reg_offset: offset of FAN interrupt register; 72 char label[MLXREG_CORE_LABEL_MAX_SIZE];
70 * @fan_mask: FAN interrupt mask; 73 u32 reg;
71 * @fan_count: number of equipped replaceable FANs; 74 u32 mask;
72 * @fan: pointer to FAN devices data array; 75 u32 bit;
76 umode_t mode;
77 struct device_node *np;
78 struct mlxreg_hotplug_device hpdev;
79 u8 health_cntr;
80 bool attached;
81};
82
83/**
84 * struct mlxreg_core_item - same type components controlled by the driver:
85 *
86 * @data: component data;
87 * @aggr_mask: group aggregation mask;
88 * @reg: group interrupt status register;
89 * @mask: group interrupt mask;
90 * @cache: last status value for elements fro the same group;
91 * @count: number of available elements in the group;
92 * @ind: element's index inside the group;
93 * @inversed: if 0: 0 for signal status is OK, if 1 - 1 is OK;
94 * @health: true if device has health indication, false in other case;
95 */
96struct mlxreg_core_item {
97 struct mlxreg_core_data *data;
98 u32 aggr_mask;
99 u32 reg;
100 u32 mask;
101 u32 cache;
102 u8 count;
103 u8 ind;
104 u8 inversed;
105 u8 health;
106};
107
108/**
109 * struct mlxreg_core_platform_data - platform data:
110 *
111 * @led_data: led private data;
112 * @regmap: register map of parent device;
113 * @counter: number of led instances;
114 */
115struct mlxreg_core_platform_data {
116 struct mlxreg_core_data *data;
117 void *regmap;
118 int counter;
119};
120
121/**
122 * struct mlxreg_core_hotplug_platform_data - hotplug platform data:
73 * 123 *
74 * Structure represents board platform data, related to system hotplug events, 124 * @items: same type components with the hotplug capability;
75 * like FAN, PSU, power cable insertion and removing. This data provides the 125 * @irq: platform interrupt number;
76 * number of hot-pluggable devices and hardware description for event handling. 126 * @regmap: register map of parent device;
127 * @counter: number of the components with the hotplug capability;
128 * @cell: location of top aggregation interrupt register;
129 * @mask: top aggregation interrupt common mask;
130 * @cell_low: location of low aggregation interrupt register;
131 * @mask_low: low aggregation interrupt common mask;
77 */ 132 */
78struct mlxreg_hotplug_platform_data { 133struct mlxreg_core_hotplug_platform_data {
79 u16 top_aggr_offset; 134 struct mlxreg_core_item *items;
80 u8 top_aggr_mask; 135 int irq;
81 u8 top_aggr_psu_mask; 136 void *regmap;
82 u16 psu_reg_offset; 137 int counter;
83 u8 psu_mask; 138 u32 cell;
84 u8 psu_count; 139 u32 mask;
85 struct mlxreg_hotplug_device *psu; 140 u32 cell_low;
86 u8 top_aggr_pwr_mask; 141 u32 mask_low;
87 u16 pwr_reg_offset;
88 u8 pwr_mask;
89 u8 pwr_count;
90 struct mlxreg_hotplug_device *pwr;
91 u8 top_aggr_fan_mask;
92 u16 fan_reg_offset;
93 u8 fan_mask;
94 u8 fan_count;
95 struct mlxreg_hotplug_device *fan;
96}; 142};
97 143
98#endif /* __LINUX_PLATFORM_DATA_MLXREG_H */ 144#endif /* __LINUX_PLATFORM_DATA_MLXREG_H */