Lines Matching full:client

3  * RTC client/driver for the Maxim/Dallas DS1374 Real-Time Clock over I2C
69 struct i2c_client *client; member
85 static int ds1374_read_rtc(struct i2c_client *client, u32 *time, in ds1374_read_rtc() argument
95 ret = i2c_smbus_read_i2c_block_data(client, reg, nbytes, buf); in ds1374_read_rtc()
108 static int ds1374_write_rtc(struct i2c_client *client, u32 time, in ds1374_write_rtc() argument
124 return i2c_smbus_write_i2c_block_data(client, reg, nbytes, buf); in ds1374_write_rtc()
127 static int ds1374_check_rtc_status(struct i2c_client *client) in ds1374_check_rtc_status() argument
132 stat = i2c_smbus_read_byte_data(client, DS1374_REG_SR); in ds1374_check_rtc_status()
137 dev_warn(&client->dev, in ds1374_check_rtc_status()
142 ret = i2c_smbus_write_byte_data(client, DS1374_REG_SR, stat); in ds1374_check_rtc_status()
151 control = i2c_smbus_read_byte_data(client, DS1374_REG_CR); in ds1374_check_rtc_status()
156 return i2c_smbus_write_byte_data(client, DS1374_REG_CR, control); in ds1374_check_rtc_status()
161 struct i2c_client *client = to_i2c_client(dev); in ds1374_read_time() local
165 ret = ds1374_read_rtc(client, &itime, DS1374_REG_TOD0, 4); in ds1374_read_time()
174 struct i2c_client *client = to_i2c_client(dev); in ds1374_set_time() local
177 return ds1374_write_rtc(client, itime, DS1374_REG_TOD0, 4); in ds1374_set_time()
187 struct i2c_client *client = to_i2c_client(dev); in ds1374_read_alarm() local
188 struct ds1374 *ds1374 = i2c_get_clientdata(client); in ds1374_read_alarm()
193 if (client->irq <= 0) in ds1374_read_alarm()
198 cr = ret = i2c_smbus_read_byte_data(client, DS1374_REG_CR); in ds1374_read_alarm()
202 sr = ret = i2c_smbus_read_byte_data(client, DS1374_REG_SR); in ds1374_read_alarm()
206 ret = ds1374_read_rtc(client, &now, DS1374_REG_TOD0, 4); in ds1374_read_alarm()
210 ret = ds1374_read_rtc(client, &cur_alarm, DS1374_REG_WDALM0, 3); in ds1374_read_alarm()
225 struct i2c_client *client = to_i2c_client(dev); in ds1374_set_alarm() local
226 struct ds1374 *ds1374 = i2c_get_clientdata(client); in ds1374_set_alarm()
232 if (client->irq <= 0) in ds1374_set_alarm()
255 ret = cr = i2c_smbus_read_byte_data(client, DS1374_REG_CR); in ds1374_set_alarm()
263 ret = i2c_smbus_write_byte_data(client, DS1374_REG_CR, cr); in ds1374_set_alarm()
267 ret = ds1374_write_rtc(client, new_alarm, DS1374_REG_WDALM0, 3); in ds1374_set_alarm()
275 ret = i2c_smbus_write_byte_data(client, DS1374_REG_CR, cr); in ds1374_set_alarm()
286 struct i2c_client *client = dev_id; in ds1374_irq() local
287 struct ds1374 *ds1374 = i2c_get_clientdata(client); in ds1374_irq()
297 struct i2c_client *client = ds1374->client; in ds1374_work() local
302 stat = i2c_smbus_read_byte_data(client, DS1374_REG_SR); in ds1374_work()
308 i2c_smbus_write_byte_data(client, DS1374_REG_SR, stat); in ds1374_work()
310 control = i2c_smbus_read_byte_data(client, DS1374_REG_CR); in ds1374_work()
315 i2c_smbus_write_byte_data(client, DS1374_REG_CR, control); in ds1374_work()
322 enable_irq(client->irq); in ds1374_work()
330 struct i2c_client *client = to_i2c_client(dev); in ds1374_alarm_irq_enable() local
331 struct ds1374 *ds1374 = i2c_get_clientdata(client); in ds1374_alarm_irq_enable()
336 ret = i2c_smbus_read_byte_data(client, DS1374_REG_CR); in ds1374_alarm_irq_enable()
346 ret = i2c_smbus_write_byte_data(client, DS1374_REG_CR, ret); in ds1374_alarm_irq_enable()
395 struct i2c_client *client = ds1374->client; in ds1374_wdt_settimeout() local
400 cr = i2c_smbus_read_byte_data(client, DS1374_REG_CR); in ds1374_wdt_settimeout()
407 ret = i2c_smbus_write_byte_data(client, DS1374_REG_CR, cr); in ds1374_wdt_settimeout()
413 ret = ds1374_write_rtc(client, timeout, DS1374_REG_WDALM0, 3); in ds1374_wdt_settimeout()
422 ret = i2c_smbus_write_byte_data(client, DS1374_REG_CR, cr); in ds1374_wdt_settimeout()
437 return ds1374_read_rtc(ds1374->client, &val, DS1374_REG_WDALM0, 3); in ds1374_wdt_start()
443 struct i2c_client *client = ds1374->client; in ds1374_wdt_stop() local
446 cr = i2c_smbus_read_byte_data(client, DS1374_REG_CR); in ds1374_wdt_stop()
453 return i2c_smbus_write_byte_data(client, DS1374_REG_CR, cr); in ds1374_wdt_stop()
470 static int ds1374_probe(struct i2c_client *client) in ds1374_probe() argument
475 ds1374 = devm_kzalloc(&client->dev, sizeof(struct ds1374), GFP_KERNEL); in ds1374_probe()
479 ds1374->rtc = devm_rtc_allocate_device(&client->dev); in ds1374_probe()
483 ds1374->client = client; in ds1374_probe()
484 i2c_set_clientdata(client, ds1374); in ds1374_probe()
489 ret = ds1374_check_rtc_status(client); in ds1374_probe()
493 if (client->irq > 0) { in ds1374_probe()
494 ret = devm_request_irq(&client->dev, client->irq, ds1374_irq, 0, in ds1374_probe()
495 "ds1374", client); in ds1374_probe()
497 dev_err(&client->dev, "unable to request IRQ\n"); in ds1374_probe()
501 device_set_wakeup_capable(&client->dev, 1); in ds1374_probe()
518 watchdog_init_timeout(&ds1374->wdt, wdt_margin, &client->dev); in ds1374_probe()
525 ret = devm_watchdog_register_device(&client->dev, &ds1374->wdt); in ds1374_probe()
533 static void ds1374_remove(struct i2c_client *client) in ds1374_remove() argument
535 struct ds1374 *ds1374 = i2c_get_clientdata(client); in ds1374_remove()
537 if (client->irq > 0) { in ds1374_remove()
542 devm_free_irq(&client->dev, client->irq, client); in ds1374_remove()
550 struct i2c_client *client = to_i2c_client(dev); in ds1374_suspend() local
552 if (client->irq > 0 && device_may_wakeup(&client->dev)) in ds1374_suspend()
553 enable_irq_wake(client->irq); in ds1374_suspend()
559 struct i2c_client *client = to_i2c_client(dev); in ds1374_resume() local
561 if (client->irq > 0 && device_may_wakeup(&client->dev)) in ds1374_resume()
562 disable_irq_wake(client->irq); in ds1374_resume()