Change hwmon it87 driver to use it87_io_lock.
PATCH v2 3/3 Change hwmon it87 driver to use it87_io_lock.
03 - Adds changes to hwmon driver to use the new lock.
This patch adds changes to drivers/hwmon/it87.c to use it87_io_lock
to serialize access to the hardware. Added __acquire and __release annotations wherever needed.
Change it87 driver entry in Kconfig to issue "select IT87_LOCK"
directive to compile it87_io_lock into the kernel.
Signed-off-by Nat Gurumoorthy <[email protected]>
drivers/hwmon/Kconfig +1 -0
@@ -436,6 +436,7 @@ config SENSORS_IBMPEX config SENSORS_IT87 tristate "ITE IT87xx and compatibles" select HWMON_VID + select IT87_LOCK help If you say yes here you get support for ITE IT8705F, IT8712F, IT8716F, IT8718F, IT8720F, IT8721F, IT8726F and IT8758E sensor
drivers/hwmon/it87.c +13 -1
@@ -55,6 +55,8 @@#include <linux/dmi.h> #include <linux/acpi.h> #include <linux/io.h> +#include <linux/spinlock.h> +#include <linux/it87_lock.h> #define DRVNAME "it87"
@@ -110,7 +112,9 @@ superio_select(int ldn)static inline void superio_enter (void ) +__acquires(&it87_io_lock) { +spin_lock (&it87_io_lock);outb (0x87 ,REG );outb (0x01 ,REG );outb (0x55 ,REG );
@@ -119,9 +123,11 @@ superio_enter(void)static inline void superio_exit (void ) +__releases(&it87_io_lock) {outb (0x02 ,REG );outb (0x02 ,VAL ); +spin_unlock (&it87_io_lock); }/* Logical device 4 registers */
@@ -1899,8 +1905,12 @@ static int __devexit it87_remove(struct platform_device *pdev)would slow down the IT87 access and should not be necessary. */ static int it87_read_value (struct it87_data *data,u8 reg) { +int ret; +spin_lock (&it87_io_lock);outb_p (reg, data->addr +IT87_ADDR_REG_OFFSET ); -return inb_p (data->addr +IT87_DATA_REG_OFFSET ); + ret =inb_p (data->addr +IT87_DATA_REG_OFFSET ); +spin_unlock (&it87_io_lock); +return ret; }/* Must be called with data->update_lock held, except during initialization.
@@ -1908,8 +1918,10 @@ static int it87_read_value(struct it87_data *data, u8 reg)would slow down the IT87 access and should not be necessary. */ static void it87_write_value (struct it87_data *data,u8 reg,u8 value) { +spin_lock (&it87_io_lock);outb_p (reg, data->addr +IT87_ADDR_REG_OFFSET );outb_p (value, data->addr +IT87_DATA_REG_OFFSET ); +spin_unlock (&it87_io_lock); }/* Return 1 if and only if the PWM interface is safe to use */
Signature · 4 lines
_______________________________________________ lm-sensors mailing list [email protected] http://lists.lm-sensors.org/mailman/listinfo/lm-sensors