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/display-serdes/serdes-core.c | 69 +++++++++++++++++++++++++++------- 1 files changed, 54 insertions(+), 15 deletions(-) diff --git a/kernel/drivers/mfd/display-serdes/serdes-core.c b/kernel/drivers/mfd/display-serdes/serdes-core.c index 5ef62f8..3d9a6e6 100644 --- a/kernel/drivers/mfd/display-serdes/serdes-core.c +++ b/kernel/drivers/mfd/display-serdes/serdes-core.c @@ -62,6 +62,10 @@ .name = "serdes-bridge", .of_compatible = "maxim,max96789-bridge", }, + { + .name = "serdes-bridge-split", + .of_compatible = "maxim,max96789-bridge-split", + }, }; static const struct mfd_cell serdes_max96752_devs[] = { @@ -72,6 +76,10 @@ { .name = "serdes-panel", .of_compatible = "maxim,max96752-panel", + }, + { + .name = "serdes-panel-split", + .of_compatible = "maxim,max96752-panel-split", }, }; @@ -127,8 +135,8 @@ int ret; ret = regmap_read(serdes->regmap, reg, val); - SERDES_DBG_I2C("%s %s Read Reg%04x %04x\n", __func__, - serdes->chip_data->name, reg, *val); + SERDES_DBG_I2C("%s %s %s Read Reg%04x %04x ret=%d\n", __func__, dev_name(serdes->dev), + serdes->chip_data->name, reg, *val, ret); return ret; } EXPORT_SYMBOL_GPL(serdes_reg_read); @@ -148,8 +156,9 @@ ret = regmap_bulk_read(serdes->regmap, reg, buf, count); for (i = 0; i < count; i++) { - SERDES_DBG_I2C("%s %s %s Read Reg%04x %04x\n", __func__, dev_name(serdes->dev), - serdes->chip_data->name, reg + i, buf[i]); + SERDES_DBG_I2C("%s %s %s Read Reg%04x %04x ret=%d\n", + __func__, dev_name(serdes->dev), + serdes->chip_data->name, reg + i, buf[i], ret); } return ret; @@ -166,9 +175,10 @@ mutex_lock(&serdes->io_lock); for (i = 0; i < count; i++) { - SERDES_DBG_I2C("%s %s %s Write Reg%04x %04x\n", __func__, dev_name(serdes->dev), - serdes->chip_data->name, reg, buf[i]); ret = regmap_write(serdes->regmap, reg, buf[i]); + SERDES_DBG_I2C("%s %s %s Write Reg%04x %04x ret=%d\n", + __func__, dev_name(serdes->dev), + serdes->chip_data->name, reg, buf[i], ret); if (ret != 0) { mutex_unlock(&serdes->io_lock); return ret; @@ -193,12 +203,11 @@ SERDES_DBG_I2C("%s %s %s num=%d\n", __func__, dev_name(serdes->dev), serdes->chip_data->name, num_regs); - for (i = 0; i < num_regs; i++) { - SERDES_DBG_I2C("serdes %s Write Reg%04x %04x\n", - serdes->chip_data->name, regs[i].reg, regs[i].def); - } - ret = regmap_multi_reg_write(serdes->regmap, regs, num_regs); + for (i = 0; i < num_regs; i++) { + SERDES_DBG_I2C("serdes %s Write Reg%04x %04x ret=%d\n", + serdes->chip_data->name, regs[i].reg, regs[i].def, ret); + } return ret; } @@ -216,9 +225,9 @@ { int ret; - SERDES_DBG_I2C("%s %s %s Write Reg%04x %04x)\n", __func__, dev_name(serdes->dev), - serdes->chip_data->name, reg, val); ret = regmap_write(serdes->regmap, reg, val); + SERDES_DBG_I2C("%s %s %s Write Reg%04x %04x ret=%d\n", __func__, dev_name(serdes->dev), + serdes->chip_data->name, reg, val, ret); if (ret != 0) return ret; @@ -322,7 +331,14 @@ ret = pinctrl_select_state(serdes->pinctrl_node, serdes->pins_default); if (ret) dev_err(serdes->dev, "could not set default pins\n"); - SERDES_DBG_MFD("%s: name=%s\n", __func__, dev_name(serdes->dev)); + SERDES_DBG_MFD("%s: name=%s default\n", __func__, dev_name(serdes->dev)); + } + + if ((!IS_ERR(serdes->pinctrl_node)) && (!IS_ERR(serdes->pins_init))) { + ret = pinctrl_select_state(serdes->pinctrl_node, serdes->pins_init); + if (ret) + dev_err(serdes->dev, "could not set init pins\n"); + SERDES_DBG_MFD("%s: name=%s init\n", __func__, dev_name(serdes->dev)); } return ret; @@ -376,7 +392,7 @@ } EXPORT_SYMBOL_GPL(serdes_device_resume); -void serdes_device_shutdown(struct serdes *serdes) +void serdes_device_poweroff(struct serdes *serdes) { int ret = 0; @@ -385,6 +401,29 @@ if (ret) dev_err(serdes->dev, "could not set sleep pins\n"); } + + if (!IS_ERR(serdes->vpower)) { + ret = regulator_disable(serdes->vpower); + if (ret) + dev_err(serdes->dev, "fail to disable vpower regulator\n"); + } + +} +EXPORT_SYMBOL_GPL(serdes_device_poweroff); + +int serdes_device_shutdown(struct serdes *serdes) +{ + int ret = 0; + + if (!IS_ERR(serdes->vpower)) { + ret = regulator_disable(serdes->vpower); + if (ret) { + dev_err(serdes->dev, "fail to disable vpower regulator\n"); + return ret; + } + } + + return ret; } EXPORT_SYMBOL_GPL(serdes_device_shutdown); -- Gitblit v1.6.2