aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc/rtc-max6902.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/rtc/rtc-max6902.c')
-rw-r--r--drivers/rtc/rtc-max6902.c29
1 files changed, 13 insertions, 16 deletions
diff --git a/drivers/rtc/rtc-max6902.c b/drivers/rtc/rtc-max6902.c
index 7d0bf698b79e..e3aea00c3145 100644
--- a/drivers/rtc/rtc-max6902.c
+++ b/drivers/rtc/rtc-max6902.c
@@ -93,24 +93,24 @@ static int max6902_set_time(struct device *dev, struct rtc_time *dt)
93 dt->tm_year = dt->tm_year + 1900; 93 dt->tm_year = dt->tm_year + 1900;
94 94
95 /* Remove write protection */ 95 /* Remove write protection */
96 max6902_set_reg(dev, 0xF, 0); 96 max6902_set_reg(dev, MAX6902_REG_CONTROL, 0);
97 97
98 max6902_set_reg(dev, 0x01, bin2bcd(dt->tm_sec)); 98 max6902_set_reg(dev, MAX6902_REG_SECONDS, bin2bcd(dt->tm_sec));
99 max6902_set_reg(dev, 0x03, bin2bcd(dt->tm_min)); 99 max6902_set_reg(dev, MAX6902_REG_MINUTES, bin2bcd(dt->tm_min));
100 max6902_set_reg(dev, 0x05, bin2bcd(dt->tm_hour)); 100 max6902_set_reg(dev, MAX6902_REG_HOURS, bin2bcd(dt->tm_hour));
101 101
102 max6902_set_reg(dev, 0x07, bin2bcd(dt->tm_mday)); 102 max6902_set_reg(dev, MAX6902_REG_DATE, bin2bcd(dt->tm_mday));
103 max6902_set_reg(dev, 0x09, bin2bcd(dt->tm_mon + 1)); 103 max6902_set_reg(dev, MAX6902_REG_MONTH, bin2bcd(dt->tm_mon + 1));
104 max6902_set_reg(dev, 0x0B, bin2bcd(dt->tm_wday)); 104 max6902_set_reg(dev, MAX6902_REG_DAY, bin2bcd(dt->tm_wday));
105 max6902_set_reg(dev, 0x0D, bin2bcd(dt->tm_year % 100)); 105 max6902_set_reg(dev, MAX6902_REG_YEAR, bin2bcd(dt->tm_year % 100));
106 max6902_set_reg(dev, 0x13, bin2bcd(dt->tm_year / 100)); 106 max6902_set_reg(dev, MAX6902_REG_CENTURY, bin2bcd(dt->tm_year / 100));
107 107
108 /* Compulab used a delay here. However, the datasheet 108 /* Compulab used a delay here. However, the datasheet
109 * does not mention a delay being required anywhere... */ 109 * does not mention a delay being required anywhere... */
110 /* delay(2000); */ 110 /* delay(2000); */
111 111
112 /* Write protect */ 112 /* Write protect */
113 max6902_set_reg(dev, 0xF, 0x80); 113 max6902_set_reg(dev, MAX6902_REG_CONTROL, 0x80);
114 114
115 return 0; 115 return 0;
116} 116}
@@ -134,20 +134,17 @@ static int max6902_probe(struct spi_device *spi)
134 if (res != 0) 134 if (res != 0)
135 return res; 135 return res;
136 136
137 rtc = rtc_device_register("max6902", 137 rtc = devm_rtc_device_register(&spi->dev, "max6902",
138 &spi->dev, &max6902_rtc_ops, THIS_MODULE); 138 &max6902_rtc_ops, THIS_MODULE);
139 if (IS_ERR(rtc)) 139 if (IS_ERR(rtc))
140 return PTR_ERR(rtc); 140 return PTR_ERR(rtc);
141 141
142 dev_set_drvdata(&spi->dev, rtc); 142 spi_set_drvdata(spi, rtc);
143 return 0; 143 return 0;
144} 144}
145 145
146static int max6902_remove(struct spi_device *spi) 146static int max6902_remove(struct spi_device *spi)
147{ 147{
148 struct rtc_device *rtc = dev_get_drvdata(&spi->dev);
149
150 rtc_device_unregister(rtc);
151 return 0; 148 return 0;
152} 149}
153 150