Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 363498
b: refs/heads/master
c: ebf0bd5
h: refs/heads/master
v: v3
  • Loading branch information
Eduardo Valentin authored and Greg Kroah-Hartman committed Mar 15, 2013
1 parent 22dcd7d commit 85cdf48
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1b46f2a239bfa3452179c8f1783f41ad1ff1833c
refs/heads/master: ebf0bd52e657b41341bbfb0cbaabc308bf1c58e9
1 change: 0 additions & 1 deletion trunk/drivers/staging/omap-thermal/TODO
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
List of TODOs (by Eduardo Valentin)

on omap-bandgap.c:
- Rework locking
- Improve driver code by adding usage of regmap-mmio
- Test every exposed API to userland
- Add support to hwmon
Expand Down
18 changes: 10 additions & 8 deletions trunk/drivers/staging/omap-thermal/omap-bandgap.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
#include <linux/platform_device.h>
#include <linux/err.h>
#include <linux/types.h>
#include <linux/mutex.h>
#include <linux/spinlock.h>
#include <linux/reboot.h>
#include <linux/of_device.h>
#include <linux/of_platform.h>
Expand Down Expand Up @@ -170,6 +170,7 @@ static irqreturn_t omap_bandgap_talert_irq_handler(int irq, void *data)
u32 t_hot = 0, t_cold = 0, ctrl;
int i;

spin_lock(&bg_ptr->lock);
for (i = 0; i < bg_ptr->conf->sensor_count; i++) {
tsr = bg_ptr->conf->sensors[i].registers;
ctrl = omap_bandgap_readl(bg_ptr, tsr->bgap_status);
Expand Down Expand Up @@ -208,6 +209,7 @@ static irqreturn_t omap_bandgap_talert_irq_handler(int irq, void *data)
if (bg_ptr->conf->report_temperature)
bg_ptr->conf->report_temperature(bg_ptr, i);
}
spin_unlock(&bg_ptr->lock);

return IRQ_HANDLED;
}
Expand Down Expand Up @@ -502,9 +504,9 @@ int _omap_bandgap_write_threshold(struct omap_bandgap *bg_ptr, int id, int val,
if (ret < 0)
goto exit;

mutex_lock(&bg_ptr->bg_mutex);
spin_lock(&bg_ptr->lock);
omap_bandgap_update_alert_threshold(bg_ptr, id, adc_val, hot);
mutex_unlock(&bg_ptr->bg_mutex);
spin_unlock(&bg_ptr->lock);

exit:
return ret;
Expand Down Expand Up @@ -666,9 +668,9 @@ int omap_bandgap_write_update_interval(struct omap_bandgap *bg_ptr,
return -ENOTSUPP;

interval = interval * bg_ptr->clk_rate / 1000;
mutex_lock(&bg_ptr->bg_mutex);
spin_lock(&bg_ptr->lock);
RMW_BITS(bg_ptr, id, bgap_counter, counter_mask, interval);
mutex_unlock(&bg_ptr->bg_mutex);
spin_unlock(&bg_ptr->lock);

return 0;
}
Expand All @@ -691,9 +693,9 @@ int omap_bandgap_read_temperature(struct omap_bandgap *bg_ptr, int id,
if (ret)
return ret;

mutex_lock(&bg_ptr->bg_mutex);
spin_lock(&bg_ptr->lock);
temp = omap_bandgap_read_temp(bg_ptr, id);
mutex_unlock(&bg_ptr->bg_mutex);
spin_unlock(&bg_ptr->lock);

ret |= omap_bandgap_adc_to_mcelsius(bg_ptr, temp, &temp);
if (ret)
Expand Down Expand Up @@ -1016,7 +1018,7 @@ int omap_bandgap_probe(struct platform_device *pdev)
clk_prepare_enable(bg_ptr->fclock);


mutex_init(&bg_ptr->bg_mutex);
spin_lock_init(&bg_ptr->lock);
bg_ptr->dev = &pdev->dev;
platform_set_drvdata(pdev, bg_ptr);

Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/staging/omap-thermal/omap-bandgap.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
#ifndef __OMAP_BANDGAP_H
#define __OMAP_BANDGAP_H

#include <linux/mutex.h>
#include <linux/spinlock.h>
#include <linux/types.h>
#include <linux/err.h>

Expand Down Expand Up @@ -211,7 +211,7 @@ struct omap_bandgap {
struct omap_bandgap_data *conf;
struct clk *fclock;
struct clk *div_clk;
struct mutex bg_mutex; /* shields this struct */
spinlock_t lock; /* shields this struct */
int irq;
int tshut_gpio;
u32 clk_rate;
Expand Down

0 comments on commit 85cdf48

Please sign in to comment.