Re: [PATCH] sh: sh7785lcr: register the PCA9564 as I2C bus 0
From: John Paul Adrian Glaubitz
Date: Sat Oct 03 2026 - 04:54:25 EST
Hello Karl,
On Sat, 2026-10-03 at 10:28 +0200, Karl Mehltretter wrote:
> The R2025S/D board information is registered on I2C bus 0. Commit
> 44454baa7ca7 ("i2c: Dynamically assign adapter id if it wasn't explictly
> specified") changed the PCA9564 platform driver to pass negative platform
> device IDs to the I2C core. The SH7785LCR device uses ID -1, so the core
> assigns it a dynamic bus number. Reserving bus 0 for the board information
> makes i2c-1 the first dynamic bus, and the RTC is never instantiated.
>
> Set the platform device ID to 0 so the adapter is registered as i2c-0 and
> the RTC board information matches it.
>
> Fixes: 44454baa7ca7 ("i2c: Dynamically assign adapter id if it wasn't explictly specified")
> Assisted-by: LLM
> Signed-off-by: Karl Mehltretter <kmehltretter@xxxxxxxxx>
> ---
>
> Tested with 29-bit and 32-bit kernels on a custom QEMU model of the
> SH7785LCR. Both registered the controller as i2c-0 and the R2025S/D as
> rtc0.
> Testing on real hardware is welcome.
>
> arch/sh/boards/board-sh7785lcr.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/sh/boards/board-sh7785lcr.c b/arch/sh/boards/board-sh7785lcr.c
> index 25c4968f0d8b..b93423df582f 100644
> --- a/arch/sh/boards/board-sh7785lcr.c
> +++ b/arch/sh/boards/board-sh7785lcr.c
> @@ -256,7 +256,7 @@ static struct i2c_pca9564_pf_platform_data i2c_platform_data = {
>
> static struct platform_device i2c_device = {
> .name = "i2c-pca-platform",
> - .id = -1,
> + .id = 0,
> .dev = {
> .platform_data = &i2c_platform_data,
> },
Without the patch, the rtc is not detected during boot and trying to read it out
with the hwclock utility fails:
root@tirpitz:~> hwclock
hwclock: Cannot access the Hardware Clock via any known method.
hwclock: Use the --verbose option to see the details of our search for an access method.
root@tirpitz:~> hwclock --verbose
hwclock from util-linux 2.41.3
System Time: 1791016681.183560
Trying to open: /dev/rtc0
Trying to open: /dev/rtc
Trying to open: /dev/misc/rtc
No usable clock interface found.
hwclock: Cannot access the Hardware Clock via any known method.
root@tirpitz:~>
With the patch, the rtc is detected during boot:
[ 4.048000] rtc-rs5c372 0-0032: r2025sd found, 24hr
[ 4.056000] rtc-rs5c372 0-0032: rtc oscillator interruption detected. Please reset the rtc clock.
[ 4.072000] rtc-rs5c372 0-0032: registered as rtc0
[ 4.080000] rtc-rs5c372 0-0032: rtc oscillator interruption detected. Please reset the rtc clock.
[ 4.088000] rtc-rs5c372 0-0032: hctosys: unable to read the hardware clock
And can be read out with hwclock:
root@tirpitz:~> hwclock --verbose
hwclock from util-linux 2.41.3
System Time: 1791017592.121448
Trying to open: /dev/rtc0
Using the rtc interface to the clock.
Last drift adjustment done at 0 seconds after 1969
Last calibration done at 0 seconds after 1969
Hardware clock is on UTC time
Assuming hardware clock is kept in UTC time.
Waiting for clock tick...
ioctl(4, RTC_UIE_ON, 0): Invalid argument
Waiting in loop for time from /dev/rtc0 to change
...got clock tick
Time read from Hardware Clock: 2026/10/03 08:53:13
Hw clock time : 2026/10/03 08:53:13 = 1791017593 seconds since 1969
Time since last adjustment is 1791017593 seconds
Calculated Hardware Clock drift is 0.000000 seconds
2026-10-03 10:53:12.109057+02:00
root@tirpitz:~>
Tested-by: John Paul Adrian Glaubitz <glaubitz@xxxxxxxxxxxxxxxxxxx>
Adrian
--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer
`. `' Physicist
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913