|
@@ -199,74 +199,6 @@ static struct bin_attribute nvram_attr = {
|
|
|
.size = DS1343_NVRAM_LEN,
|
|
|
};
|
|
|
|
|
|
-static ssize_t ds1343_show_alarmstatus(struct device *dev,
|
|
|
- struct device_attribute *attr, char *buf)
|
|
|
-{
|
|
|
- struct ds1343_priv *priv = dev_get_drvdata(dev);
|
|
|
- int alarmstatus, data;
|
|
|
-
|
|
|
- regmap_read(priv->map, DS1343_CONTROL_REG, &data);
|
|
|
-
|
|
|
- alarmstatus = !!(data & DS1343_A0IE);
|
|
|
-
|
|
|
- if (alarmstatus)
|
|
|
- return sprintf(buf, "enabled\n");
|
|
|
- else
|
|
|
- return sprintf(buf, "disabled\n");
|
|
|
-}
|
|
|
-
|
|
|
-static DEVICE_ATTR(alarm_status, S_IRUGO, ds1343_show_alarmstatus, NULL);
|
|
|
-
|
|
|
-static ssize_t ds1343_show_alarmmode(struct device *dev,
|
|
|
- struct device_attribute *attr, char *buf)
|
|
|
-{
|
|
|
- struct ds1343_priv *priv = dev_get_drvdata(dev);
|
|
|
- int alarm_mode, data;
|
|
|
- char *alarm_str;
|
|
|
-
|
|
|
- regmap_read(priv->map, DS1343_ALM0_SEC_REG, &data);
|
|
|
- alarm_mode = (data & 0x80) >> 4;
|
|
|
-
|
|
|
- regmap_read(priv->map, DS1343_ALM0_MIN_REG, &data);
|
|
|
- alarm_mode |= (data & 0x80) >> 5;
|
|
|
-
|
|
|
- regmap_read(priv->map, DS1343_ALM0_HOUR_REG, &data);
|
|
|
- alarm_mode |= (data & 0x80) >> 6;
|
|
|
-
|
|
|
- regmap_read(priv->map, DS1343_ALM0_DAY_REG, &data);
|
|
|
- alarm_mode |= (data & 0x80) >> 7;
|
|
|
-
|
|
|
- switch (alarm_mode) {
|
|
|
- case 15:
|
|
|
- alarm_str = "each second";
|
|
|
- break;
|
|
|
-
|
|
|
- case 7:
|
|
|
- alarm_str = "seconds match";
|
|
|
- break;
|
|
|
-
|
|
|
- case 3:
|
|
|
- alarm_str = "minutes and seconds match";
|
|
|
- break;
|
|
|
-
|
|
|
- case 1:
|
|
|
- alarm_str = "hours, minutes and seconds match";
|
|
|
- break;
|
|
|
-
|
|
|
- case 0:
|
|
|
- alarm_str = "day, hours, minutes and seconds match";
|
|
|
- break;
|
|
|
-
|
|
|
- default:
|
|
|
- alarm_str = "invalid";
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- return sprintf(buf, "%s\n", alarm_str);
|
|
|
-}
|
|
|
-
|
|
|
-static DEVICE_ATTR(alarm_mode, S_IRUGO, ds1343_show_alarmmode, NULL);
|
|
|
-
|
|
|
static ssize_t ds1343_show_tricklecharger(struct device *dev,
|
|
|
struct device_attribute *attr, char *buf)
|
|
|
{
|
|
@@ -313,7 +245,6 @@ static DEVICE_ATTR(trickle_charger, S_IRUGO, ds1343_show_tricklecharger, NULL);
|
|
|
|
|
|
static int ds1343_sysfs_register(struct device *dev)
|
|
|
{
|
|
|
- struct ds1343_priv *priv = dev_get_drvdata(dev);
|
|
|
int err;
|
|
|
|
|
|
err = device_create_file(dev, &dev_attr_glitch_filter);
|
|
@@ -325,26 +256,9 @@ static int ds1343_sysfs_register(struct device *dev)
|
|
|
goto error1;
|
|
|
|
|
|
err = device_create_bin_file(dev, &nvram_attr);
|
|
|
- if (err)
|
|
|
- goto error2;
|
|
|
-
|
|
|
- if (priv->irq <= 0)
|
|
|
- return err;
|
|
|
-
|
|
|
- err = device_create_file(dev, &dev_attr_alarm_mode);
|
|
|
- if (err)
|
|
|
- goto error3;
|
|
|
-
|
|
|
- err = device_create_file(dev, &dev_attr_alarm_status);
|
|
|
if (!err)
|
|
|
- return err;
|
|
|
-
|
|
|
- device_remove_file(dev, &dev_attr_alarm_mode);
|
|
|
-
|
|
|
-error3:
|
|
|
- device_remove_bin_file(dev, &nvram_attr);
|
|
|
+ return 0;
|
|
|
|
|
|
-error2:
|
|
|
device_remove_file(dev, &dev_attr_trickle_charger);
|
|
|
|
|
|
error1:
|
|
@@ -355,17 +269,9 @@ error1:
|
|
|
|
|
|
static void ds1343_sysfs_unregister(struct device *dev)
|
|
|
{
|
|
|
- struct ds1343_priv *priv = dev_get_drvdata(dev);
|
|
|
-
|
|
|
device_remove_file(dev, &dev_attr_glitch_filter);
|
|
|
device_remove_file(dev, &dev_attr_trickle_charger);
|
|
|
device_remove_bin_file(dev, &nvram_attr);
|
|
|
-
|
|
|
- if (priv->irq <= 0)
|
|
|
- return;
|
|
|
-
|
|
|
- device_remove_file(dev, &dev_attr_alarm_status);
|
|
|
- device_remove_file(dev, &dev_attr_alarm_mode);
|
|
|
}
|
|
|
|
|
|
static int ds1343_read_time(struct device *dev, struct rtc_time *dt)
|