hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/mfd/rkx110_x120/rkx110_combrxphy.c
....@@ -114,15 +114,18 @@
114114 #define LVDS0_MSBSEL(x) HIWORD_UPDATE(x, BIT(2), 2)
115115
116116 static void
117
-rkx110_combrxphy_dsi_timing_init(struct rk_serdes *ser, enum comb_phy_id id)
117
+rkx110_combrxphy_dsi_timing_init(struct rk_serdes *ser,
118
+ struct rkx110_combrxphy *combrxphy,
119
+ u8 dev_id, enum comb_phy_id id)
118120 {
119121 }
120122
121
-static void rkx110_combrxphy_dsi_power_on(struct rk_serdes *ser, enum comb_phy_id id)
123
+static void rkx110_combrxphy_dsi_power_on(struct rk_serdes *ser,
124
+ struct rkx110_combrxphy *combrxphy,
125
+ u8 dev_id, enum comb_phy_id id)
122126 {
123
- struct hwclk *hwclk = ser->chip[DEVICE_LOCAL].hwclk;
124
- struct rkx110_combrxphy *combrxphy = &ser->combrxphy;
125
- struct i2c_client *client = ser->chip[DEVICE_LOCAL].client;
127
+ struct hwclk *hwclk = ser->chip[dev_id].hwclk;
128
+ struct i2c_client *client = ser->chip[dev_id].client;
126129 u32 val = 0;
127130 u32 grf_base;
128131
....@@ -144,7 +147,7 @@
144147 serdes_combphy_get_default_config(combrxphy->rate,
145148 &combrxphy->mipi_dphy_cfg);
146149
147
- switch (ser->dsi_rx.lanes) {
150
+ switch (combrxphy->lanes) {
148151 case 4:
149152 val |= LANE3_ENABLE(1);
150153 fallthrough;
....@@ -164,12 +167,14 @@
164167 ser->i2c_write_reg(client, grf_base + GRF_MIPI_RX_CON0,
165168 PHY_MODE(COMBRX_PHY_MODE_VIDEO_MIPI) | val);
166169
167
- rkx110_combrxphy_dsi_timing_init(ser, id);
170
+ rkx110_combrxphy_dsi_timing_init(ser, combrxphy, dev_id, id);
168171 }
169172
170
-static void rkx110_combrxphy_dsi_power_off(struct rk_serdes *ser, enum comb_phy_id id)
173
+static void rkx110_combrxphy_dsi_power_off(struct rk_serdes *ser,
174
+ struct rkx110_combrxphy *combrxphy,
175
+ u8 dev_id, enum comb_phy_id id)
171176 {
172
- struct i2c_client *client = ser->chip[DEVICE_LOCAL].client;
177
+ struct i2c_client *client = ser->chip[dev_id].client;
173178 u32 grf_base;
174179
175180 grf_base = id ? RKX110_GRF_MIPI1_BASE : RKX110_GRF_MIPI0_BASE;
....@@ -178,9 +183,11 @@
178183 LANE1_ENABLE(0) | LANE0_ENABLE(0));
179184 }
180185
181
-static void rkx110_combrxphy_lvds_power_on(struct rk_serdes *ser, enum comb_phy_id id)
186
+static void rkx110_combrxphy_lvds_power_on(struct rk_serdes *ser,
187
+ struct rkx110_combrxphy *combrxphy,
188
+ u8 dev_id, enum comb_phy_id id)
182189 {
183
- struct i2c_client *client = ser->chip[DEVICE_LOCAL].client;
190
+ struct i2c_client *client = ser->chip[dev_id].client;
184191 u32 grf_base = id ? RKX110_GRF_MIPI1_BASE : RKX110_GRF_MIPI0_BASE;
185192 u32 val;
186193 int ret;
....@@ -209,9 +216,11 @@
209216 LVDS_RX1_PD(0) | LVDS_RX0_PD(0));
210217 }
211218
212
-static void rkx110_combrxphy_lvds_power_off(struct rk_serdes *ser, enum comb_phy_id id)
219
+static void rkx110_combrxphy_lvds_power_off(struct rk_serdes *ser,
220
+ struct rkx110_combrxphy *combrxphy,
221
+ u8 dev_id, enum comb_phy_id id)
213222 {
214
- struct i2c_client *client = ser->chip[DEVICE_LOCAL].client;
223
+ struct i2c_client *client = ser->chip[dev_id].client;
215224 u32 grf_base = id ? RKX110_GRF_MIPI1_BASE : RKX110_GRF_MIPI0_BASE;
216225
217226 ser->i2c_write_reg(client, grf_base + GRF_MIPI_RX_CON0,
....@@ -219,62 +228,65 @@
219228 LVDS_RX1_PD(1) | LVDS_RX0_PD(1));
220229 }
221230
222
-static void rkx110_combrxphy_lvds_camera_power_on(struct rk_serdes *ser, enum comb_phy_id id)
231
+static void rkx110_combrxphy_lvds_camera_power_on(struct rk_serdes *ser,
232
+ struct rkx110_combrxphy *combrxphy,
233
+ u8 dev_id, enum comb_phy_id id)
223234 {
224235 }
225236
226
-static void rkx110_combrxphy_lvds_camera_power_off(struct rk_serdes *ser, enum comb_phy_id id)
237
+static void rkx110_combrxphy_lvds_camera_power_off(struct rk_serdes *ser,
238
+ struct rkx110_combrxphy *combrxphy,
239
+ u8 dev_id, enum comb_phy_id id)
227240 {
228241 }
229242
230
-void rkx110_combrxphy_power_on(struct rk_serdes *ser, enum comb_phy_id id)
243
+void rkx110_combrxphy_power_on(struct rk_serdes *ser, struct rkx110_combrxphy *combrxphy,
244
+ u8 dev_id, enum comb_phy_id id)
231245 {
232
- struct rkx110_combrxphy *combrxphy = &ser->combrxphy;
233
-
234246 switch (combrxphy->mode) {
235247 case COMBRX_PHY_MODE_VIDEO_MIPI:
236
- rkx110_combrxphy_dsi_power_on(ser, id);
248
+ rkx110_combrxphy_dsi_power_on(ser, combrxphy, dev_id, id);
237249 break;
238250 case COMBRX_PHY_MODE_VIDEO_LVDS:
239
- rkx110_combrxphy_lvds_power_on(ser, id);
251
+ rkx110_combrxphy_lvds_power_on(ser, combrxphy, dev_id, id);
240252 break;
241253 case COMBRX_PHY_MODE_LVDS_CAMERA:
242
- rkx110_combrxphy_lvds_camera_power_on(ser, id);
254
+ rkx110_combrxphy_lvds_camera_power_on(ser, combrxphy, dev_id, id);
243255 break;
244256 default:
245257 break;
246258 }
247259 }
248260
249
-void rkx110_combrxphy_power_off(struct rk_serdes *ser, enum comb_phy_id id)
261
+void rkx110_combrxphy_power_off(struct rk_serdes *ser, struct rkx110_combrxphy *combrxphy,
262
+ u8 dev_id, enum comb_phy_id id)
250263 {
251
- struct rkx110_combrxphy *combrxphy = &ser->combrxphy;
252
-
253264 switch (combrxphy->mode) {
254265 case COMBRX_PHY_MODE_VIDEO_MIPI:
255
- rkx110_combrxphy_dsi_power_off(ser, id);
266
+ rkx110_combrxphy_dsi_power_off(ser, combrxphy, dev_id, id);
256267 break;
257268 case COMBRX_PHY_MODE_VIDEO_LVDS:
258
- rkx110_combrxphy_lvds_power_off(ser, id);
269
+ rkx110_combrxphy_lvds_power_off(ser, combrxphy, dev_id, id);
259270 break;
260271 case COMBRX_PHY_MODE_LVDS_CAMERA:
261
- rkx110_combrxphy_lvds_camera_power_off(ser, id);
272
+ rkx110_combrxphy_lvds_camera_power_off(ser, combrxphy, dev_id, id);
262273 break;
263274 default:
264275 break;
265276 }
266277 }
267278
268
-void rkx110_combrxphy_set_rate(struct rk_serdes *ser, u64 rate)
279
+void rkx110_combrxphy_set_rate(struct rkx110_combrxphy *combrxphy, u64 rate)
269280 {
270
- struct rkx110_combrxphy *combrxphy = &ser->combrxphy;
271
-
272281 combrxphy->rate = rate;
273282 }
274283
275
-void rkx110_combrxphy_set_mode(struct rk_serdes *ser, enum combrx_phy_mode mode)
284
+void rkx110_combrxphy_set_lanes(struct rkx110_combrxphy *combrxphy, uint8_t lanes)
276285 {
277
- struct rkx110_combrxphy *combrxphy = &ser->combrxphy;
286
+ combrxphy->lanes = lanes;
287
+}
278288
289
+void rkx110_combrxphy_set_mode(struct rkx110_combrxphy *combrxphy, enum combrx_phy_mode mode)
290
+{
279291 combrxphy->mode = mode;
280292 }