From 9d77db3c730780c8ef5ccd4b66403ff5675cfe4e Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Mon, 13 May 2024 10:30:14 +0000
Subject: [PATCH] modify sin led gpio
---
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