summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Crawford <frank@crawford.emu.id.au>2023-01-04 17:09:25 +1100
committerGuenter Roeck <linux@roeck-us.net>2023-02-03 07:30:10 -0800
commitd47e377c7b27e656cdf1dfd7297a195d3e68cd2b (patch)
tree0671e6438dd8a78c1718e57f8e6b7d8a40d6baf7
parent554df454e2fa117b36b2238f3b3467ef02a10fa0 (diff)
downloadlinux-stable-d47e377c7b27e656cdf1dfd7297a195d3e68cd2b.tar.gz
linux-stable-d47e377c7b27e656cdf1dfd7297a195d3e68cd2b.tar.bz2
linux-stable-d47e377c7b27e656cdf1dfd7297a195d3e68cd2b.zip
hwmon: (it87) Allow calling __superio_enter outside muxed region
Allow for superio_enter to be called without requesting the muxed memory region, in particular for initialisation of the second chipset, which must be put into configuration mode, but without an associated call to leave configuration mode. Signed-off-by: Frank Crawford <frank@crawford.emu.id.au> Link: https://lore.kernel.org/r/20230104060926.619686-2-frank@crawford.emu.id.au [groeck: Clarified subject] Signed-off-by: Guenter Roeck <linux@roeck-us.net>
-rw-r--r--drivers/hwmon/it87.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c
index 9997f76b1f4a..4ebce2c661d7 100644
--- a/drivers/hwmon/it87.c
+++ b/drivers/hwmon/it87.c
@@ -87,6 +87,14 @@ static struct platform_device *it87_pdev[2];
#define DEVID 0x20 /* Register: Device ID */
#define DEVREV 0x22 /* Register: Device Revision */
+static inline void __superio_enter(int ioreg)
+{
+ outb(0x87, ioreg);
+ outb(0x01, ioreg);
+ outb(0x55, ioreg);
+ outb(ioreg == REG_4E ? 0xaa : 0x55, ioreg);
+}
+
static inline int superio_inb(int ioreg, int reg)
{
outb(reg, ioreg);
@@ -124,10 +132,7 @@ static inline int superio_enter(int ioreg)
if (!request_muxed_region(ioreg, 2, DRVNAME))
return -EBUSY;
- outb(0x87, ioreg);
- outb(0x01, ioreg);
- outb(0x55, ioreg);
- outb(ioreg == REG_4E ? 0xaa : 0x55, ioreg);
+ __superio_enter(ioreg);
return 0;
}