Commit 8dbcc432 authored by Dmitry Torokhov's avatar Dmitry Torokhov

Input: tsc2005 - hide selftest attribute if we can't reset

If implementation to perform self-test/reset has not been provided by the
platform code hide 'selftest' sysfs attribute instead of returning error
when someone tries to use it.
Tested-by: default avatarAaro Koskinen <aaro.koskinen@nokia.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 99bb892d
...@@ -411,13 +411,6 @@ static ssize_t tsc2005_selftest_show(struct device *dev, ...@@ -411,13 +411,6 @@ static ssize_t tsc2005_selftest_show(struct device *dev,
u16 temp_high_test; u16 temp_high_test;
unsigned int result; unsigned int result;
if (!ts->set_reset) {
dev_warn(&ts->spi->dev,
"unable to selftest: no reset function\n");
result = 0;
goto out;
}
mutex_lock(&ts->mutex); mutex_lock(&ts->mutex);
/* /*
...@@ -451,11 +444,38 @@ static ssize_t tsc2005_selftest_show(struct device *dev, ...@@ -451,11 +444,38 @@ static ssize_t tsc2005_selftest_show(struct device *dev,
mutex_unlock(&ts->mutex); mutex_unlock(&ts->mutex);
out:
return sprintf(buf, "%u\n", result); return sprintf(buf, "%u\n", result);
} }
static DEVICE_ATTR(selftest, S_IRUGO, tsc2005_selftest_show, NULL); static DEVICE_ATTR(selftest, S_IRUGO, tsc2005_selftest_show, NULL);
static struct attribute *tsc2005_attrs[] = {
&dev_attr_disable.attr,
&dev_attr_selftest.attr,
NULL
};
static mode_t tsc2005_attr_is_visible(struct kobject *kobj,
struct attribute *attr, int n)
{
struct device *dev = container_of(kobj, struct device, kobj);
struct spi_device *spi = to_spi_device(dev);
struct tsc2005 *ts = spi_get_drvdata(spi);
mode_t mode = attr->mode;
if (attr == &dev_attr_selftest.attr) {
if (!ts->set_reset)
mode = 0;
}
return mode;
}
static const struct attribute_group tsc2005_attr_group = {
.is_visible = tsc2005_attr_is_visible,
.attrs = tsc2005_attrs,
};
static void tsc2005_esd_timer(unsigned long data) static void tsc2005_esd_timer(unsigned long data)
{ {
struct tsc2005 *ts = (struct tsc2005 *)data; struct tsc2005 *ts = (struct tsc2005 *)data;
...@@ -495,16 +515,6 @@ static void tsc2005_esd_work(struct work_struct *work) ...@@ -495,16 +515,6 @@ static void tsc2005_esd_work(struct work_struct *work)
mutex_unlock(&ts->mutex); mutex_unlock(&ts->mutex);
} }
static struct attribute *tsc2005_attrs[] = {
&dev_attr_disable.attr,
&dev_attr_selftest.attr,
NULL
};
static struct attribute_group tsc2005_attr_group = {
.attrs = tsc2005_attrs,
};
static void __devinit tsc2005_setup_spi_xfer(struct tsc2005 *ts) static void __devinit tsc2005_setup_spi_xfer(struct tsc2005 *ts)
{ {
tsc2005_setup_read(&ts->spi_x, TSC2005_REG_X, 0); tsc2005_setup_read(&ts->spi_x, TSC2005_REG_X, 0);
......
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