Lines Matching refs:fm3130

48 struct fm3130 {  struct
70 struct fm3130 *fm3130 = dev_get_drvdata(dev); in fm3130_rtc_mode() local
72 fm3130->regs[FM3130_RTC_CONTROL] = in fm3130_rtc_mode()
73 i2c_smbus_read_byte_data(fm3130->client, FM3130_RTC_CONTROL); in fm3130_rtc_mode()
76 fm3130->regs[FM3130_RTC_CONTROL] &= in fm3130_rtc_mode()
81 fm3130->regs[FM3130_RTC_CONTROL] |= FM3130_RTC_CONTROL_BIT_WRITE; in fm3130_rtc_mode()
84 fm3130->regs[FM3130_RTC_CONTROL] |= FM3130_RTC_CONTROL_BIT_READ; in fm3130_rtc_mode()
91 i2c_smbus_write_byte_data(fm3130->client, in fm3130_rtc_mode()
92 FM3130_RTC_CONTROL, fm3130->regs[FM3130_RTC_CONTROL]); in fm3130_rtc_mode()
97 struct fm3130 *fm3130 = dev_get_drvdata(dev); in fm3130_get_time() local
100 if (!fm3130->data_valid) { in fm3130_get_time()
110 tmp = i2c_transfer(to_i2c_adapter(fm3130->client->dev.parent), in fm3130_get_time()
111 fm3130->msg, 2); in fm3130_get_time()
119 dev_dbg(dev, "%s: %15ph\n", "read", fm3130->regs); in fm3130_get_time()
121 t->tm_sec = bcd2bin(fm3130->regs[FM3130_RTC_SECONDS] & 0x7f); in fm3130_get_time()
122 t->tm_min = bcd2bin(fm3130->regs[FM3130_RTC_MINUTES] & 0x7f); in fm3130_get_time()
123 tmp = fm3130->regs[FM3130_RTC_HOURS] & 0x3f; in fm3130_get_time()
125 t->tm_wday = bcd2bin(fm3130->regs[FM3130_RTC_DAY] & 0x07) - 1; in fm3130_get_time()
126 t->tm_mday = bcd2bin(fm3130->regs[FM3130_RTC_DATE] & 0x3f); in fm3130_get_time()
127 tmp = fm3130->regs[FM3130_RTC_MONTHS] & 0x1f; in fm3130_get_time()
131 t->tm_year = bcd2bin(fm3130->regs[FM3130_RTC_YEARS]) + 100; in fm3130_get_time()
145 struct fm3130 *fm3130 = dev_get_drvdata(dev); in fm3130_set_time() local
147 u8 *buf = fm3130->regs; in fm3130_set_time()
173 i2c_smbus_write_byte_data(fm3130->client, in fm3130_set_time()
175 fm3130->regs[FM3130_RTC_SECONDS + i]); in fm3130_set_time()
181 if (!fm3130->data_valid) in fm3130_set_time()
182 fm3130->data_valid = 1; in fm3130_set_time()
188 struct fm3130 *fm3130 = dev_get_drvdata(dev); in fm3130_read_alarm() local
192 if (!fm3130->alarm_valid) { in fm3130_read_alarm()
203 tmp = i2c_transfer(to_i2c_adapter(fm3130->client->dev.parent), in fm3130_read_alarm()
204 &fm3130->msg[2], 2); in fm3130_read_alarm()
210 fm3130->regs[FM3130_ALARM_SECONDS], in fm3130_read_alarm()
211 fm3130->regs[FM3130_ALARM_MINUTES], in fm3130_read_alarm()
212 fm3130->regs[FM3130_ALARM_HOURS], in fm3130_read_alarm()
213 fm3130->regs[FM3130_ALARM_DATE], in fm3130_read_alarm()
214 fm3130->regs[FM3130_ALARM_MONTHS]); in fm3130_read_alarm()
216 tm->tm_sec = bcd2bin(fm3130->regs[FM3130_ALARM_SECONDS] & 0x7F); in fm3130_read_alarm()
217 tm->tm_min = bcd2bin(fm3130->regs[FM3130_ALARM_MINUTES] & 0x7F); in fm3130_read_alarm()
218 tm->tm_hour = bcd2bin(fm3130->regs[FM3130_ALARM_HOURS] & 0x3F); in fm3130_read_alarm()
219 tm->tm_mday = bcd2bin(fm3130->regs[FM3130_ALARM_DATE] & 0x3F); in fm3130_read_alarm()
220 tm->tm_mon = bcd2bin(fm3130->regs[FM3130_ALARM_MONTHS] & 0x1F); in fm3130_read_alarm()
232 fm3130->regs[FM3130_RTC_CONTROL] = in fm3130_read_alarm()
233 i2c_smbus_read_byte_data(fm3130->client, FM3130_RTC_CONTROL); in fm3130_read_alarm()
235 if ((fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_AEN) && in fm3130_read_alarm()
236 (~fm3130->regs[FM3130_RTC_CONTROL] & in fm3130_read_alarm()
246 struct fm3130 *fm3130 = dev_get_drvdata(dev); in fm3130_set_alarm() local
256 fm3130->regs[FM3130_ALARM_SECONDS] = in fm3130_set_alarm()
259 fm3130->regs[FM3130_ALARM_MINUTES] = in fm3130_set_alarm()
262 fm3130->regs[FM3130_ALARM_HOURS] = in fm3130_set_alarm()
265 fm3130->regs[FM3130_ALARM_DATE] = in fm3130_set_alarm()
268 fm3130->regs[FM3130_ALARM_MONTHS] = in fm3130_set_alarm()
272 fm3130->regs[FM3130_ALARM_SECONDS], in fm3130_set_alarm()
273 fm3130->regs[FM3130_ALARM_MINUTES], in fm3130_set_alarm()
274 fm3130->regs[FM3130_ALARM_HOURS], in fm3130_set_alarm()
275 fm3130->regs[FM3130_ALARM_DATE], in fm3130_set_alarm()
276 fm3130->regs[FM3130_ALARM_MONTHS]); in fm3130_set_alarm()
279 i2c_smbus_write_byte_data(fm3130->client, in fm3130_set_alarm()
281 fm3130->regs[FM3130_ALARM_SECONDS + i]); in fm3130_set_alarm()
283 fm3130->regs[FM3130_RTC_CONTROL] = in fm3130_set_alarm()
284 i2c_smbus_read_byte_data(fm3130->client, FM3130_RTC_CONTROL); in fm3130_set_alarm()
288 i2c_smbus_write_byte_data(fm3130->client, FM3130_RTC_CONTROL, in fm3130_set_alarm()
289 (fm3130->regs[FM3130_RTC_CONTROL] & in fm3130_set_alarm()
293 i2c_smbus_write_byte_data(fm3130->client, FM3130_RTC_CONTROL, in fm3130_set_alarm()
294 fm3130->regs[FM3130_RTC_CONTROL] & in fm3130_set_alarm()
300 if (!fm3130->alarm_valid) in fm3130_set_alarm()
301 fm3130->alarm_valid = 1; in fm3130_set_alarm()
308 struct fm3130 *fm3130 = dev_get_drvdata(dev); in fm3130_alarm_irq_enable() local
311 fm3130->regs[FM3130_RTC_CONTROL] = in fm3130_alarm_irq_enable()
312 i2c_smbus_read_byte_data(fm3130->client, FM3130_RTC_CONTROL); in fm3130_alarm_irq_enable()
315 enabled, fm3130->regs[FM3130_RTC_CONTROL]); in fm3130_alarm_irq_enable()
319 ret = i2c_smbus_write_byte_data(fm3130->client, in fm3130_alarm_irq_enable()
320 FM3130_RTC_CONTROL, fm3130->regs[FM3130_RTC_CONTROL] & in fm3130_alarm_irq_enable()
325 ret = i2c_smbus_write_byte_data(fm3130->client, in fm3130_alarm_irq_enable()
326 FM3130_RTC_CONTROL, (fm3130->regs[FM3130_RTC_CONTROL] & in fm3130_alarm_irq_enable()
351 struct fm3130 *fm3130; in fm3130_probe() local
360 fm3130 = devm_kzalloc(&client->dev, sizeof(struct fm3130), GFP_KERNEL); in fm3130_probe()
362 if (!fm3130) in fm3130_probe()
365 fm3130->client = client; in fm3130_probe()
366 i2c_set_clientdata(client, fm3130); in fm3130_probe()
367 fm3130->reg_addr_time = FM3130_RTC_SECONDS; in fm3130_probe()
368 fm3130->reg_addr_alarm = FM3130_ALARM_SECONDS; in fm3130_probe()
371 fm3130->msg[0].addr = client->addr; in fm3130_probe()
372 fm3130->msg[0].flags = 0; in fm3130_probe()
373 fm3130->msg[0].len = 1; in fm3130_probe()
374 fm3130->msg[0].buf = &fm3130->reg_addr_time; in fm3130_probe()
376 fm3130->msg[1].addr = client->addr; in fm3130_probe()
377 fm3130->msg[1].flags = I2C_M_RD; in fm3130_probe()
378 fm3130->msg[1].len = FM3130_CLOCK_REGS; in fm3130_probe()
379 fm3130->msg[1].buf = &fm3130->regs[FM3130_RTC_SECONDS]; in fm3130_probe()
382 fm3130->msg[2].addr = client->addr; in fm3130_probe()
383 fm3130->msg[2].flags = 0; in fm3130_probe()
384 fm3130->msg[2].len = 1; in fm3130_probe()
385 fm3130->msg[2].buf = &fm3130->reg_addr_alarm; in fm3130_probe()
387 fm3130->msg[3].addr = client->addr; in fm3130_probe()
388 fm3130->msg[3].flags = I2C_M_RD; in fm3130_probe()
389 fm3130->msg[3].len = FM3130_ALARM_REGS; in fm3130_probe()
390 fm3130->msg[3].buf = &fm3130->regs[FM3130_ALARM_SECONDS]; in fm3130_probe()
392 fm3130->alarm_valid = 0; in fm3130_probe()
393 fm3130->data_valid = 0; in fm3130_probe()
395 tmp = i2c_transfer(adapter, fm3130->msg, 4); in fm3130_probe()
402 fm3130->regs[FM3130_RTC_CONTROL] = in fm3130_probe()
404 fm3130->regs[FM3130_CAL_CONTROL] = in fm3130_probe()
408 if (fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_CAL) { in fm3130_probe()
410 fm3130->regs[FM3130_RTC_CONTROL] & in fm3130_probe()
416 if (fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_WRITE || in fm3130_probe()
417 fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_READ) { in fm3130_probe()
419 fm3130->regs[FM3130_RTC_CONTROL] & in fm3130_probe()
426 if (fm3130->regs[FM3130_CAL_CONTROL] & FM3130_CAL_CONTROL_BIT_nOSCEN) in fm3130_probe()
428 fm3130->regs[FM3130_CAL_CONTROL] & in fm3130_probe()
432 if (fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_LB) { in fm3130_probe()
434 fm3130->regs[FM3130_RTC_CONTROL] & in fm3130_probe()
440 if (fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_POR) { in fm3130_probe()
442 fm3130->regs[FM3130_RTC_CONTROL] & in fm3130_probe()
450 tmp = bcd2bin(fm3130->regs[FM3130_RTC_SECONDS] & 0x7f); in fm3130_probe()
454 tmp = bcd2bin(fm3130->regs[FM3130_RTC_MINUTES] & 0x7f); in fm3130_probe()
458 tmp = bcd2bin(fm3130->regs[FM3130_RTC_HOURS] & 0x3f); in fm3130_probe()
462 tmp = bcd2bin(fm3130->regs[FM3130_RTC_DATE] & 0x3f); in fm3130_probe()
466 tmp = bcd2bin(fm3130->regs[FM3130_RTC_MONTHS] & 0x1f); in fm3130_probe()
470 fm3130->alarm_valid = 1; in fm3130_probe()
475 tmp = bcd2bin(fm3130->regs[FM3130_RTC_SECONDS] & 0x7f); in fm3130_probe()
479 tmp = bcd2bin(fm3130->regs[FM3130_RTC_MINUTES] & 0x7f); in fm3130_probe()
483 tmp = bcd2bin(fm3130->regs[FM3130_RTC_HOURS] & 0x3f); in fm3130_probe()
487 tmp = bcd2bin(fm3130->regs[FM3130_RTC_DAY] & 0x7); in fm3130_probe()
491 tmp = bcd2bin(fm3130->regs[FM3130_RTC_DATE] & 0x3f); in fm3130_probe()
495 tmp = bcd2bin(fm3130->regs[FM3130_RTC_MONTHS] & 0x1f); in fm3130_probe()
499 fm3130->data_valid = 1; in fm3130_probe()
503 if (!fm3130->data_valid || !fm3130->alarm_valid) in fm3130_probe()
505 fm3130->regs); in fm3130_probe()
509 fm3130->rtc = devm_rtc_device_register(&client->dev, client->name, in fm3130_probe()
511 if (IS_ERR(fm3130->rtc)) { in fm3130_probe()
512 err = PTR_ERR(fm3130->rtc); in fm3130_probe()