hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/mfd/rkx110_x120/rkx120.c
....@@ -21,16 +21,24 @@
2121 .base = RKX120_PATTERN_GEN_DSI_BASE,
2222 .link_src_reg = DES_GRF_SOC_CON2,
2323 .link_src_offset = 12,
24
+ .type = RK_SERDES_DSI_TX0,
25
+ }, {
26
+ .name = "dual-lvds",
27
+ .link_src_reg = DES_GRF_SOC_CON1,
28
+ .link_src_offset = 14,
29
+ .type = RK_SERDES_DUAL_LVDS_TX,
2430 }, {
2531 .name = "lvds0",
2632 .base = RKX120_PATTERN_GEN_LVDS0_BASE,
2733 .link_src_reg = DES_GRF_SOC_CON2,
2834 .link_src_offset = 13,
35
+ .type = RK_SERDES_LVDS_TX0,
2936 }, {
3037 .name = "lvds1",
3138 .base = RKX120_PATTERN_GEN_LVDS1_BASE,
3239 .link_src_reg = DES_GRF_SOC_CON2,
3340 .link_src_offset = 14,
41
+ .type = RK_SERDES_LVDS_TX1,
3442 },
3543 { /* sentinel */ }
3644 };
....@@ -111,6 +119,11 @@
111119 .name = "pcs1",
112120 .reg_base = RKX120_DES_PCS1_BASE,
113121 .reg_len = 0x1c0,
122
+ },
123
+ {
124
+ .name = "pwm",
125
+ .reg_base = RKX120_PWM_BASE,
126
+ .reg_len = 0x100,
114127 },
115128 {
116129 .name = "pma0",
....@@ -231,8 +244,13 @@
231244 void rkx120_debugfs_init(struct rk_serdes_chip *chip, struct dentry *dentry)
232245 {
233246 const struct rk_serdes_reg *regs = rkx120_regs;
234
- struct pattern_gen *pattern_gen = rkx120_pattern_gen;
247
+ struct pattern_gen *pattern_gen;
235248 struct dentry *dir;
249
+
250
+ pattern_gen = devm_kmemdup(chip->serdes->dev, &rkx120_pattern_gen,
251
+ sizeof(rkx120_pattern_gen), GFP_KERNEL);
252
+ if (!pattern_gen)
253
+ return;
236254
237255 dir = debugfs_create_dir("registers", dentry);
238256 if (!IS_ERR(dir)) {
....@@ -289,6 +307,8 @@
289307 u8 phy_id)
290308 {
291309 struct i2c_client *client = serdes->chip[remote_id].client;
310
+ struct rk_serdes_panel *sd_panel = container_of(route, struct rk_serdes_panel, route);
311
+ struct rkx120_combtxphy *combtxphy = &sd_panel->combtxphy;
292312
293313 if (phy_id) {
294314 serdes->i2c_write_reg(client, DES_GRF_SOC_CON7, 0xfff00630);
....@@ -298,12 +318,12 @@
298318 serdes->i2c_write_reg(client, DES_GRF_SOC_CON2, 0x00040004);
299319 }
300320
301
- rkx120_combtxphy_set_mode(serdes, COMBTX_PHY_MODE_VIDEO_LVDS);
321
+ rkx120_combtxphy_set_mode(combtxphy, COMBTX_PHY_MODE_VIDEO_LVDS);
302322 if (route->remote0_port0 & RK_SERDES_DUAL_LVDS_TX)
303
- rkx120_combtxphy_set_rate(serdes, route->vm.pixelclock * 7 / 2);
323
+ rkx120_combtxphy_set_rate(combtxphy, route->vm.pixelclock * 7 / 2);
304324 else
305
- rkx120_combtxphy_set_rate(serdes, route->vm.pixelclock * 7);
306
- rkx120_combtxphy_power_on(serdes, remote_id, phy_id);
325
+ rkx120_combtxphy_set_rate(combtxphy, route->vm.pixelclock * 7);
326
+ rkx120_combtxphy_power_on(serdes, combtxphy, remote_id, phy_id);
307327
308328 return 0;
309329 }