DS1307 on rpi4B

風來散人 <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <CAJzLSnxOALkCztZUa-zpUH30g1O0nUfQb4X2=4o_VDv3WTEdaQ@mail.gmail.com>
Hello all,

I'm trying connect DS1307 on rpi4B (8M). I'm not sure how much I can rely
on the description in
https://github.com/raspberrypi/firmware/tree/master/boot/overlays because I
don't know the difference between linux boot loader and FreeBSD one.

I want to connect DS1307 on GPIO12/13 pin as i2c5 so I assumed i2c-rtc
could be used so that I added one line in config.txt like below.

dtoverlay=i2c-rtc,ds1307,i2c5,addr=0x68

iic1 is detected at boot but it can't talk to DS1307.

# dmesg | egrep iic\|ds1307
iichb0: <BCM2708/2835 BSC controller> mem 0x7e804000-0x7e804fff irq 27 on
simplebus0
iichb1: <BCM2708/2835 BSC controller> mem 0x7e205a00-0x7e205bff irq 52 on
simplebus0
iicbus0: <OFW I2C bus> on iichb0
iic0: <I2C generic I/O> on iicbus0
iicbus1: <OFW I2C bus> on iichb1
iic1: <I2C generic I/O> on iicbus1
ds13070: <Dallas DS1307> at addr 0xd0 on iicbus1
ds13070: is_dev_time_valid: cannot read from RTC: 35
ds13070: WARNING: RTC clock stopped, check the battery.
ds13070: registered as a time-of-day clock, resolution 1.000000s
ds13070: ds1307_gettime: cannot read from RTC: 35
ds13070: ds1307_settime: cannot write to RTC: 35

The command "i2c -s -v -f /dev/iic1" can't detect anything at all. The pin
function doesn't seem to be correct.
# sysctl -a dev.gpio.0.pin|grep 1[23]
dev.gpio.0.pin.13.function: input
dev.gpio.0.pin.12.function: input

If I set alt5 on these pins by sysctl and change pin configuration by
gpioctl to enable internal pullup, iic1 works fine.
---
for p in 12 13
do
  sysctl dev.gpio.0.pin.$p.function=alt5
  gpioctl -c $p PU
done
i2c -s -v -f /dev/iic1
/root/src/ds1307 -r -a 0x68 -f /dev/iic1
---

I'm not familiar with dts stuff but I wrote overlay dts like this.
/dts-v1/;
/plugin/;
/  {

        compatible = "raspberrypi,4-model-b", "brcm,bcm2711";
        fragment@0 {
                        target = <&i2c5>;
                        __overlay__ {
                        brcm,pins = <12 13>;
                        brcm,function = <2>;
                        brcm,pull = <2 2>;
                        status = "okay";
                };

        };
};
However this doesn't work at all. How can I configure gpio12/13 for i2c5?

Best regards,
furaisanjin
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.