diff options
Diffstat (limited to 'drivers/rtc/rtc-max6902.c')
-rw-r--r-- | drivers/rtc/rtc-max6902.c | 29 |
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 | ||
146 | static int max6902_remove(struct spi_device *spi) | 146 | static 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 | ||