Commit 154f3520 authored by Mathieu Poirier's avatar Mathieu Poirier Committed by Greg Kroah-Hartman

coresight: moving coresight_simple_func() to header file

Macro "coresight_simple_func()" can be used by several drivers.
As such making the structure type generic and moving to a
globally available header file.  That way individual drivers
can use the functionality by simply specifying the structure
they need to work with.
Signed-off-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 37fbbdbd
...@@ -1221,26 +1221,19 @@ static struct attribute *coresight_etm_attrs[] = { ...@@ -1221,26 +1221,19 @@ static struct attribute *coresight_etm_attrs[] = {
NULL, NULL,
}; };
#define coresight_simple_func(name, offset) \ #define coresight_etm3x_simple_func(name, offset) \
static ssize_t name##_show(struct device *_dev, \ coresight_simple_func(struct etm_drvdata, name, offset)
struct device_attribute *attr, char *buf) \
{ \ coresight_etm3x_simple_func(etmccr, ETMCCR);
struct etm_drvdata *drvdata = dev_get_drvdata(_dev->parent); \ coresight_etm3x_simple_func(etmccer, ETMCCER);
return scnprintf(buf, PAGE_SIZE, "0x%x\n", \ coresight_etm3x_simple_func(etmscr, ETMSCR);
readl_relaxed(drvdata->base + offset)); \ coresight_etm3x_simple_func(etmidr, ETMIDR);
} \ coresight_etm3x_simple_func(etmcr, ETMCR);
DEVICE_ATTR_RO(name) coresight_etm3x_simple_func(etmtraceidr, ETMTRACEIDR);
coresight_etm3x_simple_func(etmteevr, ETMTEEVR);
coresight_simple_func(etmccr, ETMCCR); coresight_etm3x_simple_func(etmtssvr, ETMTSSCR);
coresight_simple_func(etmccer, ETMCCER); coresight_etm3x_simple_func(etmtecr1, ETMTECR1);
coresight_simple_func(etmscr, ETMSCR); coresight_etm3x_simple_func(etmtecr2, ETMTECR2);
coresight_simple_func(etmidr, ETMIDR);
coresight_simple_func(etmcr, ETMCR);
coresight_simple_func(etmtraceidr, ETMTRACEIDR);
coresight_simple_func(etmteevr, ETMTEEVR);
coresight_simple_func(etmtssvr, ETMTSSCR);
coresight_simple_func(etmtecr1, ETMTECR1);
coresight_simple_func(etmtecr2, ETMTECR2);
static struct attribute *coresight_etm_mgmt_attrs[] = { static struct attribute *coresight_etm_mgmt_attrs[] = {
&dev_attr_etmccr.attr, &dev_attr_etmccr.attr,
......
...@@ -2039,29 +2039,22 @@ static struct attribute *coresight_etmv4_attrs[] = { ...@@ -2039,29 +2039,22 @@ static struct attribute *coresight_etmv4_attrs[] = {
NULL, NULL,
}; };
#define coresight_simple_func(name, offset) \ #define coresight_etm4x_simple_func(name, offset) \
static ssize_t name##_show(struct device *_dev, \ coresight_simple_func(struct etmv4_drvdata, name, offset)
struct device_attribute *attr, char *buf) \
{ \ coresight_etm4x_simple_func(trcoslsr, TRCOSLSR);
struct etmv4_drvdata *drvdata = dev_get_drvdata(_dev->parent); \ coresight_etm4x_simple_func(trcpdcr, TRCPDCR);
return scnprintf(buf, PAGE_SIZE, "0x%x\n", \ coresight_etm4x_simple_func(trcpdsr, TRCPDSR);
readl_relaxed(drvdata->base + offset)); \ coresight_etm4x_simple_func(trclsr, TRCLSR);
} \ coresight_etm4x_simple_func(trcconfig, TRCCONFIGR);
DEVICE_ATTR_RO(name) coresight_etm4x_simple_func(trctraceid, TRCTRACEIDR);
coresight_etm4x_simple_func(trcauthstatus, TRCAUTHSTATUS);
coresight_simple_func(trcoslsr, TRCOSLSR); coresight_etm4x_simple_func(trcdevid, TRCDEVID);
coresight_simple_func(trcpdcr, TRCPDCR); coresight_etm4x_simple_func(trcdevtype, TRCDEVTYPE);
coresight_simple_func(trcpdsr, TRCPDSR); coresight_etm4x_simple_func(trcpidr0, TRCPIDR0);
coresight_simple_func(trclsr, TRCLSR); coresight_etm4x_simple_func(trcpidr1, TRCPIDR1);
coresight_simple_func(trcconfig, TRCCONFIGR); coresight_etm4x_simple_func(trcpidr2, TRCPIDR2);
coresight_simple_func(trctraceid, TRCTRACEIDR); coresight_etm4x_simple_func(trcpidr3, TRCPIDR3);
coresight_simple_func(trcauthstatus, TRCAUTHSTATUS);
coresight_simple_func(trcdevid, TRCDEVID);
coresight_simple_func(trcdevtype, TRCDEVTYPE);
coresight_simple_func(trcpidr0, TRCPIDR0);
coresight_simple_func(trcpidr1, TRCPIDR1);
coresight_simple_func(trcpidr2, TRCPIDR2);
coresight_simple_func(trcpidr3, TRCPIDR3);
static struct attribute *coresight_etmv4_mgmt_attrs[] = { static struct attribute *coresight_etmv4_mgmt_attrs[] = {
&dev_attr_trcoslsr.attr, &dev_attr_trcoslsr.attr,
...@@ -2080,19 +2073,19 @@ static struct attribute *coresight_etmv4_mgmt_attrs[] = { ...@@ -2080,19 +2073,19 @@ static struct attribute *coresight_etmv4_mgmt_attrs[] = {
NULL, NULL,
}; };
coresight_simple_func(trcidr0, TRCIDR0); coresight_etm4x_simple_func(trcidr0, TRCIDR0);
coresight_simple_func(trcidr1, TRCIDR1); coresight_etm4x_simple_func(trcidr1, TRCIDR1);
coresight_simple_func(trcidr2, TRCIDR2); coresight_etm4x_simple_func(trcidr2, TRCIDR2);
coresight_simple_func(trcidr3, TRCIDR3); coresight_etm4x_simple_func(trcidr3, TRCIDR3);
coresight_simple_func(trcidr4, TRCIDR4); coresight_etm4x_simple_func(trcidr4, TRCIDR4);
coresight_simple_func(trcidr5, TRCIDR5); coresight_etm4x_simple_func(trcidr5, TRCIDR5);
/* trcidr[6,7] are reserved */ /* trcidr[6,7] are reserved */
coresight_simple_func(trcidr8, TRCIDR8); coresight_etm4x_simple_func(trcidr8, TRCIDR8);
coresight_simple_func(trcidr9, TRCIDR9); coresight_etm4x_simple_func(trcidr9, TRCIDR9);
coresight_simple_func(trcidr10, TRCIDR10); coresight_etm4x_simple_func(trcidr10, TRCIDR10);
coresight_simple_func(trcidr11, TRCIDR11); coresight_etm4x_simple_func(trcidr11, TRCIDR11);
coresight_simple_func(trcidr12, TRCIDR12); coresight_etm4x_simple_func(trcidr12, TRCIDR12);
coresight_simple_func(trcidr13, TRCIDR13); coresight_etm4x_simple_func(trcidr13, TRCIDR13);
static struct attribute *coresight_etmv4_trcidr_attrs[] = { static struct attribute *coresight_etmv4_trcidr_attrs[] = {
&dev_attr_trcidr0.attr, &dev_attr_trcidr0.attr,
......
...@@ -37,6 +37,16 @@ ...@@ -37,6 +37,16 @@
#define ETM_MODE_EXCL_KERN BIT(30) #define ETM_MODE_EXCL_KERN BIT(30)
#define ETM_MODE_EXCL_USER BIT(31) #define ETM_MODE_EXCL_USER BIT(31)
#define coresight_simple_func(type, name, offset) \
static ssize_t name##_show(struct device *_dev, \
struct device_attribute *attr, char *buf) \
{ \
type *drvdata = dev_get_drvdata(_dev->parent); \
return scnprintf(buf, PAGE_SIZE, "0x%x\n", \
readl_relaxed(drvdata->base + offset)); \
} \
static DEVICE_ATTR_RO(name)
enum cs_mode { enum cs_mode {
CS_MODE_DISABLED, CS_MODE_DISABLED,
CS_MODE_SYSFS, CS_MODE_SYSFS,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment