[PATCH 04/10] spi: espi_amd: Add eSPI inband-reset IOCTL command

From: Raju Rangoju
Date: Thu Mar 13 2025 - 14:36:17 EST


This patch adds support for a channel-independent IOCTL command to
dynamically reset the configuration settings of the eSPI controller.

Co-developed-by: Krishnamoorthi M <krishnamoorthi.m@xxxxxxx>
Signed-off-by: Krishnamoorthi M <krishnamoorthi.m@xxxxxxx>
Co-developed-by: Akshata MukundShetty <akshata.mukundshetty@xxxxxxx>
Signed-off-by: Akshata MukundShetty <akshata.mukundshetty@xxxxxxx>
Signed-off-by: Raju Rangoju <Raju.Rangoju@xxxxxxx>
---
drivers/spi/espi-amd-dev.c | 5 +++++
drivers/spi/espi-amd.h | 1 +
2 files changed, 6 insertions(+)

diff --git a/drivers/spi/espi-amd-dev.c b/drivers/spi/espi-amd-dev.c
index 79224f4f86fa..ba2becdec8e6 100644
--- a/drivers/spi/espi-amd-dev.c
+++ b/drivers/spi/espi-amd-dev.c
@@ -182,6 +182,11 @@ static long amd_espi_ioctl(struct file *filp, unsigned int cmd, unsigned long ar
case ESPI_GET_CONFIG:
ret = amd_espi_ioctl_get_conf(amd_espi, arg);
break;
+ case ESPI_INBAND_RESET:
+ ret = amd_espi_inband_reset(amd_espi);
+ if (ret != CB_SUCCESS)
+ dev_err(amd_espi->dev, "In-band reset failed!\n");
+ break;
default:
dev_err(amd_espi->dev, "ESPI command not found, returning error\n");
ret = -EINVAL;
diff --git a/drivers/spi/espi-amd.h b/drivers/spi/espi-amd.h
index bc15f7417c37..3c6e9b92c08d 100644
--- a/drivers/spi/espi-amd.h
+++ b/drivers/spi/espi-amd.h
@@ -142,6 +142,7 @@
#define ESPI_MAGIC_NUMBER 'i'
#define ESPI_SET_CONFIG _IOW(ESPI_MAGIC_NUMBER, 0x1, struct config)
#define ESPI_GET_CONFIG _IOR(ESPI_MAGIC_NUMBER, 0x2, struct config)
+#define ESPI_INBAND_RESET _IO(ESPI_MAGIC_NUMBER, 0x3)

/*
* enum amd_espi_versions - eSPI controller versions
--
2.34.1