Lines Matching refs:info
62 struct pm860x_rtc_info *info = (struct pm860x_rtc_info *)data; in rtc_update_handler() local
66 pm860x_set_bits(info->i2c, PM8607_RTC1, mask | ALARM_EN, mask); in rtc_update_handler()
67 rtc_update_irq(info->rtc_dev, 1, RTC_AF); in rtc_update_handler()
73 struct pm860x_rtc_info *info = dev_get_drvdata(dev); in pm860x_rtc_alarm_irq_enable() local
76 pm860x_set_bits(info->i2c, PM8607_RTC1, ALARM_EN, ALARM_EN); in pm860x_rtc_alarm_irq_enable()
78 pm860x_set_bits(info->i2c, PM8607_RTC1, ALARM_EN, 0); in pm860x_rtc_alarm_irq_enable()
111 struct pm860x_rtc_info *info = dev_get_drvdata(dev); in pm860x_rtc_read_time() local
115 pm860x_page_bulk_read(info->i2c, REG0_ADDR, 8, buf); in pm860x_rtc_read_time()
116 dev_dbg(info->dev, "%x-%x-%x-%x-%x-%x-%x-%x\n", buf[0], buf[1], in pm860x_rtc_read_time()
121 pm860x_bulk_read(info->i2c, PM8607_RTC_COUNTER1, 4, buf); in pm860x_rtc_read_time()
124 dev_dbg(info->dev, "get base:0x%lx, RO count:0x%lx, ticks:0x%lx\n", in pm860x_rtc_read_time()
134 struct pm860x_rtc_info *info = dev_get_drvdata(dev); in pm860x_rtc_set_time() local
139 dev_dbg(info->dev, "Set time %d out of range. " in pm860x_rtc_set_time()
147 pm860x_bulk_read(info->i2c, PM8607_RTC_COUNTER1, 4, buf); in pm860x_rtc_set_time()
150 dev_dbg(info->dev, "set base:0x%lx, RO count:0x%lx, ticks:0x%lx\n", in pm860x_rtc_set_time()
153 pm860x_page_reg_write(info->i2c, REG0_DATA, (base >> 24) & 0xFF); in pm860x_rtc_set_time()
154 pm860x_page_reg_write(info->i2c, REG1_DATA, (base >> 16) & 0xFF); in pm860x_rtc_set_time()
155 pm860x_page_reg_write(info->i2c, REG2_DATA, (base >> 8) & 0xFF); in pm860x_rtc_set_time()
156 pm860x_page_reg_write(info->i2c, REG3_DATA, base & 0xFF); in pm860x_rtc_set_time()
158 if (info->sync) in pm860x_rtc_set_time()
159 info->sync(ticks); in pm860x_rtc_set_time()
165 struct pm860x_rtc_info *info = dev_get_drvdata(dev); in pm860x_rtc_read_alarm() local
170 pm860x_page_bulk_read(info->i2c, REG0_ADDR, 8, buf); in pm860x_rtc_read_alarm()
171 dev_dbg(info->dev, "%x-%x-%x-%x-%x-%x-%x-%x\n", buf[0], buf[1], in pm860x_rtc_read_alarm()
175 pm860x_bulk_read(info->i2c, PM8607_RTC_EXPIRE1, 4, buf); in pm860x_rtc_read_alarm()
178 dev_dbg(info->dev, "get base:0x%lx, RO count:0x%lx, ticks:0x%lx\n", in pm860x_rtc_read_alarm()
182 ret = pm860x_reg_read(info->i2c, PM8607_RTC1); in pm860x_rtc_read_alarm()
190 struct pm860x_rtc_info *info = dev_get_drvdata(dev); in pm860x_rtc_set_alarm() local
196 pm860x_set_bits(info->i2c, PM8607_RTC1, ALARM_EN, 0); in pm860x_rtc_set_alarm()
198 pm860x_page_bulk_read(info->i2c, REG0_ADDR, 8, buf); in pm860x_rtc_set_alarm()
199 dev_dbg(info->dev, "%x-%x-%x-%x-%x-%x-%x-%x\n", buf[0], buf[1], in pm860x_rtc_set_alarm()
204 pm860x_bulk_read(info->i2c, PM8607_RTC_COUNTER1, 4, buf); in pm860x_rtc_set_alarm()
207 dev_dbg(info->dev, "get base:0x%lx, RO count:0x%lx, ticks:0x%lx\n", in pm860x_rtc_set_alarm()
220 pm860x_bulk_write(info->i2c, PM8607_RTC_EXPIRE1, 4, buf); in pm860x_rtc_set_alarm()
223 pm860x_set_bits(info->i2c, PM8607_RTC1, mask, mask); in pm860x_rtc_set_alarm()
226 pm860x_set_bits(info->i2c, PM8607_RTC1, mask, in pm860x_rtc_set_alarm()
243 struct pm860x_rtc_info *info = container_of(work, in calibrate_vrtc_work() local
251 pm860x_bulk_read(info->i2c, REG_VRTC_MEAS1, 2, buf); in calibrate_vrtc_work()
257 vrtc_set = 2700 + (info->vrtc & 0x3) * 200; in calibrate_vrtc_work()
258 dev_dbg(info->dev, "mean:%d, vrtc_set:%d\n", mean, vrtc_set); in calibrate_vrtc_work()
260 sum = pm860x_reg_read(info->i2c, PM8607_RTC_MISC1); in calibrate_vrtc_work()
267 pm860x_reg_write(info->i2c, PM8607_RTC_MISC1, data); in calibrate_vrtc_work()
273 pm860x_reg_write(info->i2c, PM8607_RTC_MISC1, data); in calibrate_vrtc_work()
276 dev_dbg(info->dev, "set 0x%x to RTC_MISC1\n", data); in calibrate_vrtc_work()
278 schedule_delayed_work(&info->calib_work, VRTC_CALIB_INTERVAL); in calibrate_vrtc_work()
282 pm860x_set_bits(info->i2c, PM8607_MEAS_EN2, MEAS2_VRTC, 0); in calibrate_vrtc_work()
283 dev_dbg(info->dev, "finish VRTC calibration\n"); in calibrate_vrtc_work()
290 struct pm860x_rtc_info *info) in pm860x_rtc_dt_init() argument
301 ret = of_property_read_u32(np, "marvell,88pm860x-vrtc", &info->vrtc); in pm860x_rtc_dt_init()
303 info->vrtc = 0; in pm860x_rtc_dt_init()
315 struct pm860x_rtc_info *info; in pm860x_rtc_probe() local
322 info = devm_kzalloc(&pdev->dev, sizeof(struct pm860x_rtc_info), in pm860x_rtc_probe()
324 if (!info) in pm860x_rtc_probe()
326 info->irq = platform_get_irq(pdev, 0); in pm860x_rtc_probe()
327 if (info->irq < 0) { in pm860x_rtc_probe()
329 return info->irq; in pm860x_rtc_probe()
332 info->chip = chip; in pm860x_rtc_probe()
333 info->i2c = (chip->id == CHIP_PM8607) ? chip->client : chip->companion; in pm860x_rtc_probe()
334 info->dev = &pdev->dev; in pm860x_rtc_probe()
335 dev_set_drvdata(&pdev->dev, info); in pm860x_rtc_probe()
337 ret = devm_request_threaded_irq(&pdev->dev, info->irq, NULL, in pm860x_rtc_probe()
339 info); in pm860x_rtc_probe()
342 info->irq, ret); in pm860x_rtc_probe()
347 pm860x_page_reg_write(info->i2c, REG0_ADDR, REG0_DATA); in pm860x_rtc_probe()
348 pm860x_page_reg_write(info->i2c, REG1_ADDR, REG1_DATA); in pm860x_rtc_probe()
349 pm860x_page_reg_write(info->i2c, REG2_ADDR, REG2_DATA); in pm860x_rtc_probe()
350 pm860x_page_reg_write(info->i2c, REG3_ADDR, REG3_DATA); in pm860x_rtc_probe()
371 if (pm860x_rtc_dt_init(pdev, info)) { in pm860x_rtc_probe()
374 info->sync = pdata->sync; in pm860x_rtc_probe()
378 info->rtc_dev = devm_rtc_device_register(&pdev->dev, "88pm860x-rtc", in pm860x_rtc_probe()
380 ret = PTR_ERR(info->rtc_dev); in pm860x_rtc_probe()
381 if (IS_ERR(info->rtc_dev)) { in pm860x_rtc_probe()
390 pm860x_set_bits(info->i2c, PM8607_RTC1, RTC1_USE_XO, RTC1_USE_XO); in pm860x_rtc_probe()
394 if (pm860x_rtc_dt_init(pdev, info)) { in pm860x_rtc_probe()
396 info->vrtc = pdata->vrtc & 0x3; in pm860x_rtc_probe()
398 info->vrtc = 1; in pm860x_rtc_probe()
400 pm860x_set_bits(info->i2c, PM8607_MEAS_EN2, MEAS2_VRTC, MEAS2_VRTC); in pm860x_rtc_probe()
403 INIT_DELAYED_WORK(&info->calib_work, calibrate_vrtc_work); in pm860x_rtc_probe()
404 schedule_delayed_work(&info->calib_work, VRTC_CALIB_INTERVAL); in pm860x_rtc_probe()
414 struct pm860x_rtc_info *info = platform_get_drvdata(pdev); in pm860x_rtc_remove() local
419 pm860x_set_bits(info->i2c, PM8607_MEAS_EN2, MEAS2_VRTC, 0); in pm860x_rtc_remove()