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_combtxphy.c | 101 ++++++++++++++++++++++++-------------------------- 1 files changed, 49 insertions(+), 52 deletions(-) diff --git a/kernel/drivers/mfd/rkx110_x120/rkx120_combtxphy.c b/kernel/drivers/mfd/rkx110_x120/rkx120_combtxphy.c index 7a44e71..6e516c7 100644 --- a/kernel/drivers/mfd/rkx110_x120/rkx120_combtxphy.c +++ b/kernel/drivers/mfd/rkx110_x120/rkx120_combtxphy.c @@ -111,9 +111,10 @@ #define GRF_MIPI_STATUS 0x0080 #define PHYLOCK BIT(0) -static void rkx120_combtxphy_dsi_timing_init(struct rk_serdes *des, u8 remote_id) +static void rkx120_combtxphy_dsi_timing_init(struct rk_serdes *des, + struct rkx120_combtxphy *combtxphy, + u8 dev_id) { - struct rkx120_combtxphy *combtxphy = &des->combtxphy; const struct configure_opts_combphy cfg = combtxphy->mipi_dphy_cfg; u32 byte_clk = DIV_ROUND_CLOSEST_ULL(combtxphy->rate, 8); u32 esc_div = DIV_ROUND_UP(byte_clk, 20 * USEC_PER_SEC); @@ -123,30 +124,30 @@ u32 t_tago, t_tasure, t_taget; u32 base = RKX120_MIPI_LVDS_TX_PHY0_BASE; - serdes_combphy_write(des, remote_id, base + INTERFACE_PARA, + serdes_combphy_write(des, dev_id, base + INTERFACE_PARA, TXREADYESC_VLD(esc_div - 2) | RXVALIDESC_VLD(esc_div - 2)); - serdes_combphy_write(des, remote_id, base + COMMON_PARA0, esc_div); - serdes_combphy_update_bits(des, remote_id, base + TEST_PARA0, FSET_EN, FSET_EN); + serdes_combphy_write(des, dev_id, base + COMMON_PARA0, esc_div); + serdes_combphy_update_bits(des, dev_id, base + TEST_PARA0, FSET_EN, FSET_EN); t_init = DIV_ROUND_UP(cfg.init, t_byte_clk) - 1; - serdes_combphy_write(des, remote_id, base + CLANE_PARA1, T_INITTIME_C(t_init)); - serdes_combphy_write(des, remote_id, base + DLANE0_PARA1, T_INITTIME_D(t_init)); - serdes_combphy_write(des, remote_id, base + DLANE_PARA1(1), T_INITTIME_D(t_init)); - serdes_combphy_write(des, remote_id, base + DLANE_PARA1(2), T_INITTIME_D(t_init)); - serdes_combphy_write(des, remote_id, base + DLANE_PARA1(3), T_INITTIME_D(t_init)); + serdes_combphy_write(des, dev_id, base + CLANE_PARA1, T_INITTIME_C(t_init)); + serdes_combphy_write(des, dev_id, base + DLANE0_PARA1, T_INITTIME_D(t_init)); + serdes_combphy_write(des, dev_id, base + DLANE_PARA1(1), T_INITTIME_D(t_init)); + serdes_combphy_write(des, dev_id, base + DLANE_PARA1(2), T_INITTIME_D(t_init)); + serdes_combphy_write(des, dev_id, base + DLANE_PARA1(3), T_INITTIME_D(t_init)); t_clkprepare = DIV_ROUND_UP(cfg.clk_prepare, t_byte_clk) - 1; t_clkzero = DIV_ROUND_UP(cfg.clk_zero, t_byte_clk) - 1; t_clkpre = DIV_ROUND_UP(cfg.clk_pre, t_byte_clk) - 1; - serdes_combphy_write(des, remote_id, base + CLANE_PARA2, + serdes_combphy_write(des, dev_id, base + CLANE_PARA2, T_CLKPREPARE_C(t_clkprepare) | T_CLKZERO_C(t_clkzero) | T_CLKPRE_C(t_clkpre)); t_clkpost = DIV_ROUND_UP(cfg.clk_post, t_byte_clk) - 1; t_clktrail = DIV_ROUND_UP(cfg.clk_trail, t_byte_clk) - 1; t_hsexit = DIV_ROUND_UP(cfg.hs_exit, t_byte_clk) - 1; - serdes_combphy_write(des, remote_id, base + CLANE_PARA3, + serdes_combphy_write(des, dev_id, base + CLANE_PARA3, T_CLKPOST_C(t_clkpost) | T_CLKTRAIL_C(t_clktrail) | T_HSEXIT_C(t_hsexit)); @@ -154,62 +155,63 @@ t_hsprepare = DIV_ROUND_UP(cfg.hs_prepare, t_byte_clk) - 1; t_hszero = DIV_ROUND_UP(cfg.hs_zero, t_byte_clk) - 1; t_hstrail = DIV_ROUND_UP(cfg.hs_trail, t_byte_clk) - 1; - serdes_combphy_write(des, remote_id, base + DLANE0_PARA2, + serdes_combphy_write(des, dev_id, base + DLANE0_PARA2, T_HSPREPARE_D(t_hsprepare) | T_HSZERO_D(t_hszero) | T_HSTRAIL_D(t_hstrail) | T_HSEXIT_D(t_hsexit)); - serdes_combphy_write(des, remote_id, base + DLANE_PARA2(1), + serdes_combphy_write(des, dev_id, base + DLANE_PARA2(1), T_HSPREPARE_D(t_hsprepare) | T_HSZERO_D(t_hszero) | T_HSTRAIL_D(t_hstrail) | T_HSEXIT_D(t_hsexit)); - serdes_combphy_write(des, remote_id, base + DLANE_PARA2(2), + serdes_combphy_write(des, dev_id, base + DLANE_PARA2(2), T_HSPREPARE_D(t_hsprepare) | T_HSZERO_D(t_hszero) | T_HSTRAIL_D(t_hstrail) | T_HSEXIT_D(t_hsexit)); - serdes_combphy_write(des, remote_id, base + DLANE_PARA2(3), + serdes_combphy_write(des, dev_id, base + DLANE_PARA2(3), T_HSPREPARE_D(t_hsprepare) | T_HSZERO_D(t_hszero) | T_HSTRAIL_D(t_hstrail) | T_HSEXIT_D(t_hsexit)); t_wakeup = DIV_ROUND_UP(cfg.wakeup, t_byte_clk) - 1; - serdes_combphy_write(des, remote_id, base + DLANE0_PARA3, T_WAKEUP_D(t_wakeup)); - serdes_combphy_write(des, remote_id, base + DLANE_PARA3(1), T_WAKEUP_D(t_wakeup)); - serdes_combphy_write(des, remote_id, base + DLANE_PARA3(2), T_WAKEUP_D(t_wakeup)); - serdes_combphy_write(des, remote_id, base + DLANE_PARA3(3), T_WAKEUP_D(t_wakeup)); - serdes_combphy_write(des, remote_id, base + CLANE_PARA4, T_WAKEUP_D(t_wakeup)); + serdes_combphy_write(des, dev_id, base + DLANE0_PARA3, T_WAKEUP_D(t_wakeup)); + serdes_combphy_write(des, dev_id, base + DLANE_PARA3(1), T_WAKEUP_D(t_wakeup)); + serdes_combphy_write(des, dev_id, base + DLANE_PARA3(2), T_WAKEUP_D(t_wakeup)); + serdes_combphy_write(des, dev_id, base + DLANE_PARA3(3), T_WAKEUP_D(t_wakeup)); + serdes_combphy_write(des, dev_id, base + CLANE_PARA4, T_WAKEUP_D(t_wakeup)); t_tago = DIV_ROUND_UP(cfg.ta_go, t_byte_clk) - 1; t_tasure = DIV_ROUND_UP(cfg.ta_sure, t_byte_clk) - 1; t_taget = DIV_ROUND_UP(cfg.ta_get, t_byte_clk) - 1; - serdes_combphy_write(des, remote_id, base + DLANE0_PARA4, + serdes_combphy_write(des, dev_id, base + DLANE0_PARA4, T_TAGO_D0(t_tago) | T_TASURE_D0(t_tasure) | T_TAGET_D0(t_taget)); } -static void rkx120_combtxphy_dsi_pll_set(struct rk_serdes *des, u8 remote_id) +static void rkx120_combtxphy_dsi_pll_set(struct rk_serdes *des, + struct rkx120_combtxphy *combtxphy, u8 dev_id) { - struct rkx120_combtxphy *combtxphy = &des->combtxphy; u32 base = RKX120_MIPI_LVDS_TX_PHY0_BASE; - serdes_combphy_update_bits(des, remote_id, base + PLL_CTRL_PARA0, + serdes_combphy_update_bits(des, dev_id, base + PLL_CTRL_PARA0, RATE_MASK | REFCLK_DIV_MASK | PLL_DIV_MASK, RATE(combtxphy->rate_factor) | REFCLK_DIV(combtxphy->ref_div - 1) | PLL_DIV(combtxphy->fb_div)); } -static void rkx120_combtxphy_dsi_power_on(struct rk_serdes *des, u8 remote_id) +static void rkx120_combtxphy_dsi_power_on(struct rk_serdes *des, + struct rkx120_combtxphy *combtxphy, + u8 dev_id) { - struct rkx120_combtxphy *combtxphy = &des->combtxphy; - struct i2c_client *client = des->chip[remote_id].client; + struct i2c_client *client = des->chip[dev_id].client; u32 grf_base = RKX120_GRF_MIPI0_BASE; u32 val; int ret; @@ -218,8 +220,8 @@ PHY_MODE(COMBTX_PHY_MODE_VIDEO_MIPI)); serdes_combphy_get_default_config(combtxphy->rate, &combtxphy->mipi_dphy_cfg); - rkx120_combtxphy_dsi_timing_init(des, remote_id); - rkx120_combtxphy_dsi_pll_set(des, remote_id); + rkx120_combtxphy_dsi_timing_init(des, combtxphy, dev_id); + rkx120_combtxphy_dsi_pll_set(des, combtxphy, dev_id); des->i2c_write_reg(client, grf_base + GRF_MIPITX_CON0, PHYSHUTDWN(1)); des->i2c_write_reg(client, grf_base + GRF_MIPITX_CON1, PWON_PLL(1)); @@ -233,19 +235,20 @@ dev_err(des->dev, "PLL is not locked\n"); } -static void rkx120_combtxphy_dsi_power_off(struct rk_serdes *des, u8 remote_id) +static void rkx120_combtxphy_dsi_power_off(struct rk_serdes *des, u8 dev_id) { - struct i2c_client *client = des->chip[remote_id].client; + struct i2c_client *client = des->chip[dev_id].client; u32 grf_base = RKX120_GRF_MIPI0_BASE; des->i2c_write_reg(client, grf_base + GRF_MIPITX_CON0, PHYSHUTDWN(0)); des->i2c_write_reg(client, grf_base + GRF_MIPITX_CON1, PWON_PLL(0)); } -static void rkx120_combtxphy_lvds_power_on(struct rk_serdes *des, u8 remote_id, u8 phy_id) +static void rkx120_combtxphy_lvds_power_on(struct rk_serdes *des, + struct rkx120_combtxphy *combtxphy, + u8 dev_id, u8 phy_id) { - struct rkx120_combtxphy *combtxphy = &des->combtxphy; - struct i2c_client *client = des->chip[remote_id].client; + struct i2c_client *client = des->chip[dev_id].client; u32 grf_base = (phy_id == 0) ? RKX120_GRF_MIPI0_BASE : RKX120_GRF_MIPI1_BASE; const struct { @@ -304,29 +307,27 @@ des->i2c_write_reg(client, grf_base + GRF_MIPITX_CON13, TX_IDLE(0)); } -void rkx120_combtxphy_power_on(struct rk_serdes *des, u8 remote_id, u8 phy_id) +void rkx120_combtxphy_power_on(struct rk_serdes *des, struct rkx120_combtxphy *combtxphy, + u8 dev_id, u8 phy_id) { - struct rkx120_combtxphy *combtxphy = &des->combtxphy; - switch (combtxphy->mode) { case COMBTX_PHY_MODE_VIDEO_MIPI: - rkx120_combtxphy_dsi_power_on(des, remote_id); + rkx120_combtxphy_dsi_power_on(des, combtxphy, dev_id); break; case COMBTX_PHY_MODE_VIDEO_LVDS: - rkx120_combtxphy_lvds_power_on(des, remote_id, phy_id); + rkx120_combtxphy_lvds_power_on(des, combtxphy, dev_id, phy_id); break; default: break; } } -void rkx120_combtxphy_power_off(struct rk_serdes *des, u8 remote_id) +void rkx120_combtxphy_power_off(struct rk_serdes *des, struct rkx120_combtxphy *combtxphy, + u8 dev_id, u8 phy_id) { - struct rkx120_combtxphy *combtxphy = &des->combtxphy; - switch (combtxphy->mode) { case COMBTX_PHY_MODE_VIDEO_MIPI: - rkx120_combtxphy_dsi_power_off(des, remote_id); + rkx120_combtxphy_dsi_power_off(des, dev_id); break; case COMBTX_PHY_MODE_VIDEO_LVDS: break; @@ -385,10 +386,8 @@ { } -void rkx120_combtxphy_set_rate(struct rk_serdes *des, u64 rate) +void rkx120_combtxphy_set_rate(struct rkx120_combtxphy *combtxphy, u64 rate) { - struct rkx120_combtxphy *combtxphy = &des->combtxphy; - switch (combtxphy->mode) { case COMBTX_PHY_MODE_VIDEO_MIPI: rkx120_combtxphy_dsi_pll_calc_rate(combtxphy, rate); @@ -403,14 +402,12 @@ combtxphy->rate = rate; } -u64 rkx120_combtxphy_get_rate(struct rk_serdes *des) +u64 rkx120_combtxphy_get_rate(struct rkx120_combtxphy *combtxphy) { - return des->combtxphy.rate; + return combtxphy->rate; } -void rkx120_combtxphy_set_mode(struct rk_serdes *des, enum combtx_phy_mode mode) +void rkx120_combtxphy_set_mode(struct rkx120_combtxphy *combtxphy, enum combtx_phy_mode mode) { - struct rkx120_combtxphy *combtxphy = &des->combtxphy; - combtxphy->mode = mode; } -- Gitblit v1.6.2