···104104 length, values);105105}106106107107+static int rx8025_check_validity(struct device *dev)108108+{109109+ struct rx8025_data *rx8025 = dev_get_drvdata(dev);110110+ int ctrl2;111111+112112+ ctrl2 = rx8025_read_reg(rx8025->client, RX8025_REG_CTRL2);113113+ if (ctrl2 < 0)114114+ return ctrl2;115115+116116+ if (ctrl2 & RX8025_BIT_CTRL2_VDET)117117+ dev_warn(dev, "power voltage drop detected\n");118118+119119+ if (ctrl2 & RX8025_BIT_CTRL2_PON) {120120+ dev_warn(dev, "power-on reset detected, date is invalid\n");121121+ return -EINVAL;122122+ }123123+124124+ if (!(ctrl2 & RX8025_BIT_CTRL2_XST)) {125125+ dev_warn(dev, "crystal stopped, date is invalid\n");126126+ return -EINVAL;127127+ }128128+129129+ return 0;130130+}131131+107132static int rx8025_reset_validity(struct i2c_client *client)108133{109134 int ctrl2 = rx8025_read_reg(client, RX8025_REG_CTRL2);···179154{180155 struct rx8025_data *rx8025 = dev_get_drvdata(dev);181156 u8 date[7];182182- int ctrl, err;157157+ int err;183158184184- ctrl = rx8025_read_reg(rx8025->client, RX8025_REG_CTRL2);185185- if (ctrl < 0)186186- return ctrl;187187-188188- if (ctrl & RX8025_BIT_CTRL2_PON) {189189- dev_warn(dev, "power-on reset detected, date is invalid\n");190190- return -EINVAL;191191- }192192-193193- if (!(ctrl & RX8025_BIT_CTRL2_XST)) {194194- dev_warn(dev, "crystal stopped, date is invalid\n");195195- return -EINVAL;196196- }159159+ err = rx8025_check_validity(dev);160160+ if (err)161161+ return err;197162198163 err = rx8025_read_regs(rx8025->client, RX8025_REG_SEC, 7, date);199164 if (err)···264249265250 /* Keep test bit zero ! */266251 rx8025->ctrl1 = ctrl[0] & ~RX8025_BIT_CTRL1_TEST;267267-268268- if (ctrl[1] & RX8025_BIT_CTRL2_PON) {269269- dev_warn(&client->dev, "power-on reset was detected, "270270- "you may have to readjust the clock\n");271271- }272272-273273- if (ctrl[1] & RX8025_BIT_CTRL2_VDET) {274274- dev_warn(&client->dev, "a power voltage drop was detected, "275275- "you may have to readjust the clock\n");276276- }277277-278278- if (!(ctrl[1] & RX8025_BIT_CTRL2_XST)) {279279- dev_warn(&client->dev, "Oscillation stop was detected,"280280- "you may have to readjust the clock\n");281281- }282252283253 if (ctrl[1] & (RX8025_BIT_CTRL2_DAFG | RX8025_BIT_CTRL2_WAFG)) {284254 dev_warn(&client->dev, "Alarm was detected\n");