aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/platform/x86/intel/int3472/common.h
diff options
context:
space:
mode:
authorHans de Goede <[email protected]>2025-04-17 11:13:34 +0000
committerIlpo Järvinen <[email protected]>2025-04-24 13:05:37 +0000
commitccda394e1ef17c3de33e31e7a4d2e647be6a362d (patch)
tree25e1d6423ec8f7f32435ed750eb48f360d559a90 /drivers/platform/x86/intel/int3472/common.h
parentplatform/x86: int3472: Make regulator supply name configurable (diff)
downloadkernel-ccda394e1ef17c3de33e31e7a4d2e647be6a362d.tar.gz
kernel-ccda394e1ef17c3de33e31e7a4d2e647be6a362d.zip
platform/x86: int3472: Avoid GPIO regulator spikes
Avoid the GPIO controlling the avdd regulator being driven low or high for a very short time leading to spikes by adding an enable delay of 2 ms and a minimum off to on delay of also 2 ms. Reviewed-by: Andy Shevchenko <[email protected]> Signed-off-by: Hans de Goede <[email protected]> Tested-by: David Heidelberg <[email protected]> # Dell Latitude 9440 Reviewed-by: Sakari Ailus <[email protected]> Link: https://lore.kernel.org/r/[email protected] Reviewed-by: Ilpo Järvinen <[email protected]> Signed-off-by: Ilpo Järvinen <[email protected]>
Diffstat (limited to 'drivers/platform/x86/intel/int3472/common.h')
-rw-r--r--drivers/platform/x86/intel/int3472/common.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/platform/x86/intel/int3472/common.h b/drivers/platform/x86/intel/int3472/common.h
index 4bfd60df06de..2af8dc1ed25e 100644
--- a/drivers/platform/x86/intel/int3472/common.h
+++ b/drivers/platform/x86/intel/int3472/common.h
@@ -32,17 +32,27 @@
#define GPIO_REGULATOR_NAME_LENGTH (12 + GPIO_SUPPLY_NAME_LENGTH)
/* lower- and upper-case mapping */
#define GPIO_REGULATOR_SUPPLY_MAP_COUNT 2
+/*
+ * Ensure the GPIO is driven low/high for at least 2 ms before changing.
+ *
+ * 2 ms has been chosen because it is the minimum time ovXXXX sensors need to
+ * have their reset line driven logical high to properly register a reset.
+ */
+#define GPIO_REGULATOR_ENABLE_TIME (2 * USEC_PER_MSEC)
+#define GPIO_REGULATOR_OFF_ON_DELAY (2 * USEC_PER_MSEC)
#define INT3472_LED_MAX_NAME_LEN 32
#define CIO2_SENSOR_SSDB_MCLKSPEED_OFFSET 86
-#define INT3472_REGULATOR(_name, _ops) \
+#define INT3472_REGULATOR(_name, _ops, _enable_time, _off_on_delay) \
(const struct regulator_desc) { \
.name = _name, \
.type = REGULATOR_VOLTAGE, \
.ops = _ops, \
.owner = THIS_MODULE, \
+ .enable_time = _enable_time, \
+ .off_on_delay = _off_on_delay, \
}
#define to_int3472_clk(hw) \
@@ -134,6 +144,7 @@ void skl_int3472_unregister_clock(struct int3472_discrete_device *int3472);
int skl_int3472_register_regulator(struct int3472_discrete_device *int3472,
struct gpio_desc *gpio,
+ unsigned int enable_time,
const char *supply_name,
const char *second_sensor);
void skl_int3472_unregister_regulator(struct int3472_discrete_device *int3472);