Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ed10858e authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Martin K. Petersen
Browse files

scsi: smartpqi: fix time handling



When we have turned off RTC support, the smartpqi driver fails to build:

ERROR: "rtc_time64_to_tm" [drivers/scsi/smartpqi/smartpqi.ko] undefined!

This is easily avoided by using the generic 'struct tm' based helper rather
than the RTC specific one. While fixing this, I noticed that even though
the driver uses time64_t for storing seconds, it gets them from the
old 32-bit struct timeval. To address this, we can simplify the code
by calling ktime_get_real_seconds() directly.

Fixes: 6c223761 ("smartpqi: initial commit of Microsemi smartpqi driver")
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Acked-by: default avatarDon Brace <don.brace@microsemi.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 0662cc96
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -534,8 +534,7 @@ static int pqi_write_current_time_to_host_wellness(
	size_t buffer_length;
	time64_t local_time;
	unsigned int year;
	struct timeval time;
	struct rtc_time tm;
	struct tm tm;

	buffer_length = sizeof(*buffer);

@@ -552,9 +551,8 @@ static int pqi_write_current_time_to_host_wellness(
	put_unaligned_le16(sizeof(buffer->time),
		&buffer->time_length);

	do_gettimeofday(&time);
	local_time = time.tv_sec - (sys_tz.tz_minuteswest * 60);
	rtc_time64_to_tm(local_time, &tm);
	local_time = ktime_get_real_seconds();
	time64_to_tm(local_time, -sys_tz.tz_minuteswest * 60, &tm);
	year = tm.tm_year + 1900;

	buffer->time[0] = bin2bcd(tm.tm_hour);