Re: TS-219 RTC issue with Debian Buster

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Uwe,

nice to read from you again :-)

I think I already solved the problem, see here:
https://marc.info/?l=linux-arm-kernel&m=156390875629259&w=2

Will file a Debian bug for it ...

Many thanks,
Oliver

On 23.07.19 21:06, Uwe Kleine-König wrote:
Hello Oliver,

I added the RTC maintainers and list to Cc.

On Tue, Jul 23, 2019 at 05:30:48PM +0200, Oliver Hartkopp wrote:
I upgraded my TS-219 to Debian Buster with Kernel 4.19.0-5-marvell.

They use dtbs/4.19.0-5-marvell/./kirkwood-ts219-6282.dtb

Unfortunately the RTC doesn't seem to work.

root@xxxxx:~# hwclock -v --test
hwclock from util-linux 2.33.1
System Time: 1563296223.425648
Trying to open: /dev/rtc0
Using the rtc interface to the clock.
Last drift adjustment done at 1563291472 seconds after 1969
Last calibration done at 1563291472 seconds after 1969
Hardware clock is on UTC time
Assuming hardware clock is kept in UTC time.
Waiting for clock tick...
hwclock: select() to /dev/rtc0 to wait for clock tick timed out
...synchronization failed
Test mode: nothing was changed.
With strace the clock tick problem looks like this:

write(1, "Waiting for clock tick...\n", 26Waiting for clock tick...
) = 26
ioctl(4, RTC_UIE_ON)                    = 0
_newselect(5, [4], NULL, NULL, {tv_sec=10, tv_usec=0}) = 0 (Timeout)
write(2, "hwclock: ", 9hwclock: )                = 9
write(2, "select() to /dev/rtc0 to wait fo"..., 54select() to /dev/rtc0 to
wait for clock tick timed out) = 54
write(2, "\n", 1)                       = 1
ioctl(4, PHN_NOT_OH or RTC_UIE_OFF)     = 0

Maybe rtc-mv should set uie_unsupported if no irq is aquired?

It looks the same with

# hwclock --hctosys
hwclock: select() to /dev/rtc0 to wait for clock tick timed out

hwclock (from util-linux) is being stupid here. The tradtional RTC on
the x86 platform has a resolution of 1s only and if you set it the next
increment is 1 second after the last increment instead of 1 second after
the new time was set. So hwclock waits for an update event and then sets
the new time (in some cases to a tad later than requested) to ensure the
PC clock is off by less than half a second. For most (if not all) other
RTCs this is wrong and still worse if the RTC in question doesn't
support UIE.

I wonder whether the problem comes from a missing interrupt assignment

rtc: rtc@10300 {
              compatible = "marvell,kirkwood-rtc", "marvell,orion-rtc";
              reg = <0x10300 0x20>;
              interrupts = <53>;            <- HERE!?!
              clocks = <&gate_clk 7>;
                };

... I found in linux/arch/arm/boot/dts/kirkwood-6282.dtsi ?!?

In /proc/interrupts there's no rtc assigned to an interrupt 53.

What is the output of dmesg | grep 10300 ?
Accessing the rtc values (time/date) via /sys/class/rtc/rtc0 entries works
well and setting the date/time via "hwclock --systohc" does its job too. So
I2C and the rtc_s35390a driver seem to work so far.

You're not using the s35390a driver, do you?
Any ideas why hwclock fails to work properly?

Try if

	busybox hwclock

works better for you. At least this one doesn't have this strange PC
quirk.
Best regards
Uwe




[Index of Archives]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux