[PATCH linux dev-4.13 3/3] soc: aspeed-lpc-ctrl: Enable FWH cycles

Joel Stanley joel at jms.id.au
Thu Feb 8 16:37:45 AEDT 2018


To date this driver has relied on prevous BMC state in order
to have the host be able to access data over the LPC bus.

Now we explicitly enable the FWH cycles from when the user first
configures the address to map. We chose to do this then as before that
time there is no way for the kernel to know where it is safe to point
the LPC window.

Signed-off-by: Joel Stanley <joel at jms.id.au>
---
 drivers/misc/aspeed-lpc-ctrl.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/drivers/misc/aspeed-lpc-ctrl.c b/drivers/misc/aspeed-lpc-ctrl.c
index 4a818ad3827e..21b4ee9d0a38 100644
--- a/drivers/misc/aspeed-lpc-ctrl.c
+++ b/drivers/misc/aspeed-lpc-ctrl.c
@@ -21,6 +21,10 @@
 
 #define DEVICE_NAME	"aspeed-lpc-ctrl"
 
+#define HICR5 0x0
+#define HICR5_ENL2H	BIT(8)
+#define HICR5_ENFWH	BIT(10)
+
 #define HICR7 0x8
 #define HICR8 0xc
 
@@ -155,8 +159,17 @@ static long aspeed_lpc_ctrl_ioctl(struct file *file, unsigned int cmd,
 		if (rc)
 			return rc;
 
-		return regmap_write(lpc_ctrl->regmap, HICR8,
-			(~(map.size - 1)) | ((map.size >> 16) - 1));
+		rc = regmap_write(lpc_ctrl->regmap, HICR8,
+				(~(map.size - 1)) | ((map.size >> 16) - 1));
+		if (rc)
+			return rc;
+
+		/*
+		 * Enable LPC FHW cycles. This is required for the host to
+		 * access the regions specified.
+		 */
+		return regmap_update_bits(lpc_ctrl->regmap, HICR5,
+				HICR5_ENFWH, HICR5_ENFWH);
 	}
 
 	return -EINVAL;
-- 
2.15.1



More information about the openbmc mailing list