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/rkx120_dsi_tx.c | 57 +++++++++++++++++++++++++++++---------------------------- 1 files changed, 29 insertions(+), 28 deletions(-) diff --git a/kernel/drivers/mfd/rkx110_x120/rkx120_dsi_tx.c b/kernel/drivers/mfd/rkx110_x120/rkx120_dsi_tx.c index 70a122e..4e262c4 100644 --- a/kernel/drivers/mfd/rkx110_x120/rkx120_dsi_tx.c +++ b/kernel/drivers/mfd/rkx110_x120/rkx120_dsi_tx.c @@ -751,10 +751,9 @@ return msg->tx_len; } -static int rkx120_mipi_dsi_generic_write(struct rk_serdes *des, u8 remote_id, - const void *payload, size_t size) +static int rkx120_mipi_dsi_generic_write(struct rk_serdes *des, struct rkx120_dsi_tx *dsi, + u8 remote_id, const void *payload, size_t size) { - const struct rkx120_dsi_tx *dsi = &des->dsi_tx; struct mipi_dsi_msg msg; memset(&msg, 0, sizeof(msg)); @@ -785,10 +784,9 @@ return rkx120_dsi_tx_transfer(des, remote_id, dsi, &msg); } -static int rkx120_mipi_dsi_dcs_write_buffer(struct rk_serdes *des, u8 remote_id, - const void *data, size_t len) +static int rkx120_mipi_dsi_dcs_write_buffer(struct rk_serdes *des, struct rkx120_dsi_tx *dsi, + u8 remote_id, const void *data, size_t len) { - const struct rkx120_dsi_tx *dsi = &des->dsi_tx; struct mipi_dsi_msg msg; memset(&msg, 0, sizeof(msg)); @@ -818,10 +816,9 @@ } static __maybe_unused int -rkx120_mipi_dsi_dcs_read(struct rk_serdes *des, u8 remote_id, +rkx120_mipi_dsi_dcs_read(struct rk_serdes *des, struct rkx120_dsi_tx *dsi, u8 remote_id, u8 cmd, void *data, size_t len) { - const struct rkx120_dsi_tx *dsi = &des->dsi_tx; struct mipi_dsi_msg msg; memset(&msg, 0, sizeof(msg)); @@ -835,7 +832,7 @@ return rkx120_dsi_tx_transfer(des, remote_id, dsi, &msg); } -int rkx120_dsi_tx_cmd_seq_xfer(struct rk_serdes *des, u8 remote_id, +int rkx120_dsi_tx_cmd_seq_xfer(struct rk_serdes *des, struct rkx120_dsi_tx *dsi, u8 remote_id, struct panel_cmds *cmds) { u16 i; @@ -852,13 +849,13 @@ case MIPI_DSI_GENERIC_SHORT_WRITE_1_PARAM: case MIPI_DSI_GENERIC_SHORT_WRITE_2_PARAM: case MIPI_DSI_GENERIC_LONG_WRITE: - err = rkx120_mipi_dsi_generic_write(des, remote_id, cmd->payload, + err = rkx120_mipi_dsi_generic_write(des, dsi, remote_id, cmd->payload, cmd->dchdr.dlen); break; case MIPI_DSI_DCS_SHORT_WRITE: case MIPI_DSI_DCS_SHORT_WRITE_PARAM: case MIPI_DSI_DCS_LONG_WRITE: - err = rkx120_mipi_dsi_dcs_write_buffer(des, remote_id, cmd->payload, + err = rkx120_mipi_dsi_dcs_write_buffer(des, dsi, remote_id, cmd->payload, cmd->dchdr.dlen); break; default: @@ -901,7 +898,8 @@ } static void -mipi_dphy_power_on(struct rk_serdes *des, const struct rkx120_dsi_tx *dsi, u8 remote_id) +mipi_dphy_power_on(struct rk_serdes *des, const struct rkx120_dsi_tx *dsi, + u8 remote_id) { struct i2c_client *client = des->chip[remote_id].client; u32 val, mask; @@ -920,7 +918,7 @@ dsi_update_bits(des, remote_id, DSI_PHY_RSTZ, PHY_RSTZ, PHY_RSTZ); usleep_range(1500, 2000); - rkx120_combtxphy_power_on(des, remote_id, 0); + rkx120_combtxphy_power_on(des, dsi->combtxphy, remote_id, 0); ret = read_poll_timeout(des->i2c_read_reg, ret, !(ret < 0) && (val & PHY_LOCK), @@ -954,9 +952,9 @@ //dsi_i2c_write(des, remote_id, CRU_SOFTRST_CON02, 0x400000); } -static void rkx120_dsi_tx_bridge_pre_enable(struct rk_serdes *des, u8 remote_id) +static void rkx120_dsi_tx_bridge_pre_enable(struct rk_serdes *des, struct rkx120_dsi_tx *dsi, + u8 remote_id) { - struct rkx120_dsi_tx *dsi = &des->dsi_tx; u32 val; dsi_write(des, remote_id, DSI_PWR_UP, RESET); @@ -1064,9 +1062,8 @@ } static void -rkx120_dsi_tx_bridge_enable(struct rk_serdes *des, u8 remote_id) +rkx120_dsi_tx_bridge_enable(struct rk_serdes *des, struct rkx120_dsi_tx *dsi, u8 remote_id) { - struct rkx120_dsi_tx *dsi = &des->dsi_tx; const struct videomode *vm = dsi->vm; u32 val; @@ -1117,15 +1114,16 @@ struct rk_serdes_route *route, u8 remote_id) { - struct rkx120_dsi_tx *dsi = &des->dsi_tx; + struct rk_serdes_panel *sd_panel = container_of(route, struct rk_serdes_panel, route); + struct rkx120_dsi_tx *dsi = &sd_panel->dsi_tx; u64 rate; dsi->vm = &route->vm; rate = rkx120_dsi_tx_get_lane_rate(dsi); - rkx120_combtxphy_set_mode(des, COMBTX_PHY_MODE_VIDEO_MIPI); - rkx120_combtxphy_set_rate(des, rate); - lane_kbps = rkx120_combtxphy_get_rate(des) / MSEC_PER_SEC; + rkx120_combtxphy_set_mode(dsi->combtxphy, COMBTX_PHY_MODE_VIDEO_MIPI); + rkx120_combtxphy_set_rate(dsi->combtxphy, rate); + lane_kbps = rkx120_combtxphy_get_rate(dsi->combtxphy) / MSEC_PER_SEC; /* rst for dsi */ rkx120_dsi_tx_reset_control_assert(des, remote_id); @@ -1133,12 +1131,11 @@ rkx120_dsi_tx_reset_control_deassert(des, remote_id); usleep_range(20, 40); - rkx120_dsi_tx_bridge_pre_enable(des, remote_id); - + rkx120_dsi_tx_bridge_pre_enable(des, dsi, remote_id); #ifdef DSI_READ_POWER_MODE u8 mode; - rkx120_mipi_dsi_dcs_read(des, remote_id, MIPI_DCS_GET_POWER_MODE, + rkx120_mipi_dsi_dcs_read(des, dsi, remote_id, MIPI_DCS_GET_POWER_MODE, &mode, sizeof(mode)); dev_info(rkx120->dev, "dsi: mode: 0x%x\n", mode); @@ -1149,17 +1146,18 @@ struct rk_serdes_route *route, u8 remote_id) { - struct rkx120_dsi_tx *dsi = &des->dsi_tx; + struct rk_serdes_panel *sd_panel = container_of(route, struct rk_serdes_panel, route); + struct rkx120_dsi_tx *dsi = &sd_panel->dsi_tx; #ifdef DSI_READ_POWER_MODE u8 mode; - rkx120_mipi_dsi_dcs_read(des, remote_id, MIPI_DCS_GET_POWER_MODE, + rkx120_mipi_dsi_dcs_read(des, dsi, remote_id, MIPI_DCS_GET_POWER_MODE, &mode, sizeof(mode)); dev_info(rkx120->dev, "dsi: mode: 0x%x\n", mode); #endif - rkx120_dsi_tx_bridge_enable(des, remote_id); + rkx120_dsi_tx_bridge_enable(des, dsi, remote_id); dev_info(des->dev, "rkx120_dsi_tx final DSI-Link bandwidth: %llu Kbps x %d lanes\n", lane_kbps, dsi->lanes); @@ -1169,7 +1167,10 @@ struct rk_serdes_route *route, u8 remote_id) { - rkx120_combtxphy_power_off(des, remote_id); + struct rk_serdes_panel *sd_panel = container_of(route, struct rk_serdes_panel, route); + struct rkx120_dsi_tx *dsi = &sd_panel->dsi_tx; + + rkx120_combtxphy_power_off(des, dsi->combtxphy, remote_id, 0); } void rkx120_dsi_tx_disable(struct rk_serdes *des, struct rk_serdes_route *route, u8 remote_id) -- Gitblit v1.6.2