build/patch/kernel/archive/sunxi-5.10/megous/misc-modem-power-GPIO-debugging-API.patch

72 lines
2.0 KiB
Diff
Raw Normal View History

From 634549b6736b022e55801643435043c1f17f3976 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megous@megous.com>
Date: Thu, 3 Dec 2020 20:00:41 +0100
Subject: [PATCH 192/351] misc: modem-power: GPIO debugging API
Signed-off-by: Ondrej Jirman <megous@megous.com>
---
drivers/misc/modem-power.c | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/drivers/misc/modem-power.c b/drivers/misc/modem-power.c
index 91d2bfdd163e..0a5f37eb4208 100644
--- a/drivers/misc/modem-power.c
+++ b/drivers/misc/modem-power.c
@@ -1300,12 +1300,45 @@ static ssize_t hard_reset_store(struct device *dev,
return len;
}
+static ssize_t debug_pins_store(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf, size_t len)
+{
+ struct mpwr_dev *mpwr = platform_get_drvdata(to_platform_device(dev));
+ unsigned val;
+ int ret;
+
+ if (test_bit(MPWR_F_BLOCKED, mpwr->flags))
+ return -EPERM;
+
+ ret = kstrtouint(buf, 16, &val);
+ if (ret)
+ return ret;
+
+ gpiod_direction_output(mpwr->host_ready_gpio, val & BIT(0));
+ gpiod_direction_output(mpwr->enable_gpio, val & BIT(1));
+ gpiod_direction_output(mpwr->dtr_gpio, val & BIT(2));
+ gpiod_direction_output(mpwr->rts_gpio, val & BIT(3));
+
+ return len;
+}
+
+static ssize_t debug_pins_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct mpwr_dev *mpwr = platform_get_drvdata(to_platform_device(dev));
+
+ return scnprintf(buf, PAGE_SIZE, "CTS=%u RI=%u\n",
+ gpiod_get_value(mpwr->cts_gpio), gpiod_get_value(mpwr->wakeup_gpio));
+}
+
static DEVICE_ATTR_RW(powered);
static DEVICE_ATTR_WO(powered_blocking);
static DEVICE_ATTR_RO(killswitched);
static DEVICE_ATTR_RO(is_busy);
static DEVICE_ATTR_RO(help);
static DEVICE_ATTR_WO(hard_reset);
+static DEVICE_ATTR_RW(debug_pins);
static struct attribute *mpwr_attrs[] = {
&dev_attr_powered.attr,
@@ -1314,6 +1347,7 @@ static struct attribute *mpwr_attrs[] = {
&dev_attr_is_busy.attr,
&dev_attr_help.attr,
&dev_attr_hard_reset.attr,
+ &dev_attr_debug_pins.attr,
NULL,
};
--
2.34.0