Loading drivers/macintosh/therm_pm72.c +16 −15 Original line number Diff line number Diff line Loading @@ -122,6 +122,7 @@ #include <linux/kmod.h> #include <linux/i2c.h> #include <linux/kthread.h> #include <linux/mutex.h> #include <asm/prom.h> #include <asm/machdep.h> #include <asm/io.h> Loading Loading @@ -169,7 +170,7 @@ static int rackmac; static s32 dimm_output_clamp; static int fcu_rpm_shift; static int fcu_tickle_ticks; static DECLARE_MUTEX(driver_lock); static DEFINE_MUTEX(driver_lock); /* * We have 3 types of CPU PID control. One is "split" old style control Loading Loading @@ -729,9 +730,9 @@ static void fetch_cpu_pumps_minmax(void) static ssize_t show_##name(struct device *dev, struct device_attribute *attr, char *buf) \ { \ ssize_t r; \ down(&driver_lock); \ mutex_lock(&driver_lock); \ r = sprintf(buf, "%d.%03d", FIX32TOPRINT(data)); \ up(&driver_lock); \ mutex_unlock(&driver_lock); \ return r; \ } #define BUILD_SHOW_FUNC_INT(name, data) \ Loading Loading @@ -1803,11 +1804,11 @@ static int main_control_loop(void *x) { DBG("main_control_loop started\n"); down(&driver_lock); mutex_lock(&driver_lock); if (start_fcu() < 0) { printk(KERN_ERR "kfand: failed to start FCU\n"); up(&driver_lock); mutex_unlock(&driver_lock); goto out; } Loading @@ -1822,14 +1823,14 @@ static int main_control_loop(void *x) fcu_tickle_ticks = FCU_TICKLE_TICKS; up(&driver_lock); mutex_unlock(&driver_lock); while (state == state_attached) { unsigned long elapsed, start; start = jiffies; down(&driver_lock); mutex_lock(&driver_lock); /* Tickle the FCU just in case */ if (--fcu_tickle_ticks < 0) { Loading Loading @@ -1861,7 +1862,7 @@ static int main_control_loop(void *x) do_monitor_slots(&slots_state); else do_monitor_drives(&drives_state); up(&driver_lock); mutex_unlock(&driver_lock); if (critical_state == 1) { printk(KERN_WARNING "Temperature control detected a critical condition\n"); Loading Loading @@ -2019,13 +2020,13 @@ static void detach_fcu(void) */ static int therm_pm72_attach(struct i2c_adapter *adapter) { down(&driver_lock); mutex_lock(&driver_lock); /* Check state */ if (state == state_detached) state = state_attaching; if (state != state_attaching) { up(&driver_lock); mutex_unlock(&driver_lock); return 0; } Loading Loading @@ -2054,7 +2055,7 @@ static int therm_pm72_attach(struct i2c_adapter *adapter) state = state_attached; start_control_loops(); } up(&driver_lock); mutex_unlock(&driver_lock); return 0; } Loading @@ -2065,16 +2066,16 @@ static int therm_pm72_attach(struct i2c_adapter *adapter) */ static int therm_pm72_detach(struct i2c_adapter *adapter) { down(&driver_lock); mutex_lock(&driver_lock); if (state != state_detached) state = state_detaching; /* Stop control loops if any */ DBG("stopping control loops\n"); up(&driver_lock); mutex_unlock(&driver_lock); stop_control_loops(); down(&driver_lock); mutex_lock(&driver_lock); if (u3_0 != NULL && !strcmp(adapter->name, "u3 0")) { DBG("lost U3-0, disposing control loops\n"); Loading @@ -2090,7 +2091,7 @@ static int therm_pm72_detach(struct i2c_adapter *adapter) if (u3_0 == NULL && u3_1 == NULL) state = state_detached; up(&driver_lock); mutex_unlock(&driver_lock); return 0; } Loading Loading
drivers/macintosh/therm_pm72.c +16 −15 Original line number Diff line number Diff line Loading @@ -122,6 +122,7 @@ #include <linux/kmod.h> #include <linux/i2c.h> #include <linux/kthread.h> #include <linux/mutex.h> #include <asm/prom.h> #include <asm/machdep.h> #include <asm/io.h> Loading Loading @@ -169,7 +170,7 @@ static int rackmac; static s32 dimm_output_clamp; static int fcu_rpm_shift; static int fcu_tickle_ticks; static DECLARE_MUTEX(driver_lock); static DEFINE_MUTEX(driver_lock); /* * We have 3 types of CPU PID control. One is "split" old style control Loading Loading @@ -729,9 +730,9 @@ static void fetch_cpu_pumps_minmax(void) static ssize_t show_##name(struct device *dev, struct device_attribute *attr, char *buf) \ { \ ssize_t r; \ down(&driver_lock); \ mutex_lock(&driver_lock); \ r = sprintf(buf, "%d.%03d", FIX32TOPRINT(data)); \ up(&driver_lock); \ mutex_unlock(&driver_lock); \ return r; \ } #define BUILD_SHOW_FUNC_INT(name, data) \ Loading Loading @@ -1803,11 +1804,11 @@ static int main_control_loop(void *x) { DBG("main_control_loop started\n"); down(&driver_lock); mutex_lock(&driver_lock); if (start_fcu() < 0) { printk(KERN_ERR "kfand: failed to start FCU\n"); up(&driver_lock); mutex_unlock(&driver_lock); goto out; } Loading @@ -1822,14 +1823,14 @@ static int main_control_loop(void *x) fcu_tickle_ticks = FCU_TICKLE_TICKS; up(&driver_lock); mutex_unlock(&driver_lock); while (state == state_attached) { unsigned long elapsed, start; start = jiffies; down(&driver_lock); mutex_lock(&driver_lock); /* Tickle the FCU just in case */ if (--fcu_tickle_ticks < 0) { Loading Loading @@ -1861,7 +1862,7 @@ static int main_control_loop(void *x) do_monitor_slots(&slots_state); else do_monitor_drives(&drives_state); up(&driver_lock); mutex_unlock(&driver_lock); if (critical_state == 1) { printk(KERN_WARNING "Temperature control detected a critical condition\n"); Loading Loading @@ -2019,13 +2020,13 @@ static void detach_fcu(void) */ static int therm_pm72_attach(struct i2c_adapter *adapter) { down(&driver_lock); mutex_lock(&driver_lock); /* Check state */ if (state == state_detached) state = state_attaching; if (state != state_attaching) { up(&driver_lock); mutex_unlock(&driver_lock); return 0; } Loading Loading @@ -2054,7 +2055,7 @@ static int therm_pm72_attach(struct i2c_adapter *adapter) state = state_attached; start_control_loops(); } up(&driver_lock); mutex_unlock(&driver_lock); return 0; } Loading @@ -2065,16 +2066,16 @@ static int therm_pm72_attach(struct i2c_adapter *adapter) */ static int therm_pm72_detach(struct i2c_adapter *adapter) { down(&driver_lock); mutex_lock(&driver_lock); if (state != state_detached) state = state_detaching; /* Stop control loops if any */ DBG("stopping control loops\n"); up(&driver_lock); mutex_unlock(&driver_lock); stop_control_loops(); down(&driver_lock); mutex_lock(&driver_lock); if (u3_0 != NULL && !strcmp(adapter->name, "u3 0")) { DBG("lost U3-0, disposing control loops\n"); Loading @@ -2090,7 +2091,7 @@ static int therm_pm72_detach(struct i2c_adapter *adapter) if (u3_0 == NULL && u3_1 == NULL) state = state_detached; up(&driver_lock); mutex_unlock(&driver_lock); return 0; } Loading