projects
/
linux-2.6-microblaze.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag '6.9-rc-smb3-client-fixes-part2' of git://git.samba.org/sfrench/cifs-2.6
[linux-2.6-microblaze.git]
/
drivers
/
hwtracing
/
coresight
/
coresight-stm.c
diff --git
a/drivers/hwtracing/coresight/coresight-stm.c
b/drivers/hwtracing/coresight/coresight-stm.c
index
a1c27c9
..
974d37e
100644
(file)
--- a/
drivers/hwtracing/coresight/coresight-stm.c
+++ b/
drivers/hwtracing/coresight/coresight-stm.c
@@
-119,7
+119,6
@@
DEFINE_CORESIGHT_DEVLIST(stm_devs, "stm");
* @spinlock: only one at a time pls.
* @chs: the channels accociated to this STM.
* @stm: structure associated to the generic STM interface.
* @spinlock: only one at a time pls.
* @chs: the channels accociated to this STM.
* @stm: structure associated to the generic STM interface.
- * @mode: this tracer's mode (enum cs_mode), i.e sysFS, or disabled.
* @traceid: value of the current ID for this component.
* @write_bytes: Maximus bytes this STM can write at a time.
* @stmsper: settings for register STMSPER.
* @traceid: value of the current ID for this component.
* @write_bytes: Maximus bytes this STM can write at a time.
* @stmsper: settings for register STMSPER.
@@
-136,7
+135,6
@@
struct stm_drvdata {
spinlock_t spinlock;
struct channel_space chs;
struct stm_data stm;
spinlock_t spinlock;
struct channel_space chs;
struct stm_data stm;
- local_t mode;
u8 traceid;
u32 write_bytes;
u32 stmsper;
u8 traceid;
u32 write_bytes;
u32 stmsper;
@@
-195,17
+193,15
@@
static void stm_enable_hw(struct stm_drvdata *drvdata)
static int stm_enable(struct coresight_device *csdev, struct perf_event *event,
enum cs_mode mode)
{
static int stm_enable(struct coresight_device *csdev, struct perf_event *event,
enum cs_mode mode)
{
- u32 val;
struct stm_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
if (mode != CS_MODE_SYSFS)
return -EINVAL;
struct stm_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
if (mode != CS_MODE_SYSFS)
return -EINVAL;
- val = local_cmpxchg(&drvdata->mode, CS_MODE_DISABLED, mode);
-
- /* Someone is already using the tracer */
- if (val)
+ if (!coresight_take_mode(csdev, mode)) {
+ /* Someone is already using the tracer */
return -EBUSY;
return -EBUSY;
+ }
pm_runtime_get_sync(csdev->dev.parent);
pm_runtime_get_sync(csdev->dev.parent);
@@
-266,7
+262,7
@@
static void stm_disable(struct coresight_device *csdev,
* change its status. As such we can read the status here without
* fearing it will change under us.
*/
* change its status. As such we can read the status here without
* fearing it will change under us.
*/
- if (
local_read(&drvdata->mode
) == CS_MODE_SYSFS) {
+ if (
coresight_get_mode(csdev
) == CS_MODE_SYSFS) {
spin_lock(&drvdata->spinlock);
stm_disable_hw(drvdata);
spin_unlock(&drvdata->spinlock);
spin_lock(&drvdata->spinlock);
stm_disable_hw(drvdata);
spin_unlock(&drvdata->spinlock);
@@
-276,7
+272,7
@@
static void stm_disable(struct coresight_device *csdev,
pm_runtime_put(csdev->dev.parent);
pm_runtime_put(csdev->dev.parent);
-
local_set(&drvdata->mode
, CS_MODE_DISABLED);
+
coresight_set_mode(csdev
, CS_MODE_DISABLED);
dev_dbg(&csdev->dev, "STM tracing disabled\n");
}
}
dev_dbg(&csdev->dev, "STM tracing disabled\n");
}
}
@@
-334,7
+330,7
@@
static int stm_generic_link(struct stm_data *stm_data,
if (!drvdata || !drvdata->csdev)
return -EINVAL;
if (!drvdata || !drvdata->csdev)
return -EINVAL;
- return coresight_enable(drvdata->csdev);
+ return coresight_enable
_sysfs
(drvdata->csdev);
}
static void stm_generic_unlink(struct stm_data *stm_data,
}
static void stm_generic_unlink(struct stm_data *stm_data,
@@
-345,7
+341,7
@@
static void stm_generic_unlink(struct stm_data *stm_data,
if (!drvdata || !drvdata->csdev)
return;
if (!drvdata || !drvdata->csdev)
return;
- coresight_disable(drvdata->csdev);
+ coresight_disable
_sysfs
(drvdata->csdev);
}
static phys_addr_t
}
static phys_addr_t
@@
-373,7
+369,7
@@
static long stm_generic_set_options(struct stm_data *stm_data,
{
struct stm_drvdata *drvdata = container_of(stm_data,
struct stm_drvdata, stm);
{
struct stm_drvdata *drvdata = container_of(stm_data,
struct stm_drvdata, stm);
- if (!(drvdata &&
local_read(&drvdata->mode
)))
+ if (!(drvdata &&
coresight_get_mode(drvdata->csdev
)))
return -EINVAL;
if (channel >= drvdata->numsp)
return -EINVAL;
if (channel >= drvdata->numsp)
@@
-408,7
+404,7
@@
static ssize_t notrace stm_generic_packet(struct stm_data *stm_data,
struct stm_drvdata, stm);
unsigned int stm_flags;
struct stm_drvdata, stm);
unsigned int stm_flags;
- if (!(drvdata &&
local_read(&drvdata->mode
)))
+ if (!(drvdata &&
coresight_get_mode(drvdata->csdev
)))
return -EACCES;
if (channel >= drvdata->numsp)
return -EACCES;
if (channel >= drvdata->numsp)
@@
-515,7
+511,7
@@
static ssize_t port_select_show(struct device *dev,
struct stm_drvdata *drvdata = dev_get_drvdata(dev->parent);
unsigned long val;
struct stm_drvdata *drvdata = dev_get_drvdata(dev->parent);
unsigned long val;
- if (!
local_read(&drvdata->mode
)) {
+ if (!
coresight_get_mode(drvdata->csdev
)) {
val = drvdata->stmspscr;
} else {
spin_lock(&drvdata->spinlock);
val = drvdata->stmspscr;
} else {
spin_lock(&drvdata->spinlock);
@@
-541,7
+537,7
@@
static ssize_t port_select_store(struct device *dev,
spin_lock(&drvdata->spinlock);
drvdata->stmspscr = val;
spin_lock(&drvdata->spinlock);
drvdata->stmspscr = val;
- if (
local_read(&drvdata->mode
)) {
+ if (
coresight_get_mode(drvdata->csdev
)) {
CS_UNLOCK(drvdata->base);
/* Process as per ARM's TRM recommendation */
stmsper = readl_relaxed(drvdata->base + STMSPER);
CS_UNLOCK(drvdata->base);
/* Process as per ARM's TRM recommendation */
stmsper = readl_relaxed(drvdata->base + STMSPER);
@@
-562,7
+558,7
@@
static ssize_t port_enable_show(struct device *dev,
struct stm_drvdata *drvdata = dev_get_drvdata(dev->parent);
unsigned long val;
struct stm_drvdata *drvdata = dev_get_drvdata(dev->parent);
unsigned long val;
- if (!
local_read(&drvdata->mode
)) {
+ if (!
coresight_get_mode(drvdata->csdev
)) {
val = drvdata->stmsper;
} else {
spin_lock(&drvdata->spinlock);
val = drvdata->stmsper;
} else {
spin_lock(&drvdata->spinlock);
@@
-588,7
+584,7
@@
static ssize_t port_enable_store(struct device *dev,
spin_lock(&drvdata->spinlock);
drvdata->stmsper = val;
spin_lock(&drvdata->spinlock);
drvdata->stmsper = val;
- if (
local_read(&drvdata->mode
)) {
+ if (
coresight_get_mode(drvdata->csdev
)) {
CS_UNLOCK(drvdata->base);
writel_relaxed(drvdata->stmsper, drvdata->base + STMSPER);
CS_LOCK(drvdata->base);
CS_UNLOCK(drvdata->base);
writel_relaxed(drvdata->stmsper, drvdata->base + STMSPER);
CS_LOCK(drvdata->base);
@@
-950,7
+946,7
@@
static const struct dev_pm_ops stm_dev_pm_ops = {
static const struct amba_id stm_ids[] = {
CS_AMBA_ID_DATA(0x000bb962, "STM32"),
CS_AMBA_ID_DATA(0x000bb963, "STM500"),
static const struct amba_id stm_ids[] = {
CS_AMBA_ID_DATA(0x000bb962, "STM32"),
CS_AMBA_ID_DATA(0x000bb963, "STM500"),
- { 0, 0},
+ { 0, 0
, NULL
},
};
MODULE_DEVICE_TABLE(amba, stm_ids);
};
MODULE_DEVICE_TABLE(amba, stm_ids);