mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 21:51:40 +00:00
rtc: pcf2123: remove sysfs register view
Use regmap debugfs register view instead. Signed-off-by: Dylan Howey <Dylan.Howey@tennantco.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
This commit is contained in:
parent
110036b4f4
commit
2372a7d32b
@ -44,7 +44,6 @@
|
||||
#include <linux/rtc.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/sysfs.h>
|
||||
|
||||
/* REGISTERS */
|
||||
#define PCF2123_REG_CTRL1 (0x00) /* Control Register 1 */
|
||||
@ -107,14 +106,8 @@
|
||||
|
||||
static struct spi_driver pcf2123_driver;
|
||||
|
||||
struct pcf2123_sysfs_reg {
|
||||
struct device_attribute attr;
|
||||
char name[2];
|
||||
};
|
||||
|
||||
struct pcf2123_plat_data {
|
||||
struct rtc_device *rtc;
|
||||
struct pcf2123_sysfs_reg regs[16];
|
||||
};
|
||||
|
||||
/*
|
||||
@ -160,52 +153,6 @@ static int pcf2123_write_reg(struct device *dev, u8 reg, u8 val)
|
||||
return pcf2123_write(dev, txbuf, sizeof(txbuf));
|
||||
}
|
||||
|
||||
static ssize_t pcf2123_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buffer)
|
||||
{
|
||||
struct pcf2123_sysfs_reg *r;
|
||||
u8 rxbuf[1];
|
||||
unsigned long reg;
|
||||
int ret;
|
||||
|
||||
r = container_of(attr, struct pcf2123_sysfs_reg, attr);
|
||||
|
||||
ret = kstrtoul(r->name, 16, ®);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = pcf2123_read(dev, reg, rxbuf, 1);
|
||||
if (ret < 0)
|
||||
return -EIO;
|
||||
|
||||
return sprintf(buffer, "0x%x\n", rxbuf[0]);
|
||||
}
|
||||
|
||||
static ssize_t pcf2123_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buffer, size_t count)
|
||||
{
|
||||
struct pcf2123_sysfs_reg *r;
|
||||
unsigned long reg;
|
||||
unsigned long val;
|
||||
|
||||
int ret;
|
||||
|
||||
r = container_of(attr, struct pcf2123_sysfs_reg, attr);
|
||||
|
||||
ret = kstrtoul(r->name, 16, ®);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = kstrtoul(buffer, 10, &val);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = pcf2123_write_reg(dev, reg, val);
|
||||
if (ret < 0)
|
||||
return -EIO;
|
||||
return count;
|
||||
}
|
||||
|
||||
static int pcf2123_read_offset(struct device *dev, long *offset)
|
||||
{
|
||||
int ret;
|
||||
@ -377,7 +324,7 @@ static int pcf2123_probe(struct spi_device *spi)
|
||||
struct rtc_device *rtc;
|
||||
struct rtc_time tm;
|
||||
struct pcf2123_plat_data *pdata;
|
||||
int ret, i;
|
||||
int ret;
|
||||
|
||||
pdata = devm_kzalloc(&spi->dev, sizeof(struct pcf2123_plat_data),
|
||||
GFP_KERNEL);
|
||||
@ -409,47 +356,13 @@ static int pcf2123_probe(struct spi_device *spi)
|
||||
|
||||
pdata->rtc = rtc;
|
||||
|
||||
for (i = 0; i < 16; i++) {
|
||||
sysfs_attr_init(&pdata->regs[i].attr.attr);
|
||||
sprintf(pdata->regs[i].name, "%1x", i);
|
||||
pdata->regs[i].attr.attr.mode = S_IRUGO | S_IWUSR;
|
||||
pdata->regs[i].attr.attr.name = pdata->regs[i].name;
|
||||
pdata->regs[i].attr.show = pcf2123_show;
|
||||
pdata->regs[i].attr.store = pcf2123_store;
|
||||
ret = device_create_file(&spi->dev, &pdata->regs[i].attr);
|
||||
if (ret) {
|
||||
dev_err(&spi->dev, "Unable to create sysfs %s\n",
|
||||
pdata->regs[i].name);
|
||||
goto sysfs_exit;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
sysfs_exit:
|
||||
for (i--; i >= 0; i--)
|
||||
device_remove_file(&spi->dev, &pdata->regs[i].attr);
|
||||
|
||||
kfree_exit:
|
||||
spi->dev.platform_data = NULL;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int pcf2123_remove(struct spi_device *spi)
|
||||
{
|
||||
struct pcf2123_plat_data *pdata = dev_get_platdata(&spi->dev);
|
||||
int i;
|
||||
|
||||
if (pdata) {
|
||||
for (i = 0; i < 16; i++)
|
||||
if (pdata->regs[i].name[0])
|
||||
device_remove_file(&spi->dev,
|
||||
&pdata->regs[i].attr);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
static const struct of_device_id pcf2123_dt_ids[] = {
|
||||
{ .compatible = "nxp,rtc-pcf2123", },
|
||||
@ -465,7 +378,6 @@ static struct spi_driver pcf2123_driver = {
|
||||
.of_match_table = of_match_ptr(pcf2123_dt_ids),
|
||||
},
|
||||
.probe = pcf2123_probe,
|
||||
.remove = pcf2123_remove,
|
||||
};
|
||||
|
||||
module_spi_driver(pcf2123_driver);
|
||||
|
Loading…
Reference in New Issue
Block a user