* 1970...2069.
         */
        int c_polarity; /* 0: MO_C=1 means 19xx, otherwise MO_C=1 means 20xx */
-       int voltage_low; /* incicates if a low_voltage was detected */
 
        struct i2c_client *client;
 #ifdef CONFIG_COMMON_CLK
                return err;
 
        if (buf[PCF8563_REG_SC] & PCF8563_SC_LV) {
-               pcf8563->voltage_low = 1;
                dev_err(&client->dev,
                        "low voltage detected, date/time is not reliable.\n");
                return -EINVAL;
 
 static int pcf8563_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long arg)
 {
-       struct pcf8563 *pcf8563 = i2c_get_clientdata(to_i2c_client(dev));
+       struct i2c_client *client = to_i2c_client(dev);
+       int vl, ret;
 
        switch (cmd) {
        case RTC_VL_READ:
-               if (pcf8563->voltage_low)
-                       dev_info(dev, "low voltage detected, date/time is not reliable.\n");
 
-               if (copy_to_user((void __user *)arg, &pcf8563->voltage_low,
-                                       sizeof(int)))
+               ret = i2c_smbus_read_byte_data(client, PCF8563_REG_SC);
+               if (ret < 0)
+                       return ret;
+
+               vl = ret & PCF8563_SC_LV ? 1 : 0;
+
+               if (copy_to_user((void __user *)arg, &vl, sizeof(int)))
                        return -EFAULT;
                return 0;
        default: