fm3130 67 drivers/rtc/rtc-fm3130.c struct fm3130 *fm3130 = dev_get_drvdata(dev); fm3130 69 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_RTC_CONTROL] = fm3130 70 drivers/rtc/rtc-fm3130.c i2c_smbus_read_byte_data(fm3130->client, FM3130_RTC_CONTROL); fm3130 73 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_RTC_CONTROL] &= fm3130 78 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_RTC_CONTROL] |= FM3130_RTC_CONTROL_BIT_WRITE; fm3130 81 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_RTC_CONTROL] |= FM3130_RTC_CONTROL_BIT_READ; fm3130 88 drivers/rtc/rtc-fm3130.c i2c_smbus_write_byte_data(fm3130->client, fm3130 89 drivers/rtc/rtc-fm3130.c FM3130_RTC_CONTROL, fm3130->regs[FM3130_RTC_CONTROL]); fm3130 94 drivers/rtc/rtc-fm3130.c struct fm3130 *fm3130 = dev_get_drvdata(dev); fm3130 97 drivers/rtc/rtc-fm3130.c if (!fm3130->data_valid) { fm3130 107 drivers/rtc/rtc-fm3130.c tmp = i2c_transfer(fm3130->client->adapter, fm3130->msg, 2); fm3130 115 drivers/rtc/rtc-fm3130.c dev_dbg(dev, "%s: %15ph\n", "read", fm3130->regs); fm3130 117 drivers/rtc/rtc-fm3130.c t->tm_sec = bcd2bin(fm3130->regs[FM3130_RTC_SECONDS] & 0x7f); fm3130 118 drivers/rtc/rtc-fm3130.c t->tm_min = bcd2bin(fm3130->regs[FM3130_RTC_MINUTES] & 0x7f); fm3130 119 drivers/rtc/rtc-fm3130.c tmp = fm3130->regs[FM3130_RTC_HOURS] & 0x3f; fm3130 121 drivers/rtc/rtc-fm3130.c t->tm_wday = bcd2bin(fm3130->regs[FM3130_RTC_DAY] & 0x07) - 1; fm3130 122 drivers/rtc/rtc-fm3130.c t->tm_mday = bcd2bin(fm3130->regs[FM3130_RTC_DATE] & 0x3f); fm3130 123 drivers/rtc/rtc-fm3130.c tmp = fm3130->regs[FM3130_RTC_MONTHS] & 0x1f; fm3130 127 drivers/rtc/rtc-fm3130.c t->tm_year = bcd2bin(fm3130->regs[FM3130_RTC_YEARS]) + 100; fm3130 141 drivers/rtc/rtc-fm3130.c struct fm3130 *fm3130 = dev_get_drvdata(dev); fm3130 143 drivers/rtc/rtc-fm3130.c u8 *buf = fm3130->regs; fm3130 169 drivers/rtc/rtc-fm3130.c i2c_smbus_write_byte_data(fm3130->client, fm3130 171 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_RTC_SECONDS + i]); fm3130 177 drivers/rtc/rtc-fm3130.c if (!fm3130->data_valid) fm3130 178 drivers/rtc/rtc-fm3130.c fm3130->data_valid = 1; fm3130 184 drivers/rtc/rtc-fm3130.c struct fm3130 *fm3130 = dev_get_drvdata(dev); fm3130 188 drivers/rtc/rtc-fm3130.c if (!fm3130->alarm_valid) { fm3130 199 drivers/rtc/rtc-fm3130.c tmp = i2c_transfer(fm3130->client->adapter, &fm3130->msg[2], 2); fm3130 205 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_ALARM_SECONDS], fm3130 206 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_ALARM_MINUTES], fm3130 207 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_ALARM_HOURS], fm3130 208 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_ALARM_DATE], fm3130 209 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_ALARM_MONTHS]); fm3130 211 drivers/rtc/rtc-fm3130.c tm->tm_sec = bcd2bin(fm3130->regs[FM3130_ALARM_SECONDS] & 0x7F); fm3130 212 drivers/rtc/rtc-fm3130.c tm->tm_min = bcd2bin(fm3130->regs[FM3130_ALARM_MINUTES] & 0x7F); fm3130 213 drivers/rtc/rtc-fm3130.c tm->tm_hour = bcd2bin(fm3130->regs[FM3130_ALARM_HOURS] & 0x3F); fm3130 214 drivers/rtc/rtc-fm3130.c tm->tm_mday = bcd2bin(fm3130->regs[FM3130_ALARM_DATE] & 0x3F); fm3130 215 drivers/rtc/rtc-fm3130.c tm->tm_mon = bcd2bin(fm3130->regs[FM3130_ALARM_MONTHS] & 0x1F); fm3130 227 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_RTC_CONTROL] = fm3130 228 drivers/rtc/rtc-fm3130.c i2c_smbus_read_byte_data(fm3130->client, FM3130_RTC_CONTROL); fm3130 230 drivers/rtc/rtc-fm3130.c if ((fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_AEN) && fm3130 231 drivers/rtc/rtc-fm3130.c (~fm3130->regs[FM3130_RTC_CONTROL] & fm3130 241 drivers/rtc/rtc-fm3130.c struct fm3130 *fm3130 = dev_get_drvdata(dev); fm3130 251 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_ALARM_SECONDS] = fm3130 254 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_ALARM_MINUTES] = fm3130 257 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_ALARM_HOURS] = fm3130 260 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_ALARM_DATE] = fm3130 263 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_ALARM_MONTHS] = fm3130 267 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_ALARM_SECONDS], fm3130 268 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_ALARM_MINUTES], fm3130 269 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_ALARM_HOURS], fm3130 270 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_ALARM_DATE], fm3130 271 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_ALARM_MONTHS]); fm3130 274 drivers/rtc/rtc-fm3130.c i2c_smbus_write_byte_data(fm3130->client, fm3130 276 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_ALARM_SECONDS + i]); fm3130 278 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_RTC_CONTROL] = fm3130 279 drivers/rtc/rtc-fm3130.c i2c_smbus_read_byte_data(fm3130->client, FM3130_RTC_CONTROL); fm3130 283 drivers/rtc/rtc-fm3130.c i2c_smbus_write_byte_data(fm3130->client, FM3130_RTC_CONTROL, fm3130 284 drivers/rtc/rtc-fm3130.c (fm3130->regs[FM3130_RTC_CONTROL] & fm3130 288 drivers/rtc/rtc-fm3130.c i2c_smbus_write_byte_data(fm3130->client, FM3130_RTC_CONTROL, fm3130 289 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_RTC_CONTROL] & fm3130 295 drivers/rtc/rtc-fm3130.c if (!fm3130->alarm_valid) fm3130 296 drivers/rtc/rtc-fm3130.c fm3130->alarm_valid = 1; fm3130 303 drivers/rtc/rtc-fm3130.c struct fm3130 *fm3130 = dev_get_drvdata(dev); fm3130 306 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_RTC_CONTROL] = fm3130 307 drivers/rtc/rtc-fm3130.c i2c_smbus_read_byte_data(fm3130->client, FM3130_RTC_CONTROL); fm3130 310 drivers/rtc/rtc-fm3130.c enabled, fm3130->regs[FM3130_RTC_CONTROL]); fm3130 314 drivers/rtc/rtc-fm3130.c ret = i2c_smbus_write_byte_data(fm3130->client, fm3130 315 drivers/rtc/rtc-fm3130.c FM3130_RTC_CONTROL, fm3130->regs[FM3130_RTC_CONTROL] & fm3130 320 drivers/rtc/rtc-fm3130.c ret = i2c_smbus_write_byte_data(fm3130->client, fm3130 321 drivers/rtc/rtc-fm3130.c FM3130_RTC_CONTROL, (fm3130->regs[FM3130_RTC_CONTROL] & fm3130 346 drivers/rtc/rtc-fm3130.c struct fm3130 *fm3130; fm3130 355 drivers/rtc/rtc-fm3130.c fm3130 = devm_kzalloc(&client->dev, sizeof(struct fm3130), GFP_KERNEL); fm3130 357 drivers/rtc/rtc-fm3130.c if (!fm3130) fm3130 360 drivers/rtc/rtc-fm3130.c fm3130->client = client; fm3130 361 drivers/rtc/rtc-fm3130.c i2c_set_clientdata(client, fm3130); fm3130 362 drivers/rtc/rtc-fm3130.c fm3130->reg_addr_time = FM3130_RTC_SECONDS; fm3130 363 drivers/rtc/rtc-fm3130.c fm3130->reg_addr_alarm = FM3130_ALARM_SECONDS; fm3130 366 drivers/rtc/rtc-fm3130.c fm3130->msg[0].addr = client->addr; fm3130 367 drivers/rtc/rtc-fm3130.c fm3130->msg[0].flags = 0; fm3130 368 drivers/rtc/rtc-fm3130.c fm3130->msg[0].len = 1; fm3130 369 drivers/rtc/rtc-fm3130.c fm3130->msg[0].buf = &fm3130->reg_addr_time; fm3130 371 drivers/rtc/rtc-fm3130.c fm3130->msg[1].addr = client->addr; fm3130 372 drivers/rtc/rtc-fm3130.c fm3130->msg[1].flags = I2C_M_RD; fm3130 373 drivers/rtc/rtc-fm3130.c fm3130->msg[1].len = FM3130_CLOCK_REGS; fm3130 374 drivers/rtc/rtc-fm3130.c fm3130->msg[1].buf = &fm3130->regs[FM3130_RTC_SECONDS]; fm3130 377 drivers/rtc/rtc-fm3130.c fm3130->msg[2].addr = client->addr; fm3130 378 drivers/rtc/rtc-fm3130.c fm3130->msg[2].flags = 0; fm3130 379 drivers/rtc/rtc-fm3130.c fm3130->msg[2].len = 1; fm3130 380 drivers/rtc/rtc-fm3130.c fm3130->msg[2].buf = &fm3130->reg_addr_alarm; fm3130 382 drivers/rtc/rtc-fm3130.c fm3130->msg[3].addr = client->addr; fm3130 383 drivers/rtc/rtc-fm3130.c fm3130->msg[3].flags = I2C_M_RD; fm3130 384 drivers/rtc/rtc-fm3130.c fm3130->msg[3].len = FM3130_ALARM_REGS; fm3130 385 drivers/rtc/rtc-fm3130.c fm3130->msg[3].buf = &fm3130->regs[FM3130_ALARM_SECONDS]; fm3130 387 drivers/rtc/rtc-fm3130.c fm3130->alarm_valid = 0; fm3130 388 drivers/rtc/rtc-fm3130.c fm3130->data_valid = 0; fm3130 390 drivers/rtc/rtc-fm3130.c tmp = i2c_transfer(adapter, fm3130->msg, 4); fm3130 397 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_RTC_CONTROL] = fm3130 399 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_CAL_CONTROL] = fm3130 403 drivers/rtc/rtc-fm3130.c if (fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_CAL) { fm3130 405 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_RTC_CONTROL] & fm3130 411 drivers/rtc/rtc-fm3130.c if (fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_WRITE || fm3130 412 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_READ) { fm3130 414 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_RTC_CONTROL] & fm3130 421 drivers/rtc/rtc-fm3130.c if (fm3130->regs[FM3130_CAL_CONTROL] & FM3130_CAL_CONTROL_BIT_nOSCEN) fm3130 423 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_CAL_CONTROL] & fm3130 427 drivers/rtc/rtc-fm3130.c if (fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_LB) { fm3130 429 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_RTC_CONTROL] & fm3130 435 drivers/rtc/rtc-fm3130.c if (fm3130->regs[FM3130_RTC_CONTROL] & FM3130_RTC_CONTROL_BIT_POR) { fm3130 437 drivers/rtc/rtc-fm3130.c fm3130->regs[FM3130_RTC_CONTROL] & fm3130 445 drivers/rtc/rtc-fm3130.c tmp = bcd2bin(fm3130->regs[FM3130_RTC_SECONDS] & 0x7f); fm3130 449 drivers/rtc/rtc-fm3130.c tmp = bcd2bin(fm3130->regs[FM3130_RTC_MINUTES] & 0x7f); fm3130 453 drivers/rtc/rtc-fm3130.c tmp = bcd2bin(fm3130->regs[FM3130_RTC_HOURS] & 0x3f); fm3130 457 drivers/rtc/rtc-fm3130.c tmp = bcd2bin(fm3130->regs[FM3130_RTC_DATE] & 0x3f); fm3130 461 drivers/rtc/rtc-fm3130.c tmp = bcd2bin(fm3130->regs[FM3130_RTC_MONTHS] & 0x1f); fm3130 465 drivers/rtc/rtc-fm3130.c fm3130->alarm_valid = 1; fm3130 470 drivers/rtc/rtc-fm3130.c tmp = bcd2bin(fm3130->regs[FM3130_RTC_SECONDS] & 0x7f); fm3130 474 drivers/rtc/rtc-fm3130.c tmp = bcd2bin(fm3130->regs[FM3130_RTC_MINUTES] & 0x7f); fm3130 478 drivers/rtc/rtc-fm3130.c tmp = bcd2bin(fm3130->regs[FM3130_RTC_HOURS] & 0x3f); fm3130 482 drivers/rtc/rtc-fm3130.c tmp = bcd2bin(fm3130->regs[FM3130_RTC_DAY] & 0x7); fm3130 486 drivers/rtc/rtc-fm3130.c tmp = bcd2bin(fm3130->regs[FM3130_RTC_DATE] & 0x3f); fm3130 490 drivers/rtc/rtc-fm3130.c tmp = bcd2bin(fm3130->regs[FM3130_RTC_MONTHS] & 0x1f); fm3130 494 drivers/rtc/rtc-fm3130.c fm3130->data_valid = 1; fm3130 498 drivers/rtc/rtc-fm3130.c if (!fm3130->data_valid || !fm3130->alarm_valid) fm3130 500 drivers/rtc/rtc-fm3130.c fm3130->regs); fm3130 504 drivers/rtc/rtc-fm3130.c fm3130->rtc = devm_rtc_device_register(&client->dev, client->name, fm3130 506 drivers/rtc/rtc-fm3130.c if (IS_ERR(fm3130->rtc)) { fm3130 507 drivers/rtc/rtc-fm3130.c err = PTR_ERR(fm3130->rtc);