From 2f7c68cb55ecb7331f2381deb497c27155f32faf Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 03 Jan 2024 09:43:39 +0000
Subject: [PATCH] update kernel to 5.10.198

---
 kernel/drivers/mfd/rkx110_x120/rkx110_combrxphy.c |   76 ++++++++++++++++++++++----------------
 1 files changed, 44 insertions(+), 32 deletions(-)

diff --git a/kernel/drivers/mfd/rkx110_x120/rkx110_combrxphy.c b/kernel/drivers/mfd/rkx110_x120/rkx110_combrxphy.c
index 4152728..fb8eaa0 100644
--- a/kernel/drivers/mfd/rkx110_x120/rkx110_combrxphy.c
+++ b/kernel/drivers/mfd/rkx110_x120/rkx110_combrxphy.c
@@ -114,15 +114,18 @@
 #define LVDS0_MSBSEL(x)		HIWORD_UPDATE(x, BIT(2), 2)
 
 static void
-rkx110_combrxphy_dsi_timing_init(struct rk_serdes *ser, enum comb_phy_id id)
+rkx110_combrxphy_dsi_timing_init(struct rk_serdes *ser,
+				 struct rkx110_combrxphy *combrxphy,
+				 u8 dev_id, enum comb_phy_id id)
 {
 }
 
-static void rkx110_combrxphy_dsi_power_on(struct rk_serdes *ser, enum comb_phy_id id)
+static void rkx110_combrxphy_dsi_power_on(struct rk_serdes *ser,
+					  struct rkx110_combrxphy *combrxphy,
+					  u8 dev_id, enum comb_phy_id id)
 {
-	struct hwclk *hwclk = ser->chip[DEVICE_LOCAL].hwclk;
-	struct rkx110_combrxphy *combrxphy = &ser->combrxphy;
-	struct i2c_client *client = ser->chip[DEVICE_LOCAL].client;
+	struct hwclk *hwclk = ser->chip[dev_id].hwclk;
+	struct i2c_client *client = ser->chip[dev_id].client;
 	u32 val = 0;
 	u32 grf_base;
 
@@ -144,7 +147,7 @@
 	serdes_combphy_get_default_config(combrxphy->rate,
 					  &combrxphy->mipi_dphy_cfg);
 
-	switch (ser->dsi_rx.lanes) {
+	switch (combrxphy->lanes) {
 	case 4:
 		val |= LANE3_ENABLE(1);
 		fallthrough;
@@ -164,12 +167,14 @@
 	ser->i2c_write_reg(client, grf_base + GRF_MIPI_RX_CON0,
 			   PHY_MODE(COMBRX_PHY_MODE_VIDEO_MIPI) | val);
 
-	rkx110_combrxphy_dsi_timing_init(ser, id);
+	rkx110_combrxphy_dsi_timing_init(ser, combrxphy, dev_id, id);
 }
 
-static void rkx110_combrxphy_dsi_power_off(struct rk_serdes *ser, enum comb_phy_id id)
+static void rkx110_combrxphy_dsi_power_off(struct rk_serdes *ser,
+					   struct rkx110_combrxphy *combrxphy,
+					   u8 dev_id, enum comb_phy_id id)
 {
-	struct i2c_client *client = ser->chip[DEVICE_LOCAL].client;
+	struct i2c_client *client = ser->chip[dev_id].client;
 	u32 grf_base;
 
 	grf_base = id ? RKX110_GRF_MIPI1_BASE : RKX110_GRF_MIPI0_BASE;
@@ -178,9 +183,11 @@
 			    LANE1_ENABLE(0) | LANE0_ENABLE(0));
 }
 
-static void rkx110_combrxphy_lvds_power_on(struct rk_serdes *ser, enum comb_phy_id id)
+static void rkx110_combrxphy_lvds_power_on(struct rk_serdes *ser,
+					   struct rkx110_combrxphy *combrxphy,
+					   u8 dev_id, enum comb_phy_id id)
 {
-	struct i2c_client *client = ser->chip[DEVICE_LOCAL].client;
+	struct i2c_client *client = ser->chip[dev_id].client;
 	u32 grf_base = id ? RKX110_GRF_MIPI1_BASE : RKX110_GRF_MIPI0_BASE;
 	u32 val;
 	int ret;
@@ -209,9 +216,11 @@
 			   LVDS_RX1_PD(0) | LVDS_RX0_PD(0));
 }
 
-static void rkx110_combrxphy_lvds_power_off(struct rk_serdes *ser, enum comb_phy_id id)
+static void rkx110_combrxphy_lvds_power_off(struct rk_serdes *ser,
+					    struct rkx110_combrxphy *combrxphy,
+					    u8 dev_id, enum comb_phy_id id)
 {
-	struct i2c_client *client = ser->chip[DEVICE_LOCAL].client;
+	struct i2c_client *client = ser->chip[dev_id].client;
 	u32 grf_base = id ? RKX110_GRF_MIPI1_BASE : RKX110_GRF_MIPI0_BASE;
 
 	ser->i2c_write_reg(client, grf_base + GRF_MIPI_RX_CON0,
@@ -219,62 +228,65 @@
 			   LVDS_RX1_PD(1) | LVDS_RX0_PD(1));
 }
 
-static void rkx110_combrxphy_lvds_camera_power_on(struct rk_serdes *ser, enum comb_phy_id id)
+static void rkx110_combrxphy_lvds_camera_power_on(struct rk_serdes *ser,
+						  struct rkx110_combrxphy *combrxphy,
+						  u8 dev_id, enum comb_phy_id id)
 {
 }
 
-static void rkx110_combrxphy_lvds_camera_power_off(struct rk_serdes *ser, enum comb_phy_id id)
+static void rkx110_combrxphy_lvds_camera_power_off(struct rk_serdes *ser,
+						   struct rkx110_combrxphy *combrxphy,
+						   u8 dev_id, enum comb_phy_id id)
 {
 }
 
-void rkx110_combrxphy_power_on(struct rk_serdes *ser, enum comb_phy_id id)
+void rkx110_combrxphy_power_on(struct rk_serdes *ser, struct rkx110_combrxphy *combrxphy,
+			       u8 dev_id, enum comb_phy_id id)
 {
-	struct rkx110_combrxphy *combrxphy = &ser->combrxphy;
-
 	switch (combrxphy->mode) {
 	case COMBRX_PHY_MODE_VIDEO_MIPI:
-		rkx110_combrxphy_dsi_power_on(ser, id);
+		rkx110_combrxphy_dsi_power_on(ser, combrxphy, dev_id, id);
 		break;
 	case COMBRX_PHY_MODE_VIDEO_LVDS:
-		rkx110_combrxphy_lvds_power_on(ser, id);
+		rkx110_combrxphy_lvds_power_on(ser, combrxphy, dev_id, id);
 		break;
 	case COMBRX_PHY_MODE_LVDS_CAMERA:
-		rkx110_combrxphy_lvds_camera_power_on(ser, id);
+		rkx110_combrxphy_lvds_camera_power_on(ser, combrxphy, dev_id, id);
 		break;
 	default:
 		break;
 	}
 }
 
-void rkx110_combrxphy_power_off(struct rk_serdes *ser, enum comb_phy_id id)
+void rkx110_combrxphy_power_off(struct rk_serdes *ser, struct rkx110_combrxphy *combrxphy,
+				u8 dev_id, enum comb_phy_id id)
 {
-	struct rkx110_combrxphy *combrxphy = &ser->combrxphy;
-
 	switch (combrxphy->mode) {
 	case COMBRX_PHY_MODE_VIDEO_MIPI:
-		rkx110_combrxphy_dsi_power_off(ser, id);
+		rkx110_combrxphy_dsi_power_off(ser, combrxphy, dev_id, id);
 		break;
 	case COMBRX_PHY_MODE_VIDEO_LVDS:
-		rkx110_combrxphy_lvds_power_off(ser, id);
+		rkx110_combrxphy_lvds_power_off(ser, combrxphy, dev_id, id);
 		break;
 	case COMBRX_PHY_MODE_LVDS_CAMERA:
-		rkx110_combrxphy_lvds_camera_power_off(ser, id);
+		rkx110_combrxphy_lvds_camera_power_off(ser, combrxphy, dev_id, id);
 		break;
 	default:
 		break;
 	}
 }
 
-void rkx110_combrxphy_set_rate(struct rk_serdes *ser, u64 rate)
+void rkx110_combrxphy_set_rate(struct rkx110_combrxphy *combrxphy, u64 rate)
 {
-	struct rkx110_combrxphy *combrxphy = &ser->combrxphy;
-
 	combrxphy->rate = rate;
 }
 
-void rkx110_combrxphy_set_mode(struct rk_serdes *ser, enum combrx_phy_mode mode)
+void rkx110_combrxphy_set_lanes(struct rkx110_combrxphy *combrxphy, uint8_t lanes)
 {
-	struct rkx110_combrxphy *combrxphy = &ser->combrxphy;
+	combrxphy->lanes = lanes;
+}
 
+void rkx110_combrxphy_set_mode(struct rkx110_combrxphy *combrxphy, enum combrx_phy_mode mode)
+{
 	combrxphy->mode = mode;
 }

--
Gitblit v1.6.2