huangcm
2024-08-23 d76fb8c8c6d079a3cee81da7072347dcb8bbbc70
longan/kernel/linux-4.9/drivers/rtc/rtc-hym8563.c
....@@ -438,10 +438,10 @@
438438 {
439439 struct hym8563 *hym8563 = (struct hym8563 *)dev_id;
440440 struct i2c_client *client = hym8563->client;
441
- struct mutex *lock = &hym8563->rtc->ops_lock;
441
+ //struct mutex *lock = &hym8563->rtc->ops_lock;
442442 int data, ret;
443443
444
- mutex_lock(lock);
444
+ //mutex_lock(lock);
445445
446446 /* Clear the alarm flag */
447447
....@@ -461,7 +461,7 @@
461461 }
462462
463463 out:
464
- mutex_unlock(lock);
464
+ //mutex_unlock(lock);
465465 return IRQ_HANDLED;
466466 }
467467
....@@ -529,7 +529,13 @@
529529 {
530530 struct hym8563 *hym8563;
531531 int ret;
532
-
532
+ struct rtc_time tm = {
533
+ .tm_year = 2024 - 1900,
534
+ .tm_mon = 7,
535
+ .tm_mday = 23,
536
+ .tm_wday = 5,
537
+ .tm_hour = 13,
538
+ };
533539 hym8563 = devm_kzalloc(&client->dev, sizeof(*hym8563), GFP_KERNEL);
534540 if (!hym8563)
535541 return -ENOMEM;
....@@ -565,6 +571,10 @@
565571 hym8563->valid = !(ret & HYM8563_SEC_VL);
566572 dev_dbg(&client->dev, "rtc information is %s\n",
567573 hym8563->valid ? "valid" : "invalid");
574
+ if (!hym8563->valid) {
575
+ dev_err(&client->dev, "rtc use default time !!!\n");
576
+ hym8563_rtc_set_time(&client->dev, &tm);
577
+ }
568578
569579 hym8563->rtc = devm_rtc_device_register(&client->dev, client->name,
570580 &hym8563_rtc_ops, THIS_MODULE);