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 | ||
