hc
2024-10-12 a5969cabbb4660eab42b6ef0412cbbd1200cf14d
kernel/drivers/power/supply/rk816_battery.c
....@@ -172,7 +172,7 @@
172172 struct wake_lock wake_lock;
173173 struct notifier_block fb_nb;
174174 struct timer_list caltimer;
175
- time_t rtc_base;
175
+ time64_t rtc_base;
176176 struct iio_channel *iio_chan;
177177 struct notifier_block cable_cg_nb;
178178 struct notifier_block cable_host_nb;
....@@ -303,9 +303,9 @@
303303
304304 static u64 get_boot_sec(void)
305305 {
306
- struct timespec ts;
306
+ struct timespec64 ts;
307307
308
- get_monotonic_boottime(&ts);
308
+ ktime_get_boottime_ts64(&ts);
309309
310310 return ts.tv_sec;
311311 }
....@@ -327,6 +327,9 @@
327327 {
328328 u8 i;
329329 u16 d;
330
+
331
+ if (size < 2)
332
+ return 0;
330333
331334 for (i = 0; i < size; i++) {
332335 if (value < table[i])
....@@ -1873,15 +1876,13 @@
18731876 struct rk816_battery *di;
18741877 struct fb_event *evdata = data;
18751878
1879
+ if (event != FB_EVENT_BLANK)
1880
+ return NOTIFY_DONE;
1881
+
18761882 di = container_of(nb, struct rk816_battery, fb_nb);
1883
+ di->fb_blank = *(int *)evdata->data;
18771884
1878
- if (event == FB_EVENT_BLANK || event == FB_EARLY_EVENT_BLANK ||
1879
- event == FB_R_EARLY_EVENT_BLANK)
1880
- di->fb_blank = *(int *)evdata->data;
1881
- else
1882
- di->fb_blank = 1;
1883
-
1884
- return 0;
1885
+ return NOTIFY_OK;
18851886 }
18861887
18871888 static int rk816_bat_register_fb_notify(struct rk816_battery *di)
....@@ -2967,6 +2968,8 @@
29672968 FINISH_CHRG_CUR2 : FINISH_CHRG_CUR1;
29682969 finish_sec = base2sec(di->chrg_finish_base);
29692970 soc_sec = di->fcc * 3600 / 100 / DIV(finish_current);
2971
+ if (soc_sec == 0)
2972
+ soc_sec = 1;
29702973 plus_soc = finish_sec / DIV(soc_sec);
29712974 if (finish_sec > soc_sec) {
29722975 rest = finish_sec % soc_sec;
....@@ -4352,13 +4355,11 @@
43524355 return 0;
43534356 }
43544357
4355
-static time_t rk816_get_rtc_sec(void)
4358
+static time64_t rk816_get_rtc_sec(void)
43564359 {
43574360 int err;
43584361 struct rtc_time tm;
4359
- struct timespec tv = { .tv_nsec = NSEC_PER_SEC >> 1, };
43604362 struct rtc_device *rtc = rtc_class_open(CONFIG_RTC_HCTOSYS_DEVICE);
4361
- time_t sec;
43624363
43634364 err = rtc_read_time(rtc, &tm);
43644365 if (err) {
....@@ -4372,10 +4373,7 @@
43724373 return 0;
43734374 }
43744375
4375
- rtc_tm_to_time(&tm, &tv.tv_sec);
4376
- sec = tv.tv_sec;
4377
-
4378
- return sec;
4376
+ return rtc_tm_to_time64(&tm);
43794377 }
43804378
43814379 static int rk816_bat_rtc_sleep_sec(struct rk816_battery *di)
....@@ -4678,7 +4676,7 @@
46784676 }
46794677
46804678 pdata->ocv_size = length / sizeof(u32);
4681
- if (pdata->ocv_size <= 0) {
4679
+ if (pdata->ocv_size < 2) {
46824680 dev_err(dev, "invalid ocv table\n");
46834681 return -EINVAL;
46844682 }